sklearn之神经网络分类和回归

分类

MLPClassifier

参数说明:

  1. hidden_layer_sizes : 元组形式,长度n_layers-2,默认(100,),第i元素表示第i个神经元的个数
  2. activation: {‘identity’, ‘logistic’, ‘tanh’, ‘relu’},默认"relu"
  • ‘identity’: f(x) = x
  • ‘logistic’:f(x) = 1 / (1 + exp(-x))
  • ‘tanh’ : f(x) = tanh(x)
  • ‘relu’ : f(x) = max(0, x)
  1. solver:{‘lbfgs’, ‘sgd’, ‘adam’}, default ‘adam’
  2. lbfgs:quasi-Newton方法的优化器
  3. sgd:随机梯度下降
  4. adam: Kingma, Diederik, and Jimmy Ba提出的机遇随机梯度的优化器 注意:默认solver ‘adam’在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好
  5. alpha:float,可选的,默认0.0001,正则化项参数
  6. batch_size:int , 可选的,默认‘auto’,随机优化的minibatches的大小,如果solver是‘lbfgs’,分类器将不使用minibatch,当设置成‘auto’,batch_size=min(200,n_samples)
  7. learning_rate:{‘constant’,‘invscaling’, ‘adaptive’},默认‘constant’,用于权重更新,只有当solver为’sgd‘时使用
  • ‘constant’: 有‘learning_rate_init’给定的恒定学习率
  • ‘incscaling’:随着时间t使用’power_t’的逆标度指数不断降低学习率learning_rate_effective_learning_rate = learning_rate_init / pow(t, power_t)
  • ‘adaptive’:只要训练损耗在下降,就保持学习为’learning_rate_init’不变,当连续两次不能降低训练损耗或验证分数停止升高至少tol时,将当前学习率除以5.
  1. max_iter: int,可选,默认200,最大迭代次数。
  2. random_state:int 或RandomState,可选,默认None,随机数生成器的状态或种子
  3. shuffle: bool,可选,默认True,只有当solver=’sgd’或者‘adam’时使用,判断是否在每次迭代时对样本进行清洗。
  4. tol:float, 可选,默认1e-4,优化的容忍度
  5. learning_rate_int:double,可选,默认0.001,初始学习率,控制更新权重的补偿,只有当solver=’sgd’ 或’adam’时使用。
  6. power_t: double, optional, default 0.5,只有solver=’sgd’时使用,是逆扩展学习率的指数.当learning_rate=’invscaling’,用来更新有效学习率。
  7. verbose : bool, optional, default False,是否将过程打印到stdout
  8. warm_start : bool, optional, default False,当设置成True,使用之前的解决方法作为初始拟合,否则释放之前的解决方法
  9. momentum : float, default 0.9,Momentum(动量) for gradient descent update. Should be between 0 and 1. Only used when solver=’sgd’.
  10. nesterovs_momentum : boolean, default True, Whether to use Nesterov’s momentum. Only used when solver=’sgd’ and momentum > 0
  11. early_stopping : bool, default False,Only effective when solver=’sgd’ or ‘adam’,判断当验证效果不再改善的时候是否终止训练,当为True时,自动选出10%的训练数据用于验证并在两步连续爹迭代改善低于tol时终止训练
  12. validation_fraction: float, optional, default 0.1,用作早期停止验证的预留训练数据集的比例,早0-1之间,只当early_stopping=True有用
  13. beta_1 : float, optional, default 0.9,Only used when solver=’adam’,估计一阶矩向量的指数衰减速率,[0,1)之间
  14. beta_2 : float, optional, default 0.999,Only used when solver=’adam’估计二阶矩向量的指数衰减速率[0,1)之间
  15. psilon: float, optional, default 1e-8,Only used when solver=’adam’数值稳定值。

属性说明:

  1. classes_:每个输出的类标签
  2. loss_:损失函数计算出来的当前损失值
  3. coefs_:列表中的第i个元素表示i层的权重矩阵
  4. intercepts_:列表中第i个元素代表i+1层的偏差向量
  5. n_iter_:迭代次数
  6. n_layers_:层数
  7. n_outputs_:输出的个数
  8. out_activation_:输出激活函数的名称。

方法说明:

  • fit(X,y):拟合
  • get_params([deep]):获取参数
  • predict(X):使用MLP进行预测
  • predic_log_proba(X):返回对数概率估计
  • predic_proba(X):概率估计
  • score(X,y[,sample_weight]):返回给定测试数据和标签上的平均准确度
  • set_params(**params):设置参数。
from sklearn.neural_network import MLPClassifier
X = [[0., 0.], [1., 1.]]
y = [0, 1]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                    hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto', beta_1=0.9,
       beta_2=0.999, early_stopping=False, epsilon=1e-08,
       hidden_layer_sizes=(5, 2), learning_rate='constant',
       learning_rate_init=0.001, max_iter=200, momentum=0.9,
       nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
       solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
       warm_start=False)
clf.predict([[2., 2.], [-1., -2.]])
array([1, 0])
clf.predict_proba([[2., 2.], [-1.,- 2.]])
array([[  1.96718015e-004,   9.99803282e-001],
       [  1.00000000e+000,   4.67017947e-144]])

回归

from sklearn.neural_network import MLPRegressor

正则化

实用技巧

  • 多层感知器对特征的缩放是敏感的,所以它强烈建议您归一化你的数据。 例如,将输入向量 X 的每个属性放缩到到 [0, 1] 或 [-1,+1] ,或者将其标准化使它具有 0 均值和方差 1。
  • 最好使用 GridSearchCV 找到一个合理的正则化参数$ \alpha$ ,通常范围是在 $10.0 ** -np.arange(1, 7)$ 。
  • 据经验可知,我们观察到 L-BFGS 收敛速度是更快的并且是小数据集上更好的解决方案。对于规模相对比较大的数据集,Adam 是非常鲁棒的。 它通常会迅速收敛,并得到相当不错的表现。 另一方面,如果学习率调整得正确, 使用 momentum 或 nesterov’s momentum 的 SGD 可以比这两种算法更好。

posted on   sduSRZ  阅读(518)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示