第29步 机器学习分类实战:支持向量机(SVM)建模

这篇具有很好参考价值的文章主要介绍了第29步 机器学习分类实战:支持向量机(SVM)建模。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

支持向量机(SVM)建模。


一、数据预处理

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv('X disease code fs.csv')
X = dataset.iloc[:, 1:14].values
Y = dataset.iloc[:, 0].values

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.30, random_state = 666)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

二、SVM的调参策略

先复习一下参数(传送门),需要调整的参数有:
① kernel:{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’},默认为’rbf’。使用的核函数,必须是“linear”,“poly”,“rbf”,“sigmoid”,“precomputed”或者“callable”中的一个。
② c:浮点数,默认为1.0。正则化参数。正则化的强度与C成反比。必须严格为正。一般可以选择为:10^t , t=[- 4,4]就是0.0001 到10000。
③ gamma:核系数为‘rbf’,‘poly’和‘sigmoid’才可以设置。可选择下面几个数的倒数:0.1、0.2、0.4、0.6、0.8、1.6、3.2、6.4、12.8。
④ degree:整数,默认3。多项式核函数的次数(’ poly ')。将会被其他内核忽略。。

三、SVM调参演示

(A)先默认参数走一波:

from sklearn.svm import SVC
classifier = SVC(random_state = 0, probability=True)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
y_testprba = classifier.predict_proba(X_test)[:,1] 
y_trainpred = classifier.predict(X_train)
y_trainprba = classifier.predict_proba(X_train)[:,1]
from sklearn.metrics import confusion_matrix
cm_test = confusion_matrix(y_test, y_pred)
cm_train = confusion_matrix(y_train, y_trainpred)
print(cm_train)
print(cm_test)

俗话说廋死的骆驼比马大,SVM厉害哦:
第29步 机器学习分类实战:支持向量机(SVM)建模
第29步 机器学习分类实战:支持向量机(SVM)建模
调整一下参数,看看能否逆袭那几个集成模型,我们按照内核来分别调整:


(B)kernel=‘rbf’,只需要调gamma:

from sklearn.svm import SVC
param_grid=[{
            'gamma':[10, 5, 2.5, 1.5, 1.25, 0.625, 0.3125, 0.15, 0.05, 0.025, 0.0125],              
            },
           ]
boost = SVC(kernel='rbf', random_state = 0, probability=True)
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(boost, param_grid, n_jobs = -1, verbose = 1, cv=10)      
grid_search.fit(X_train, y_train)    
classifier = grid_search.best_estimator_  
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
y_testprba = classifier.predict_proba(X_test)[:,1] 
y_trainpred = classifier.predict(X_train)
y_trainprba = classifier.predict_proba(X_train)[:,1]
from sklearn.metrics import confusion_matrix
cm_test = confusion_matrix(y_test, y_pred)
cm_train = confusion_matrix(y_train, y_trainpred)
print(cm_train)
print(cm_test)

看结果,还不错:
第29步 机器学习分类实战:支持向量机(SVM)建模第29步 机器学习分类实战:支持向量机(SVM)建模


(C)kernel=‘linear’,没参数:

from sklearn.svm import SVC
classifier = SVC(kernel='linear', random_state = 0, probability=True)

看结果,也还不错:
第29步 机器学习分类实战:支持向量机(SVM)建模第29步 机器学习分类实战:支持向量机(SVM)建模


(D)kernel=‘sigmoid’,调整参数C(大写的C)和gamma:

from sklearn.svm import SVC
param_grid=[{
            'gamma':[1,2,3,4,5,6,7,8,9,10],   
            'C':[0.0001,0.001,0.01,0.1,1,10,100,1000,10000],  
            },
           ]
boost = SVC(kernel='sigmoid', random_state = 0, probability=True)

结果,稍微差一点:
第29步 机器学习分类实战:支持向量机(SVM)建模
第29步 机器学习分类实战:支持向量机(SVM)建模
最优模型:
SVC(C=0.01, gamma=4, kernel=‘sigmoid’, probability=True, random_state=0)


(E)kernel=‘poly’,调整参数C(大写的C)、gamma和d:
多说一句,如何看每一个核有哪些参数:

from sklearn.svm import SVC
classifier = SVC(kernel='poly', random_state = 0, probability=True)
classifier.get_params().keys()

然后就输出kernel='poly’对应的所有参数:

dict_keys(['C', 'break_ties', 'cache_size', 'class_weight', 'coef0', 'decision_function_shape', 'degree', 'gamma', 'kernel', 'max_iter', 'probability', 'random_state', 'shrinking', 'tol', 'verbose'])

(a)先调整参数C(大写的C)、gamma:

from sklearn.svm import SVC
param_grid=[{
            'gamma':[1,2,3,4,5,6,7,8,9,10],   
            'C':[0.0001,0.001,0.01,0.1,1,10,100,1000,10000], 
            },
           ]
boost = SVC(kernel='poly', random_state = 0, probability=True)

看结果:
第29步 机器学习分类实战:支持向量机(SVM)建模第29步 机器学习分类实战:支持向量机(SVM)建模
(b)再调整degree:

from sklearn.svm import SVC
param_grid=[{
            "degree":[1,2,3,4,5,6,7,8,9,10], 
            },
           ]
boost = SVC(C=0.0001, gamma=2, kernel='poly', probability=True, random_state=0)

最终,degree还是3。

总结

综合来看,可能还是rbf核还有liner核的性能好一些。SVM还是厉害哦,至少在这个数据集,调参容易快捷,性能也到位。文章来源地址https://www.toymoban.com/news/detail-430469.html

到了这里,关于第29步 机器学习分类实战:支持向量机(SVM)建模的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习——支持向量机SVM

    支持向量机(SVM)是一种二类分类模型,其基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,间隔最大使它有别于感知机,支持向量机也可通过核技巧使它成为非线性分类器。支持向量机的学习策略是间隔最大化,可将其转化为一个求解凸二次

    2024年01月17日
    浏览(34)
  • SVM(支持向量机)-机器学习

    支持向量机(Support Vector Machine,SVM) 是一种用于分类和回归分析的监督学习算法 。它属于机器学习中的一类强大而灵活的模型,广泛应用于模式识别、图像分类、自然语言处理等领域。 基本原理: SVM的基本原理是通过找到能够有效分隔不同类别的超平面来进行分类。在二维

    2024年02月03日
    浏览(31)
  • 机器学习-支持向量机SVM

    在本练习中,我们将使用支持向量机(SVM)来构建垃圾邮件分类器。 我们将从一些简单的2D数据集开始使用SVM来查看它们的工作原理。 然后,我们将对一组原始电子邮件进行一些预处理工作,并使用SVM在处理的电子邮件上构建分类器,以确定它们是否为垃圾邮件。 我们要做

    2024年02月12日
    浏览(32)
  • 机器学习(六)支持向量机(SVM)

    目录 1.间隔与支持向量 1.1线性可分 1.2支持向量 1.3 最大间隔超平面 2.对偶问题 2.1拉格朗日乘子法 2.2 SMO算法 2.3SMO算法代码实现 3.核函数 4. SVM实例(手写体数字识别) 5.实验总结 支持向量机(SVM) 是有监督学习中最有影响力的机器学习算法之一,一般用于解决二分类问题(

    2024年02月09日
    浏览(28)
  • 【机器学习】SVM支持向量机模型

     本站原创文章,转载请说明来自 《老饼讲解-机器学习》 ml.bbbdata.com 目录 一. SVM的目标和思想    1.1 SVM硬间隔模型的原始目的 1.2 SVM的直接目标 1.3 什么是支持向量  二. SVM的支持平面的表示方式 2.1 支持面表示方式的初步思路 2.2 初步思路的缺陷与改进 2.3 支持面的最终表示

    2023年04月23日
    浏览(51)
  • 【机器学习】支持向量机SVM入门

    相较于之前学习的线性回归和神经网络,支持向量机(Supprot Vector Machine,简称SVM)在拟合复杂的非线性方程的时候拥有更出色的能力,该算法也是十分经典的算法之一。接下来我们需要学习这种算法 首先我们回顾逻辑回归中的经典假设函数,如下图: 对于任意一个实例 (

    2024年02月15日
    浏览(30)
  • 机器学习算法:支持向量机(SVM)

    Solem《python计算机视觉编程》、李航《统计学习方法》、周志华《机器学习》 要理解好支持向量机需要较好的数学功底,且能不被公式以及文字绕晕,这里我们就理清楚支持向量机的大体过程。具体的数学计算推导其实已经封装好了,那么理解算法的原理也对我们将来的学习

    2024年02月03日
    浏览(29)
  • 机器学习:基于支持向量机(SVM)进行人脸识别预测

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 专栏案例:

    2024年01月23日
    浏览(30)
  • 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析。 其具有以下特征: (1)SVM可以表示为凸优化问题,因此可以利用已知的

    2024年02月04日
    浏览(31)
  • python机器学习决策树和SVM向量机算法实现红酒分类

    经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本,每个样本有13个特征,可以用于分类任务。 具体每个字段的含义如下: alcohol:酒精含量百分比 malic_acid:苹果酸含量(克/升) ash:灰分含量(克/升) alcalinity_of_ash:灰分碱度(以mEq/L为单位)

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包