Bobo老师机器学习笔记第九课-逻辑回归之决策边界

1、什么是决策边界?

决策边界又称为是限定边界,引用百度的定义:在具有两个类的统计分类问题中,决策边界或决策表面是超曲面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。

我们先看逻辑回归的sigmoid函数。  

我们求出

上一篇博客中我们已经计算出来了值,那么我们把这条曲线绘制出来。 

这个线就是我们的决策边界,可以通过图形,清晰看到这条直线把上面点分为两类。

2、那么对于不规则的分类如何求出决策边界呢,比如下面?

这里Bobo老师提供了一种通用的方法。 老师的代码分享如下:

def plot_decision_boundary(model, axis):
    
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]

    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)

    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
    
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)

model: 训练模型

axis: X和Y轴对应的起始和终止点

使用是matplotlib模块

上面的逻辑回归我们就可以利用这种绘制成这样:

3、 以前KNN分类应该如何绘制?

从上图看起始分类有点过拟合了,我们看看参数:

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=5, p=2,
           weights='uniform')

可以看出来,这个n_neighbours =5,现在我们修改为50再试试:

这样看起来好多了。绘制KNN的代码如下:

from sklearn.neighbors import KNeighborsClassifier
knn_clf_all = KNeighborsClassifier()
knn_clf_all.fit(iris.data[:,:2], iris.target)
plot_decision_boundary(knn_clf_all, axis=[4, 8, 1.5, 4.5])
plt.scatter(iris.data[iris.target==0,0], iris.data[iris.target==0,1])
plt.scatter(iris.data[iris.target==1,0], iris.data[iris.target==1,1])
plt.scatter(iris.data[iris.target==2,0], iris.data[iris.target==2,1])
plt.show()

总结:

1、 模型的复杂与简单与决策边界的直接练习。

2、通过决策边界可视化看到模型是否存在过拟合。

参考文章:

机器学习06-逻辑回归-分类与决策边界

猜你喜欢

转载自blog.csdn.net/sxb0841901116/article/details/84846627