支持向量回归机(SVR)代码
SVR的代码(python)
项目中一个早期版本的代码,PCA-SVR,参数寻优采用传统的GridsearchCV。
from sklearn.decomposition import PCA
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from numpy import *
import numpy as np
import matplotlib.pyplot as plt
import xlrd
from svmutil import *
import pandas as pd'''前言'''
# pca - svr
# CG测试'''预设参数'''
fname = "all01.xlsx" # 训练数据文件读取 26hao
random_1 = 34 # 样本集选取随机种子
random_2 = 4 # 训练集选取随机种子
newpca = 6 # 降维
yuzhi = 50 # 异常点阈值
rate_1 = 0.8 # 样本集验证集
rate_2 = 0.8 # 训练集测试集
bestc = 384 # c
bestg = 9 # gamma'''数据读取'''
# xlrd生成对excel表进行操作的对象
...# 输入输出分割
data_x = data[:, 1:11]
data_y = data[:, 0:1]'''PCA'''
pca = PCA(n_components=newpca) # 加载PCA算法,设置降维后主成分数目为
data_x = pca.fit_transform(data_x) # 对样本进行降维
print(pca.components_) # 输出主成分,即行数为降维后的维数,列数为原始特征向量转换为新特征的系数
print(pca.explained_variance_ratio_) # 新特征 每维所能解释的方差大小在全方差中所占比例'''数据划分'''
# 样本数据分割
train_data_x, predict_data_x, train_data_y, predict_data_y = train_test_split(data_x, data_y, test_size=rate_1,random_state=random_1)# 训练数据分割
train_x, test_x, train_y, test_y = train_test_split(train_data_x, train_data_y, test_size=rate_2, random_state=random_2)
predict_x = predict_data_x
predict_y = predict_data_y# reshape y
test_y = np.reshape(test_y, -1)
train_y = np.reshape(train_y, -1)
predict_y = np.reshape(predict_y, (-1, 1))# StandardScaler x
ss_X = StandardScaler()
ss_X.fit(train_data_x) # 20%
train_x = ss_X.transform(train_x)
test_x = ss_X.transform(test_x)
predict_x = ss_X.transform(predict_x)'''参数优化与SVR'''
# 网格搜索交叉验证(GridSearchCV):以穷举的方式遍历所有可能的参数组合
# 测试用
# param_grid = {'gamma': [bestg], 'C': [bestc]}
# rbf_svr_cg = GridSearchCV(SVR(kernel='rbf'), param_grid, cv=5)
# rbf_svr_cg.fit(train_x,train_y)
# bestc = rbf_svr_cg.best_params_.get('C')
# bestg = rbf_svr_cg.best_params_.get('gamma')# 最优参数
print(bestc, bestg)
param_grid = {'gamma': [bestg], 'C': [bestc]}
rbf_svr = SVR(kernel='rbf',param_grid) # 需要修改# 训练
rbf_svr.fit(train_x, train_y)# 预测
test_y_predict = rbf_svr.predict(test_x)
test_y_predict = np.reshape(test_y_predict, (-1, 1))
predict_y_predict = rbf_svr.predict(predict_x)
predict_y_predict = np.reshape(predict_y_predict, (-1, 1))'''去异常点'''
print('样本集:', len(train_data_y))
print('验证集:', len(predict_data_y))
size = len(test_y_predict)
count = 0
for i in range(size):if abs(test_y_predict[size - i - 1] - test_y[size - i - 1]) > yuzhi:test_y_predict = np.delete(test_y_predict, size - i - 1)test_y = np.delete(test_y, size - i - 1)count = count + 1
print('测试集异常点', count)
size = len(predict_y_predict)
count = 0
for i in range(size):if abs(predict_y_predict[size - i - 1] - predict_y[size - i - 1]) > yuzhi:predict_y_predict = np.delete(predict_y_predict, size - i - 1)predict_y = np.delete(predict_y, size - i - 1)count = count + 1
print('验证集异常点', count)'''评估'''
# # 使用r2__score模块,并输出评估结果,拟合程度,R2决定系数,衡量模型预测能力好坏(真实与预测的相关程度百分比)
# print('The value of R-squared of kernal=rbf is',r2_score(test_y,test_y_predict))
# # 使用mean_squared_error模块,输出评估结果,均方误差
# print('The mean squared error of kernal=rbf is',mean_squared_error(test_y,test_y_predict))
# # 使用mean_absolute_error模块,输出评估结果,平均绝对误差
# print('The mean absolute error of kernal=rbf is',mean_absolute_error(test_y,test_y_predict))# 使用r2__score模块,并输出评估结果,拟合程度,R2决定系数,衡量模型预测能力好坏(真实与预测的相关程度百分比)
print('The value of R-squared of kernal=rbf is', r2_score(predict_y, predict_y_predict))
# 使用mean_squared_error模块,输出评估结果,均方误差
print('The mean squared error of kernal=rbf is', mean_squared_error(predict_y, predict_y_predict))
# 使用mean_absolute_error模块,输出评估结果,平均绝对误差
print('The mean absolute error of kernal=rbf is', mean_absolute_error(predict_y, predict_y_predict))
# r
X1 = pd.Series(np.reshape(predict_y,-1))
Y1 = pd.Series(np.reshape(predict_y_predict,-1))
print('The r is', X1.corr(Y1, method="pearson"))
print('The r is', sqrt(r2_score(predict_y, predict_y_predict)))'''作图'''
# PRN
print('PRN:', fname)# PCA
print()# 残差
diff_predict = predict_y_predict - predict_y
plt.plot(diff_predict, color='black', label='error')
plt.xlabel("no.")
plt.ylabel("error(m)")
plt.title('xxx')
plt.grid()
plt.legend()
plt.show()# 真实/模型_1
plt.plot(predict_y, color='g', label='dtu15mss')
plt.plot(predict_y_predict, color='b', label='pre')
plt.xlabel("xxx")
plt.ylabel("error(m)")
plt.title('xxx')
plt.grid()
plt.legend()
plt.show()# 真实/模型_2
fig = plt.figure(3)
ax1 = fig.add_subplot(2, 1, 1)
ax1.plot(predict_y, color='g', label='dtu15mss')
ax2 = fig.add_subplot(2, 1, 2)
ax2.plot(predict_y_predict, color='b', label='pre')
plt.show()# 真实/模型_3
p_x = [x for x in range(int(min(predict_y)) - 5, int(max(predict_y)) + 5)]
p_y = p_x
plt.plot(p_x, p_y, color='black', label='1')
plt.scatter(predict_y_predict, predict_y, s=10, color='b', marker='x',label='0') # https://www.cnblogs.com/shanlizi/p/6850318.html
plt.xlabel('PRE')
plt.ylabel('DTU')
plt.show()
支持向量回归机(SVR)代码相关推荐
- Python实现遗传算法(GA)+支持向量回归机(SVR)
本实验使用环境为Anaconda3 Jupyter,调用Sklearn包,请提前准备好. 1.引入一些常见包 主要包含pandas.numpy.绘图包.SVR.标准化.验证函数等包. from skl ...
- 采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测(附完整代码)
大家好,我是带我去滑雪,每天教你一个小技巧! 本文分别采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测.随机将数据分为训练集和测试集,比例为8:2,数据和代码均在文末. 1. ...
- 机器学习之支持向量回归(SVR)预测房价—基于python
大家好,我是带我去滑雪! 本期使用爬取到的有关房价数据集data.csv,使用支持向量回归(SVR)方法预测房价.该数据集中"y1"为响应变量,为房屋总价,而x1-x9为特征变量, ...
- 基于支持向量回归(SVR)和PROSAIL模拟光谱数据的叶面积指数反演
前言 本博客利用PROSAIL模型模拟出MODIS的光谱数据和LAI,然后采用支持向量回归(SVR)方法建立NDVI与LAI 的回归模型,用于LAI的反演.训练和测试数据的拟合效果还是比较好的,这表明 ...
- 支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP
RDKit一个用于化学信息学的python库.使用支持向量回归(SVR)来预测logP. 分子的输入结构特征是摩根指纹,输出是logP. 代码示例: #导入依赖库 import numpy as np ...
- 支持向量机(SVM)、支持向量回归(SVR)
论文完成也有一段时间了,用到了支持向量机(Support Vector Machine或SVM)方面的知识,感觉泛化能力比较好,一开始的时候,用了一些神经网络的模型,泛化能力都不是很满意,立即转到支持 ...
- 机器学习(19)之支持向量回归机
微信公众号 关键字全网搜索最新排名 [机器学习算法]:排名第一 [机器学习]:排名第二 [Python]:排名第三 [算法]:排名第四 前言 机器学习(15)之支持向量机原理(一)线性支持向量机 机器 ...
- svr公式推导_支持向量回归(SVR)的详细介绍以及推导算法
1 SVR背景 2 SVR原理 3 SVR数学模型 SVR的背景 SVR做为SVM的分支从而被提出,一张图介绍SVR与SVM的关系 这里两虚线之间的几何间隔r=d ∣ ∣ W ∣ ∣ \frac{d} ...
- 支持向量回归模型SVR
1. SVM回归模型的损失函数度量 回顾下我们前面SVM分类模型中,我们的目标函数是让12||w||2212||w||22最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,即yi(w∙ϕ( ...
- 基于DDTBOX,使用线性支持向量回归(SVR)从ERP数据中解码连续变量
导读 事件相关电位(ERP)数据的多变量分类分析是预测认知变量的强大工具.然而,分类通常仅限于分类变量,并未充分利用连续数据,如反应时间.反应力或主观评分.另一种方法是支持向量回归(SVR),它使用单 ...
最新文章
- 登录界面的滑动_【提醒】电子税务局登录方式有变化! 8月31日关闭“原方式登录”...
- 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
- 「Python-Bug」pip is configured with locations that require TLS/SSL
- 计算机组成原理个人笔记(二)
- 不可描述⁄( ⁄•⁄ω⁄•⁄ )⁄!亚马逊用机器学习找有声书中情色片段
- 镁光固态硬盘用什么软件测试寿命,最简单的方法:如何查看SSD可以使用多长时间?固态硬盘寿命测试方法[详细]...
- 《客户端性能测试基本流程》
- 2017年江苏高考数学14题
- 浅谈车载控制器产线EOL实现方式
- (三)洞悉linux下的Netfilteramp;iptables:内核中的rule,match和target
- UI设计师必备素材|功能性UI线性图标
- 启发式路径搜索算法介绍
- history对象back()、forward()、go()方法
- 成都大数据语言培训:如何提高数据分析能力
- c#怎么在github上快速找到相关的开源项目
- 2019郑大计算机考研分,2019年郑大分数线未出?郑州大学近三年考研分数线汇总...
- 应用在PDA触摸屏中的触摸芯片
- 找一个有钱的男朋友是什么体验?
- 再谈用Excel计算年龄
- 下载资料,站点汇总,别只知道去百度文库,既能找到好文档,还能获取收益
热门文章
- 键盘按键响应时间越快越好吗_按键响应、按键无冲、按键调速到底是怎么一回事?...
- miniprograme-wsx
- JS中定义对象和集合
- 【嵌入式模块】直流电机驱动L298N,TB6612详解
- python和R的区别
- C#制作单机版桌面软件(带数据库)
- intel服务器最新主板芯片组,Intel主流服务器主板驱动更新:新增支持Patsburg芯片组...
- Python3之标准库
- python 查看文件夹大小
- thinkphp5.0.20 数据库迁移/填充