神经网络(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、各属性值含义亦同。
温馨提示:答案为网友推荐,仅供参考