原文:http://www.manongjc.com/detail/31-qzowvnwgqvryshl.html
class sklearn.neural_network.MLPClassifier(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 或随机梯度下降优化 log-loss 函数。
参数
hidden_layer_sizes:元组,长度= n_layers - 2,默认=(100,)
第 i 个元素表示第 i 个隐藏层中的神经元数量。
hidden_layer_sizes :例如hidden_layer_sizes=(50, 50),表示有两层隐藏层,第一层隐藏层有50个神经元,第二层也有50个神经元。
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’ 使用‘power_t’ 的逆缩放 index 逐渐降低每个时间步‘t’ 的学习率。 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
使用的初始学习率。它控制step-size 更新权重。仅在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_state:int,RandomState 实例,默认=None
确定权重和偏差初始化的随机数生成,train-test 如果使用提前停止,则拆分,当solver='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 连续 epoch 中至少没有提高 tol 时终止训练。除多标签设置外,拆分是分层的。如果 early stop 为 False,则当训练集的 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,或者这个损失函数调用次数。请注意,损失函数调用的次数将大于或等于 MLPClassifier 的迭代次数。
属性:
classes_:ndarray 或形状的 ndarray 列表 (n_classes,)
每个输出的类标签。
loss_:浮点数
使用损失函数计算的当前损失。
best_loss_:浮点数
求解器在整个拟合过程中达到的最小损失。
loss_curve_:形状列表(n_iter_,)
列表中的第 i 个元素表示第 i 次迭代的损失。
t_:int
求解器在拟合期间看到的训练样本数。
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
输出激活函数的名称。
注意:
MLPClassifier 迭代训练,因为在每个时间步都会计算损失函数相对于模型参数的偏导数以更新参数。
它还可以在损失函数中添加一个正则化项,以缩小模型参数以防止过度拟合。
此实现适用于表示为密集 numpy 数组或稀疏 scipy 浮点值数组的数据。
>>> from sklearn.neural_network import MLPClassifier
>>> from sklearn.datasets import make_classification
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_classification(n_samples=100, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y,
... random_state=1)
>>> clf = MLPClassifier(random_state=1, max_iter=300).fit(X_train, y_train)
>>> clf.predict_proba(X_test[:1])
array([[0.038..., 0.961...]])
>>> clf.predict(X_test[:5, :])
array([1, 0, 1, 0, 1])
>>> clf.score(X_test, y_test)
0.8...
方法:
-
fit(X,y):拟合
-
get_params([deep]):获取参数
-
predict(X):使用MLP进行预测
-
predic_log_proba(X):返回对数概率估计
-
predic_proba(X):概率估计
-
score(X,y[,sample_weight]):返回给定测试数据和标签上的平均准确度
-
set_params(**params):设置参数。