机器学习中的逻辑回归和线性回归的matlab程序实现
一、逻辑回归(用于分类)
1、逻辑回归样本数据集的生成程序:
clear all;
a = input('please input weights matrix:\n');
[row,col] =size(a);
num = input('how many numbers do you want"\n');
class = zeros(num,1);
rand_input = roundn(10*rand(num,col-1),-2);
rand_output = roundn(21*rand(num,1),-2);
output = roundn(rand_input(1:num,1:col-1)*a(1,2:col)' + ones(num,1)*a(1,1)+ wgn(num,1,0),-2);
for i = 1:num
if rand_output(i,1) > output(i,1)
class(i,1) = 1;
else
class(i,1) = 0;
end
end
txt_data = [rand_input,rand_output,class];
data_base = fopen('Ldata.txt','w');
for j = 1:num
for i = 1:col+1
fprintf(data_base,'%4.2f\t',txt_data(j,i));
end
fprintf(data_base,'\n');
end
使用说明:
(1)由于在实现算法中使用的二维平面图来显示逻辑回归的分类效果,所以只能生成输入权重为2的测试矩阵,即一元一阶函数,如[5 2],y=2x+5(当然,也可以用于多元一阶函数;
(2)输入要生成的样本总数,样本数量越大,分类效果越好,但是处理时间越长。
例如:权重矩阵为[10 0.5],样本数量为5000,对应的二维图显示如下
2、用逻辑回归实现分类的程序
clear all;
%从文本文件输入数据
ex = importdata('Ldata.txt');
[row,col] =