【发布时间】:2015-07-13 18:32:49
【问题描述】:
我是使用 python 进行机器学习的新手。我已经设法使用 matplotlib 为逻辑回归绘制了直线决策边界。但是,我在绘制曲线以了解使用某些样本数据集过度拟合的情况时遇到了一些困难。
我正在尝试使用正则化构建逻辑回归模型,并使用正则化来控制我的数据集的过度拟合。
我知道 sklearn 库,但我更喜欢单独编写代码
我正在处理的测试数据样本如下:
x=np.matrix('2,300;4,600;7,300;5,500;5,400;6,400;3,400;4,500;1,200;3,400;7,700;3,550;2.5,650')
y=np.matrix('0;1;1;1;0;1;0;0;0;0;1;1;0')
我期望的决策边界如下图所示:
任何帮助将不胜感激。
我可以使用下面的代码绘制一条直线决策边界:
# plot of x 2D
plt.figure()
pos=np.where(y==1)
neg=np.where(y==0)
plt.plot(X[pos[0],0], X[pos[0],1], 'ro')
plt.plot(X[neg[0],0], X[neg[0],1], 'bo')
plt.xlim([min(X[:,0]),max(X[:,0])])
plt.ylim([min(X[:,1]),max(X[:,1])])
plt.show()
# plot of the decision boundary
plt.figure()
pos=np.where(y==1)
neg=np.where(y==0)
plt.plot(x[pos[0],1], x[pos[0],2], 'ro')
plt.plot(x[neg[0],1], x[neg[0],2], 'bo')
plt.xlim([x[:, 1].min()-2 , x[:, 1].max()+2])
plt.ylim([x[:, 2].min()-2 , x[:, 2].max()+2])
plot_x = [min(x[:,1])-2, max(x[:,1])+2] # Takes a lerger decision line
plot_y = (-1/theta_NM[2])*(theta_NM[1]*plot_x +theta_NM[0])
plt.plot(plot_x, plot_y)
我的决策边界是这样的:
在理想情况下,上述决策边界很好,但我想绘制一个曲线决策边界,它非常适合我的训练数据,但会过度拟合我的测试数据。类似于第一个情节中显示的内容
【问题讨论】:
-
您的问题/问题是什么?你试过什么?
-
您好 julien,我正在尝试构建曲线决策边界,我尝试使用 matplotlib 绘制直线。但我不知道如何在 matplotlib 中绘制曲线。我正在尝试曲线的多项式特征。我已经对我的问题进行了一些更新。请看看..谢谢:)
-
你不能简单地使用蓝点的最大包络和红点的最小包络之间的平均值吗? (虽然不确定如何处理原始图中缺少的红点(x 5))
-
其实它们并没有丢失,拉长图形时可以看到它们。我正在寻找一些等高线图。我可以使用 octave 绘制相同的图,因为我是 python 新手,我不知道如何继续
-
不确定“它们没有丢失”是什么意思:除非 x 和 y 不是您的完整数据集,否则 y = 1 的横坐标低于 3 的点没有任何意义。
标签: python matplotlib logistic-regression