安装Anaconda和对应的包
1.打开命令行
输入conda create -n sklearn python=3.6
2.打开然后创建环境
安装numpy、pandas、sklearn
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
SVM
Svm(support Vector Mac)又称为支持向量机,是一种二分类的模型。支持向量机可以分为线性和非线性两大类。其主要思想是找到空间中的一个更够将所有数据样本划开的直线(平面或者超平面),并且使得数据集中所有数据到这个超平面的距离最短。
LinearSVC(Linear Support Vector Classification)线性支持向量机,核函数是 linear
相关参数说明:
C:目标函数的惩罚系数C,默认C = 1.0;
loss:指定损失函数. squared_hinge(默认), squared_hinge
penalty : 惩罚方式,str类型,l1, l2
dual :选择算法来解决对偶或原始优化问题。当nsamples>nfeatures时dual=false
tol :svm结束标准的精度, 默认是 1e - 3
multi_class:如果y输出类别包含多类,用来确定多类策略, ovr表示一对多“crammer_singer”优化所有类别的一个共同的目标 。如果选择“crammer_singer”,损失、惩罚和优化将会被被忽略。
max_iter : 要运行的最大迭代次数。int,默认1000
LinearSVC(C)方式实现分类
导入包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
数据获取
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的顺序放的
处理数据
X=X[:,:2]
#获取0 1类别的数据
Y1=Y[Y<2]
y1=len(Y1)
#获取0类别的数据
Y2=Y[Y<1]
y2=len(Y2)
X=X[:y1,:2]
未经标准化的原始数据点的绘制
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()
#标准化
standardScaler=StandardScaler()
standardScaler.fit(X)
#计算训练数据的均值和方差
X_standard=standardScaler.transform(X)
#用scaler中的均值和方差来转换X,使X标准化
svc=LinearSVC(C=1e9)
svc.fit(X_standard,Y1)
画出决策边界
相关函数的说明:
meshgrid() 返回了有两个向量定义的方形空间中