『』支持向量机(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代码如下:
推荐阅读
- 宅客ZhaiiKer|杜比全景声音乐平台Tidal上线,暂只支持Apple TV 4K等少数产品
- |为什么使用B+Tree?
- 提供京东发布“星星之火”计划 全力支持地摊和小店经济
- 于九野|iPhone 6s还能再撑一年?疑似iOS 14支持名单曝光
- 搜狐新闻|报告:苹果 iOS 14 将支持所有运行 iOS 13 的 iPhone
- 我爱音频网|杰理AC6936D蓝牙音频SoC获倍思采用,支持蓝牙5.1,6mA超低功耗
- 机智万象|原创 高管确认荣耀Play4系列将支持红外测温 网友曝光全系配置差异明显
- 天下快谈|iPhone国内销量增加160%,为啥说支持国产,国人却喜欢买苹果?
- 搜狐科技|科大讯飞发布面向年轻人的智能录音笔A1 支持10类语种12种方言转写
- |中兴AXON 11 SE发布:首款支持四大运营商网络5G手机
