1. 程式人生 > >k-fold cross validation(k-摺疊交叉驗證),python pandas (ix & iloc &loc) 的區別

k-fold cross validation(k-摺疊交叉驗證),python pandas (ix & iloc &loc) 的區別

交叉驗證的目的:在實際訓練中,模型通常對訓練資料好,但是對訓練資料之外的資料擬合程度差。用於評價模型的泛化能力,從而進行模型選擇

交叉驗證的基本思想:把在某種意義下將原始資料(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(validation set or test set),首先用訓練集對模型進行訓練,再利用驗證集來測試模型的泛化誤差。另外,現實中資料總是有限的,為了對資料形成重用,從而提出k-摺疊交叉驗證。

2.1 K-fold

最基礎的CV演算法,也是預設採用的CV策略​。主要的引數包括兩個,一個是樣本數目,一個是k-fold要劃分的份數。

cross validation是在資料量有限的情況下的非常好的一個evaluate performance的方法。
而對原始資料劃分出train data和test data的方法有很多種,這也就造成了cross validation的方法有很多種。sklearn中的cross validation模組,最主要的函式是如下函式:sklearn.cross_validation.cross_val_score。他的呼叫形式是scores = cross_validation.cross_val_score(clf, raw data, raw target, cv=5, score_func=None)引數解釋:clf是不同的分類器,可以是任何的分類器。比如支援向量機分類器。clf = svm.SVC(kernel='linear', C=1)
cv引數就是代表不同的cross validation的方法了。如果cv是一個int數字的話,並且如果提供了raw target引數,那麼就代表使用StratifiedKFold分類方式,如果沒有提供raw target引數,那麼就代表使用KFold分類方式。cross_val_score函式的返回值就是對於每次不同的的劃分raw data時,在test data上得到的分類的準確率。至於準確率的演算法可以通過score_func引數指定,如果不指定的話,是用clf預設自帶的準確率演算法。

python pandas (ix & iloc &loc) 的區別

loc——通過行標籤索引行資料 


iloc——通過行號索引行資料 
ix——通過行標籤或者行號索引行資料(基於loc和iloc 的混合) 
同理,索引列資料也是如此!