資料分析之交叉驗證

2021-09-27 04:05:43 字數 1801 閱讀 8684

一、交叉檢驗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...