python机器学习基础——监督学习算法之线性分类

定义

注释:本系列所有内容来自书籍《python机器学习基础》,写博客是之前想学习利用sklearn库实现经典机器学习算法的时候没有在网上找到参考资料,所以就自己动手按照书上的代码实现,在博客上记录一下,希望可以帮助到有需要的人。同时,如果有侵权,请大家务必告知书,我收到消息会在第一时间删除博客相关内容。
在这里插入图片描述

代码实现

import mglearn
from sklearn.linear_model import LogisticRegression
from sklearn.svm import LinearSVC
from mglearn import datasets
import matplotlib.pyplot as plt

X, y = mglearn.datasets.make_forge()
fig, axes = plt.subplots(1, 2, figsize=(10, 3))
for model, ax in zip([LinearSVC(), LogisticRegression()], axes):
    clf = model.fit(X, y)
    mglearn.plots.plot_2d_separator(clf, X, fill=False, eps=0.5, ax=ax, alpha=.7)
    mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax)
    ax.set_title("{}".format(clf.__class__.__name__))
    ax.set_xlabel("Feature 0")
    ax.set_ylabel("Feature 1")
axes[0].legend()
plt.show()

如上代码绘制出下图
在这里插入图片描述
在这张图中,forge数据集的第一个特征位于x轴,第二个特征位于y轴,图中分别展示了LinearSVC和LogisticRegression得到的决策边界,都是直线,将顶部归为类别1的区域和底部归为类别0的区域区分开了。换句话说,对于每个分类器而言,位于黑线上方的新数据点都会被划为类别1,而在黑线下方的点都会被划分为类别0.

两个模型得到了相似的决策边界。注意,两个模型中都有两个点的分类是错误的。两个模型都默认使用L2正则化,就像Ridge对回归所作的那样。

权衡参数C

对于LogisticRegression和LinearSVC,决定正则化强度的权衡参数叫做C。C值越大,对应的正则化越弱。换句话说,如果参数C值较大,那么LogisticRegression和LinearSVC将尽可能将训练集拟合到最好,而如果C值较小,那么模型更强调使系数向量(w)接近于0。

参数C的作用还有另一个有趣之处。较小的C值可以让算法尽量适应“大多数”数据点,而较大的C值更强调每个数据点都分类正确的重要性。下面是使用LinearSVC的图示。

mglearn.plots.plot_linear_svc_regularization()
plt.show()

在这里插入图片描述
上图是不同C值的线性SVM在forge数据集上的决策边界
在左侧的图中,C值很小,对应强正则化。大部分属于类别0的点都位于底部,大部分属于类别1的点都位于顶部。强正则化的模型会选择一条相对水平的线,有两个点分类错误。在中间的图中,C值较大,模型更关注两个分类错误的样本,使决策边界的斜率变大。最后,在右侧的图中,模型的C值非常大,使得决策边界的斜率非常大,现在模型对于类别0中所有点的分类都是正确的,类别1中仍有一个点分类错误,这是因为对这个数据集来说,不可能用一条直线将所有点都分类正确。右侧图中的模型尽量使所有点的分类都正确,但可能无法掌握类别的整体分布。换句话说,这个模型很可能过拟合。

与回归的情况类似,用于分类的线性模型在低维空间中看起来可能非常受限,决策边界可能是直线或平面。同样,在高维空间中,用于分类的线性模型变得非常强大,当考虑更多特征时,避免过拟合变得越来越重要。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值