Я хочу сделать границу решения для извлеченных объектов со столбцами двоичных переменных, и я хочу построить график для разделения двух классов. Я попытался с помощью Логистической регрессии сделать границу решения, но на визуализированном графике точки данных, которые принадлежат двум классам, плохо разделены. Когда я пытался создать точечный график или границы решения с помощью 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()
но этот подход дал мне следующий сюжет:
Я ожидаю, что синяя, красная точка данных должна быть хорошо разделена. Как я могу манипулировать данными о своих объектах для получения правильного точечного или SVM-графика? Есть ли лучшая идея, чтобы это произошло? спасибо