生成随机2D线性分隔符的最佳方法是什么?

时间:2019-01-12 09:18:11

标签: python random classification

对于模拟,我想随机生成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。enter image description here

我以前绘制的代码:

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)我该如何做才能使偏差在更大范围内分布?

实际上,我要做的是通过生成随机线性“分类器”来线性分离我的数据,并使用设计好的算法选择最佳选择。但是,当我的数据在右上角“移动”时,所有具有负斜率的分类器均无用(参见图片)。我的想法是将数据居中,这也许是最好的解决方案,但我首先是在寻找一种可以让我获得更大拦截力的解决方案

0 个答案:

没有答案