一、得到数据集并做预处理
1.分割数据集(train_test_split)
可以用train_test_split来处理得到的数据集,代码基本形式如下:
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X_original, Y_original, test_size=0.2)
2.数据集归一化
使用StandScaler进行归一化,归一化目的是为了让数据之间的差别不那么大。代码基本形式如下:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transform(X_train)
scaler.transform(X_test)
二、模型建立
在这一步我们首先要分析自己数据的类型,搞清出你要用什么模型来做。根据目标变量(通常称为Y变量)的数据类型(定性或定量),我们要建立一个分类(如果Y是定性的)或回归(如果Y是定量的)模型。
机器学习算法可以大致分为以下三种类型之一:
监督学习:
监督学习是一种机器学习任务,建立输入X和输出Y变量之间的数学(映射)关系。这样的X、Y对构成了用于建立模型的标签数据,以便学习如何从输入中预测输出。
无监督学习:
无监督学习是一种只利用输入X变量的机器学习任务。这种 X 变量是未标记的数据,学习算法在建模时使用的是数据的固有结构。
强化学习:
强化学习是一种决定下一步行动方案的机器学习任务,它通过试错学习来实现这一目标,努力使回报最大化。
三、模型评估与选择
根据评价指标,通过超参数优化及交叉验证选择最优的模型。
1.参数调优:
超参数本质上是机器学习算法的参数,直接影响学习过程和预测性能。由于没有 "一刀切 "的超参数设置,可以普遍适用于所有数据集,因此需要进行超参数优化(也称为超参数调整或模型调整)。注意:在参调优时,需要将sklearn中的机器学习算法的random_state设置为0,以便我们能够通过设置相应的参数复现相同的结果。
2.评价指标:
主要有accuracy, precision,recall,宏平均和微平均,F-score,pr曲线,ROC-AUC曲线,gini系数。
3.交叉验证:
为了最经济地利用现有数据,通常使用N倍交叉验证(CV),将数据集分割成N个折(即通常使用5倍或10倍CV)。在这样的N倍CV中,其中一个折被留作测试数据,而其余的折则被用作建立模型的训练数据。
四、保存模型
将训练好的模型保存为pickle文件,有以下步骤:
保存SVM模型并调用
1)以二进制的方式打开文件:
file = open("G:/Download_Data_bishe/save_model/model.pickle", "wb")
2)然后将模型写入文件:
pickle.dump(classifier, file)
3)最后关闭文件:
file.close()
五、使用最终模型进行预测
要想调用保存好的模型,有以下思路:
1) 以读二进制的方式打开文件
file = open("G:/Download_Data_bishe/save_model/model.pickle", "rb")
2)把模型从文件中读取出来
svm_model = pickle.load(file)
3)关闭文件
file.close()
4)用读入的模型进行预测
pred= svm_model.predict(X)
if pred==0:
print("病害")
if pred==1:
print("健康")
print("\n")
————————————————
参考的原文链接:https://blog.csdn.net/haha456487/article/details/103990636
https://blog.csdn.net/Lv0930Hui/article/details/92143545
https://blog.csdn.net/weixin_42137700/article/details/107927098