matlab主成分分析散点图_主成分分析的matlab实现完整程序.doc

本文详细介绍了如何使用Matlab进行主成分分析(PCA),包括计算相关系数矩阵、特征值与特征向量、主成分贡献率及累计贡献率、主成分载荷等步骤。还给出了主成分分析的程序结构,包括主函数和子函数的作用,并提供了源代码示例。
摘要由CSDN通过智能技术生成

主成分分析的matlab实现完整程序

主成分分析

1.概述

Matlab语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言便捷接口的功能。 语言在各国高校与研究单位起着重大的作用① 计算相关系数矩阵

(1)

在(3.5.3)式中,rij(i,j=1,2,…,p)为原变量的xi与xj之间的相关系数,其计算公式为

(2)

因为R是实对称矩阵(即rij=rji),所以只需计算上三角元素或下三角元素即可。

② 计算特征值与特征向量

首先解特征方程,通常用雅可比法(Jacobi)求出特征值,并使其按大小顺序排列,即;然后分别求出对应于特征值的特征向量。这里要求=1,即,其中表示向量的第j个分量。

③ 计算主成分贡献率及累计贡献率

主成分的贡献率为

累计贡献率为

一般取累计贡献率达85—95%的特征值所对应的第一、第二,…,第m(m≤p)个主成分。

④ 计算主成分载荷

其计算公式为

(3)

得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主成分的得分

(4)

2.程序结构及函数作用

在软件Matlab中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab种自带程序实现。下面主要主要介绍利用Matlab的矩阵计算功能编程实现主成分分析。

2.1程序结构

主函数

子函数

2.2函数作用

Cwstd.m——用总和标准化法标准化矩阵

Cwfac.m——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷

Cwscore.m——计算各主成分得分、综合得分并排序

Cwprint.m——读入数据文件;调用以上三个函数并输出结果

3.源程序

3.1 cwstd.m

%cwstd.m,用总和标准化法标准化矩阵

function std=cwstd(vector)

cwsum=sum(vector,1); %对列求和

[a,b]=size(vector); %矩阵大小,a为行数,b为列数

for i=1:a

for j=1:b

std(i,j)= vector(i,j)/cwsum(j);

end

end

3.2 cwfac.m

%cwfac.m

function result=cwfac(vector);

fprintf('相关系数矩阵:\n')

std=CORRCOEF(vector) %计算相关系数矩阵

fprintf('特征向量(vec)及特征值(val):\n')

[vec,val]=eig(std) %求特征值(val)及特征向量(vec)

newval=diag(val) ;

[y,i]=sort(newval) ; %对特征根进行排序,y为排序结果,i为索引

fprintf('特征根排序:\n')

for z=1:length(y)

newy(z)=y(length(y)+1-z);

end

fprintf('%g\n',newy)

rate=y/sum(y);

fprintf('\n贡献率:\n')

newrate=newy/sum(newy)

sumrate=0;

newi=[];

for k=length(y):-1:1

sumrate=sumrate+rate(k);

newi(length(y)+1-k)=i(k);

if sumrate>0.85 break;

end

end %记下累积贡献率大85%的特征值的序号放入newi中

fprintf('主成分数:%g\n\n',length(newi));

fprintf('主成分载荷:\n')

for p=1:length(newi)

for q=1:length(y)

result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));

end

end

MATLAB里分析房价问题可以采用以下步骤: 1. 收集数据:收集有关房价的数据,包括房屋大小、位置、建筑年份等信息。 2. 数据预处理:对收集到的数据进行清洗、去重、缺失值填充等预处理操作,使数据更加完整、准确、规范。 3. 数据可视化:使用MATLAB的绘图工具,对数据进行可视化展示,例如绘制散点图、直方图、箱线图等,以便于观察数据分布和异常值等情况。 4. 建立回归模型:选择适当的回归模型,例如线性回归、岭回归、lasso回归等,使用MATLAB的回归分析工具箱进行建模和评估。 5. 模型优化:根据模型评估结果,对模型进行优化,例如调整模型参数、选择合适的特征变量、使用正则化等方法。 6. 模型预测:使用已建立的模型对新数据进行预测,例如预测某个地区的房价等。 以下是一个简单的MATLAB程序,用于实现线性回归模型: ```matlab % 导入数据 data = readtable('house_price.csv'); X = data{:, 1:3}; % 特征变量 y = data{:, 4}; % 响应变量 % 建立线性回归模型 mdl = fitlm(X, y); % 模型评估 disp(mdl); % 预测 new_data = [150, 3, 1995]; y_pred = predict(mdl, new_data); disp(y_pred); ``` 其中,`house_price.csv`是包含房价数据的CSV文件,特征变量包括房屋大小、卧室数量和建筑年份,响应变量为房价。程序先导入数据,然后使用`fitlm`函数建立线性回归模型,并使用`predict`函数对新数据进行预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值