基于PCA主成分分析的线性拟合

本文通过实例演示了如何使用主成分分析(PCA)将二维数据转换为一维,以减少数据表示的复杂性。首先介绍了线性拟合的方法,然后对比了PCA找到的曲线主要方向,展示了PCA在数据压缩和特征提取中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCA非常好理解,本质上是选择一组新的正交基,将n维空间的数据转换到m维空间中,且m<n。下面给一个简单的示例说明,将一个2维的数据降低到一维表示。

Background: There is a list of numbers who stand for a curve. Can we describe the curve using less points, such as a line.
First Method: fitting the curve by using least square method. The Model is “y = ax + b”.
Second Method: finding one eigenvector standing for the curve by using PCA.

背景: 我们有一组数据表示一个平面上的曲线,为了减少存储数据的数量,我们是否可以用更少的点描述曲线,比如一条线。
方法一:用线性拟合
方法二:用主成分分析法

pd_analysis.csv

920 -3.7764
1520 -0.4437
2120 3.3307
2720 8.0182
3320 11.8022

clc;clear
% Input
data = csvread('pd_analysis.csv');
pos = (data(1:end,1))';
disparity = (data(1:end,2))';
curve = [disparity; pos];
plot(curve(1,:),curve(2,:),'b.');

First Method:

[p, S] = polyfit(curve(1,:),curve(2,:), 1);
x = min(curve(1,:)) : 1 : max(curve(1,:));
y = polyval(p,x,S);
hold on 
plot(x, y, 'r--','LineWidth',2)

在这里插入图片描述
Second Method

% PCA
X = curve';
[coeff,score,roots] = pca(X);
meanX = mean(X,1);
[n,~] = size(X);
Xfit = repmat(meanX,n,1) + score(:,1)*coeff(:,1)';
dirVect = coeff(:,1);
t = [min(score(:,1))-.2, max(score(:,1))+.2];
endpts = [meanX + t(1)*dirVect'; meanX + t(2)*dirVect'];
K = dirVect(2)/dirVect(1)
plot(endpts(:,1),endpts(:,2),'k-');

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值