一、学习任务
安装python3.6/3.7、Anaconda 和 jupyter、spyder软件。创建一个名为 exam1的虚拟环境,在虚拟环境下安装 numpy、pandas、sklearn包。 按照课件上的代码例子,对鸢尾花Iris数据集进行SVM线性分类练习。
二、学习内容
1.鸢尾花数据集使用SVM线性分类
1.1.SVM介绍
Svm(support Vector Mac)又称为支持向量机,是一种二分类的模型。支持向量机可以分为线性和非线性两大类。其主要思想是找到空间中的一个更够将所有数据样本划开的直线(平面或者超平面),并且使得数据集中所有数据到这个超平面的距离最短。
1.2.LinearSVC(C)方式实现分类
1.2.1.#导入相应的包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
1.2.2.数据获取
#获取所需数据集
iris=datasets.load_iris()
#每行的数据,一共四列,每一列映射为feature_names中对应的值
X=iris.data
#每行数据对应的分类结果值(也就是每行数据的label值),取值为[0,1,2]
Y=iris.target
#通过Y=iris.target.size,可以得到一共150行数据,三个类别个50条数据,并且数据是按照0,1,2的顺序
1.2.3.数据处理
#只取y<2的类别,也就是0 1并且只取前两个特征
X=X[:,:2]
#获取0 1类别的数据
Y1=Y[Y<2]
y1=len(Y1)
#获取0类别的数据
Y2=Y[Y<1]
y2=len(Y2)
X=X[:y1,:2]
1.2.4.原始数据的绘制
#绘制出类别0和类别1
plt.scatter(X[0:y2,0],X[0:y2,1],color='red')
plt.scatter(X[y2+1:y1,0],X[y2+1:y1,1],color='blue')
plt.show()

1.2.5.归一化处理
#标准化
standardScaler=StandardScaler()
standardScaler.fit(X)
#计算训练数据的均值和方差
X_standard=standardScaler.transform(X)
#用scaler中的均值和方差来转换X,使X标准化
svc=LinearSVC(C=1e9)
svc.fit(X_standard,Y1)
1.2.6.画出决策边界
def plot_decision_boundary(model, axis):
x0, x1 = np

本文介绍如何使用支持向量机(SVM)对鸢尾花数据集进行线性分类,包括环境搭建、数据预处理、模型训练及决策边界的可视化。通过调整参数C观察分类效果的变化。
最低0.47元/天 解锁文章
1896

被折叠的 条评论
为什么被折叠?



