SVM(Support Vector Machine)支持向量机
1、SVM线性分类器
sklearn. svm. LinearsvC(penalty=12, loss=squared_hinge, dual=True, tol=0 0001, 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:字符串。表示损失函数。可以为如下。
O" hinge':此时为合页损失函数(它是标准SVM的损失函数);
O' squared_hinge':合页损失函数的平方。
口 penalty:字符串。指定"11或者"l2',罚项的范数。默认为'12'(它是标准SVC采用的)
口dual:布尔值。如果为True,则解决对偶问题;如果是Fase,则解决原始问题。当 n_samples> n features时,倾向于采用 False
口tol:浮点数,指定终止迭代的阈值。
multi class:字符串,指定多类分类问题的策略。
O'ovr':采用one-vs-rest分类策略;
O' crammer-singer':多类联合分类,很少用。因为它的计算量大,而且精度不会更佳,此时忽略loss, penalty,dua参数。
口 fit_intercept:布尔值。如果为True,则计算截距,即决策函数中的常数项;否则忽
口 intercept_scaling:浮点值。如果提供了,则实例X变成向量[X, intercept_scaling]。此时相当于添加了一个人工特征,该特征对所有实例都是常数值。
○此时截距变成: intercept_scaling*人工特征的权重u;
O此时人工特征也参与了罚项的计算。
口 class_weight:可以是个字典,或者字符串" balanced'。指定各个类的权重,若未提供,则认为类的权重为1。
○如果是字典,则指定每个类标签的权重;
○如果是 balanced',则每个类的权重是它出现频率的倒数。
口 verbose:一个整数,表示是否开启 verbose输出。
口 random state:一个整数或者一个 Randomstate实例,或者None
○如果为整数,则它指定随机数生成器的种子。
O如果为 RandomState实例,则指定随机数生成器。
O如果为None,则使用默认的随机数生成器。
口max_iter:一个整数,指定最大的迭代次数。
其属性如下:
口 coef_: 一个数组,它给出了各个特征的权重
口 intercept:一个数组,它给出了截距,即决策函数中的常数项。
其方法如下。
口fit(X,y):训练模型。
口 predict(X):用模型进行预测,返回预测值。
口 score(X,y[, sample_weight]):返回在(X,y)上预测的准确率( accuracy)。
2、SVM非线性分类
sklearn svm SvC(C=1.0, kernel='rbf', degree=3, gamma=auto, coef0=0. 0, shrinking=True,
probability=False, tol=0. 001, cache_size=200, class_weight=None, verbose=False,
max_iter=-1, decision_function_ shape=None, random_state=None)
参数如下。
口C:一个浮点数,罚项系数。
口 kernel:一个字符串,指定核函数。
O" linear':线性核K(元,动)=元·z。
O'poly':多项式核K(x,动)=(y(x·z+1)+r),其中p由 degree参数决定,γ由
gamma参数决定,r由coe0参数决定。
O'bf"(默认值):高斯核函数K(x,z)=exp(-|一z2),其中γ由gama参数决
O' sigmoid':K(x,动=tanh((·z)+r)。其中y由gama参数决定,r由coef0参数指
O' precomputed':表示提供了 kernel matrⅸx,或者提供一个可调用对象,该对象用于
计算 kernel matrix
u degree:一个整数。指定当核函数是多项式核函数时,多项式的系数。对于其他核函
数,该参数无效。
口gama:一个浮点数。当核函数是'rbf','poly',' sigmoid"时,核函数的系数。如果
为'auto',则表示系数为1/ n features
口coef8:浮点数,用于指定核函数中的自由项。只有当核函数是'poy和' sigmoid时有
效
O probability:布尔值。如果为True,则会进行概率估计。它必须在训练之前设置好,且
概率估计会拖慢训练速度
口 shrinking:布尔值。如果为True,则使用启发式收缩( shrinking heuristic)。
口tol:浮点数,指定终止迭代的阈值。
口 cache_size:浮点值,指定了 kernel cache的大小,单位为MB
口 class_ weight:可以是个字典,或者字符串" balanced'。指定各个类的权重,若未提供
则认为类的权重为1。
O如果是字典,则指定每个类标签的权重;
O如果是' balanced',则每个类的权重是它出现频数的倒数。
口 verbose:一个整数,表示是否开启 verbose输出。
口 max iter:一个整数,指定最大迭代次数。
口 decision_ function shape:为字符串或者Mone,指定决策函数的形状。
O'owr':则使用one-vs-est准则,那么决策函数形状是( n_ samples, n classes)。
○None:默认值。采用该值时,目前会使用'ovo',但是在 scikit vi.18之后切换成'owr'。
口 random state:一个整数,或者一个 RandomState实例,或者None。
○如果为整数,则它指定随机数生成器的种子。
○如果为 RandomState实例,则指定随机数生成器
○如果为None,则使用默认的随机数生成器。
属性如下。
口 support:一个数组,形状为[nSⅥ],支持向量的下标
口 support_vectors:一个数组,形状为[nSv, n features],支持向量。
口 n_support-:一个数组like,形状为[ n class].每一个分类的支持向量的个数。
口 dual coef_:一个数组,形状为[ n class-1,nsⅥ。对偶问题中,在分类决策函数中每
个支持向量的系数。
口coef_:一个数组,形状为[ n class-1,n_ features]。原始问题中,每个特征的系数。只
有在 linear kernel中有效。
口 intercept:一个数组,形状为 n class*( n class-1)/2],决策函数中的常数项。
方法如下
口fit(X,y, sample_weight]):训练模型。
口 predict(x):用模型进行预测,返回预测值。
口 score(X,yt, sample_weight]):返回在(X,y)上预测的准确率( accuracy)。
口 predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的
对数值。
口 predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值
3、SVR线性回归
class sklearn svm Linear SVR(epsilon=0.0, tol=0 0001, C=1.0, loss='epsilon_insensitive,
fit_intercept=True, intercept_scaling=1. 0, dual=True, verbose=0, random_state=None,
max_iter=1000)
参数如下。
口C:一个浮点数,罚项系数。
口1oss:字符串,表示损失函数。可以为
O' epsilon_insensitive':此时损失函数为L。(标准的SVR)
O' squared_epsilon_insensitive':此时损失函数为L2。
口 epsilon:浮点数,用于1ose中的e参数。
口duaL:布尔值。如果为True,则解决对偶问题;如果是 False,则解决原始问题。当 n_samples
> n features时,倾向于采用 False
口tol:浮点数,指定终止迭代的阈值。
口 fit_ intercept:布尔值。如果为True,则计算截距,即决策函数中的常数项;否则忽
略截距。
口 intercept_scaling:浮点值。如果提供了,则实例X变成向量[X, intercept_scaling]。此
时相当于添加了一个人工特征,该特征对所有实例都是常数值。
O此时截距变成: intercept_scaling*人工特征的权重us
○此时人工特征也参与了罚项的计算。
口 verbose:一个整数,表示是否开启 verbose输出。
口 random state:一个整数,或者一个 RandomState实例,或者None。
O如果为整数,则它指定随机数生成器的种子
O如果为 RandomState实例,则指定随机数生成器
O如果为None,则使用默认的随机数生成器。
口max_iter:一个整数,指定最大迭代次数。
属性如
口coef:一个数组,它给出了各个特征的权重;
口 intercept:一个数组,它给出了截距,即决策函数中的常数项。
方法如下。
口fit(X,y):训练模型。
口 predict(X):用模型进行预测,返回预测值。
口 score(X,yt, sample. weight]):返回预测性能得分。
4、SVR非线性回归
class sklearn sVm SVR(kernel=rbf, degree=3, gamma=auto, coef000, tol=0. 001, C=1.0,
epsilon=0.1, shrinking=True, cache_ size=200, verbose=False, max_ iter=-1)
参数如下。
口C:一个浮点数,罚项系数。
口 epsilon:一个浮点数,即e参数。
口 kernel:一个字符串,指定核函数。
O" linear':线性核K(元,z)=x·z。
O'poly':多项式核K(元,动)=(y(文·z+1)+r),其中p由 degree参数决定,y由
gamma参数决定,r由coef参数决定。
O'rht'(默认值):高斯核函数K(元动)=exp(-y1x-zl|2),其中y由gamn参数决
定
O' sigmoid':K(元,z)=tanh(y(x·z)+r),其中y由gama参数决定,r由coef8参数指
O' precomputed':表示提供了 kernel matrix,
O或者提供一个可调用对象,该对象用于计算 kernel matrix。
口 degree:一个整数,指定当核函数是多项式核函数时,多项式的系数。对于其他核函
数,该参数无效。
口gama:一个浮点数,当核函数是'rbf'、'poly'、' sigmoid时,核函数的系数。如果
为'auto',则表示系数为1/ n features
口coef0:浮点数,用于指定核函数中的自由项。只有当核函数是'poly'和' sigmoid'时有
效
口shrinking:布尔值。如果为True,则使用启发式( shrinking heuristic)
口tol:浮点数,指定终止迭代的阈值。
口 cache size:浮点值,指定了 kernel cache的大小,单位为MBa
o verbose:一个整数,表示是否开启 verbose输出。
口 max iter:一个整数,指定最大迭代次数。
属性如下。
口 support-:一个数组,形状为[nsv],支持向量的下标。
口 support_vectors:一个数组,形状为[nsw, n features],支持向量。
口 n_support:一个数组like,形状为[ n class每一个分类的支持向量的个数。
口 dual coef:一个数组,形状为 n class-1,nsⅥ],给出了决策函数中每个支持向量的
系数。
口coef:一个数组,形状为ncas-1, n features]。原始问题中每个特征的系数,只有
在 linear kernel中有效。
口 intercept:决策函数中的常数项
方法如下。
口fit(X,y):训练模型。
口 predict(x):用模型进行预测,返回预测值
口 score(X,yt, sample_weight]):返回预测性能得分。
摘自:python大战机器学习