对于模拟,我想随机生成100个线性分类器(即线)。我是用:
classifier_array=list(np.random.uniform(-1,1,(n_classifiers,n_dim+1)))
换句话说,我尝试通过选择权重并在-1和1之间随机偏置来实现w_1*x_1+w_2*x_2+...+b=0
。
但是,尽管斜率似乎分布均匀,但截距(在2维中)却并非总是如此,似乎总是接近于0。
我以前绘制的代码:
def abline(slope, intercept):
"""Plot a line from slope and intercept"""
axes = plt.gca()
x_vals = np.array(axes.get_xlim())
y_vals = intercept + slope * x_vals
plt.plot(x_vals, y_vals, '--')
def plot_data(classifiers):
axes = plt.gca()
axes.set_xlim([-100,100])
axes.set_ylim([-100,100])
for i in range (0, len(classifiers)):
slope=-classifiers[i][0]/classifiers[i][1]
intercept=-classifiers[i][2]/classifiers[i][1]
abline(slope, intercept)
plt.show()
因此我只是做
plot_data(classifier_array)
生成分类器后
1)为什么偏差如此接近0?
2)我该如何做才能使偏差在更大范围内分布?
实际上,我要做的是通过生成随机线性“分类器”来线性分离我的数据,并使用设计好的算法选择最佳选择。但是,当我的数据在右上角“移动”时,所有具有负斜率的分类器均无用(参见图片)。我的想法是将数据居中,这也许是最好的解决方案,但我首先是在寻找一种可以让我获得更大拦截力的解决方案