有什么方法可以为二元分类特征数据制作散点图?

时间:2019-05-06 21:23:07

标签: python matplotlib classification

我想为具有二进制变量列的提取特征确定决策边界,并且我想绘制一个图以分离出两个类。我尝试使用Logistic回归确定决策边界,但是在渲染的图中,属于两类的数据点没有很好地分离。当我尝试使用SVM绘制散点图或决策边界时,出现内存错误。

在执行SVM时,有什么方法可以采样以绘制散点图?如何获得正确的二进制分类决策边界?任何想法?

数据

我有265x16列的特征数据框,可以在example data snippet on 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 个答案:

答案 0 :(得分:1)

查看数据集,您拥有两个以上的功能。通常,无法对2个以上的特征进行2D绘图/没有标准做法。您需要问问自己,如果可能的话,您实际上在想像什么。

尝试不着重于绘图,而首先要提高模型的准确性。一些改进: -标度值 -箱值 -结合功能/删除功能 -生成新功能 -尝试其他模型:从决策树可以轻松地解释哪些功能导致了什么决策