Matlab实现 最小二乘法( least square method ) - 单特征

一、实现效果

Matlab实现 最小二乘法( least square method ) - 单特征_第1张图片    

二、源码

%========= 最小二乘法( least square method ) - 单特征 ==========
% 原理参考:http://www.cnblogs.com/softlin/p/5815531.html
clear;
close all;

 
%=============== generate data ====================
x = (0:1:9);                % 0~9
y = [0 2 4 7 8 9 12 14 15 18];

 
%================= start design ==================
% f(x;m,c)=mx+c
N = length(y);              % 数据长度
m_x = sum(x) / N;           % 计算 x 平均值
m_y = sum(y) / N;           % 计算 y 平均值
m_xx = sum(x.*x) / N;       % 计算 x*x 平均值
m_xy = sum(x.*y) / N;       % 计算 x*y 平均值

% 根据公式计算出f(x;m,c)=mx+c中的 m
m = (m_xy - m_x*m_y) / (m_xx - m_x*m_x);
% 根据公式计算出f(x;m,c)=mx+c中的 c
c = m_y - m*m_x;

% draw result
figure(1);
scatter(x, y, 30, 'filled', 'blue');
hold on
plot(x, m*x+c, 'r', 'linewidth', 2);
title('least square method');
xlabel('x');
ylabel('y');
axis([0 10 0 20]);

你可能感兴趣的:(Matlab实现 最小二乘法( least square method ) - 单特征)