青桔甘苦 2019-11-14 15:13 采纳率: 0%
浏览 1221

应用SVR对负荷数据进行回归分析,测试集出来的数为一条直线?

应用SVR对负荷数据进行回归分析,测试集出来的数为一条直线?

import numpy as np
from sklearn.svm import SVR
import pandas as pd
import matplotlib.pyplot as plt
import xlrd
# 打开指定路径中的xls文件,得到book对象
xls_file = "bb.xls"
#打开指定文件
book = xlrd.open_workbook(xls_file)
# 通过sheet索引获得sheet对象
sheet1 = book.sheet_by_index(0)
# # 获得指定索引的sheet名
# sheet1_name = book.sheet_names()[0]
# print(sheet1_name)
# # 通过sheet名字获得sheet对象
# sheet1 = book.sheet_by_name(sheet1_name)
# 获得行数和列数
# 总行数
nrows = sheet1.nrows
#总列数
ncols = sheet1.ncols
# 遍历打印表中的内容
row_list=[]
for i in range(nrows):
  for j in range(ncols):
    cell_value = sheet1.cell_value(i, j)
    row_list.append (cell_value)#append函数的用处为往一个空矩阵添加元素

x=range(1,156)  #绘制横坐标时间数据
 #提取Excel表里的数据cell_value即是y值

x1=np.array(x)
X=x1.reshape((len(x1),1))##reshape用于转置
y=np.array(row_list)

X_train=np.array(X[0:123])  #训练集124
X_test=np.array(X[124:154])
y_train=np.array(y[0:123]) #测试集31
y_test=np.array(y[124:154])

svr_rbf=SVR(kernel='rbf',C=1e3,gamma=0.1)  #使用 rbf核进行拟合
clf=svr_rbf.fit(X_train,y_train)            #训练得到分类器#中括号的用途
y_rbf=clf.predict(X)                           #预测的输出

ax=plt.subplot(111)
ax.scatter(X_train,y_train,c='r',label='train')                 #训练集真实值的散点图
ax.scatter(X_test,y_test,c='g',label='test')                   #测试集真实值的散点图
ax.plot(X,y_rbf,c='b',label='RBF model')                        #训练集的拟合结果 #测试集的结果为一常值,是因为数据集未进行归一化处理

plt.xlabel('day')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()

程序运行结果如下:

```![图片说明](https://img-ask.csdn.net/upload/201911/14/1573715524_788157.png)

请各位大佬指点!!


  • 写回答

1条回答

  • AdolphPrice 2021-07-02 16:01
    关注

    我也遇到了这个问题,博主解决了吗?

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!