python支持向量机回归_scikit-learn代码实现SVM分类与SVR回归以及调参

分类

二分类:

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', '

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
粒子群算法(PSO)和支持向量回归机(SVR)都是常见的机器学习算法,可以用Python实现。 粒子群算法是一种优化算法,通过模拟鸟群等自然现象来寻找问题的最优解。它的核心原理是粒子根据自身经验和邻居经验来更新自身的位置和速度,以迭代的方式搜索最优解。在Python中,我们可以使用numpy或者其他优化库来实现PSO算法。 支持向量回归机是一种基于支持向量机回归算法,它通过在特征空间中找到一个最优的超平面来进行回归预测。与普通的回归方法相比,SVR考虑到了数据的噪声和异常值,并使用支持向量机的核函数来对数据进行转换。在Python中,我们可以使用scikit-learn库来实现SVR算法。 以下是一个简单的Python代码示例,展示了如何使用numpy和scikit-learn实现PSO和SVR算法: ```python import numpy as np from sklearn.svm import SVR # 粒子群算法实现 def pso(): # 初始化粒子位置和速度 # 粒子的位置表示超参数,速度表示搜索方向和强度 # 粒子个体和全局最优位置需要根据问题来定义 # 粒子更新的逻辑也需要根据问题来定义 pass # 支持向量回归实现 def svr(X, y): # 初始化SVR模型 svr_model = SVR() # 训练SVR模型 svr_model.fit(X, y) # 使用SVR模型进行预测 y_pred = svr_model.predict(X) return y_pred # 测试数据 X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([1, 2, 3]) # 实现PSO算法 pso() # 实现SVR算法 y_pred = svr(X, y) print(y_pred) ``` 以上代码只是一个简单示例,实际的PSO和SVR算法需要根据具体问题进行适当的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值