研修課上講了兩個例子,融合一下。
主要演示大致的過程:
導入->拆分->訓練->模型報告
以及幾個重要問題:
①標簽二值化
②網格搜索法調參
③k折交叉驗證
④增加噪聲特征(之前涉及)
from python/335560.html">sklearn import datasets#從cross_validation導入會出現warning,說已棄用from sklearn.model_selection import train-test_splitfrom sklearn.grid_search import GridSearchCVfrom sklearn.metrics import classification_reportfrom sklearn.svm import SVCimport 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_validationturn_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)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
|
新聞熱點
疑難解答