2017-05-12 2 views
0

Ich arbeite an einem Klassifikator mit sklearn.neighbors.KNeighborsRegressor. Die Daten, die ich verwende, hat folgendes Format:Kategoriale Labels in KNN sklearn

  • [numeric_feature1, numeric_feature2, ...., numeric_featureN] [label_to_predict]

Alle Funktionen sind Numerik außer dem Label, das ich will Vorhersage mit KNN.

Es ist ein kategorisches Etikett mit mehreren Werten, zum Beispiel: 'w1', 'w2', 'w3'.

Meine Fragen sind:

  • Ist die KNN kategorische Etiketten oder nur numerische diejenigen unterstützen?
  • Falls es nur mit numerischen Werten funktioniert, gibt es einen richtigen Weg, um die Etiketten zu codieren?

PD: Ich weiß über sklearn.preprocessing.LabelEncoder Labels zu codieren, aber in der Dokumentation sagt, dass die kategorischen Werte hashable und vergleichbar sein müssen. Meine Etiketten sind nur willkürliche Wörter, es gibt keine Möglichkeit, eine logische Entfernung zwischen ihnen zu berechnen.

PD2: Ich habe mit kategorischen Etiketten versucht, und ich bin erhalte eine Fehlermeldung:

"unsupported Operandtyp (e) für /: 'str' und 'int'"

+0

Try MultilabelBinarizer –

+0

Bitte senden Sie das Code-Snippet und den vollständigen Stack-Trace. Labels sollen kategorial sein, sie werden bei keiner Entfernungsberechnung verwendet. – aberger

Antwort

0

Okey, ich Hab meinen Fehler gefunden.

Wie ich vermute, werden nur numerische Etiketten in sklearn.neighbors.KNeighborsRegressor unterstützt.

Aber wie Aberger sagte in Kommentaren in KNN Etiketten sind nicht in der Entfernung verwendet.

Mein Fehler war, dass ich die Klasse wurde Ussing KNeighborsRegressor anstelle der Klasse KNeighborsClassifier, die eine reine KNN ist die kategorischen Etikett nicht Etiketten verwenden und zu akzeptieren.

In der Klasse KNeighborsRegressor wird die zugewiesene Beschriftung basierend auf dem Mittelwert der Bezeichnungen der nächsten Nachbarn berechnet, daher muss es numerisch sein.

Verwandte Themen