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)代码相关推荐

  1. Python实现遗传算法(GA)+支持向量回归机(SVR)

    本实验使用环境为Anaconda3 Jupyter,调用Sklearn包,请提前准备好. 1.引入一些常见包 主要包含pandas.numpy.绘图包.SVR.标准化.验证函数等包. from skl ...

  2. 采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测(附完整代码)

    大家好,我是带我去滑雪,每天教你一个小技巧! 本文分别采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测.随机将数据分为训练集和测试集,比例为8:2,数据和代码均在文末. 1. ...

  3. 机器学习之支持向量回归(SVR)预测房价—基于python

    大家好,我是带我去滑雪! 本期使用爬取到的有关房价数据集data.csv,使用支持向量回归(SVR)方法预测房价.该数据集中"y1"为响应变量,为房屋总价,而x1-x9为特征变量, ...

  4. 基于支持向量回归(SVR)和PROSAIL模拟光谱数据的叶面积指数反演

    前言 本博客利用PROSAIL模型模拟出MODIS的光谱数据和LAI,然后采用支持向量回归(SVR)方法建立NDVI与LAI 的回归模型,用于LAI的反演.训练和测试数据的拟合效果还是比较好的,这表明 ...

  5. 支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

    RDKit一个用于化学信息学的python库.使用支持向量回归(SVR)来预测logP. 分子的输入结构特征是摩根指纹,输出是logP. 代码示例: #导入依赖库 import numpy as np ...

  6. 支持向量机(SVM)、支持向量回归(SVR)

    论文完成也有一段时间了,用到了支持向量机(Support Vector Machine或SVM)方面的知识,感觉泛化能力比较好,一开始的时候,用了一些神经网络的模型,泛化能力都不是很满意,立即转到支持 ...

  7. 机器学习(19)之支持向量回归机

    微信公众号 关键字全网搜索最新排名 [机器学习算法]:排名第一 [机器学习]:排名第二 [Python]:排名第三 [算法]:排名第四 前言 机器学习(15)之支持向量机原理(一)线性支持向量机 机器 ...

  8. svr公式推导_支持向量回归(SVR)的详细介绍以及推导算法

    1 SVR背景 2 SVR原理 3 SVR数学模型 SVR的背景 SVR做为SVM的分支从而被提出,一张图介绍SVR与SVM的关系 这里两虚线之间的几何间隔r=d ∣ ∣ W ∣ ∣ \frac{d} ...

  9. 支持向量回归模型SVR

    1. SVM回归模型的损失函数度量 回顾下我们前面SVM分类模型中,我们的目标函数是让12||w||2212||w||22最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,即yi(w∙ϕ( ...

  10. 基于DDTBOX,使用线性支持向量回归(SVR)从ERP数据中解码连续变量

    导读 事件相关电位(ERP)数据的多变量分类分析是预测认知变量的强大工具.然而,分类通常仅限于分类变量,并未充分利用连续数据,如反应时间.反应力或主观评分.另一种方法是支持向量回归(SVR),它使用单 ...

最新文章

  1. 登录界面的滑动_【提醒】电子税务局登录方式有变化! 8月31日关闭“原方式登录”...
  2. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
  3. 「Python-Bug」pip is configured with locations that require TLS/SSL
  4. 计算机组成原理个人笔记(二)
  5. 不可描述⁄( ⁄•⁄ω⁄•⁄ )⁄!亚马逊用机器学习找有声书中情色片段
  6. 镁光固态硬盘用什么软件测试寿命,最简单的方法:如何查看SSD可以使用多长时间?固态硬盘寿命测试方法[详细]...
  7. 《客户端性能测试基本流程》
  8. 2017年江苏高考数学14题
  9. 浅谈车载控制器产线EOL实现方式
  10. (三)洞悉linux下的Netfilteramp;iptables:内核中的rule,match和target
  11. UI设计师必备素材|功能性UI线性图标
  12. 启发式路径搜索算法介绍
  13. history对象back()、forward()、go()方法
  14. 成都大数据语言培训:如何提高数据分析能力
  15. c#怎么在github上快速找到相关的开源项目
  16. 2019郑大计算机考研分,2019年郑大分数线未出?郑州大学近三年考研分数线汇总...
  17. 应用在PDA触摸屏中的触摸芯片
  18. 找一个有钱的男朋友是什么体验?
  19. 再谈用Excel计算年龄
  20. 下载资料,站点汇总,别只知道去百度文库,既能找到好文档,还能获取收益

热门文章

  1. 键盘按键响应时间越快越好吗_按键响应、按键无冲、按键调速到底是怎么一回事?...
  2. miniprograme-wsx
  3. JS中定义对象和集合
  4. 【嵌入式模块】直流电机驱动L298N,TB6612详解
  5. python和R的区别
  6. C#制作单机版桌面软件(带数据库)
  7. intel服务器最新主板芯片组,Intel主流服务器主板驱动更新:新增支持Patsburg芯片组...
  8. Python3之标准库
  9. python 查看文件夹大小
  10. thinkphp5.0.20 数据库迁移/填充