scikit-learn学习笔记(6)--神经网络

如题所述

神经网络(neural_network)模块中的重要类包括MLPClassifier(用于分类)和MLPRegressor(用于回归)。多层感知器(MLP)是一种监督学习算法,属于前馈人工神经网络模型,本质上是一个全连接神经网络(让我回想起看西瓜书时用Java实现全连接网络......不堪回首)。

MLPClassifier类和MLPRegressor类都使用参数alpha作为正则化(L2正则化)系数。

二、数据集

分类:鸢尾花数据集

回归:自己构造的曲线,exp函数,x范围为[-3.0, 3.0],间隔为0.1

三、函数详细介绍

多分类同样不用讨论,并且允许同时拟合多条线。

这章的详细介绍将从源码、参数、属性、结果截图和画图截图展开。

1、MLPClassifier类,多层感知机分类

原理及公式:一系列的公式和具体原理可以见西瓜书,这里不再赘述。

代码:略

结果图示:略

note:

1、各属性值含义在源码中已经说明。

2、参数:

1)、hidden_layer_sizes=(10):元组,同时指定隐藏层层数+每层单元数。比如(10,20)两层,第一层10个隐藏单元,第二层20个单元;

2)、activation="relu":隐藏层的激活函数,可选为{'identity', 'logistic', 'tanh', 'relu'},分别对应:{ f(x) = x ,f(x) = 1 / (1 + exp(-x)),f(x) = tanh(x),f(x) = max(0, x)}

3)、solver='adam':参数的优化算法,可选为{'lbfgs', 'sgd', 'adam'},分别对应{拟牛顿法,随机梯度下降,基于随机梯度下降的自适应}的具体实现算法

4)、alpha=0.0001:L2正则化参数

5)、batch_size='auto':对于随机优化器来说是可选的,批大小,设为auto时为min(200,n_SAMPLES)

6)、learning_rate="constant":参数更新时的学习率,只在solver='sgd'时有效,可选为{'constant', 'invscaling', 'adaptive'},分别对应{常数即=初始学习率,逐渐降低,自适应}

7)、learning_rate_init=0.001:初始学习率,只在solver='sgd' 或'adam'起作用

8)、power_t=0.5:影响learning_rate=" invscaling "时的学习率降低(有个计算公式effective_learning_rate = learning_rate_init / pow(t, power_t),t表示时间步)

9)、max_iter=200:最大迭代轮数

10)、tol=1e-4:损失值容忍阈值,小于该值时停止训练

2、MLPRegressor类,多层感知机回归

原理及公式:本来输出的就是连续值,用来做分类要加上softmax层,这里只是去掉该层

代码:略

结果图示:略

note:

1、参数同分类,无新参数需要说明

2、各属性值含义亦同。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜