Buduję model dla problemu klasyfikacji binarnej, gdzie każdy z moich punktów danych ma wartość 300 wymiarów (Używam 300 funkcji). Używam PassiveAggressiveClassifier z sklearn. Model radzi sobie naprawdę dobrze.Wykreślanie granicy decyzji dla danych o dużych wymiarach
Chciałbym wykreślić granicę decyzyjną modelu. Jak mogę to zrobić?
Aby odczytać dane, kreślę je w 2D za pomocą TSNE. Zmniejszyłem wymiary danych w 2 krokach - od 300 do 50, a następnie od 50 do 2 (jest to powszechna rekomendacja). Poniżej znajduje się fragment kodu dla tego samego:
from sklearn.manifold import TSNE
from sklearn.decomposition import TruncatedSVD
X_Train_reduced = TruncatedSVD(n_components=50, random_state=0).fit_transform(X_train)
X_Train_embedded = TSNE(n_components=2, perplexity=40, verbose=2).fit_transform(X_Train_reduced)
#some convert lists of lists to 2 dataframes (df_train_neg, df_train_pos) depending on the label -
#plot the negative points and positive points
scatter(df_train_neg.val1, df_train_neg.val2, marker='o', c='red')
scatter(df_train_pos.val1, df_train_pos.val2, marker='x', c='green')
I dostać przyzwoity wykres.
Czy istnieje sposób, w jaki mogę dodać granicę decyzji do tego wykresu, który reprezentuje faktyczną granicę decyzji mojego modelu w 300 ciemnej przestrzeni?
Który używasz do redukcji wymiarów - obcięte SVD lub TSNE? Jeśli zastosujesz metodę liniową zarówno do klasyfikacji, jak i redukcji, jest to całkiem proste. –
@Chester Nie sądzę, że op tworzy TES tylko po to, aby go zignorować ;-) – lejlot