sklearn.svm.SVC(
C=1.0,
kernel='rbf',
degree=3,
gamma='scale',
coef0=0.0,
shrinking=True,
probability=False,
tol=0.001,
cache_size=200,
class_weight=None,
verbose=False,
max_iter=-1,
decision_function_shape='ovr',
break_ties=False,
random_state=None)
C | L2正则化参数 |
kernel | {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} or callable 算法中使用的kernel |
degree | 如果kernel是poly的时候,多项式的级数 |
gamma | kernel是rbf、poly、sigmoid时的γ |
coef0 | kernel时poly和sigmoid时的r |
probability | 是否启用概率估计。 这必须在调用 fit 之前启用,这会减慢该方法,因为它在内部使用 5 折交叉验证,并且 predict_proba 可能与 predict 不一致。 |
decision_function_shape | {‘ovo’, ‘ovr’} 如果是多类分类的话,ovo是两两比较 one vs one;ovr是一个和其他的比较 one vs rest |
class_weight | 每个类设置不同的惩罚参数 |
import numpy as np
from sklearn.svm import SVC
X = np.array([[-3, -7], [-2, -10], [1, 1], [2, 5]])
y = np.array([1, 1, 2, 2])
#数据部分
clf=SVC(kernel='linear')
clf.fit(X, y)
#fit数据
clf.predict([[-0.8, -1]])
#array([2])
x=np.linspace(-3,2,50)
a,b=clf.coef_[0]
w=clf.intercept_
y=(-a*x-w)/b
import matplotlib.pyplot as plt
plt.scatter(X[:,0],X[:,1],c=Y)
plt.plot(x,y)
classes_ | 类的label |
class_weight | 各个类的penalty C的数值 |
coef_ | 如果kernel是“linear',返回w |
fit_status_ | 是否正确fit,0正确1不正确 |
intercept_ | 截距 |
n_features_in_ | 输入的feature 维度 |
support_ | 输入X中,是支持向量的那些向量的坐标 |
support_vectors_ | 支持向量 |
n_support_ | 每个类中支持向量的个数 |
fit(X,Y) | |
get_params | |
predict(X) | |
score(X,Y) | 给定数据集和label的平均准确度 |
decision_function(X) | X中的样本在不同分类器上的评估结果 X的四个样本在分类器上得到的结果,前两个小于等于-1,所以分到一类;后两个大于等于1,所以分到另一类 |
大体上和SVC类似,这里多了一个参数来控制支持向量的数量
除了第一个nu和SVC一样
nu | 支持向量比例的下限 |
kernel | {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} or callable 算法中使用的kernel |
degree | 如果kernel是poly的时候,多项式的级数 |
gamma | kernel是rbf、poly、sigmoid时的γ |
coef0 | kernel时poly和sigmoid时的r |
probability | 是否启用概率估计。 这必须在调用 fit 之前启用,这会减慢该方法,因为它在内部使用 5 折交叉验证,并且 predict_proba 可能与 predict 不一致。 |
decision_function_shape | {‘ovo’, ‘ovr’} 如果是多类分类的话,ovo是两两比较 one vs one;ovr是一个和其他的比较 one vs rest |
class_weight | 每个类设置不同的惩罚参数 |
import numpy as np
from sklearn.svm import NuSVC
X = np.array([[-3, -7], [-2, -10], [1, 1], [2, 5]])
y = np.array([1, 1, 2, 2])
#数据部分
clf=NuSVC(kernel='linear')
clf.fit(X, y)
#fit数据
print(clf.predict([[-0.8, -1]]))
#array([2])
x=np.linspace(-3,2,50)
a,b=clf.coef_[0]
w=clf.intercept_
y=(-a*x-w)/b
import matplotlib.pyplot as plt
plt.scatter(X[:,0],X[:,1],c=Y)
plt.plot(x,y)
和SVC一样
classes_ | 类的label |
class_weight | 各个类的penalty C的数值 |
coef_ | 如果kernel是“linear',返回w |
fit_status_ | 是否正确fit,0正确1不正确 |
intercept_ | 截距 |
n_features_in_ | 输入的feature 维度 |
support_ | 输入X中,是支持向量的那些向量的坐标 |
support_vectors_ | 支持向量 |
n_support_ | 每个类中支持向量的个数 |
和SVC一样
fit(X,Y) | |
get_params | |
predict(X) | |
score(X,Y) | 给定数据集和label的平均准确度 |
decision_function(X) | X中的样本在不同分类器上的评估结果 X的四个样本在分类器上得到的结果,前两个小于等于-1,所以分到一类;后两个大于等于1,所以分到另一类 |
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = SVC(decision_function_shape='ovo')
clf.fit(X, Y)
clf.decision_function([[1]]).shape
# (1, 6)
#[1]在六个分类器上的结果,两两比较,一共6=4*(4-1)/2
clf = SVC(decision_function_shape='ovr')
clf.fit(X, Y)
clf.decision_function([[1]]).shape
# (1, 4)
# #[1]在四个分类器上的结果,每个类和其他
如果各个类数量不均,那该如何是好呢
kernel | {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} or callable 算法中使用的kernel |
degree | 如果kernel是poly的时候,多项式的级数 |
gamma | kernel是rbf、poly、sigmoid时的γ |
coef0 | kernel时poly和sigmoid时的r |
probability | 是否启用概率估计。 这必须在调用 fit 之前启用,这会减慢该方法,因为它在内部使用 5 折交叉验证,并且 predict_proba 可能与 predict 不一致。 |
decision_function_shape | {‘ovo’, ‘ovr’} 如果是多类分类的话,ovo是两两比较 one vs one;ovr是一个和其他的比较 one vs rest |
class_weight | 每个类设置不同的惩罚参数 |
from sklearn.svm import SVR
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
import numpy as np
n_samples, n_features = 10, 5
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
regr = make_pipeline(StandardScaler(), SVR(C=1.0, epsilon=0.2))
regr.fit(X, y)
和SVC一样
classes_ | 类的label |
class_weight | 各个类的penalty C的数值 |
coef_ | 如果kernel是“linear',返回w |
fit_status_ | 是否正确fit,0正确1不正确 |
intercept_ | 截距 |
n_features_in_ | 输入的feature 维度 |
support_ | 输入X中,是支持向量的那些向量的坐标 |
support_vectors_ | 支持向量 |
n_support_ | 每个类中支持向量的个数 |
和SVC一样
fit(X,Y) | |
get_params | |
predict(X) | |
score(X,Y) | 给定数据集和label的平均准确度 |
decision_function(X) | X中的样本在不同分类器上的评估结果 X的四个样本在分类器上得到的结果,前两个小于等于-1,所以分到一类;后两个大于等于1,所以分到另一类 |
linear | |
polynomial | |
rrbf | |
sigmoid |
import numpy as np
from sklearn import svm
def my_kernel(X, Y):
return np.dot(X, Y.T)
clf = svm.SVC(kernel=my_kernel)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
clf = make_pipeline(StandardScaler(), SVC())