- 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())