Python机器学习-Python-机器学习-神经网络
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• MLPClassifier,是用来做分类的神经网络,我们用MLPClassifierLeabharlann Baidu鸢尾花数 据上做测试。
• (1)导入必要的模块。 • 这里我们用到sklearn中的neural_network模块中的MLPClassifier分类器。此外
我们使用到load_iris来获取iris数据集。我们使用model_selection模块中的方法 来分割训练集和测试集。 • (2)导入数据集。 • (3)获得自变量数据集。 • (4)获得因变量数据集。 • (5)分割测试集和训练集。 • (6)初始化神经网络。 • 这里我们通过hidden_layer参数设置隐藏层为3层,每个隐藏层有3个神经元。 另外通过max_iter参数设置最大的迭代次数为100000次。solver参数是指定最 优化方法,我们已经知道了梯度下降,而adam则是另一种优化的算法。 • (7)训练模型。 • 我们可以看到一些其他的参数,比如alpha代表了学习速率。 • (8)查看模型评分。
第10章神经网络
• 当我们一提到人工神神经网络,经常看到如图 10.1所示的图。一般情况下我们都会将此神经网 络与生物学上的人的神经元相联系起来。这样虽 然很形象,但是不利于深入理解。因为这样我们 很难将神经网络和数学联系起来。那么神经网络 的数学解释是什么呢?
图10.1 神经网络
10.1 神经网络的基础知识
• 神经网络本质上是逻辑回归类型函数的组 合,所以理解神经网络的关键就是理解逻 辑回归。
10.1.1 逻辑回归
• 其实在逻辑回归一章,我们已经就已经学习了 “人工神经网络”,因为逻辑回归就是浅层的 神经网络。我们可以理解为,逻辑回归的算法 就是一个一层的神经网络。如图10.2。
• 我们也可以将这个逻辑回归看成复杂神经网络 的一个节点(神经元)。如图10.3,假设我们 有如下的神经元。
• 那么逻辑回归就是其中的一个节点,如图10.4 所示。
图10.2 逻辑回归与神经网络
图10.3 神经网络样例
图10.4 逻辑回归与神经网络的关系
10.1.2 激活函数
图10.5 sigmoid函数图像
图10.6 tanh函数图像
图10.7 ReLU函数图像
10.2 深入理解神经网络
• 我们已经知道神经网络其实是多个逻辑回归的 叠加。一个复杂的神经网络包括很多层,对于 这样庞大系统我们可能无从下手,其实只要把 握两个关键点就行。第一个是隐藏层,隐藏层 主要控制了神经网络的计算复杂度以及计算的 精度,我们可以通过调节隐藏层来控制算法的 速度和准确度。?诙鍪鞘涑霾悖涑霾憔龆 松窬绲墓δ芾嘈汀1热纾颐堑纳窬 缡且龌毓榛故欠掷啵咳绻龇掷嗟幕埃 亲龆掷嗪投喾掷啵空庑┒际鞘涑霾憔龆ǖ?
• 在进行二分类预测的神经网络中,最后的 输出层可以设置为sigmoid函数,如图10.10 所示。
图10.10 二分类神经网络
10.2.4 做多分类的神经网络
• 在机器学习的项目中,我们经常遇到的是 多分类问题。对于多分类问题,我们可以 将最后的输出层设置为softmax函数,如图 10.11所示。
因为该函数比sigmoid和tanh的学习效果更好。
• 而在输出层则需要根据最后需要的结果来选择。接下来 的小节会详细的讲解。
10.2.2 做回归的神经网络
• 在进行回归预测的神经网络中,最后的输 出层需要设置为线性的,即不需要设置任 何激活函数,如图10.9所示。
图10.9 回归预测的神经网络
10.2.3 做二分类的神经网络
10.3.2 MLPRegressor
• MLPRegressor主要用来做回归,我们测试一下用模拟的数据做回归模 型的效果。
• (1)导入必要的模块。 • 这里导入了sklearn.neural_network中的MLPRegressor回归模块。这一
小节的测试并没有使用sklearn中的数据集,而是使用模拟的数据。 • (2)生成模拟的自变量数据集。 • 这里生成的是从-3.14到3.14区间的平均分割的400个点。 • (3)转换数据类型。 • 将X转换为一个一维的数组。 • (4)生成模拟的目标变量数据。 • (5)初始化模型对象。 • 参数解释请参考上一小节。 • (6)训练模型对象。 • (7)预测。 • (8)画出预测结果。
图10.12 回归神经网络结果
• 我们还可以尝试不同的激活函数,比如图 10.13的ReLU函数,图10.14的tanh函数。
图10.13 ReLU函数结果
图10.14 tanh函数结果
图10.11 多分类神经网络
10.3 神经网络应用
• 在scikit中称神经网络为多层感知器(Multilayer Perceptron),它可以用于分类或回归的 非线性函数。用于分类的模块是 MLPClassifier,而用于回归的模块则是 MLPRegressor。
10.3.1 MLPClassifier
• 层数,如果层数比较多,那么这个神经网络就是所谓的 深度学习神经网络了。并不是越深的神经网络效果就越 好,因为过多的层数可能会导致梯度消失。而现在学者 也在不断的深入研究如何加速深度神经网络的学习速度。
• 每层节点的个数,设置每层神经节点的个数。 • 设置节点的激活函数,一般在隐藏层设置为ReLU激活,
10.2.1 神经网络的表示
• 一般我们将隐藏层和输出层算作神经网络的总层数, 但是输入层不计入总层数。所以如图10.8所示的神 经网络,我们称这个网络是3层的神经网络,2个隐 藏层和1个输出层。
图10.8 3层神经网络
• 我们在构建神经网络的时候,需要指定超参数。
• 学习速率,学习速率就是在线性回归一章中所讲的,只 不过在神经网络中要学习速率对应了多个节点的多个参 数。
• (1)导入必要的模块。 • 这里我们用到sklearn中的neural_network模块中的MLPClassifier分类器。此外
我们使用到load_iris来获取iris数据集。我们使用model_selection模块中的方法 来分割训练集和测试集。 • (2)导入数据集。 • (3)获得自变量数据集。 • (4)获得因变量数据集。 • (5)分割测试集和训练集。 • (6)初始化神经网络。 • 这里我们通过hidden_layer参数设置隐藏层为3层,每个隐藏层有3个神经元。 另外通过max_iter参数设置最大的迭代次数为100000次。solver参数是指定最 优化方法,我们已经知道了梯度下降,而adam则是另一种优化的算法。 • (7)训练模型。 • 我们可以看到一些其他的参数,比如alpha代表了学习速率。 • (8)查看模型评分。
第10章神经网络
• 当我们一提到人工神神经网络,经常看到如图 10.1所示的图。一般情况下我们都会将此神经网 络与生物学上的人的神经元相联系起来。这样虽 然很形象,但是不利于深入理解。因为这样我们 很难将神经网络和数学联系起来。那么神经网络 的数学解释是什么呢?
图10.1 神经网络
10.1 神经网络的基础知识
• 神经网络本质上是逻辑回归类型函数的组 合,所以理解神经网络的关键就是理解逻 辑回归。
10.1.1 逻辑回归
• 其实在逻辑回归一章,我们已经就已经学习了 “人工神经网络”,因为逻辑回归就是浅层的 神经网络。我们可以理解为,逻辑回归的算法 就是一个一层的神经网络。如图10.2。
• 我们也可以将这个逻辑回归看成复杂神经网络 的一个节点(神经元)。如图10.3,假设我们 有如下的神经元。
• 那么逻辑回归就是其中的一个节点,如图10.4 所示。
图10.2 逻辑回归与神经网络
图10.3 神经网络样例
图10.4 逻辑回归与神经网络的关系
10.1.2 激活函数
图10.5 sigmoid函数图像
图10.6 tanh函数图像
图10.7 ReLU函数图像
10.2 深入理解神经网络
• 我们已经知道神经网络其实是多个逻辑回归的 叠加。一个复杂的神经网络包括很多层,对于 这样庞大系统我们可能无从下手,其实只要把 握两个关键点就行。第一个是隐藏层,隐藏层 主要控制了神经网络的计算复杂度以及计算的 精度,我们可以通过调节隐藏层来控制算法的 速度和准确度。?诙鍪鞘涑霾悖涑霾憔龆 松窬绲墓δ芾嘈汀1热纾颐堑纳窬 缡且龌毓榛故欠掷啵咳绻龇掷嗟幕埃 亲龆掷嗪投喾掷啵空庑┒际鞘涑霾憔龆ǖ?
• 在进行二分类预测的神经网络中,最后的 输出层可以设置为sigmoid函数,如图10.10 所示。
图10.10 二分类神经网络
10.2.4 做多分类的神经网络
• 在机器学习的项目中,我们经常遇到的是 多分类问题。对于多分类问题,我们可以 将最后的输出层设置为softmax函数,如图 10.11所示。
因为该函数比sigmoid和tanh的学习效果更好。
• 而在输出层则需要根据最后需要的结果来选择。接下来 的小节会详细的讲解。
10.2.2 做回归的神经网络
• 在进行回归预测的神经网络中,最后的输 出层需要设置为线性的,即不需要设置任 何激活函数,如图10.9所示。
图10.9 回归预测的神经网络
10.2.3 做二分类的神经网络
10.3.2 MLPRegressor
• MLPRegressor主要用来做回归,我们测试一下用模拟的数据做回归模 型的效果。
• (1)导入必要的模块。 • 这里导入了sklearn.neural_network中的MLPRegressor回归模块。这一
小节的测试并没有使用sklearn中的数据集,而是使用模拟的数据。 • (2)生成模拟的自变量数据集。 • 这里生成的是从-3.14到3.14区间的平均分割的400个点。 • (3)转换数据类型。 • 将X转换为一个一维的数组。 • (4)生成模拟的目标变量数据。 • (5)初始化模型对象。 • 参数解释请参考上一小节。 • (6)训练模型对象。 • (7)预测。 • (8)画出预测结果。
图10.12 回归神经网络结果
• 我们还可以尝试不同的激活函数,比如图 10.13的ReLU函数,图10.14的tanh函数。
图10.13 ReLU函数结果
图10.14 tanh函数结果
图10.11 多分类神经网络
10.3 神经网络应用
• 在scikit中称神经网络为多层感知器(Multilayer Perceptron),它可以用于分类或回归的 非线性函数。用于分类的模块是 MLPClassifier,而用于回归的模块则是 MLPRegressor。
10.3.1 MLPClassifier
• 层数,如果层数比较多,那么这个神经网络就是所谓的 深度学习神经网络了。并不是越深的神经网络效果就越 好,因为过多的层数可能会导致梯度消失。而现在学者 也在不断的深入研究如何加速深度神经网络的学习速度。
• 每层节点的个数,设置每层神经节点的个数。 • 设置节点的激活函数,一般在隐藏层设置为ReLU激活,
10.2.1 神经网络的表示
• 一般我们将隐藏层和输出层算作神经网络的总层数, 但是输入层不计入总层数。所以如图10.8所示的神 经网络,我们称这个网络是3层的神经网络,2个隐 藏层和1个输出层。
图10.8 3层神经网络
• 我们在构建神经网络的时候,需要指定超参数。
• 学习速率,学习速率就是在线性回归一章中所讲的,只 不过在神经网络中要学习速率对应了多个节点的多个参 数。