一、交叉檢驗cross-validation(cv):
以k-fold cv為例:在k個fold中,每個fold依次作為測試集、餘下的作為訓練集,進行k次訓練,得到共計k個引數。把k個引數的均值作為模型的最終引數。
優點:最大特點是不再浪費validation set大小的資料。在樣本集不夠大的情況下尤其珍貴。
缺點:相同大小的資料集,需要進行更多的運算。
二、使用cross-validation函式
引數:
sklearn.model_selection.cross_val_score(
estimator, # 自己選定的模型;
x, # array型別資料。訓練集(自變數部分);
y=none, # 訓練集(因變數部分);
groups=none,
scoring=none,
cv=』warn』, # 預設值3,即k-fold=3。int型別設定cross-validation的維度,
n_jobs=none,
verbose=0,
fit_params=none,
pre_dispatch=『2*n_jobs』,
error_score=』raise-deprecating』)
使用多次knn演算法進行結果**
from sklearn import datasets
from sklearn.model_selection import train_test_split,cross_val_score #劃分資料交叉驗證
from sklearn.neighbors import kneighborsclassifier
import matplotlib.pyplot as plt
iris = datasets.load_iris()
x = iris.data
y = iris.target
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.4,random_state=3) #劃分資料以1/3的來劃分 訓練集訓練結果 測試集測試結果
k_range = range(1,31)
cv_scores = #用來放每個模型的結果值
for n in k_range:
knn = kneighborsclassifier(n)
scores = cross_val_score(knn,train_x,train_y,cv=10,scoring='accuracy') #cv:選擇每次測試折數 accuracy:評價指標是準確度,可以省略使用預設值
plt.plot(k_range,cv_scores)
plt.xlabel('k')
plt.ylabel('accuracy') #通過影象選擇最好的引數
plt.show()
best_knn = kneighborsclassifier(n_neighbors=3) # 選擇最優的k=3傳入模型
best_knn.fit(train_x,train_y)
print(best_knn.score(test_x,test_y))
>>>
0.95
python筆記27 資料分析之交叉分析
coding utf 8 1 概念 交叉分析,通常用於分析兩個或兩個以上,分組變數之間的關係,以交叉表形式進行變數間關係的對比分析 可以有三種情況下的交叉 定量與定量分組進行交叉 定量與定性分組進行交叉 定性與定性分組進行交叉 建議交叉的維度為兩個維度即可,維度越多,越細,就越難發現規律 2 交叉計...
機器學習筆記之交叉驗證
在評估演算法的效果時,為什麼要進行交叉驗證呢,檢視了官方說明文件後,對交叉驗證做了如下的描述 在了解交叉交叉驗證之前,我們先了解如下知識 過擬合 是指所建立的機器學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳。為了避免這種情況,通常的做法是執行 監督 機器學習實驗時將部...
Python資料分析分類演算法交叉驗證實現
在訓練資料的過程或者參加資料比賽的時候,常常會遇到資料量不夠大的情況,想充分利用不多的資料進行有說服力力的驗證,從而選到乙個對分類至關重要的引數,可以採用 k折交叉驗證法 k fold crossvalidation 下面和大家分享一下。在遇到k折交叉驗證之前,往往使用的是簡單交叉驗證 hold o...