簡體   English   中英

Scikit-learn cross val得分:數組的索引太多了

[英]Scikit-learn cross val score: too many indices for array

我有以下代碼

 from sklearn.ensemble import ExtraTreesClassifier
 from sklearn.cross_validation import cross_val_score
 #split the dataset for train and test
 combnum['is_train'] = np.random.uniform(0, 1, len(combnum)) <= .75
 train, test = combnum[combnum['is_train']==True], combnum[combnum['is_train']==False]

 et = ExtraTreesClassifier(n_estimators=200, max_depth=None, min_samples_split=10, random_state=0)
 min_samples_split=10, random_state=0  )

 labels = train[list(label_columns)].values
 tlabels = test[list(label_columns)].values

 features = train[list(columns)].values
 tfeatures = test[list(columns)].values

 et_score = cross_val_score(et, features, labels, n_jobs=-1)
 print("{0} -> ET: {1})".format(label_columns, et_score))

檢查數組的形狀:

 features.shape
 Out[19]:(43069, 34)

labels.shape
Out[20]:(43069, 1)

我得到了:

IndexError: too many indices for array

這個追溯的相關部分:

---> 22 et_score = cross_val_score(et, features, labels, n_jobs=-1)

我正在從Pandas數據幀創建數據,我在這里搜索並通過這種方法看到了一些可能的錯誤參考,但無法弄清楚如何糾正? 數據陣列的外觀如下:功能

Out[21]:
array([[ 0.,  1.,  1., ...,  0.,  0.,  1.],
   [ 0.,  1.,  1., ...,  0.,  0.,  1.],
   [ 1.,  1.,  1., ...,  0.,  0.,  1.],
   ..., 
   [ 0.,  0.,  1., ...,  0.,  0.,  1.],
   [ 0.,  0.,  1., ...,  0.,  0.,  1.],
   [ 0.,  0.,  1., ...,  0.,  0.,  1.]])

標簽

Out[22]:
array([[1],
   [1],
   [1],
   ..., 
   [1],
   [1],
   [1]])

當我們在scikit-learn中進行交叉驗證時,該過程需要(R,)形狀標簽而不是(R,1) 雖然它們在某種程度上是相同的,但它們的索引機制是不同的。 所以在你的情況下,只需添加:

c, r = labels.shape
labels = labels.reshape(c,)

在將其傳遞給交叉驗證函數之前。

如果您將目標標簽指定為Pandas中的單個數據列,那么它似乎是可以修復的。 如果目標有多列,我會收到類似的錯誤。 例如嘗試:

labels = train['Y']

.ravel()添加到傳遞給公式的Y / Labels變量中也有助於解決KNN中的這個問題。

嘗試目標:

y=df['Survived'] 

相反,我用過

y=df[['Survived']] 

這使得目標是一個日期框架,似乎系列會沒問題

您可能需要稍微玩一下尺寸,例如

et_score = cross_val_score(et, features, labels, n_jobs=-1)[:,n]

要么

 et_score = cross_val_score(et, features, labels, n_jobs=-1)[n,:]

n是維度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM