详解 Scikit-learn 的 neural_network.MLPClassifier函数:多层感知器分类器

Scikit-learn的sklearn.neural_network.MLPClassifier函数说明

sklearn.neural_network.MLPClassifier是Scikit-learn库中的一个多层感知器(MLP)的分类算法。MLP是一种人工神经网络模型,可以被用于分类和回归问题。其中,MLPClassifier用于分类问题。

MLPClassifier构造函数

可通过MLPClassifier的构造函数定义模型的参数,各参数解释如下:

  • hidden_layers_sizes:一个整数列表,定义了神经网络每个隐藏层节点(神经元)数量。比如,如果神经网络有两个隐藏层,第一个有10个神经元,第二个有5个神经元,则hidden_layers_sizes应该为[10, 5]。默认是100个节点。
  • activation:定义激活函数。可选项为'identity', 'logistic', 'tanh'或'relu'。默认是'relu'。
  • solver:定义优化算法。可选项为'lbfgs', 'sgd'或'adam'。默认是'adam'。
  • alpha:正则化参数,在SGD和Adam中用于控制网络复杂度。默认为0.0001。
  • batch_size:梯度下降的分批次大小。默认为'auto'。
  • learning_rate:学习率类型。可选项为'constant'、'invscaling'和'adaptive'。默认是'constant'。
  • learning_rate_init:初始学习速率。默认是0.001。
  • max_iter:最大迭代次数。默认是200。
  • shuffle:定义是否每次迭代时洗牌数据。默认是True。
  • momentum:用于加速SGD收敛的动量。默认值为0.9。
  • nesterovs_momentum:定义使用Nesterov Momentum加速的SGD。默认为True。
  • early_stopping:定义是否停止训练的提前停止策略。默认为False。
  • validation_fraction:设定用于早期停止策略的验证集占总体数据集的上限。
  • beta_1:Adam优化器的参数β1。默认为0.9。
  • beta_2:Adam优化器的参数β2。默认为0.999。
  • epsilon:Adam优化器的ε值。默认值为1e-08。
  • n_iter_no_change:提前停止的迭代次数。当连续n次的迭代都没有对验证集loss产生改善时将视为停止迭代。

MLPClassifier主要方法

MLPClassifier包含了众多的方法供用户调用,具体解释如下:

  • fit(X, y):训练一个MLP分类器,X表示特征矩阵,y表示分类结果。
  • predict(X):通过已训练的MLP预测分类结果。
  • predict_proba(X):在已训练的MLP分类器中预测每个元素在各个分类中的概率。
  • score(X, y):计算在给定测试数据(X,y)上的预测成功率。如果需要返回其他性能指标,则需要使用相关指标函数。

Scikit-learn的sklearn.neural_network.MLPClassifier函数的使用方法

使用示例1:Iris数据集

Iris数据集包含三种不同品种的鸢尾花,每种鸢尾花有50个样本,每个样本由4个特征构成。我们将使用一个MLP来建立分类器,可以将鸢尾花分为这三个品种。以下是完整代码:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import classification_report, confusion_matrix

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# 训练模型
mlp = MLPClassifier(hidden_layer_sizes=(10, 10), max_iter=300)
mlp.fit(X_train, y_train)

# 预测结果
predictions = mlp.predict(X_test)

# 输出准确率和混淆矩阵
print(classification_report(y_test,predictions))
print(confusion_matrix(y_test,predictions))

输出结果如下所示:

              precision    recall  f1-score   support

           0       1.00      1.00      1.00        14
           1       0.91      0.77      0.83        13
           2       0.77      0.91      0.83        11

    accuracy                           0.90        38
   macro avg       0.89      0.89      0.89        38
weighted avg       0.91      0.90      0.90        38

[[14  0  0]
 [ 0 10  3]
 [ 0  1 10]]

使用示例2:手写数字识别

MNIST数据集是一个手写数字识别数据集。其中包含有60000张训练图片和10000张测试图片。每张图片都是28×28大小的灰度图,总共有10种类别(表示数字0到9)。下面我们来看如何使用MLP来建立手写数字识别分类器。以下是完整代码:

from sklearn.datasets import fetch_openml
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 载入数据集
data, target = fetch_openml('mnist_784', version=1, return_X_y=True)

# 对数据进行归一化
data = data / 255.0

# 切分数据集合
(x_train, x_test, y_train, y_test) = train_test_split(data, target, test_size=0.2)

# 训练模型
mlp = MLPClassifier(hidden_layer_sizes=(256, 128), max_iter=300)
mlp.fit(x_train, y_train)

# 测试预测准确率
predictions = mlp.predict(x_test)
accuracy = accuracy_score(y_test, predictions)
print("Accuracy:", accuracy)

输出结果如下所示:

Accuracy: 0.9688333333333333

可以看出,该MLP分类器对于手写数字的识别效果非常不错,准确率达到了96.8%。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Scikit-learn 的 neural_network.MLPClassifier函数:多层感知器分类器 - Python技术站

(3)
上一篇 2023年3月30日
下一篇 2023年3月30日

相关文章

  • 详解 Scikit-learn 的 preprocessing.LabelEncoder函数:标签编码

    Scikit-learn 的sklearn.preprocessing.LabelEncoder 在机器学习中,很多算法都需要输入数字类型的数据,但实际上我们很多时候手头的数据集会是非数字型的数据,比如性别、颜色等等。我们需要把这些非数字型的数据转化为数字类型。这时候 sklearn 中的 sklearn.preprocessing.LabelEncoder…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 neural_network.MLPRegressor函数:多层感知器回归器

    Scikit-learn的sklearn.neural_network.MLPRegressor函数 Scikit-learn的sklearn.neural_network.MLPRegressor是一个实现多层神经网络回归的函数。它可以训练一个具有一个或多个隐藏层的神经网络,并使用反向传播算法进行训练。 MLPRegressor的使用方法 首先,导入必要的…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 decomposition.NMF函数:非负矩阵分解

    Scikit-learn的sklearn.decomposition.NMF函数 作用 NMF(Non-negative Matrix Factorization)是一种无监督学习的方法,用于发现一组数据的次级结构。它可以将一个高维的非负矩阵分解为两个低维的非负矩阵的乘积。其中一个矩阵代表了数据中的特征,另一个矩阵代表了数据的潜在结构。 在Scikit-le…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 decomposition.FastICA函数:快速独立成分分析

    Scikit-learn 的sklearn.decomposition.FastICA 函数概述 Scikit-learn 的sklearn.decomposition.FastICA 函数是一种使用快速独立成分分析(FastICA)算法提取信号中独立成分的方法。快速独立成分分析算法是一种计算效率较高的独立成分分析算法,主要应用于信号处理和突发事件检测等方面…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 impute.IterativeImputer函数:缺失值填充器

    Scikit-learn的sklearn.impute.IterativeImputer函数 Scikit-learn的sklearn.impute.IterativeImputer函数是一种用于填补数据缺失值的函数。这个函数的主要作用是基于回归预测来对数据中的空值进行估计和填充,从而使得数据集更完整和一致,能够提高机器学习模型的性能。 这个函数主要实现的是…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 svm.SVR函数:支持向量机回归器

    1. 概述 sklearn.svm.SVR 是 Scikit-learn 提供的支持向量回归的函数库,用于建立支持向量机回归模型,主要用于非线性回归问题。支持向量回归是一种基于支持向量机技术的回归分析方法,支持向量回归学习的目标是找到一个回归函数,使预测结果尽可能地接近实际值,同时最大化支持向量与超平面的距离。 2. 使用方法 2.1 调用方法 在使用 sk…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 linear_model.Lasso函数:Lasso 回归模型

    sklearn.linear_model.Lasso函数简介 sklearn.linear_model.Lasso是Scikit-learn中一个用于线性回归的函数,它采用L1正则化方法,常用于特征选择和稀疏模型的优化。 Lasso模型求解目标函数为:$$\frac{1}{2n_{samples}}||Xw-y||^22+\alpha \cdot \sum^…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 cluster.SpectralClustering函数:谱聚类算法

    Scikit-learn Sklearn.cluster.SpectralClustering 作用 Scikit-learn Sklearn.cluster.SpectralClustering 是一种基于谱聚类算法的无监督学习模型,其作用是将数据集中的数据聚为不同的类别。该算法通过对数据样本间的相似度矩阵进行特征分解,得到样本的降维表示,在低维空间中聚类…

    sklearn-function 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部