sklearn应用总结

1、导入工具包 2、加载数据 3、数据预处理 4、选择算法训练数据 5、测试数据

#写入csv
test.to_csv('test.csv',index=False)

数据标准化sklearn的preprocessing.scale()

为什么数据标准化:某些特征的方差比其他的特征大几个数量级,那么就会在算法之中占主导的位置,导致学习器对其他特征有所忽略

标准化:先去中心化,再除以特征的标准差,对数据进行缩放

from sklearn import preprocessing
import numpy as np
a=np.array([[10,5,4,5],[2,3,4,5]])
a
array([[10,  5,  4,  5],
       [ 2,  3,  4,  5]])
preprocessing.scale(a)
array([[ 1.,  1.,  0.,  0.],
       [-1., -1.,  0.,  0.]])

交叉验证

样本数据切分为训练集和验证集,训练集训练模型,验证集评估模型
简单交叉验证:随机将样本划分成两个部分(70%训练,30%测试)

k折交叉验证:随机将样本均分为K份,选择k-1份作为训练集,剩下的1份作为验证集,一轮完成之后,重新选择k-1份来训练数据,若干轮后选择损失函数评估最优的模型和参数

留一交叉验证:k折交叉验证的特例,k=n(样本个数),适合样本数量少的时候

boostrapping自助采样:随机森林训练样本采用的方法,n个样本随机有放回抽样m个样本作为一颗树的一个训练集,大约1/3的样本不被采用到,剩余未采样的数据作为验证集

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
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)
knn=KNeighborsClassifier(n_neighbors=5)#选择临近的5个点
scores=cross_val_score(knn,x,y,cv=5,scoring='accuracy')#5折交叉验证,评分方式为accuracy
print(scores)
[0.96666667 1.         0.93333333 0.96666667 1.        ]
print(scores.mean())#平均评分结果
0.9733333333333334

过拟合:模型过于复杂,对于训练集数据可以很好的拟合,却不能正确的处理测试数据,学到非通用的样本数据,使得模型精度降低

#学习曲线learning_curve,判断是否过拟合

保存模型

from sklearn.externals import joblib
joblib.dump(knn,'sklearn_save.pkl')
G:\anaconda\envs\tensorflow\lib\site-packages\sklearn\externals\joblib\__init__.py:15: FutureWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+.
  warnings.warn(msg, category=FutureWarning)





['sklearn_save.pkl']

加载模型

model=joblib.load('sklearn_save.pkl')
scores=cross_val_score(model,x,y,cv=5,scoring='accuracy')#5折交叉验证,评分方式为accuracy
print(scores)
[0.96666667 1.         0.93333333 0.96666667 1.        ]

#小结
加载数据集
数据预处理
选择模型并训练
模型评分
模型保存

你可能感兴趣的:(sklearn应用总结)