我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

目前接触到的机器学习任务都比较简单,基本套路都是处理获取数据,然后一部分作为训练集,一部分作为测试数据。然后应用到不同的机器学习的分类器,先训练然后做识别。如果从宏观上来说的话,套路都比较类似。只是数据分类器不同罢了。那么,本文中说的新的分类器,叫做神经网络分类器MLPClassifier

苏南大叔:机器学习,如何使用MLPClassifier神经网络分类器做预测? - 神经网络分类器
机器学习,如何使用MLPClassifier神经网络分类器做预测?(图4-1)

大家好,这里是苏南大叔的平行空间笔记本博客,这里介绍苏南大叔和计算机代码的故事。本文描述机器学习中的神经网络分类器MLPClassifier的简单使用方式。测试环境:win10python@3.6.8sklearn@0.24.2

基本思路

在前面的文章里面,已经学习了两个机器学习的数据分类器。分别是:

这些分类器处理过的模型,可以保存为文件,下次使用的时候,直接加载即可。参考文章:

分类器预测的结果,也可以保存为csv文件或者xls文件。参考文章:

准备数据

需求本身准备了两个excel文件,其中一个data_train.xlsx用于训练,另外一个data_predict.xlsx用于预测。
字段有四个,分别是:注册天数,学习时长,金币数量,是否会员。除了“是否会员”外,数据类型上都是整数,否则在使用分类器的时候,会报错。

from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd

df_fit = pd.read_excel("data_train.xlsx", header=0)
X = df_fit.iloc[:, 0:3]
y = df_fit['是否会员']

苏南大叔:机器学习,如何使用MLPClassifier神经网络分类器做预测? - 准备数据
机器学习,如何使用MLPClassifier神经网络分类器做预测?(图4-2)

神经网络分类器(调试参数)

鉴于MLPClassifier有几个参数,可以先利用已知数据,调整一下参数看看准确度情况。

model_MLPClassifier = MLPClassifier(activation='logistic', max_iter=1000, hidden_layer_sizes=(50, 50, 50))
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)
model_MLPClassifier.fit(X_train, y_train)
score_trainset = model_MLPClassifier.score(X_train, y_train)*100
score_testset = model_MLPClassifier.score(X_test, y_test)*100
print("训练集预测准确率:%.2f%%" % score_trainset)
print("测试集预测准确率:%.2f%%" % score_testset)

苏南大叔:机器学习,如何使用MLPClassifier神经网络分类器做预测? - 调整参数
机器学习,如何使用MLPClassifier神经网络分类器做预测?(图4-3)

如果对准确度满意的话,就可以使用对应参数,获得下面的语句:

model_MLPClassifier = MLPClassifier(activation='logistic', max_iter=1000, hidden_layer_sizes=(50, 50, 50))
model_MLPClassifier.fit(X, y)

当然,可以把这个model_MLPClassifier保存为训练结果文件,以便下次直接使用。

预测结果

如果大家做过多次这种类似的训练的话,就会知道,最终的预测结果实际上也是个概率的问题,只是某种结果的可能性更大而已。如果看预测结果,那么可以使用:

X_pred = df_pred.iloc[:, 0:3]
results = model_MLPClassifier.predict(X_pred)
print(results)

苏南大叔:机器学习,如何使用MLPClassifier神经网络分类器做预测? - 预测结果
机器学习,如何使用MLPClassifier神经网络分类器做预测?(图4-4)

如果想看到预测结果的倾向性,可以使用:

results = model_MLPClassifier.predict_proba(X_pred) * 100
results_df = pd.DataFrame(np.around(results, 2), columns=['非会员概率', '会员概率'])
print(results)

至于这里的两列为啥前面是“非会员”,后面是“会员”。苏南大叔是这么理解的,因为falsetrue,两者还可以用01来描述。那么,零所代表的false排序在前面,所以... 如果理解的不对,欢迎留言指正。

相关文章

综述

机器学习的这些分类器框架还是比较成熟简单的,目前来看,这些分类器之间也就是参数的不同,使用方式都是非常雷同的。苏南大叔个人觉得这个预测的过程,就有些像是根据一堆数据盲猜的过程,其实分类器对于某个数字代表什么意思,是大一些比较好,还是小一些比较好,都是无感的。

至于这些分类器的背后,包含着什么样的逻辑,请参考苏南大叔的后续文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    sklearn