用的是matlab编程,得到的结果好像问题蛮大的,不知道是哪里编程出了问题,希望能帮忙看下,谢谢
题目“编程实现对率回归,并给出西瓜数据集3.0a上的结果 ”
clear;clc;
data = csvread('3.0alpha.csv');
[m n] = size(data);
beta0 = [1 1 0]';
sum2=0;
sum1=0;
for i = 1:m
data1 = [data(i,1:2) 1]';
sum2 = sum2 + (data1 * data1' * exp(beta0'*data1)/(1 + exp(beta0'*data1)))*(1-exp(beta0'*data1)/(1 + exp(beta0'*data1)));
sum1 = sum1 - data1*(data(i,3)-exp(beta0'*data1)/(1 + exp(beta0'*data1)));
end
beta = beta0 - inv(sum2)*sum1;
for i = 2:1000
for j = 1:m
data1 = [data(j,1:2) 1]';
sum2 = sum2 + (data1 * data1' * exp(beta'*data1)/(1 + exp(beta'*data1)))*(1-exp(beta'*data1)/(1 + exp(beta'*data1)));
sum1 = sum1 - data1*(data(j,3)-exp(beta'*data1)/(1 + exp(beta'*data1)));
end
beta = beta - inv(sum2)*sum1;
end
sum = zeros(m,1);
for i = 1:m
for j = 1:3
sum(i) = sum(i) + beta(j)*data(i,j);
end
end
sum
数据如下
0.697 0.46 1
0.774 0.376 1
0.634 0.264 1
0.608 0.318 1
0.556 0.215 1
0.403 0.237 1
0.481 0.149 1
0.437 0.211 1
0.666 0.091 0
0.243 0.267 0
0.245 0.057 0
0.343 0.099 0
0.639 0.161 0
0.657 0.198 0
0.36 0.37 0
0.593 0.042 0
0.719 0.103 0