2017-11-15 3 views
1

私は10倍CVを使用してデータセット全体でkNNクラシファイアを実行しようとしています。私はWEKAのモデルでいくつかの経験を持っていますが、これをSklearnに転送するのに苦労しています。Python/Sklearn - IndexError - インデックスが範囲外にある

以下は第47回属性がターゲットラベルである私は私のCSVではエラーに

>IndexError        Traceback (most recent call last) 
<ipython-input-19-8d9596c3368b> in <module>() 
     4 array = dataframe.values 
     5 X = array[:,0:47] 
----> 6 Y = array[:,47] 
     7 num_folds = 10 
     8 kfold = KFold(n_splits=10, random_state=7) 

> IndexError: index 47 is out of bounds for axis 1 with size 47 

を取得する私のコード

filename = 'train4.csv' 
names = ['attribut names are here'] 
dataframe = read_csv(filename, names=names) 
array = dataframe.values 
X = array[:,0:47] 
Y = array[:,47] 
num_folds = 10 
kfold = KFold(n_splits=10, random_state=7) 
model = KNeighborsClassifier() 
results = cross_val_score(model, X, Y, cv=kfold) 
print(results.mean()) 

である - (?私は間違ってここにいる)ので、48。

私はJupyterノートブックでpandas/sklearnを実行しています。

おかげ

+0

があなたのCSV列名を持ち、y'列 'ターゲットの列名何であるのか? – MaxU

答えて

1

このお試しください:

import pandas as pd 

filename = 'train4.csv' 
names = ['attribut names are here'] 
target_col_name = 'name_of_your_target_column' 

df = pd.read_csv(filename, names=names) 

num_folds = 10 
kfold = KFold(n_splits=10, random_state=7) 
model = KNeighborsClassifier() 
results = cross_val_score(model, 
          df.drop(target_col_name, axis=1), 
          df[target_col_name], 
          cv=kfold) 
print(results.mean()) 
+0

こんにちは、おかげで、返信いただきありがとうございます。このコードを使用して、 'target_col_name'と ''間のカラム名を置き換えます。エラー 'ValueError:labels [' mix1_instrument ']軸に含まれていない' – Gareth

+0

@Gareth、print(df.columns.tolist())の出力を投稿できますか? – MaxU

+0

私の列名にスペルミスがあります。ありがとう。私は今、値のエラーを受け取る、私は 'オブジェクト'のデータ型の2つの属性を持っていると仮定している。どのように私はこれを修正することができますか? – Gareth

関連する問題