一、交叉验证
1.from sklearn.model_selection import train_test_split
该功能可以快速将数据随机分为训练集和测试集
#官方示例,使用鸢尾花的数据集 import numpy as np from sklearn.datasets import load_iris from sklearn import svm #支持向量机 from sklearn.model_selection import train_test_split x,y=load_iris(return_X_y=True) x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4,random_state=0) x_train.shape,y_train.shape clf=svm.SVC(kernel='linear',C=1).fit(x_train,y_train) clf.score(x_test,y_test)
2.from sklearn.model_selection import cross_val_score
交叉验证的方法
#拟合模型并连续5次计算分数(每次都有不同的分割) from sklearn.model_selection import cross_val_score clf=svm.SVC(kernel='linear',C=1) scores=cross_val_score(clf,x,y,cv=5) scores # array([0.96666667, 1. , 0.96666667, 0.96666667, 1. ])
平均得分和得分估计值的95%置信区间由下式给出:
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2)) #Accuracy: 0.98 (+/- 0.03)
交叉验证过程:
即是将数据集分为n份,n-1份为训练集,1份为测试集,这样循环计算n次,最后将n次结果求平均值
3.from sklearn.model_selection import GridSearchCV 网格搜索
sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise’, return_train_score=’warn’)
参数:
1.estimator:可认为是模型
2.param_grid :指定参数
属性:
1.cv_results_:交叉验证结果
2.best_estimator_:最佳模型
3.best_score_:最佳模型的分数
4.best_params_ :最佳参数设置
5.scorer_:分数
6.利用最佳模型来进行预测:
best_model=grid.best_estimator_
predict_y=best_model.predict(Test_X)
metrics.f1_score(y, predict_y)