这部分只是对支持向量机sklearn库函数调用,参数解释,以及各个参数对测试结果的影响分析。个人认为入门机器学习实战的最快实例。
一.线性分类SVM
调用sklearn包中的LinearSVC
下面是调用的初始值:
def __init__(self, penalty='l2', loss='squared_hinge', dual=True, tol=1e-4,
C=1.0, multi_class='ovr', fit_intercept=True,
intercept_scaling=1, class_weight=None, verbose=0,
random_state=None, max_iter=1000)
其中参数如下:
C:一个浮点数,惩罚参数
Loss:字符串,表示损失函数,
‘hinge’:合页损失,标准SVM的损失函数;
‘squared_hinge’:合页损失的平方。
penalty:指定‘l1’或者'l2',惩罚项的范数,默认为‘l2’
dual: 布尔值,如果为true,则解决对偶问题;如果是false,则解决原始问题。当样本数大于特征数,倾向于false;
tol:指定终止迭代的阈值。
multi_class:指定多分类策略,
‘ovr’:采用one-vs-rest分类策略;默认
'crammer_singer':多类联合分类,很少用
fit_intercept:布尔值,如果为true,则计算截距,即决策函数中的常数项,否则,忽略截距。
class_weight:可以是一个字典,指定各个类的权重,若未提供,则认为类的权重为1;
其属性如下:
coef_:返回各个特征的权重。
intercept_:一个数组,决策函数的常数项
方法:
fit(x,y):训练模型
predict(x):用模型进行预测,返回预测值;
score(x,y):返回预测准确率
1.简单的线性可分支持向量机
from sklearn import svm, datasets,cross_validation
#加载鸢尾花数据集
def load_data_classfication():
iris=datasets.load_iris()
X_train=iris.data
y_train=iris.target
return cross_validation.train_test_split(X_train,y_train,test_size=0.25,random_state=0,stratify=