我正在尝试使用Jama库编写我的Sigmoid函数。我不确定我的代码是否有效,所以我在测试函数中调用了我的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;}
但是,当我运行它时,没有任何输出。就像我的sigmoidFunction
内部没有值一样。我不知道为什么。
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]);
}
回答:
你在函数内部定义了新的矩阵。打印出来看看你的sigmoidFunction
中的X
和theta
是否有值。实际上,你需要在函数内部定义X
和theta
。