Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
elluminate
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
1

Поиск коэффициентов логистической регрессии

03.01.2014, 00:21. Просмотров 1517. Ответов 1
Метки нет (Все метки)

Добрый вечер!
Есть необходимость обучать логистическую регрессию (найти ее коэффициенты). На одном интернет-ресурсе нашел код, делающий то, что мне нужно. Вот сам код
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
x = [[-8:1]'; [2:11]'];
% dependent variable of zeros and ones
y = [zeros(9,1); 1; 0; ones(9,1)];
% construct the matrix of independent samples
X = [ones(size(x,1),1) x];
 
%% Define the initial value of the parameters
 
% 1st element, function of the mean value of y's
b0 = log(mean(y)/(1-mean(y)));
% column-vector of parameters
b = [b0 zeros(size(X,2)-1,1)]';
 
%%  The Newton-Raphson procedure
 
while 1==1
    % the logit^-1 variable is function of parameters
    z = X*b;
    % recover the regression
    p = 1./(1+exp(-z));
    % calculate the weights of the samples
    w = p.*(1-p);
    % calculate the dependent variable for this step of least squares
    u = z + (y-p)./w;
     % store old parameters
    b_old = b;
    % calculate new parameters with least squares
    b = inv( X'*diag(w)*X ) * X' * diag(w) * u;
 
    % termanate the iterations if changes of the parameters are small
    if sumsqr(b - b_old) <= TolFun, break; end
end
Он отлично работает, находит свободный член и первый весовой коэффициент. Но в моей модели больше 1 параметра. Пробую увеличить его до двух (для начала). Для этого изменяю здесь: X = [ones(size(x,1),1) x]; на это X = [ones(size(x,1),1) x x]; и здесь b = [b0 zeros(size(X,2)-1,1)]'; на это b = [b0 zeros(1,size(X,2)-1)]';
После этих изменений код циклится и выпадает с ошибкой "Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. RCOND = NaN." на строке b = inv( X'*diag(w)*X ) * X' * diag(w) * u;
Матрица вырождается и решение становится невозможным.
Прошу помочь!) Что я делаю не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 00:21
Ответы с готовыми решениями:

.m сценарий для расчета коэффициентов регрессии
Всем привет, давненько не заглядывал на форум, а тут вот &quot;сел в лужу&quot;. Никак не...

Подскажите, пожалуйста, как оценить значимость полученных коэффициентов регрессии?
Здравствуйте. Подскажите, пожалуйста, как оценить значимость полученных...

Экспоненциальная модель регрессии
добрый времени суток уважаемые форумчане. вот на форуме нашел программный код,...

Получить уравнение регрессии
Помогите получить уравнение регрессии в программе Matlab. Вообщем, у меня есть...

график многофакторной регрессии
Добрый день, зашел в тупик. Было получено уравнение многофакторной регрессии:...

1
elluminate
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
05.01.2014, 14:11  [ТС] 2
еще актуально
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2014, 14:11

Нахождение коэффициентов а и b
Данные в таблице определяются функцией вида asinx+bcosx. Определите a и b. x...

Определение коэффициентов полинома
Здравствуйте, подскажите пожалуйста с помощью какой функции можно определить...

Значение коэффициентов полинома
Надо найти значение коэффициентов полинома, если использовать прямое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru