支持向量机的python代码(sklearn.svm.SVC)

一、支持向量机的python代码(svm.SVC)

本文先对python中自带的数据:鸢尾花数据使用支持向量机进行分类。然后使用从外部导入的数据进行分类。

1、对鸢尾花数据调用python中支持向量机的包对其进行分类

#导入需要的包

from sklearn import svm

from sklearn.model_selection import train_test_split

from sklearn.datasets import load_iris

#导入鸢尾花数据

data=load_iris()

data_x,data_y=data.data,data.target

print("分类的类数:",data)

#将数据分成测试集和训练集

data_train_x,data

_test_x=train_test_split(data_x,test_size=0.2,random_state=55)

data_train_y,data_test_y=train_test_split(data_y,test_size=0.2,random_state=55)

#拟合模型(不同类型的核函数,依次为:linear、rbf、poly、sigmoid)

clf1=svm.SVC(kernel='linear',decision_function_shape='ovr').fit(data_train_x,data_train_y)

clf2=svm.SVC(kernel='rbf',gamma=1).fit(data_train_x,data_train_y)

clf3=svm.SVC(kernel='poly').fit(data_train_x,data_train_y)

clf4=svm.SVC(kernel='sigmoid').fit(data_train_x,data_train_y)

#得训练集和测试集分类的准确性

cl1_1=clf1.score(data_train_x,data_train_y)

cl1_2=clf1.score(data_test_x,data_test_y)

cl2_1=clf2.score(data_train_x,data_train_y)

cl2_2=clf2.score(data_test_x,data_test_y)

cl3_1=clf3.score(data_train_x,data_train_y)

cl3_2=clf3.score(data_test_x,data_test_y)

cl4_1=clf4.score(data_train_x,data_train_y)

cl4_2=clf4.score(data_test_x,data_test_y)

#使用predict()查看预测结果

clf1.predict(data_test_x)

print("分类准确性:",cl1_1)

print("测试集data_test_x的预测:",clf1.predict(data_test_x))

运行上面相应代码则得到如下结果

运行结果

2、从外部导入数据进行分类

#导入需要的包

import pandas as pd

import numpy as np

from sklearn import svm

from sklearn.model_selection import train_test_split

#从c盘桌面导入数据(根据自己数据所在位置决定)

df1=pd.read_excel('C:/Users/sun17/Desktop/data1.xlsx')

df2=np.array(df1)

#x标签为前3列;y标签为第4列。

data_x,data_y=df2[:,0:3],df2[:,4]

#将数据分成测试集和训练集

data_train_x,data_test_x=train_test_split(data_x,test_size=0.2,random_state=55)

data_train_y,data_test_y=train_test_split(data_y,test_size=0.2,random_state=55)

#拟合模型(不同类型的核函数)

clf1=svm.SVC(kernel='linear',decision_function_shape='ovr').fit(data_train_x,data_train_y)

clf2=svm.SVC(kernel='rbf',gamma=1).fit(data_train_x,data_train_y)

clf3=svm.SVC(kernel='poly').fit(data_train_x,data_train_y)

clf4=svm.SVC(kernel='sigmoid').fit(data_train_x,data_train_y)

#得训练集和测试集分类的准确性

cl1_1=clf1.score(data_train_x,data_train_y)

clf1.score(data_test_x,data_test_y)

clf2.score(data_train_x,data_train_y)

clf2.score(data_test_x,data_test_y)

clf3.score(data_train_x,data_train_y)

clf3.score(data_test_x,data_test_y)

clf4.score(data_train_x,data_train_y)

clf4.score(data_test_x,data_test_y)

#使用predict()查看预测结果

clf1.predict(data_test_x)

print("分类准确性:",cl1_1)

print("测试集data_test_x的预测:",clf1.predict(data_test_x))


初始表格

分类准确性: 0.9583333333333334

测试集data_test_x的预测: ['setosa' 'setosa' 'setosa' 'virginica' 'virginica' 'setosa' 'virginica'

'virginica' 'setosa' 'setosa' 'setosa' 'versicolor' 'virginica' 'setosa'

'virginica' 'virginica' 'versicolor' 'setosa' 'versicolor' 'virginica'

'versicolor' 'virginica' 'versicolor' 'virginica' 'versicolor'

'versicolor' 'virginica' 'versicolor' 'virginica' 'versicolor']

二、SVC相应参数的含义

python中SVC代码如下:

 sklearn.svm.SVC(*C=1.0kernel='rbf'degree=3gamma='scale'coef0=0.0shrinking=Trueprobability=Falsetol=0.001cache_size=200class_weight=Noneverbose=Falsemax_iter=- 1decision_function_shape='ovr'break_ties=Falserandom_state=None)

上述包里的部分相应参数的含义:

C:正则化参数。正则化的强度与c成反比,必须是严格正的。默认C的值为1。

kernel:核函数的选取。这个代码提供了'linear','poly','rbf','sigmoid'四种核函数。

degree:表示当核函数为'poly'时也即为多项式时,多项式的维数,默认为3。

gamma:'poly','rbf','sigmoid'三种核函数的系数。

当gamma='scale'(默认)时,使用1 / (n_features * X.var())作为gamma的值;当为' auto '时,使用1 / n_features。

coef0:核函数中的独立项。它只在“poly”和“sigmoid”中有意义

shrinking:是否使用收缩启发式。

probability:是否启用概率估计。这必须在调用fit之前启用,这会降低该方法的速度,因为它内部使用了5倍交叉验证,而且predict_proba可能与predict不一致。

tol:停止标准公差。

cache_size:指定内核缓存的大小(单位为MB)。

三、SVM的四种核函数及其对应系数介绍

1、linear:   (x,x^1)

2、polynomial:    (a(x, x^1)+c)^d    d\geq 1为多项式的次数,其 通过参数degree决定、a通过参数 gamma决定、c通过参数 coef0决定。

3、rbf:exp(-a||x-x^1||^2 )       a 通过参数 gamma决定

4、Sigmid:tanh(a(x, x^1)+c)      a 通过参数 gamma决定、c通过参数 coef0决定。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容