当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn MLPRegressor用法及代码示例


本文简要介绍python语言中 sklearn.neural_network.MLPRegressor 的用法。

用法:

class sklearn.neural_network.MLPRegressor(hidden_layer_sizes=(100,), activation='relu', *, solver='adam', alpha=0.0001, batch_size='auto', learning_rate='constant', learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10, max_fun=15000)

多层感知器回归器。

该模型使用 LBFGS 或随机梯度下降优化平方误差。

参数

hidden_layer_sizes元组,长度= n_layers - 2,默认=(100,)

第 i 个元素表示第 i 个隐藏层中的神经元数量。

activation{‘identity’, ‘logistic’, ‘tanh’, ‘relu’},默认='relu'

隐藏层的激活函数。

  • ‘identity’, no-op 激活,用于实现线性瓶颈,返回 f(x) = x
  • ‘logistic’,逻辑 sigmoid 函数,返回 f(x) = 1 /(1 + exp(-x))。
  • ‘tanh’,双曲 tan 函数,返回 f(x) = tanh(x)。
  • ‘relu’,整流后的线性单位函数,返回 f(x) = max(0, x)
solver{‘lbfgs’, ‘sgd’, ‘adam’},默认='adam'

权重优化的求解器。

  • ‘lbfgs’ 是quasi-Newton 方法系列中的优化器。
  • ‘sgd’ 指的是随机梯度下降。
  • ‘adam’ 指的是由 Kingma、Diederik 和 Jimmy Ba 提出的基于随机梯度的优化器

注意:就训练时间和验证分数而言,默认求解器 ‘adam’ 在相对较大的数据集(具有数千个训练样本或更多)上运行良好。然而,对于小型数据集,‘lbfgs’ 可以更快地收敛并表现更好。

alpha浮点数,默认=0.0001

L2 惩罚(正则化项)参数。

batch_size整数,默认='自动'

随机优化器的小批量大小。如果求解器是‘lbfgs’,分类器将不使用小批量。当设置为 “auto”、batch_size=min(200, n_samples) 时。

learning_rate{‘constant’, ‘invscaling’, ‘adaptive’},默认='常量'

权重更新的学习率计划。

  • ‘constant’ 是由‘learning_rate_init’ 给出的恒定学习率。
  • ‘invscaling’ 在每个时间步 ‘t’ 使用 ‘power_t’ 的逆缩放 index 逐渐降低学习率 learning_rate_。 effective_learning_rate = learning_rate_init /pow(t, power_t)
  • ‘adaptive’ 保持学习率恒定为 ‘learning_rate_init’ 只要训练损失不断减少。如果 ‘early_stopping’ 开启,每次连续两个 epoch 未能将训练损失减少至少 tol 或未能将验证分数增加至少 tol 时,当前学习率除以 5。

仅在solver='sgd'时使用。

learning_rate_init浮点数,默认=0.001

使用的初始学习率。它控制更新权重的步长。仅当solver=’sgd’或‘adam’时使用。

power_t浮点数,默认=0.5

逆缩放学习率的 index 。当learning_rate设置为‘invscaling’时,它用于更新有效学习率。仅在solver='sgd'时使用。

max_iter整数,默认=200

最大迭代次数。求解器迭代直到收敛(由‘tol’ 确定)或此迭代次数。对于随机求解器 (‘sgd’, ‘adam’),请注意,这决定了 epoch 的数量(每个数据点将被使用多少次),而不是梯度步骤的数量。

shuffle布尔,默认=真

是否在每次迭代中打乱样本。仅在solver='sgd' 或‘adam’ 时使用。

random_stateint,RandomState 实例,默认=无

确定权重和偏差初始化的随机数生成,如果使用提前停止则确定 train-test 分割,并在求解器=’sgd’或 ‘adam’ 时进行批量采样。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。

tol浮点数,默认=1e-4

优化的容差。当 n_iter_no_change 连续迭代的损失或分数没有提高至少 tol 时,除非将 learning_rate 设置为 ‘adaptive’,否则认为达到收敛并停止训练。

verbose布尔,默认=假

是否将进度消息打印到标准输出。

warm_start布尔,默认=假

当设置为 True 时,重用之前调用的解决方案作为初始化,否则,只需擦除之前的解决方案。请参阅词汇表。

momentum浮点数,默认=0.9

梯度下降更新的动量。应介于 0 和 1 之间。仅在solver='sgd' 时使用。

nesterovs_momentum布尔,默认=真

是否使用涅斯捷罗夫的动量。仅在求解器 ='sgd' 且动量 > 0 时使用。

early_stopping布尔,默认=假

当验证分数没有提高时,是否使用提前停止来终止训练。如果设置为 true,它将自动留出 10% 的训练数据作为验证,并在连续 n_iter_no_change 的验证分数没有提高至少 tol 时终止训练。仅在solver='sgd' 或‘adam’ 时有效。

validation_fraction浮点数,默认=0.1

留出作为提前停止验证集的训练数据的比例。必须介于 0 和 1 之间。仅在 early_stopping 为 True 时使用。

beta_1浮点数,默认=0.9

在 adam 中估计一阶矩向量的 index 衰减率应该在 [0, 1) 中。仅在solver='adam'时使用。

beta_2浮点数,默认=0.999

在 adam 中估计二阶矩向量的 index 衰减率应该在 [0, 1) 中。仅在solver='adam'时使用。

epsilon浮点数,默认=1e-8

亚当数值稳定性的值。仅在solver='adam'时使用。

n_iter_no_change整数,默认=10

不满足tol 改进的最大时期数。仅在solver='sgd' 或‘adam’ 时有效。

max_fun整数,默认=15000

仅在求解器='lbfgs' 时使用。函数调用的最大数量。求解器迭代直到收敛(由‘tol’ 确定),迭代次数达到max_iter,或此函数调用次数。请注意,函数调用的数量将大于或等于 MLPRegressor 的迭代次数。

属性

loss_浮点数

使用损失函数计算的当前损失。

best_loss_浮点数

求解器在整个拟合过程中达到的最小损失。

loss_curve_形状列表(n_iter_,)

在每个训练步骤结束时评估的损失值。列表中的第 i 个元素表示第 i 次迭代的损失。

t_int

求解器在拟合期间看到的训练样本数。数学上等于n_iters * X.shape[0],意思是time_step,它被优化器的学习率调度器使用。

coefs_形状列表 (n_layers - 1,)

列表中的第 i 个元素代表第 i 层对应的权重矩阵。

intercepts_形状列表 (n_layers - 1,)

列表中的第 i 个元素表示对应于第 i + 1 层的偏置向量。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_iter_int

求解器已运行的迭代次数。

n_layers_int

层数。

n_outputs_int

输出数量。

out_activation_str

输出激活函数的名称。

注意

MLPRegressor 迭代训练,因为在每个时间步都会计算损失函数相对于模型参数的偏导数以更新参数。

它还可以在损失函数中添加一个正则化项,以缩小模型参数以防止过度拟合。

此实现适用于表示为密集和稀疏 numpy 浮点值数组的数据。

参考

欣顿,杰弗里·E。

“联结主义学习程序。”人工智能 40.1(1989):185-234。

格洛罗特、泽维尔和约书亚·本吉奥。 “理解困难

训练深度前馈神经网络。”人工智能与统计国际会议。 2010 年。

他,凯明,等。 “深入研究整流器:超越human-level

imagenet 分类的性能。” arXiv 预印本 arXiv:1502.01852 (2015)。

Kingma、Diederik 和 Jimmy Ba。 “亚当:一种随机的方法

优化。” arXiv 预印本 arXiv:1412.6980 (2014)。

例子

>>> from sklearn.neural_network import MLPRegressor
>>> from sklearn.datasets import make_regression
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(n_samples=200, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=1)
>>> regr = MLPRegressor(random_state=1, max_iter=500).fit(X_train, y_train)
>>> regr.predict(X_test[:2])
array([-0.9..., -7.1...])
>>> regr.score(X_test, y_test)
0.4...

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.neural_network.MLPRegressor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。