在Python中实现SVM分类

输入数据集,分析数据维度,可以看到共有0,1,2,3四个类别。

import pandas as pddf=pd.DataFrame({‘math’:[98,78,54,89,24,60,98,44,96,90],‘english’:[92,56,90,57,46,75,76,87,91,88],‘chinese’:[95,69,91,52,60,80,78,81,96,82],‘rank’:[0,3,2,3,1,1,2,2,0,0]})
在这里插入图片描述

导入svm工具包。没有安装sklearn的要先安装svm。

from sklearn import svm
在这里插入图片描述
数据准备。本例中数据都是数值型变量,且没有空值,直接取X,y变量。

X=df.ix[:,[‘math’,‘english’,‘chinese’]]

y=df[‘rank’]
在这里插入图片描述
建立模型,并进行训练。

clf = svm.SVC()

clf.fit(X, y)
在这里插入图片描述
模型预测。有一组新的数据,根据模型预测它的分类,结果为rank=2。

new=[[60,51,98]]

clf.predict(new)
在这里插入图片描述
绘制预测效果图。

y_pred=clf.predict(X)

import matplotlib.pyplot as plt

plt.figure()

plt.scatter(range(len(y)),y, color=‘darkorange’, label=‘real rank’)

plt.plot(y_pred, color=‘navy’, label=‘svm predicted’)

plt.legend()

plt.show()
在这里插入图片描述
也可以预测数据属于每个类别的概率值。

重新建立模型。

clf = svm.SVC(probability=True)

clf.fit(X,y)

clf.predict_proba(X)
在这里插入图片描述

发布了494 篇原创文章 · 获赞 103 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43838785/article/details/103654634