Linear Regression 线性回归 matlab实现
来源:互联网 发布:多系统数据同步 编辑:程序博客网 时间:2024/06/11 03:22
Load Data
数据形式:每行一个样例,最后一列是标签。
m个样例,n个特征。
fileName = 'xxx.txt';data = load(fileName);m = size(data, 1);n = size(data, 2);X = data(:, 1 : n - 1);y = data(:, n);
Feature Normalization
正规化X,并加入1列的1。
[X mu sigma] = featureNormalize(X);% 加入x0X = [ones(m, 1) X];
函数:
function [X_norm, mu, sigma] = featureNormalize(X) n = size(X, 2); X_norm = X; mu = zeros(1, n); sigma = zeros(1, n); % 对每个feature进行正规化 for i = 1 : n mu(1, i) = mean(X(:, i)); sigma(1, i) = std(X(:, i)); X_norm(:, i) = (X(:, i) - mu(1, i)) ./ sigma(1, i); endend
Gradient Descent
这是批梯度下降的实现。
此处时间复杂度为
更新式子为:
在每次迭代中,保存下cost function的值,以便最后能输出查看其收敛性质。
alpha = 0.1;num_iters = 50;theta = zeros(n, 1);[theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters);% Plot the convergence graphfigure;plot(1:numel(J_history), J_history, '-b', 'LineWidth', 2);xlabel('Number of iterations');ylabel('Cost J');% Display gradient descent's resultfprintf('Theta computed from gradient descent: \n');fprintf(' %f \n', theta);fprintf('\n');
gradientDescent函数
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) n = size(X, 2); m = length(y); J_history = zeros(num_iters, 1); for iter = 1:num_iters preTheta = theta; for j = 1 : n theta(j) = preTheta(j) + alpha / m * (sum((y - X * preTheta)’* X(:,j))); end % 保存下所有J,可以查看收敛情况 J_history(iter) = computeCost(X, y, theta); endend
Estimate
输入特征的行向量feat=[x,x,x,x…],输出估计。
由于之前进行了正规化,在估计时也需要正规化。
function ret = estimate(feat, theta, mu, sigma) %正规化 feat = (feat - mu) ./ sigma; feat = [1 feat]; %结果 ret = feat * theta;end
Normal Equation
直接使用式子:
此处复杂度取决于matlab求逆和矩阵乘法的复杂度。
clear;fileName = 'xxx.txt';data = load(fileName);m = size(data, 1);n = size(data, 2);X = data(:, 1 : n - 1);y = data(:, n);[X mu sigma] = featureNormalize(X);X = [ones(m, 1) X];%----------------------------------%theta = inv(X' * X) * X' * y;%----------------------------------%feat = [xxxxx xxxxx];res = estimate(feat, theta, mu, sigma);fprintf('%f', res);
0 0
- Linear Regression 线性回归 matlab实现
- 线性回归(linear regression)-matlab实现
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
- Linear Regression 线性回归
- linear regression 线性回归
- 线性回归 Linear Regression
- Linear regression(线性回归)
- 线性回归Linear Regression
- 线性回归 linear regression
- 线性回归(Linear Regression)
- 线性回归(linear regression)
- 线性回归(Linear Regression)
- NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
- PHP使用curl替代file_get_contents
- Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》
- 虚幻学习笔记_随机
- OpenCV均值模糊方法
- Linear Regression 线性回归 matlab实现
- iOS Push原理
- 常见错误之基础部分
- String to Integer (atoi)解题报告
- ionic-karma之 No binary for PhantomJS browser on your platform. Please, set "PHANTOMJS_BIN" env var
- ListView的HeaderView
- httpd设置HTTPS双向认证
- 在android布局中使用include和merge标签
- SurfaceView原理分析与应用