当前位置: 首页 > news >正文

机器学习实战-系列教程8:SVM分类实战3非线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读

🌈🌈🌈机器学习 实战系列 总目录

本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传

SVM分类实战1之简单SVM分类
SVM分类实战2线性SVM
SVM分类实战3非线性SVM

4、非线性SVM

4.1 创建非线性数据

from sklearn.datasets import make_moons 
X, y = make_moons(n_samples=100, noise=0.15, random_state=42)def plot_dataset(X, y, axes):plt.plot(X[:, 0][y==0], X[:, 1][y==0], "bs")plt.plot(X[:, 0][y==1], X[:, 1][y==1], "g^")plt.axis(axes)plt.grid(True, which='both')plt.xlabel(r"$x_1$", fontsize=20)plt.ylabel(r"$x_2$", fontsize=20, rotation=0)plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])
plt.show()

在这里插入图片描述

4.2 分类预测

from sklearn.datasets import make_moons
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
polynomial_svm_clf=Pipeline((("poly_features",PolynomialFeatures(degree=3)),("scaler",StandardScaler()),("svm_clf",LinearSVC(C=10,loss="hinge"))))
polynomial_svm_clf.fit(X,y)
  1. 使用PolynomialFeatures模块进行预处理,使用这个可以增加数据维度
  2. polynomial_svm_clf.fit(X,y)对当前进行训练传进去X和y数据
def plot_predictions(clf,axes):x0s = np.linspace(axes[0],axes[1],100)x1s = np.linspace(axes[2],axes[3],100)x0,x1 = np.meshgrid(x0s,x1s)X = np.c_[x0.ravel(),x1.ravel()]y_pred = clf.predict(X).reshape(x0.shape)plt.contourf(x0,x1,y_pred,cmap=plt.cm.brg,alpha=0.2)plot_predictions(polynomial_svm_clf,[-1.5,2.5,-1,1.5])
plot_dataset(X,y,[-1.5,2.5,-1,1.5])

在这里插入图片描述

5、核函数

5.1 核函数

from sklearn.svm import SVCpoly_kernel_svm_clf = Pipeline([("scaler", StandardScaler()),("svm_clf", SVC(kernel="poly", degree=3, coef0=1, C=5))])poly_kernel_svm_clf.fit(X, y)
poly100_kernel_svm_clf = Pipeline([("scaler", StandardScaler()),("svm_clf", SVC(kernel="poly", degree=10, coef0=100, C=5))])poly100_kernel_svm_clf.fit(X, y)
plt.figure(figsize=(11, 4))plt.subplot(121)
plot_predictions(poly_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])
plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])
plt.title(r"$d=3, r=1, C=5$", fontsize=18)plt.subplot(122)
plot_predictions(poly100_kernel_svm_clf, [-1.5, 2.5, -1, 1.5])
plot_dataset(X, y, [-1.5, 2.5, -1, 1.5])
plt.title(r"$d=10, r=100, C=5$", fontsize=18)plt.show()

在这里插入图片描述

5.2 高斯核函数

SVM分类实战1之简单SVM分类
SVM分类实战2线性SVM
SVM分类实战3非线性SVM

http://www.lryc.cn/news/162462.html

相关文章:

  • 计算机网络-谢希任第八版学习笔记总结
  • 手写Spring:第5章-注入属性和依赖对象
  • 初识集合框架 -Java
  • 目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
  • 深眸科技自研轻辙视觉引擎,以AI机器视觉赋能杆号牌识别与分拣
  • Shell命令管理进程
  • python创建exe文件
  • 【数据结构】AVL树的插入与验证
  • 9.3.3网络原理(网络层IP)
  • 代码随想录算法训练营第四十八天| LeetCode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
  • C++新经典10--vector以及其使用
  • std : : vector
  • AJAX学习笔记8 跨域问题及解决方案
  • webhook--详解(gitee 推送)
  • 高速路自动驾驶功能HWP功能定义
  • Leetcode113. 路径总和 II
  • 分布式锁之redis实现
  • Idea中如何在一个项目中引入其他子模块?
  • UDP协议概述
  • Python-tracemalloc-跟踪内存分配
  • 02 CSS技巧
  • Yarn资源调度器
  • android上架备案公钥和md5获取工具
  • SpringBoot系列(12):SpringBoot集成log4j2日志配置
  • HTML事件列表
  • 并发-Executor框架笔记
  • 【C进阶】分析 C/C++程序的内存开辟与柔性数组(内有干货)
  • 深入理解 JVM 之——字节码指令与执行引擎
  • C++:vector
  • Android Automotive编译