感谢这位博主的总结,说的还是挺清楚的,尤其sklearn体系结构部分。
https://blog.csdn.net/u014248127/article/category/7189276
做一些总结和补充,利用sklearn库选择合适的模型和算法进行机器学习的一般流程是这样的:
1、拿到数据。
2、进行学习。
3、预测数据。
其中:
一、拿到数据
1、数据可以来自sklearn自带的一些供学习使用的数据集,还可以来自现实中获取的数据集,也可以来自利用sklearn构造的数据。
2、拿数据进行学习之前可以将数据进行预处理,可以提高学习的效率。
二、学习过程
每个机器学习的模型或者方法,会有一些在学习之前就要设置好的参数,它们称之为“超参”,它们的值跟模型最终学习结果的好坏是直接相关的,因此在学习过程中要进行调参的工作。
找到合适的超参是通过超参取某个值时评估模型的学习效果来实现的。评估的方法有很多,K折验证方法还不错,示例如下:
(这个评估的方法相当于是在拿到的训练集中使用k折验证法,即再分出训练集的部分和验证集的部分)
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from matplotlib import pyplot as plt
#1、拿到数据.
thedata=datasets.load_iris()
x=thedata.data
y=thedata.target
#2、进行学习.
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.7) #留出法分割训练集和测试集。
# 初始化超参和最佳评分
best_pram=1
best_score=0
#利用K折验证法,找出超参取值为1-35,最好的模型超参。
for pram in range(1,36):
clf=KNeighborsClassifier(n_neighbors=pram)
scores=cross_val_score(clf,x_train,y_train,cv=10,scoring='accuracy')
if pram==1:
best_score=scores.mean() #将每次验证所得的分数取平均值作为对应超参下模型评估所得分数。
else:
if scores.mean()>best_score:
best_score=scores.mean()
best_pram=pram
三、模型的使用
构建的机器学习模型还不错,可以保存起来,下次直接拿出来用。方法见上面链接里,博主有叙述。