2017-11-15 7 views
1

Ich versuche, einen kNN-Klassifikator über meine Datenmenge mit 10-fachem Lebenslauf zu betreiben. Ich habe einige Erfahrungen mit Modellen in WEKA, aber ich habe Mühe, dies auf Sklearn zu übertragen.Python/Sklearn - IndexError - Index außerhalb der Grenzen

Unten ist mein Code

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()) 

Ich erhalte den Fehler

>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 

In meinem CSV das 47th Attribut der Zielmarke ist - (? Bin ich hier falsch) daher der 48.

Ich renne Pandas/sklearn in Jupyter Notebook.

Dank

+0

hat Ihre CSV Spaltennamen haben und was ist der Spaltenname des Ziel 'y' Spalte? – MaxU

Antwort

1

Versuchen Sie folgendes:

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

Hallo Kumpel, danke für die Antwort. Mit diesem Code ersetze ich "target_col_name" durch meinen Spaltennamen zwischen "". Ich erhalte den Fehler 'ValueError: labels [' mix1_instrument '] nicht in Achse' – Gareth

+0

@Gareth enthalten, können Sie eine Ausgabe von 'print (df.columns.tolist())'? – MaxU

+0

Ich habe einen Schreibfehler in meinen Spaltennamen gefunden. Vielen Dank. Ich erhalte jetzt einen Wertfehler, ich gehe davon aus, dass ich zwei Attribute mit dem Datentyp 'Objekt' habe. Wie kann ich das korrigieren? – Gareth

Verwandte Themen