原文链接:https://xiets.blog.csdn.net/article/details/130977232
版权声明:原创文章禁止转载
专栏目录:scikit-learn 专栏(总目录)
scikit-learn 官方相关网站:
- 官网: https://scikit-learn.org/
- 用户指南 (实例教程): https://scikit-learn.org/stable/user_guide.html
- API (各模块、模型类): https://scikit-learn.org/stable/modules/classes.html
参考书籍:
sklearn.neural_network
模块中实现了基于神经网络的模型。
神经网络(深度学习) 教程(官网): Neural network models (supervised)
1. 神经网络
神经网络算法,又叫“深度学习”。虽然深度学习在许多机器学习应用中都有巨大的潜力,但深度学习算法往往经过精确调整,只适用于特定的使用场景。scikit-learn 中实现了可用于分类和回归的 多层感知机(multilayer perceptron, MLP),它可以作为研究复杂深度学习算法的起点。MLP 也被称为(普通)前馈神经网络,有时也简称为神经网络。
MLP 可以被视为广义的线性模型,执行多层处理后得到结论。在 MLP 中,多次重复这个计算线性回归加权求和的过程,首先计算代表中间过程的隐单元(hidden unit),然后再计算这些隐单元的加权求和并得到最终结果。
MLPClassifier
和 MLPRegressor 分布实现了多层感知机(MLP)分类和回归模型。
2. 多层感知器分类器: MLPClassifier
MLPClassifier
实现了多层感知器分类器。
MLPClassifier
的构造方法:
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)
# 部分参数:
# hidden_layer_sizes tuple, length = n_layers - 2, default=(100,)
# 第 i 个元素表示第 i 个隐藏层中的神经元数量。
#
# activation {"identity", "logistic", "tanh", "relu"}, default="relu"。
# 隐藏层的激活函数。
#
# solver {"lbfgs", "sgd", "adam"}, default="adam"
# 权重优化的求解器。
#
# shuffle bool, default=True。
# 是否在每次迭代中打乱样本。仅在 solver = 'sgd' 或 'adam' 时使用。
#
# random_state int, RandomState instance, default=None。
# 确定权重和偏差初始化的随机数生成。
#
# alpha float, default=0.0001。使用的初始学习率。
# 它控制更新权重的步长, 仅在 solver= 'sgd' 或 'adam' 时使用。
#
# max_iter int, default=200。最大迭代次数。
# 求解器迭代直到收敛 (由 "tol" 确定) 或此迭代次数。
使用 多层感知器分类器 处理 鸢尾花分类 问题:
from sklearn import datasets
from sklearn import model_selection
from sklearn import neural_network
# 加载鸢尾花数据集
X, y = datasets.load_iris(return_X_y=True)
# 拆分 训练集 和 测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)
# 创建 多层感知器分类器
mlp_cls = neural_network.MLPClassifier(hidden_layer_sizes=(100,), random_state=0, alpha=0.0001, max_iter=1000)
# 训练数据
mlp_cls.fit(X_train, y_train)
# 评估模型得分 (准确率)
print(mlp_cls.score(X_train, y_train)) # 训练集得分: 0.9821428571428571
print(mlp_cls.score(X_test, y_test)) # 测试集得分: 0.9736842105263158
2. 多层感知器回归器: MLPRegressor
MLPClassifier
实现了多层感知器回归器。
MLPClassifier
类的属性和方法与 MLPRegressor
类基本相同。
用 多层感知器回归器 处理 加利福尼亚住房数据集 问题:
from sklearn import datasets
from sklearn import model_selection
from sklearn import neural_network
# 加载/获取 加利福尼亚住房 数据集
X, y = datasets.fetch_california_housing(return_X_y=True)
# 把数据集拆分为 训练集 和 测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, random_state=0)
# 创建 多层感知器回归器
mlp_reg = neural_network.MLPRegressor(hidden_layer_sizes=(100,), random_state=0, alpha=0.0001, max_iter=1000)
# 训练模型
mlp_reg.fit(X_train, y_train)
# 评估模型 R方
print(mlp_reg.score(X_train, y_train)) # 在训练集上的得分: 0.5041034703903609
print(mlp_reg.score(X_test, y_test)) # 在测试集上的得分: 0.46688586880740435