Python监督学习_和支持向量机SVM

本文介绍了支持向量机(SVM)的概念,包括线性模型与非线性特征的扩展,核技巧如多项式核和高斯核(RBF)的应用。SVM通过核技巧在高维空间中学习分类器,其中RBF核提供了平滑非线性边界。文章强调了SVM的参数调整,特别是gamma和C的影响,以及预处理数据的重要性,以提高模型性能。
摘要由CSDN通过智能技术生成

核支持向量机

在线性模型那里,我们学习了将线性支持向量机用于分类任务。和支持向量机 (SVM) 是可以推广到更复杂模型的扩展,这些模型无法被输入控件的超平面定义,他既可以回归也可以分类,用于分类的情况在SVC中实现,用于回归的在SVR中实现。可以阅读Hastie、Tibshirani 和 Friedman 合著的《统计学基础》一书的第12章。

1.线性模型与非线性特征

线性模型在低维空间容易受限,为了让线性模型更加灵活,我们向式子添加更多特征,比如添加输入特征的交互项或多项式。

from sklearn.datasets import make_blobs
X, y = make_blobs(centers=4, random_state=8)
y = y % 2
mglearn.discrete_scatter(X[:, 0], X[:, 1], y)
plt.xlabel("Feature 0")
plt.ylabel("Feature 1")
plt.show()

用于分类的线性模型只能用一条直线,无法给出较好的分类结果,如下。

from sklearn.svm import LinearSVC
linear_svm = LinearSVC().fit(X, y)
mglearn.plots.plot_2d_separator(linear_svm, X)
mglearn.discrete_scatter(X[:, 0], X[:, 1], y)
plt.xlabel("Feature 0")
plt.ylabel("Feature 1")
plt.show()

 

我们对输入特征进行扩展,将每个数据点表示为三维数据点 (feature0, feature1, feature1 ** 2) ,从而标示出一个三维图。

# 添加第二特征的平方,作为一个新特征
X_new = np.hstack([X, X[:, 1:] ** 2])
from mpl_toolkits.mplot3d import Axes3D, axes3d
figure = plt.figure()
# 3D可视化
ax = Axes3D(figure, elev=-152, azim=-26)
# 首先画出所有 y==0 的点,然后画出所有 y==1 的点
mask = y == 0
ax.scatter(X_new[mask, 0], X_new[mask, 1], X_new[mask, 2],
           c='b', cmap=mglearn.cm2, s=60)
ax.scatter(X_new[~mask, 0], X_new[~mask, 1], X_new[~mask, 2],
           c='r', marker='^', cmap=mglearn.cm2, s=60)
ax.set_xlabel("feature 0")
ax.set_ylabel("feature 1")
ax.set_zlabel("feature1 ** 2")
plt.sh
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值