%% I. 清空环境变量
clear all
clc
%% II. 导入数据
load spectra;
%% III. 随机划分训练集与测试集
temp = randperm(size(NIR, 1));
% temp = 1:60;
%%
% 1. 训练集——50个样本
P_train = NIR(temp(1:50),:);
T_train = octane(temp(1:50),:);
%%
% 2. 测试集——10个样本
P_test = NIR(temp(51:end),:);
T_test = octane(temp(51:end),:);
%% IV. 主成分分析
%%
% 1. 主成分贡献率分析
[PCALoadings,PCAScores,PCAVar] = princomp(NIR);
figure
percent_explained = 100 * PCAVar / sum(PCAVar);
pareto(percent_explained)
xlabel('主成分')
ylabel('贡献率(%)')
title('主成分贡献率')
%%
% 2. 第一主成分vs.第二主成分
[PCALoadings,PCAScores,PCAVar] = princomp(P_train);
figure
plot(PCAScores(:,1),PCAScores(:,2),'r+')
hold on
[PCALoadings_test,PCAScores_test,PCAVar_test] = princomp(P_test);
plot(PCAScores_test(:,1),PCAScores_test(:,2),'o')
xlabel('1st Principal Component')
ylabel('2nd Principal Component')
legend('Training Set','Testing Set','location','best')
%% V. 主成分回归模型
%%
% 1. 创建模型
k = 4;
betaPCR = regress(T_train-mean(T_train),PCAScores(:,1:k));
betaPCR = PCALoadings(:,1:k) * betaPCR;
betaPCR = [mean(T_train)-mean(P_train) * betaPCR;betaPCR];
%%
% 2. 预测拟合
N = size(P_test,1);
T_sim = [ones(N,1) P_test] * betaPCR;
%% VI. 结果分析与绘图
%%
% 1. 相对误差error
error = abs(T_sim - T_test) ./ T_test;
%%
% 2. 决定系数R^2
R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));
%%
% 3. 结果对比
result = [T_test T_sim error]
%%
% 4. 绘图
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真实值','预测值','location','best')
xlabel('预测样本')
ylabel('辛烷值')
string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};
title(string)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Matlab是一种专业的数学计算软件,也可以被看作是一种编程语言,主要用于数值计算和科学计算。它是matrix(矩阵)和language(语言)两个词的缩写,寓意该软件旨在以矩阵为基础,方便快捷地进行各种数学计算和数据处理。 Matlab提供了简单易用的命令行窗口,可以用来输入和执行Matlab代码。它还提供了交互式命令历史记录和调用文件,可以方便用户记录和查看之前执行的命令。Matlab支持多种编程语言,包括Matlab、J Matlab和MEX Matlab,可以根据不同的需求选择不同的编程语言。 Matlab提供了丰富的工具箱,包括信号处理工具箱、图像处理工具箱、优化工具箱等,可以方便地进行各种数学计算和数据处理。Matlab还提供了Simulink模块库,可以用来构建自动控制系统、数字信号处理系统等。 Matlab的语法简单易懂,可以快速地进行数学计算和数据处理。Matlab支持函数式编程,可以使用函数来简化代码,提高代码的可读性和可维护性。Matlab还支持面向对象编程,可以使用类和对象来组织代码,提高代码的可重用性和可维护性。 总之,Matlab是一种功能强大的数学计算软件
资源推荐
资源详情
资源评论
收起资源包目录
Class_13_Code.7z (11个子文件)
Class_13_Code
html
PCR_Demo_01.png 4KB
PCR_Demo.html 10KB
PLS_Demo.png 3KB
PCR_Demo_03.png 8KB
PLS_Demo_02.png 7KB
PCR_Demo_02.png 5KB
PLS_Demo.html 9KB
PLS_Demo_01.png 4KB
PCR_Demo.png 4KB
PCR_Demo.m 2KB
PLS_Demo.m 1KB
共 11 条
- 1
资源评论
大雄是个程序员
- 粉丝: 4699
- 资源: 571
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 每周质量安全排查报告.docx
- 排水报装接入申请表.docx
- 评估报告公示公众意见表.doc
- 评审、登记备案情况表.docx
- 墙板隐蔽前监理检查记录.docx
- 抢救室、输液室周带教计划表.docx
- 人防工程主体结构验收前监理人员检查记录表.docx
- 人防工程竣工验收前监理人员检查记录.docx
- 人防门框及临战封堵框常规数据检查表.docx
- 人防门扇常规数据检查表.docx
- 社区工作者岗位表.docx
- 涉及消防的建筑材料、构配件和设备的进场试验报告汇总表.docx
- 涉及消防的各分部分项工程消防查验结果表.docx
- 十级伤残鉴定标准表.docx
- 市标化优良工地检查自评表(施工、监理企业用表).docx
- 输液结束(拔针)流程表.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功