sklearn-SVM:數據歸一化及模型調參

1.基本環境
編譯器:PyCharm 2019.1.2
虛擬環境:Anaconda虛擬環境
scikit-learn版本: 0.22.2.post1

2.數據歸一化

from sklearn.preprocessing import StandardScaler  # 歸一化

# 歸一化操作
scaler = StandardScaler()
x_train_data = scaler.fit_transform(x_train_data)
x_test_data = scaler.transform(x_test_data)

3.模型調參

from sklearn.model_selection import GridSearchCV  # 在sklearn中主要是使用GridSearchCV調參

svc_model = svm.SVC(kernel='rbf')
param_grid = {'C': [1e-3, 1e-2, 1e-1, 1, 10, 100, 1000], 'gamma': [0.001, 0.0001]}  # param_grid:我們要調參數的列表(帶有參數名稱作爲鍵的字典),此處共有14種超參數的組合來進行網格搜索,進而選擇一個擬合分數最好的超平面係數。
grid_search = GridSearchCV(svc_model, param_grid, n_jobs=8, verbose=1)  # n_jobs:並行數,int類型。(-1:跟CPU核數一致;1:默認值);verbose:日誌冗長度。默認爲0:不輸出訓練過程;1:偶爾輸出;>1:對每個子模型都輸出。
grid_search.fit(x_train_data, y_train_data.ravel())  # 訓練,默認使用5折交叉驗證
best_parameters = grid_search.best_estimator_.get_params()  # 獲取最佳模型中的最佳參數
print("cv results are" % grid_search.best_params_, grid_search.cv_results_)  # grid_search.cv_results_:給出不同參數情況下的評價結果。
print("best parameters are" % grid_search.best_params_, grid_search.best_params_)  # grid_search.best_params_:已取得最佳結果的參數的組合;
print("best score are" % grid_search.best_params_, grid_search.best_score_)  # grid_search.best_score_:優化過程期間觀察到的最好的評分。
# for para, val in list(best_parameters.items()):
#     print(para, val)
svm_model = svm.SVC(kernel='rbf', C=best_parameters['C'], gamma=best_parameters['gamma'])  # 最佳模型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章