2017-04-04 11 views
0

Ich versuche, ein KNN-Diagramm für meine Daten zu zeichnen, aber ich bekomme immer diesen Fehler, den ich nicht herausfinden kann.Plotten eines KNN-Klassifikationsgraphen für mehrere Funktionen

clf = neighbors.KNeighborsClassifier(k, weights=weights) 
AttributeError: 'list' object has no attribute 'KNeighborsClassifier' 

Unten habe ich meinen Code (ohne Importe) angehängt:

data_df = pd.DataFrame.from_csv("fvectors.csv") 
X = np.array(data_df[features].values) 

data_df2 = pd.DataFrame.from_csv("fvectors.csv") 
y = np.array(data_df2[features1].replace("Circle",0).replace("Equilateral Triangle",1) 
      .replace("Right Angle Triangle",2).replace("Acute Triangle",3) 
      .replace("Obtuse Triangle",4).replace("Square",5) 
      .replace("Parallelogram",6).replace("Rectangle",7) 
      .replace("Pentagon",8).replace("Seal",9).values.tolist()) 

#step size in the mesh 
h = .02 

#Create color maps 
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF']) 
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF']) 

for weights in ['uniform', 'distance']: 
    #we create an instance of Neighbours Classifier and fit the data. 
    clf = neighbors.KNeighborsClassifier(k, weights=weights) 
    clf.fit(X, y) 

    #Plot the decision boundary. For that, we will assign a color to each 
    #point in the mesh [x_min, x_max]x[y_min, y_max]. 
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), 
         np.arange(y_min, y_max, h)) 
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) 

    #Put the result into a color plot 
    Z = Z.reshape(xx.shape) 
    plt.figure() 
    plt.pcolormesh(xx, yy, Z, cmap=cmap_light) 

    #Plot also the training points 
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold) 
    plt.xlim(xx.min(), xx.max()) 
    plt.ylim(yy.min(), yy.max()) 
    plt.title("3-Class classification (k = %i, weights = '%s')" % (k)) 

plt.show() 

And my fvectors.csv file looks like this:

auch:

features = ["Number of Sides", "Standard Deviation of Number of Sides/Perimeter", 
     "Standard Deviation of the Angles", "Largest Angle"] 


features1 = ["Label"] 

Kann jemand sehen, was im falsch zu machen, oder wenn es sind andere Fehler, die herausstechen?

+0

Was ist 'Nachbarn'? Sie definieren es nicht im Code. Stellen Sie sicher, dass Sie gelesen haben, wie Sie ein [mcve] erstellen. – ImportanceOfBeingErnest

Antwort

0

Das Problem scheint mit dem Import zu sein. Versuchen Sie:

from sklearn.neighbors import KNeighborsClassifier

Und dann verwenden Sie einfach KNeighborsClassifier direkt.

+0

Ich bekomme diesen Fehler: 'ValueError: Abfrage Daten Dimension muss Trainingsdaten Dimension entsprechen –

+1

Meinst du ernst, @ Thom? Ein halb bekannter Code gibt einen ValueError in einer unbekannten Zeile mit einem unbekannten Traceback, aber Sie erwarten von jemandem, warum? – ImportanceOfBeingErnest

+0

Thom, überprüfen Sie die Form Ihrer Eingabe (X und Y) Drucken ihrer Form. (Drucken X.Shape sollte funktionieren) und dann versuchen Sie die Umformmethode, um ihre Form zu beheben. Das ist meine beste Schätzung, ansonsten geben Sie uns mehr Informationen. – Fujii