首页 > 编程笔记

神经网络算法实战:MLPClassifier分类

在 Scikit 中神经网络被称为多层感知器(Multi-layer Perceptron),它可以用于分类或回归的非线性函数。用于分类的模块是 MLPClassifier,而用于回归的模块则是 MLPRegressor。

MLPClassifier 主要用来做分类,我们用 MLPClassifier 在鸢尾花数据上做测试。

1) 导入必要的模块

这里我们用到 sklearn 中 neural_network 模块的 MLPClassifier 分类器。此外,使用 load_iris 来获取 iris 数据集。我们使用 model_selection 模块中的方法来分割训练集和测试集。
In [1]: from sklearn.neural_network import MLPClassifier
   ...: from sklearn.datasets import load_iris
   ...: from sklearn.model_selection import train_test_split

2) 导入数据集

In [2]: iris = load_iris()  # 导入数据集

3) 获得自变量数据集

In [3]: X = iris['data']  # 获取自变量数据

4) 获取因变量数据集

In [4]: y = iris['target']  # 获取因变量数据

5) 分割训练集和测试集

In [5]: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  #分割训练集和测试集

6) 初始化神经网络

这里,通过 hidden_laye r参数设置隐藏层为 3 层,每个隐藏层有 3 个神经元。另外通过 max_iter 参数设置最大的迭代次数为 100000 次。solver 参数用于指定最优化方法,adam 则是另一种优化的算法。

In [6]: clf = MLPClassifier(solver='adam', alpha=1e-5,hidden_layer_sizes=(3,3), random_state=1,max_iter=100000,) # 创建神经网络分类器对象

7) 训练模型

可以看到其他参数,比如 alpha 代表了学习速率。
In [7]: clf.fit(X, y)# 训练模型
Out[7]: 
MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto', beta_1=0.9,
       beta_2=0.999, early_stopping=False, epsilon=1e-08,
       hidden_layer_sizes=(3, 3), learning_rate='constant',
       learning_rate_init=0.001, max_iter=100000, momentum=0.9,
       nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
       solver='adam', tol=0.0001, validation_fraction=0.1, verbose=False,
       warm_start=False)

8) 查看模型评分

In [8]: clf.score(X_test,y_test)#模型评分
Out[8]: 0.9666666666666667

优秀文章