Seite 1 von 1

Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Donnerstag 6. Juni 2019, 11:01
von cspecial
Hallo,

ich habe das Problem, dass sich durch die Anwendung der sklearn-Bibliotheksfunktionen inkorrekte Trenngeraden ergeben. Hier eine kurze Einführung:
Das Nutzen des OneVsRest-Classifiers führt dazu, dass sich teilweise absurde Trennebenen ergeben, wie ich den Bildern zu sehen ist. X besteht aus 80 Zeilen und 371 Spalten. Wo könnte der Fehler liegen?

Code: Alles auswählen

#X wird zuvor aus einer csv-Datei ausgelesen
#Y sind die zu den einzelnen Zeilen (Datensatz) gehörenden Klassen

X = StandardScaler().fit_transform(X)
clf = OneVsRestClassifier(sklearn.svm.SVC(kernel = "linear")).fit(X[:, [283, 370]], Y)

for i in clf.estimators_:
    y = []

    for val in X[:, 283]:
        y = y + [(-1) * (val * i.coef_[0][0] + i.intercept_) / i.coef_[0][1]]

    plt.plot(X[:, 283], y)

for i in range(0, 80): 
    if (Y[i] not in colors_table.keys()): #Festlegen einer Farbe für die erstmalig erfasste Klasse
        colors_table[Y[i]] = color
        color = color + 1

    color_ = plot_colors[color_table[Y[i]]]
    plt.plot(X[i, 283], X[i, 370], "." + color_) 

plt.show()
Bild

Vielen Dank für eure Hilfe im Voraus!

Re: Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Donnerstag 6. Juni 2019, 11:58
von __blackjack__
@cspecial: Was ist denn da absurd? Beim ersten stellt sich mir die Frage was Du denn bei *den* Daten erwartest, und beim zweiten, wo das Problem liegt?

Re: Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Donnerstag 6. Juni 2019, 14:01
von cspecial
Die Datenpunkte in beiden Bilder sind identisch. Das zweite Bild ist durch das Heranzoomen an die Datenpunkte entstanden. Die blaue und orangene Trenngerade sind offensichtlich nicht korrekt. Es fehlt zum Beispiel die Trennebene, die die türkisen von den grünen Punkten trennt.

Gruß
cspecial

Re: Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Samstag 8. Juni 2019, 13:19
von cspecial
Ich hoffe, jemand kann mir helfen. Ich konnte bisher die Fehlerursache nicht ausfindig machen.

Re: Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Montag 17. Juni 2019, 14:42
von doerflia
Hi,
welche Version von sklearn hast du installiert?

Versuche mal folgendes:

Code: Alles auswählen

clf = sklearn.svm.LinearSVC(gamma='scale', decision_function_shape='ovo')
clf.fit(X[:, [283, 370]], Y)
Also einerseitd den "LinearSVC" -Befehl, andererseits die Trennung von Modellerzeugung und Training.

Ämdert sich etwas?

Re: Lineare Klassifikation (sklearn): Falsche Hyperplanes

Verfasst: Montag 17. Juni 2019, 14:46
von doerflia
"decision_function_shape" sollte bei multi-label-classification gesetzt sein.
In deinem Fall als "ovr".
Sorry hatte mich oben vertippt.