研修课上讲了两个例子,融合一下。
主要演示大致的过程:
导入->拆分->训练->模型报告
以及几个重要问题:
①标签二值化
②网格搜索法调参
③k折交叉验证
④增加噪声特征(之前涉及)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
from sklearn import datasets
#从cross_validation导入会出现warning,说已弃用
from sklearn.model_selection import train - test_split
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.svm import SVC
import sklearn.exceptioins
#导入鸢尾花数据集
iris = datasets.load_iris()
#将数据集拆分为训练集和测试集各一半
#其中X为数据特征(花萼、花瓣的高度宽度),为150*4的矩阵
#Y为鸢尾花种类(0, 1, 2三种),为150*1矩阵
#如果使用标签二值化, 将0, 1, 2表示为100 010 001
#使用y.label_binarize(y, classes[0, 1, 2]),变为150*3矩阵
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size = 0.5 , random_state = 0 )
#set the parameters by cross_validation
turn_parameters = [{ 'kernel' : [ 'rbf' , 'gamma' : [ 1e - 3 , 1e - 4 , 'C' :[ 1 , 10 , 100 , 1000 ]},
{ 'kernel' :[ 'linear' ], 'C' :[ 1 , 10 , 100 , 1000 ]}
]
#clf分离器
#使用网格搜索法调超参数
#训练集做5折交叉验证
clf = GridSearchCV(SVC(C = 1 ), turned_parameters, cv = 5 , scoring = '%s_weighted' % score)
#用前一半train数据再做5折交叉验证
#因为之前的train_test_split已经分割为2份了
#fit-拟合
clf.fit(X_train, y_train)
#超参数
print (clf.best_params_)
#得分
for params, mean_score, scores in clf.gird_scores_:
print ( "%.3f (+/-%.0.03f) for %r" % (mean_score, scores.std() * 1.96 ,params))
#分类报告
y_true, y_pred = y_test, clf.predict(X_test)
print (classification_report(y_true, y_pred))
|
以上这篇对sklearn的使用之数据集的拆分与训练详解(python3.6)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_36962569/article/details/79946938