支持向量机之使用核SVM解决非线性分类问题

支持向量机算法除了能对线性问题进行分类之外,还可以对非线性可分的问题进行分类,我们可以很容易的使用“核技巧”来解决非线性可分问题。


一、非线性问题


在非线性的问题中,最经典的非线性问题,莫过于对于异或问题的分类了。下面,我们通过python来生成一个异或的数据集,代码如下

支持向量机之使用核SVM解决非线性分类问题_第1张图片

if __name__ == "__main__":
    #随机生成200个点
    x_xor = np.random.randn(200,2)
    #将数据集变成一个异或的数据集
    #都满足或者都不满足条件返回False,否则返回True
    y_xor = np.logical_xor(x_xor[:,0] > 0,x_xor[:,1] > 0)
    #三元运算符,为True返回1或者返回-1
    y_xor = np.where(y_xor,1,-1)
    #描点
    #绘制标签为1的点
    plt.scatter(x_xor[y_xor==1,0],x_xor[y_xor==1,1],c="b",marker="x",label="1")
    #绘制标签为-1的点
    plt.scatter(x_xor[y_xor==-1,0],x_xor[y_xor==-1,1],c="r",marker="s",label="-1")
    plt.ylim(-3.0)
    plt.legend

你可能感兴趣的:(机器学习,python机器学习)