支持向量机分类器(Support Vector Classifier)是根据训练样本的分布,搜索所以可能的线性分类器中最佳的那个,
决定分类边界位置的样本并不是所有训练数据,是其中的两个类别空间的间隔最小的两个不同类别的数据点,即“支持向量”。
从而可以在海量甚至高维度的数据中,筛选对预测任务最为有效的少数训练样本。
(LogisticRegression模型在训练过程中考虑了所有训练样本对参数的影响)
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets,linear_model,cross_validation,svm
%matplotlib inline
iris=datasets.load_iris()
iris=datasets.load_iris()
X_train = iris.data #data 表示数据
y_train = iris.target
这里采用分层采样
stratify:array-like或者None,默认是None.如果不是None,将会利用数据的标签将数据分层划分
若为None时,划分出来的测试集或训练集中,其类标签的比例也是随机的
若不为None时,划分出来的测试集或训练集中,其标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集
X_train,X_test,y_train,y_test=cross_validation.train_test_split(X_train,y_train,test_size=0.25,random_state=0,stratify=y_train)
print(X_train[0:1])
print(y_train[0:1])
测试结果为:
[[ 5. 2. 3.5 1. ]] [1]
cls=svm.LinearSVC()
cls.fit(X_train,y_train)
print('各特征权重:%s,截距:%s'%(cls.coef_,cls.intercept_))
print("算法评分:%.2f" % cls.score(X_test,y_test))
运行结果:
各特征权重:[[ 0.20959286 0.39923917 -0.8173906 -0.44231852] [-0.1283436