Я создаю модель для задачи двоичной классификации, где каждая из моих точек данных имеет 300 измерений (Я пользуюсь 300 функциями). Я использую PassiveAggressiveClassifier от sklearn. Модель работает очень хорошо.Граница принятия решения для данных высокого измерения
Я хочу построить границу решения модели. Как я могу это сделать?
Чтобы получить представление о данных, я планирую его в 2D с помощью TSNE. Я уменьшил размеры данных в 2 этапа - от 300 до 50, затем от 50 до 2 (это общая рекомендация). Ниже приведен фрагмент кода для того же:
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')
Я получаю приличный график.
Есть ли способ добавить границу решения к этому графику, который представляет собой фактическую границу решения моей модели в 300-кратном пространстве?
Какой из них вы используете для уменьшения размерности - усеченного SVD или TSNE? Если вы используете линейный метод для классификации и сокращения, то это довольно прямолинейно. –
@Chester Я не думаю, что op создает tSNE только для того, чтобы его игнорировать ;-) – lejlot