区别:
LinearSVC:
SVM线性分类器;用来实现线性的分类任务
"""鸢尾花数据集,执行一个分类问题"""
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC #线性SVM模型;
from sklearn.datasets import load_iris
iris_data=load_iris()
print(iris_data["data"])
print("============================")
X=iris_data["data"][:,(2,3)] #取长度和宽度;
# y=iris_data["target"]
# print(y)
y=(iris_data["target"] == 2).astype(np.float64)
#建立线性的模型:
svm_clf=Pipeline([
#标准化
("scaler",StandardScaler()),
#svc 线性:
("linear_svc",LinearSVC(C=1,loss="hinge"))] #C是软间隔参数;防止过拟合的现象;
)
svm_clf.fit(X,y)
res=svm_clf.predict([[6.3,1.2]])
print("res:",res)
SVC:
可以用来实现非线性的分类任务,支持核技巧;可以添加多项式特征;
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons,load_iris
X,y=make_moons(n_samples=100,noise=0.15) #取样本数
poly_svm_clf=Pipeline([
("scaler",StandardScaler()),
#添加核函数,多项式最高次为3
("svm_clf",SVC(kernel="poly",degree=3,coef0=1,C=5))
])
poly_svm_clf.fit(X,y)
LinearSVR:
SVM线性回归器;用来实现线性的分类任务;
from sklearn.svm import LinearSVR
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR,SVC #支持多项式特征;
from sklearn.datasets import make_moons
X,y=make_moons(n_samples=100,noise=0.15) #加入噪音;
svm_reg=LinearSVR(epsilon=1.5)
svm_reg.fit(X,y)
SVR:
可以用来实现非线性的回归任务,支持核技巧;可以添加多项式特征;
#使用SVR,支持核技巧:进行二分类问题
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVR,SVC #支持多项式特征;
from sklearn.datasets import make_moons
X,y=make_moons(n_samples=100,noise=0.15) #加入噪音;
#多项式特征是 kernel="poly" 核函数是将低维数据映射到高维数据; degree=2 C:软间隔系数;
svc_model=SVR(kernel="poly",degree=2,C=100,epsilon=0.1)
svc_model.fit(X,y)