(二)SVM实现-惩罚系数为C=1和C=0.2的情形可视化SVM超平面及间隔边界(输出对偶模型的最优解alpha)(输出支持向量)[机器学习代码]

这篇博客介绍了如何使用sklearn库来构建SVM分类模型,特别是在C=1和C=0.2时,详细展示了SVM超平面和间隔边界的可视化过程。同时,博主分享了如何输出对偶模型的最优解alpha和支持向量。此外,还讨论了针对不同数据集选择合适核函数以及核参数和C值对分类结果的影响。尽管缺乏理论部分,但鼓励读者参与讨论和学习。
摘要由CSDN通过智能技术生成

    机器学习课程总结,本系列文章代码注释为主。
    理论部分搬至博客上比较耗费时间,所以缺少理论部分。但是也欢迎大家一起探讨学习。
    如果需要理论部分的讲义,可私信(个人觉的讲的很好很全)。

题目需求

一、针对样本:

3,3,+1

4,3,+1

1,1,-1

使用sklearn包求解SVM分类模型,其中,数据中第三列是标签,1-2列是特征。

针对惩罚系数为C=1和C=0.2的情形,分别完成:可视化样本;可视化SVM超平面及间隔边界;输出对偶模型的最优解alpha;输出支持向量;

二、针对附件中的数据,选择合适的核,训练SVM模型,并可视化样本空间的分类结果(即样本空间用两种颜色表示,同一类的样本点颜色一样,不同类的样本点颜色不同),并给出以下样本的分类结果:
(0,0) (1,1) (2,2) (3,3)

三、进一步在问题二中考虑核的参数以及C的影响。

代码

# -*- coding: utf-8 -*-#
# Author: xhc
# Date:    2021-03-21 8:11
# project:  0321
# Name:    SVM.PY
from sklearn import svm
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv("./data/excer_svm.csv",header=0) # 读取数据
feature = data.iloc[:, :2] # 提取特征
labels = data.iloc[:, -1] # 提取标签
train_feature = 
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我来为您解答这个问题。 首先,我们需要导入 iris 数据集和 scikit-learn 中的 svm 模块: ```python from sklearn import datasets from sklearn import svm import matplotlib.pyplot as plt import numpy as np iris = datasets.load_iris() X = iris.data[:, :2] # 只使用前两个特征 y = iris.target ``` 然后,我们可以使用 SVM 模型进行训练和预测,并输出决策边界的参数和截距、支持向量: ```python clf = svm.SVC(kernel='linear') clf.fit(X, y) # 输出决策边界的参数和截距 print("Coefficients:", clf.coef_) print("Intercept:", clf.intercept_) # 输出支持向量 support_vectors = clf.support_vectors_ print("Support Vectors:", support_vectors) ``` 最后,我们可以将数据集和决策边界可视化: ```python # 生成网格点坐标 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02)) # 预测网格点的标签 Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) # 绘制数据集和决策边界 plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8) plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.coolwarm) plt.scatter(support_vectors[:, 0], support_vectors[:, 1], s=100, facecolors='none', edgecolors='k') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.xticks(()) plt.yticks(()) plt.title('SVM for iris dataset') plt.show() ``` 运行以上代码,即可得到决策边界支持向量可视化结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Windalove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值