大家好,我是菜鸟君。之前提到了怎么用R语言构建支持向量机模型,想复习的小伙伴可以点链接:
今天话不多说,直接上Python建模干货!
第一步,首先是要加载需要用到的Python库。
from sklearn import svmfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import confusion_matrixfrom sklearn.metrics import accuracy_score
第二步,加载数据集,今天用到的是Python自带的iris数据集。
iris = load_iris()n_samples, n_features = iris.data.shapeprint((n_samples, n_features))

150代表的是整个数据有150行,4代表有4列。需要注意的是,我们加载的数据集iris其实是个字典形式,不是单纯的numpy.array,也不是数据框。
包含自变量的数据是iris.data,因为其中不包含标签,所以只有4列。标签去哪了呢?
iris.target

原来标签在这里叫做iris.target。打印出来发现,这个数据集的标签包含3类,适合来做分类模型构建。
第三步,划分训练集、测试集。
train_data,test_data =train_test_split(iris.data, random_state=1, train_size=0.7,test_size=0.3)train_label,test_label =train_test_split(iris.target, random_state=1, train_size=0.7,test_size=0.3)
需要注意的是,random_state是设置随机种子,这样以后结果还能复现。如果不设置的话,每次划分数据的结果不同。
第四步,SVM模型构建。这里用到的kernel是‘rbf’,如果结果不满意,还可以选择其他方法。
classifier=svm.SVC(C=2,kernel='rbf',gamma=10,decision_function_shape='ovr')classifier.fit(train_data,train_label.ravel())

第五步,模型预测。
运用classifier.predict来输出预测标签。
pre_train=classifier.predict(train_data) #训练集的预测标签pre_test=classifier.predict(test_data) #测试集的预测标签print("train:", accuracy_score(train_label,pre_train) )print("test:", accuracy_score(test_label,pre_test) )

训练集准确率达到了100%,在测试集上也达到了93%的准确率,说明这个模型效果不错。如果还想细看到底测试集上是哪些类别被预测错了,可以列个混淆矩阵。
cm=confusion_matrix(test_label,pre_test)cm

这说明第一、二个类别其实互相没被错判,但前两个类别都有1个被预测为第三个类别。
Python的代码很好理解,大家可以有空上手练一下,测试不同参数在同一个数据集上带来的效果。还有啥想看的,可以后台留言,我们下期再约,嗷!
B站视频教程:谁说菜鸟不会数据分析
别忘了点“在看”哦


