Любой способ сделать точечный график для данных бинарной классификации? - PullRequest
0 голосов
/ 07 мая 2019

Я хочу сделать границу решения для извлеченных объектов со столбцами двоичных переменных, и я хочу построить график для разделения двух классов. Я попытался с помощью Логистической регрессии сделать границу решения, но на визуализированном графике точки данных, которые принадлежат двум классам, плохо разделены. Когда я пытался создать точечный график или границы решения с помощью SVM, у меня возникла ошибка памяти.

Можно ли как-нибудь взять образец для построения точечной диаграммы, когда я делаю SVM? Как я могу получить правильную границу решения для бинарной классификации? любая идея?

Данные

У меня есть 265x16 столбцов dataframe функций, это можно увидеть на примере фрагмента данных на github

что я пытался :

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import pandas as pd

##  load features
df=pd.read_csv('binary_clf_feats.csv')
X_feats=df.iloc[:, 2:11,].values
y_label=df['price_status'].values
seed=np.random.seed(234)
X_train, X_test, y_train, y_test = train_test_split(X_feats, y_label, test_size = 0.2, random_state = seed)

log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
parameters = log_reg.coef_[0]
parameter0 = log_reg.intercept_

# Plotting the decision boundary
fig = plt.figure(figsize=(10,7))
x_values = [np.min(X_train[:,] -50 ), np.max(X_train[:,] +50 )]
y_values = np.dot((-1./parameters[1]), (np.dot(parameters[0],x_values) + parameter0))
colors=['red' if l==0 else 'blue' for l in y_train]
plt.scatter(X_train[:, 0], X_train[:, 1], label='Logistics regression', color=colors)
plt.plot(x_values, y_values, label='Decision Boundary')
plt.show()

но этот подход дал мне следующий сюжет:

enter image description here

Я ожидаю, что синяя, красная точка данных должна быть хорошо разделена. Как я могу манипулировать данными о своих объектах для получения правильного точечного или SVM-графика? Есть ли лучшая идея, чтобы это произошло? спасибо

1 Ответ

1 голос
/ 07 мая 2019

Глядя на ваш набор данных, у вас есть более 2 функций. В общем, 2D-черчение более 2-х объектов невозможно / нет стандартной практики. Вы должны спросить себя, что вы на самом деле визуализируете, если это было возможно.

Старайтесь не концентрироваться на графике, а сначала повысить точность модели. Несколько улучшений: - значения шкалы - значения бина - объединить функции / функции - генерировать новые функции - попробуйте другие модели: из дерева решений будет легко объяснить, какие функции приводят к какому решению

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...