Python机器学习(scikit-learn):监督学习 --- 神经网络(深度学习)

文章介绍了scikit-learn库中的神经网络模型,特别是多层感知机(MLP)用于分类和回归的任务。MLPClassifier和MLPRegressor分别用于分类和回归问题,文章提到了它们的构造方法和重要参数,如隐藏层大小、激活函数和优化器。并给出了鸢尾花分类和加利福尼亚住房数据集的示例应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://xiets.blog.csdn.net/article/details/130977232

版权声明:原创文章禁止转载

专栏目录:scikit-learn 专栏(总目录)

scikit-learn 官方相关网站:

参考书籍:

sklearn.neural_network 模块中实现了基于神经网络的模型。

神经网络(深度学习) 教程(官网): Neural network models (supervised)

1. 神经网络

神经网络算法,又叫“深度学习”。虽然深度学习在许多机器学习应用中都有巨大的潜力,但深度学习算法往往经过精确调整,只适用于特定的使用场景。scikit-learn 中实现了可用于分类和回归的 多层感知机(multilayer perceptron, MLP),它可以作为研究复杂深度学习算法的起点。MLP 也被称为(普通)前馈神经网络,有时也简称为神经网络。

MLP 可以被视为广义的线性模型,执行多层处理后得到结论。在 MLP 中,多次重复这个计算线性回归加权求和的过程,首先计算代表中间过程的隐单元(hidden unit),然后再计算这些隐单元的加权求和并得到最终结果。

MLPClassifierMLPRegressor 分布实现了多层感知机(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢TS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值