分类
二分类:
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import mglearn.datasets
import matplotlib.pyplot as plt
#forge数据集是一个二维二分类数据集
X,y=mglearn.tools.make_handcrafted_dataset()
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2, random_state=33)
svm=SVC(kernel='rbf',C=10,gamma=0.1,probability=True).fit(X_train,y_train)
print(svm.predict(X_test))
#输出分类概率
print(svm.predict_proba(X_test))
print(svm.score(X_test,y_test))
[0 0 1 1 1 0]
[[0.91919503 0.08080497]
[0.94703815 0.05296185]
[0.04718756 0.95281244]
[0.08991918 0.91008082]
[0.18789225 0.81210775]
[0.83350967 0.16649033]]
0.6666666666666666
多分类:
用的是鸢尾花数据集,其实代码和分类差不多
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import mglearn.datasets
from sklearn.datasets import load_iris
lr=load_iris()
X_train,X_test,y_train,y_test=train_test_split(lr.data,lr.target,test_size=0.2, random_state=33)
svm=SVC(kernel='rbf',C=10,gamma=0.1,probability=True).fit(X_train,y_train)
print(svm.predict(X_test))
#输出分类概率
print(svm.predict_proba(X_test))
print(svm.score(X_test,y_test))
[1 1 0 1 2 2 0 0 2 2 2 0 2 1 2 1 1 0 1 2 0 0 2 0 2 1 1 1 2 2]
[[0.00854955 0.97805528 0.01339518]
[0.02046015 0.96924699 0.01029286]
[0.95821345 0.02958702 0.01219953]
[0.01262418 0.9436578 0.04371802]
[0.01150194 0.21819026 0.7703078 ]
[0.01106185 0.0025207 0.98641745]
[0.93603376 0.04933543 0.01463081]
[0.97333858 0.01668576 0.00997566]
[0.01176501 0.10464775 0.88358724]
[0.01189284 0.01007565 0.97803151]
[0.01141951 0.0055538 0.98302669]
[0.96745325 0.01936203 0.01318472]
[0.01085658 0.0074639 0.98167952]
[0.00991103 0.934642 0.05544697]
[0.01539224 0.07365073 0.91095703]
[0.01314571 0.9801558 0.00669849]
[0.01167736 0.56576966 0.42255298]
[0.97030247 0.01935948 0.01033805]
[0.01612402 0.9036916 0.08018438]
[0.01584532 0.03144821 0.95270647]
[0.96485254 0.02414839 0.01099907]
[0.95276015 0.03287629 0.01436357]
[0.00943625 0.00639159 0.98417216]
[0.96755483 0.02137253 0.01107264]
[0.00979122 0.52403131 0.46617748]
[0.01150947 0.57310996 0.41538057]
[0.01065238 0.95469906 0.03464856]
[0.01084855 0.98409152 0.00505992]
[0.0121375 0.12769585 0.86016666]
[0.01086478 0.25277848 0.73635675]]
0.9333333333333333
回归
回归的调参和分类是一样的。
# 导入库
import numpy as np # numpy库
from sklearn.linear_model import BayesianRidge, LinearRegression, ElasticNet # 批量导入要实现的回归算法
from sklearn.svm import SVR # SVM中的回归算法
from sklearn.ensemble.gradient_boosting import GradientBoostingRegressor # 集成算法
from sklearn.model_selection import cross_val_score # 交叉检验
from sklearn.metrics import explained_variance_score, mean_absolute_error, mean_squared_error, r2_score # 批量导入指标算法
import pandas as pd # 导入pandas
import matplotlib.pyplot as plt # 导入图形展示库
# 数据准备
raw_data = np.loadtxt('regression.txt') # 读取数据文件
X = raw_data[:, :-1] # 分割自变量
y = raw_data[:, -1] # 分割因变量
# 训练回归模型
n_folds = 6 # 设置交叉检验的次数
model_br = BayesianRidge() # 建立贝叶斯岭回归模型对象
model_lr = LinearRegression() # 建立普通线性回归模型对象
model_etc = ElasticNet() # 建立弹性网络回归模型对象
model_svr = SVR() # 建立支持向量机回归模型对象
model_gbr = GradientBoostingRegressor() # 建立梯度增强回归模型对象
model_names = ['BayesianRidge', 'LinearRegression', 'ElasticNet', 'SVR', '