2013-12-12 3 views
1

Я пытаюсь закодировать свою сигмовидную функцию с помощью библиотеки Jama. Я не уверен, если мой код работает так я называю мой sigmoidFunction в моей тестовой функции(),

public matrix sigmoidFunction() { 
    matrix theta = new matrix(x_theta,m); 
    matrix X = new matrix(x); 
    matrix theta_transpose = theta.transpose(); 
    matrix HX = theta_transpose.times(X); 
    double[][] hx = HX.getArray(); 
    int m = HX.getRowdimension(); 
    int n = HX .getColdimension(); 

    for (int i = 0; i < m; i++) { 
     for (int j = 0; j<n; j++) { 
      hx[i][j] = 1/(1 + StrictMath.exp(hx[i][j])); 
     } 
    } 
    matrix sigmoid = new matrix(hx); 
return sigmoid; 
} 

, но, когда я запускаю его, нет никакого вывода. это похоже на то, что внутри моей сигмоидной функции нет никакой ценности. Я не знаю почему. Я новичок в использовании Джама библиотеки

public static void main(String[] args) { 

    double[ ][ ] x={ {1,2}, {1,2}, {1,2} ,{1,2}, {1,2} }; 
     double[] theta = {0.5,0.005}; 
    double[] y = {1,1,0,1,0}; 

    LogisticRegression l = new LogisticRegression(x,theta,y); 

    System.out.println(l.sigmoidFunction().getArray()[1]); 

}Функция сигмоида с использованием математической библиотеки Jama нет выхода в сигмоидной функции

+0

вы не передадите ваши тета и х к sigmoidFunction – lennon310

+0

но передать его в моем конструкторе – user3065339

+1

вы определяете новую матрицу внутри function.Print и посмотреть, является ли X и тета в вашем sigmoidFunction имеют значения – lennon310

ответ

0

Вы определяете новую матрицу внутри вашей функции. Распечатайте и посмотрите, есть ли значения X и theta в вашем sigmoidFunction. На самом деле вам нужно определить X и theta внутри функции.

+0

Я сделал то, что вы говорите, но когда я запустил его, результат был неправильным, он должен быть 0.51 (я сделал это в mathlab), но он возвращает 0.375. – user3065339

+1

Theta * X должен быть 0.51, сигмовидный (theta * X) равен 0,375. Кстати, я думаю, что ваша сигмоидальная функция должна быть 1/(1 + exp (-h)), а не 1/(1 + exp (h)) – lennon310