機器學習 模型選擇與調優交叉驗證和網格搜尋

2021-09-10 01:37:44 字數 1723 閱讀 6486

1、交叉驗證cross validation

為了讓被評估的模型更加準確可信

將訓練資料分為訓練集和驗證集,分幾等份就是幾折驗證

2、網格搜尋grid search

超引數:很多引數需要手動指定

每組超引數都採用交叉驗證來進行評估

from sklearn.neighbors import kneighborsclassifier

from sklearn.model_selection import train_test_split, gridsearchcv

from sklearn.datasets import load_iris

# 檢視資料集

iris = load_iris(

)# 訓練集測試集拆分

x_train, x_test, y_train, y_test = train_test_split(

iris.data, iris.target, test_size=

0.33

, random_state=42)

# 交叉驗證

knn = kneighborsclassifier(

)params =

gscv = gridsearchcv(knn, params, cv=2)

gscv.fit(x_train, y_train)

print

(gscv.score(x_test, y_test)

)print

(gscv.best_score_)

print

(gscv.best_index_)

print

(gscv.best_estimator_)

print

(gscv.best_params_)

print

(gscv.cv_results_)

"""0.98

0.96

0kneighborsclassifier(algorithm='auto', leaf_size=30, metric='minkowski',

metric_params=none, n_jobs=1, n_neighbors=3, p=2,

weights='uniform')

, , ], 'split0_test_score': array([0.94117647, 0.94117647, 0.94117647]), 'split1_test_score': array([0.97959184, 0.93877551, 0.95918367]), 'mean_test_score': array([0.96, 0.94, 0.95]), 'std_test_score': array([0.01920384, 0.00120024, 0.0090018 ]), 'rank_test_score': array([1, 3, 2], dtype=int32), 'split0_train_score': array([0.97959184, 0.95918367, 0.95918367]), 'split1_train_score': array([0.92156863, 0.94117647, 0.96078431]), 'mean_train_score': array([0.95058023, 0.95018007, 0.95998399]), 'std_train_score': array([0.0290116 , 0.0090036 , 0.00080032])}

"""

機器學習之模型選擇與調優

交叉驗證 將拿到的訓練資料,分為訓練和驗證集。以下圖為例 將資料分成5份,其中乙份作為驗證集。然後經過5次 組 的測試,每次都更換不同的驗證集。即得到5組模型的結果,取平均值作為最終結果。又稱5折交叉驗證。五折交叉驗證,就是分成5份,三份訓練,乙份驗證,乙份測試 我們之前知道資料分為訓練集和測試集,...

機器學習之模型的選擇與調優

交叉驗證 將拿到的資料,分為訓練和驗證集。以下圖為例 將資料分成4份,其中乙份作為驗證集。然後經過4次 組 的測試,每次都更換不同的驗證集。即得到4組模型的結果,取平均值作為最終結果。又稱4折交叉驗證。通常情況下,有很多引數是需要手動指定的 如k 近鄰演算法中的k值 這種叫超引數。但是手動過程繁雜,...

Spark機器學習 模型選擇與引數調優之交叉驗證

機器學習可以簡單的歸納為 通過資料訓練y f x 的過程,因此定義完訓練模型之後,就需要考慮如何選擇最終我們認為最優的模型。如何選擇最優的模型,就是本篇的主要內容 在 統計學習方法 這本書中,曾經講過模型驗證的方法有三種,分別是簡單的交叉驗證,s折交叉驗證,留一交叉驗證 即把全部資料按照比例分割成兩...