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折交叉驗證,留一交叉驗證 即把全部資料按照比例分割成兩...