| 查看: 1517 | 回复: 5 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
zlp-lw木虫 (正式写手)
|
[交流]
svm 预测已有2人参与
|
||
|
各位大侠: 您好,我用30个案例分析中的第14章的svm回归预测抑制剂的半浓度,并把其程序进行改写,但是出现了一些意想不到的情况。特向您请教:在第14章的例子中,最后的测试为什么不用测试集,而是用原始训练数据做测试,这样的测试效果很好,但是有什么效果呢?在我做的例子中,我用42个数据作为训练,10个数据作为测试集,对测试集我照着您这个例子中的训练集进行了归一化、反归一化处理,最后用训练模型进行测试,效果非常的差,我不知道这是什么原因?是我程序哪里出了问题,您能帮我看一下吗,我也30个案例分析的忠实读者。谢谢您 xx=xlsread('1.xls'); y=xlsread('1-1.xls'); xx=xx'; sh=[y,xx]; %% 数据的提取和预处理 % 数据是一个52*6的double型的矩阵,每一行表示每一天的负荷数据和影响因素 % 提取数据 [m,n] = size(x); ts = x(1:m,1); tsx = x(1:m,2:6); % 数据预处理,将原始数据进行归一化 ts = ts'; tsx = tsx'; % mapminmax为matlab自带的映射函数 % 对ts进行归一化 [TS,TSps] = mapminmax(ts,1,2); % 对TS进行转置,以符合libsvm工具箱的数据格式要求 TS = TS'; % mapminmax为matlab自带的映射函数 % 对tsx进行归一化 [TSX,TSXps] = mapminmax(tsx,1,2); % 对TSX进行转置,以符合libsvm工具箱的数据格式要求 TSX = TSX'; %% 选择回归预测分析最佳的SVM参数c&g bestc=1;bestg=1.6245; bestc,cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01']; model = svmtrain(TS,TSX,cmd); %% SVM网络回归预测 [predict,mse] = svmpredict(TS,TSX,model); predict = mapminmax('reverse',predict',TSps); predict = predict'; % 打印回归结果 str = sprintf( '均方误差 MSE = %g 相关系数 R = %g%%',mse(2),mse(3)*100); disp(str); %% 结果分析 figure; hold on; plot(ts,'-o'); plot(predict,'r-^'); legend('原始数据','回归预测数据'); hold off; xlabel('小时','FontSize',12); ylabel('/Wh','FontSize',12); grid on; figure; error = predict - ts'; plot(error,'rd'); title('误差图(predicted data - original data)','FontSize',12); xlabel('小时','FontSize',12); ylabel('误差量','FontSize',12); grid on; figure; error = (predict - ts')./ts'; plot(error,'rd'); title('相对误差图(predicted data - original data)/original data','FontSize',12); xlabel('小时)','FontSize',12); ylabel('相对误差量','FontSize',12); grid on; |
» 猜你喜欢
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
物理学I论文润色/翻译怎么收费?
已经有288人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有23人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
本帖内容被屏蔽 |
6楼2018-05-04 09:34:25
zlp-lw
木虫 (正式写手)
- 应助: 5 (幼儿园)
- 金币: 2547.1
- 散金: 85
- 红花: 6
- 帖子: 451
- 在线: 324.1小时
- 虫号: 1502426
- 注册: 2011-11-21
- 专业: 碳素材料与超硬材料
2楼2012-11-08 17:19:58
3楼2012-11-13 17:06:13
zlp-lw
木虫 (正式写手)
- 应助: 5 (幼儿园)
- 金币: 2547.1
- 散金: 85
- 红花: 6
- 帖子: 451
- 在线: 324.1小时
- 虫号: 1502426
- 注册: 2011-11-21
- 专业: 碳素材料与超硬材料
|
我用SVMcgForRegress进行参数寻优,可是数据的输入不一样时预测的结果不一样,下面是我的数据输入的程序,帮我看看是什么原因吧? %% 数据的提取和预处理 % 载入测试数据上证指数(1990.12.19-2009.08.19) % 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数 % 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额. xx=xlsread('TXFZMSHF1.xls'); y=xlsread('ShiyanzhiDuishu1.xls'); xx=xx'; sh=[y,xx]; [m,n] = size(sh); ts = sh(1:m,1); tsx = sh(1:m, ;% 画出原始上证指数的每日开盘数 %figure; %plot(ts,'LineWidth',2); %title('上证指数的每日开盘数(1990.12.20-2009.08.19)','FontSize',12); %grid on; % 数据预处理,将原始数据进行归一化 ts = ts'; tsx = tsx'; % mapminmax为matlab自带的映射函数 [TS,TSps] = mapminmax(ts); % 将映射函数的范围参数分别置为1和2 TSps.ymin = 1; TSps.ymax = 2; % 对ts进行归一化 [TS,TSps] = mapminmax(ts,TSps); % 画出原始上证指数的每日开盘数归一化后的图像 figure; plot(TS,'LineWidth',2); title('原始上证指数的每日开盘数归一化后的图像','FontSize',12); grid on; % 对TS进行转置,以符合libsvm工具箱的数据格式要求 TS = TS'; TS1 = TS(43:m,1); TS = TS(1:m-10,1); % mapminmax为matlab自带的映射函数 [TSX,TSXps] = mapminmax(tsx); % 将映射函数的范围参数分别置为1和2 TSXps.ymin = 1; TSXps.ymax = 2; % 对tsx进行归一化 [TSX,TSXps] = mapminmax(tsx,TSXps); % 对TSX进行转置,以符合libsvm工具箱的数据格式要求 TSX = TSX'; TSX1 = TSX(43:m,1:n); TSX = TSX(1:m-10,1:n); 这个输入,预测的效果是非常好的,其相关系数都达到了0.9996左右了,而用下面的输入程序,则预测结果不太理想。。 %% 数据的提取和预处理 % 载入测试数据上证指数(1990.12.19-2009.08.19) % 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数 % 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额. xx=xlsread('1.xls'); y=xlsread('1-1.xls'); xx=xx'; sh=[y,xx]; [m,n] = size(sh); ts = sh(1:m,1); tsx = sh(1:m, ;% 画出原始上证指数的每日开盘数 %figure; %plot(ts,'LineWidth',2); %title('上证指数的每日开盘数(1990.12.20-2009.08.19)','FontSize',12); %grid on; % 数据预处理,将原始数据进行归一化 ts = ts'; tsx = tsx'; % mapminmax为matlab自带的映射函数 [TS,TSps] = mapminmax(ts); % 将映射函数的范围参数分别置为1和2 TSps.ymin = 1; TSps.ymax = 2; % 对ts进行归一化 [TS,TSps] = mapminmax(ts,TSps); % 画出原始上证指数的每日开盘数归一化后的图像 figure; plot(TS,'LineWidth',2); title('原始上证指数的每日开盘数归一化后的图像','FontSize',12); grid on; % 对TS进行转置,以符合libsvm工具箱的数据格式要求 TS = TS'; TS1 = TS(43:m,1); TS = TS(1:m-10,1); % mapminmax为matlab自带的映射函数 [TSX,TSXps] = mapminmax(tsx); % 将映射函数的范围参数分别置为1和2 TSXps.ymin = 1; TSXps.ymax = 2; % 对tsx进行归一化 [TSX,TSXps] = mapminmax(tsx,TSXps); % 对TSX进行转置,以符合libsvm工具箱的数据格式要求 TSX = TSX'; TSX1 = TSX(43:m,2:n); TSX = TSX(1:m-10,2:n); 希望您和各位能指点指点。。。 |
4楼2012-11-14 09:19:27













回复此楼
;