1. 程式人生 > >分類預測,交叉驗證調超參數

分類預測,交叉驗證調超參數

date ESS read 實現簡單 轉化 random end app ive

調參數是一件很頭疼的事情,今天學習到一個較為簡便的跑循環交叉驗證的方法,雖然不是最好的,如今網上有很多調參的技巧,目前覺得實現簡單的,以後了解更多了再更新。

import numpy as np
from pandas import read_csv
import pandas as pd
import sys  
import importlib
from sklearn.neighbors import KNeighborsClassifier     
from sklearn.ensemble import GradientBoostingClassifier    
from sklearn import
svm from sklearn import cross_validation from sklearn.metrics import hamming_loss from sklearn import metrics importlib.reload(sys) from sklearn.linear_model import LogisticRegression from imblearn.combine import SMOTEENN from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import
RandomForestClassifier #92% from sklearn import tree from xgboost.sklearn import XGBClassifier from sklearn.linear_model import SGDClassifier from sklearn import neighbors from sklearn.naive_bayes import BernoulliNB import matplotlib as mpl import matplotlib.pyplot as plt from sklearn.metrics import
confusion_matrix from numpy import mat from sklearn.cross_validation import cross_val_score ‘‘‘分類0-1‘‘‘ root1="D:/ProgramData/station3/get_10.csv" root2="D:/ProgramData/station3/get_more.csv" root3="D:/ProgramData/station3/get_more9_10.csv"#現已刪除 data1 = read_csv(root3) #數據轉化為數組 #print(data1) data1=data1.values #print(root3) ‘‘‘設置調參的參數範圍‘‘‘ k_range = range(10,30) k_scores = [] for k in k_range: print(k) clf = XGBClassifier(learning_rate= 0.28, min_child_weight=0.7, max_depth=21, gamma=0.2, n_estimators = k ,seed=1000) X_Train = data1[:,:-1] Y_Train = data1[:,-1] X, y = SMOTEENN().fit_sample(X_Train, Y_Train) ‘‘‘交叉驗證,循環跑,cv是每次循的次數‘‘‘ scores = cross_val_score(clf, X, y, cv=10, scoring=accuracy) ‘‘‘得到平均值‘‘‘ k_scores.append(scores.mean()) print(k_scores) ‘‘‘畫出圖像‘‘‘ plt.plot(k_range, k_scores) plt.xlabel("Value of K for KNN") plt.ylabel("Cross validated accuracy") plt.show()

輸出:

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[0.97412964956075354, 0.9727391061798798, 0.97013721043132806, 0.97194859003086298, 0.97294995933403183, 0.97231558127609719, 0.96986246148807409, 0.97110881317341868, 0.97266934815981898, 0.97129916102078995, 0.97418346359522834, 0.97193130399012762, 0.97399918501338656, 0.96896580483736439, 0.9699006181068961, 0.96718751547141646, 0.96806405658951156, 0.97446711004726705, 0.97459883656499302, 0.97087357015888409]

?技術分享圖片

分類預測,交叉驗證調超參數