100天搞定机器学习(100-Days-Of-ML)(六)支持向量机SVM

小编 2026-06-30 阅读:843 评论:0
第六天:支持向量机SVM 支持向量机SVM是一个有监督的机器学习算法,它可用于分类和回归分析,最主要是用再分类问题中。在这个算法中,根据特征值,构建一个n维空间(其中n即是特征数量),把每个数据点投影到此...

第六天:支持向量机SVM

支持向量机SVM是一个有监督的机器学习算法,它可用于分类和回归分析,最主要是用再分类问题中。在这个算法中,根据特征值,构建一个n维空间(其中n即是特征数量),把每个数据点投影到此空间内。通过查找一个超平面,把数据区分成两类。换句话说,算法输出一个最佳超平面,用于数据分类。对于SVM来说,它指的是距离两类数据最远的一个超平面,即是此超平面到最近元素的距离最远。

 

\"\"

数据集同第五天用的是Social_Network_Ads。

第一步:导入库并加载数据集

数据集如下:

\"\"

导入库:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
-------------------------------
加载数据集:
dataset = pd.read_csv(\'E:/datasets/Social_Network_Ads.cs\')
X = dataset.iloc[ : , [2, 3]].values
Y = dataset.iloc[ : , 4].values
--------------------------------------------
打印查看数据集是否加载正确
print(X[0])
print(Y[0])

第二步:划分数据集为测试集和训练集

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)

Tips:有关train_test_split说明

train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取train data和testdata
train_test_split在17之前是cross_validation.train_test_split用法
在之后都是model_selection.train_test_split用法
具体变化看详细文档,下面简单介绍几个重要的参数。
参数说明:
*arrays:可以是列表、numpy数组、scipy稀疏矩阵或pandas的数据框(train_features、train_labels)
test_size:可以是浮点、整数或者None
   浮点:测试集占总样本的百分
   整数:测试集等于样本数
   None:默认是0.25
random_state:可以为整数、RandomState实例或None,默认为None
   整数:每次生成的数据都是相同的
   None:随机生成数据
stratify:可以是类似数组或None
   None:划分出来的测试集或训练集中,其类标签的比例也是随机的
   不为None:划分的测试集或训练集,其类标签的比例同输入的数组中的类标签比例,可以用于处理不均衡的数据集。

第三步:特征缩放

from sklearn.preprocessing import StandardScaler
sc = StandardScaler() //创建模型
X_train = sc.fit_transform(X_train)
X_test = sc.fit_transform(X_test)

第四步:训练SVM模型

from sklearn.svm import SVC
classifier = SVC(kernel = \'linear\', random_state = 0)
classifier.fit(X_train, Y_train)

Tips:SVC主要参数说明

sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0, 
shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None,
verbose=False, max_iter=-1, decision_function_shape=’ovr’, random_state=None)
-------------------------
每个版本的参数都是不一样的,这是21版本的参数解释。
主要参数说明:
C:惩罚参数,这个就不用多说了,C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,
趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。
C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
kernel:核函数,核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’
degree:多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
gamma:‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。
coef0:核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
tol :停止训练的误差值大小,默认为1e-3
max_iter :最大迭代次数。-1为无限制。

第五步:预测结果并输出混淆矩阵

预测:
Y_pred = classifier.predict(X_test)

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_test, Y_pred)
-------------------------------------
打印混淆矩阵
print(cm)

第六步:结果的可视化

from matplotlib.colors import ListedColormap
X_set, Y_set = X_train, Y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap((\'red\', \'green\')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(Y_set)):
    plt.scatter(X_set[Y_set == j, 0], X_set[Y_set == j, 1],
                c = ListedColormap((\'red\', \'green\'))(i), label = j)
plt.title(\'SVM (Training set)\')
plt.xlabel(\'Age\')
plt.ylabel(\'Estimated Salary\')
plt.legend()
plt.show()

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表