『』支持向量机(SVM)说明及示例
本文插图
支持向量机(SVM)可以解决支持分类和回归问题 , 这两个问题的解决都是通过构造函数h来实现的 , 该函数将输入向量x与输出y进行匹配:y = h(x )
优缺点
优点:该算法可以基于内核对线性和非线性问题的极限进行建模 。 它对于“过拟合”也非常可行 , 尤其是在大空间中 。
劣势:支持向量机需要大量的内存 , 由于选择正确的核(kernel)很重要 , 所以很难调整 , 而且在相当大的数据集下也无法获得良好的结果 。
简要说明
假设我们有6点的数据集 , 如下所示
本文插图
你可以看到它们是线性可分的 , 但问题是有成千上万的直线可以做到这一点
本文插图
所有这些线均有效 , 并且可以100%正确的进行分类 。 但问题是 , 这些线是有效的 , 但不是最优的 。
如下图所示 , 它们的原理很简单:它们的目的是使用尽可能“简单”的边界将数据分离到类中 , 从而使不同数据组之间的距离和它们之间的边界达到最大 。 这个距离也被称为“margin” , 支持向量机因此被称为“wide margin separators” , “支持向量”是最接近边界的数据 。
本文插图
要使用的机器学习数据集
1)进行分类的SVM:我们将使用“ Social Network Ads”机器学习数据集 , 这是此数据集的链接(https://www.kaggle.com/rakeshrau/social-network-ads) 。 数据集由5列组成(User ID、Gender、 Age、 Estimated Salary 和 Purchased) , 共有400行 。
本文插图
2)第二个SVM进行回归:我们将使用“Position Salaries”机器学习数据集 , 这是此数据集(https://www.kaggle.com/farhanmd29/position-salaries)的链接 。 数据集由3列组成(Position、 Level、Salary) , 有10行 。
本文插图
要达到的结果
分类:可视化并识别不同类 , 并按数据集绘制分界线以进行测试
回归:可视化数据点并绘制回归线 , 并预测level为4.5和8.5员工的薪水
遵循的步骤
分类
- 导入必要的库
- 导入数据集
- 将数据分为训练集和测试集
- 根据需要建立特征缩放
- 从SVM库创建用于分类的SVC对象
- 拟合数据集(训练集)
- 预测结果(测试集)
- 评估机器学习模型
- 导入必要的Python库
- 导入机器学习数据集
- 根据需要建立特征缩放
- 从SVM库创建用于回归的SVC对象
- 拟合数据集
- 预测结果
这部分代码进行了数据预处理 , 特征缩放 , 将数据划分为训练集和测试集 , 然后从支持向量机类中声明我们的SVC分类模型以进行拟合和预测
# Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset dataset = pd.read_csv('Social_Network_Ads.csv') X = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # Fitting classifier to the Training set from sklearn.svm import SVC classifier = SVC(random_state=0) # for non-linear model use this parametre kernel='rbf' classifier.fit(X_train, y_train) # Predicting the Test set results y_pred = classifier.predict(X_test) # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)数据可视化部分的Python代码如下:
- cnBeta微软在Chromium中新增对双屏模拟器的支持
- IT数码通你现在使用哪款手机?你是否支持国产手机?
- 我无法自拔菲利普亲王宁愿“退休”也不见特朗普公然冷落还获女王支持!
- 推哥科技爆料支持120hz屏,安卓优势不再!,iPhone12曝三大优势
- 央视网央行继续加大对中小微企业支持力度
- 乐居网兼顾存量稳定预期,支持“三创四新”
- 中国银协达成全面战略合作!北京农商银行与北京中关村银行携手支持中小微企业复工复产
- 插树岭电视汇支持双模5G,晚荣耀X10两天发布,红米Note9定位不足千元起
- 环球Tech中国移动率先发布5G消息应用:支持iOS和Android
- 玩懂手机Controller支持无线连接笔记本和PC,谷歌Stadia