public double getQuick(int i, int j) { return content.get(rix[i],cix[j]); } public void setQuick(int i, int j, double value) {
public double getQuick(int row, int column) { return content.get(column,row); } public void setQuick(int row, int column, double value) {
public double getQuick(int i, int j) { return content.get(rix[i],cix[j]); } public void setQuick(int i, int j, double value) {
public double getQuick(int row, int column) { return content.get(_rowStride*row, _columnStride*column); } public void setQuick(int row, int column, double value) {
public double getQuick(int row, int column) { return content.get(row,columns-1-column); } public void setQuick(int row, int column, double value) {
public double getQuick(int i, int j) { return content.get(row+i,column+j); } public void setQuick(int i, int j, double value) {
public double getQuick(int row, int column) { return content.get(rows-1-row,column); } public void setQuick(int row, int column, double value) {
public double getQuick(int row, int column) { return content.get(_rowStride*row, _columnStride*column); } public void setQuick(int row, int column, double value) {
public double getQuick(int row, int column) { return content.get(row,columns-1-column); } public void setQuick(int row, int column, double value) {
public double getQuick(int row, int column) { return content.get(column,row); } public void setQuick(int row, int column, double value) {
public double getQuick(int row, int column) { return content.get(rows-1-row,column); } public void setQuick(int row, int column, double value) {
@Override public double get(int row, int col) { return mat.get(row,col); }
public double get(int i, int j) { return rho.get(i, j); } };
public double getQuick(int i, int j) { return content.get(row+i,column+j); } public void setQuick(int i, int j, double value) {
private double sum_abs(DoubleMatrix2D m) { double sum = 0.0; for (int i = 0; i < m.rows(); i++) { for (int j = 0; j < m.columns(); j++) { sum += Math.abs(m.get(i, j)); } } return sum; }
public void apply(cern.colt.Timer timer) { int rows=B.rows(); int columns=B.columns(); /* for (int row=rows; --row >= 0; ) { for (int column=columns; --column >= 0; ) { A.set(row,column, B.get(row,column)); } } */ for (int row=0; row < rows; row++) { for (int column=0; column < columns; column++) { A.set(row,column, B.get(row,column)); } } } };
public static RowMajorMatrix coltToEjml( DoubleMatrix2D orig ) { if( orig == null ) return null; RowMajorMatrix mat = new RowMajorMatrix(orig.rows(),orig.columns()); for( int i = 0; i < mat.numRows; i++ ) { for( int j = 0; j < mat.numCols; j++ ) { mat.set(i,j,orig.get(i,j)); } } return mat; } }
private DoubleMatrix2D scale(DoubleMatrix2D x, boolean scale) { for (int j = 0; j < x.columns(); j++) { DoubleArrayList u = new DoubleArrayList(x.viewColumn(j).toArray()); double mean = Descriptive.mean(u); for (int i = 0; i < x.rows(); i++) { x.set(i, j, x.get(i, j) - mean); } if (scale) { double rms = rms(x.viewColumn(j)); for (int i = 0; i < x.rows(); i++) { x.set(i, j, x.get(i, j) / rms); } } } return x; }
@Override public double[] gradient(double[] X) { DoubleMatrix1D x = DoubleFactory1D.dense.make(X); DoubleMatrix1D g = ALG.mult(A, x).assign(b, Functions.plus).assign(Functions.exp); double den = g.zSum(); double[] R = new double[dim]; for(int i=0; i<dim; i++){ double d = 0d; for(int k=0; k<A.rows(); k++){ d += g.get(k) * A.get(k, i); } R[i] = d/den; } return R; }
private double multiLL(DoubleMatrix2D coeffs, Node dep, List<Node> indep){ DoubleMatrix2D indepData = factory2D.make(internalData.subsetColumns(indep).getDoubleData().toArray()); List<Node> depList = new ArrayList<>(); depList.add(dep); DoubleMatrix2D depData = factory2D.make(internalData.subsetColumns(depList).getDoubleData().toArray()); int N = indepData.rows(); DoubleMatrix2D probs = Algebra.DEFAULT.mult(factory2D.appendColumns(factory2D.make(N, 1, 1.0), indepData), coeffs); probs = factory2D.appendColumns(factory2D.make(indepData.rows(), 1, 1.0), probs).assign(Functions.exp); double ll = 0; for(int i = 0; i < N; i++){ DoubleMatrix1D curRow = probs.viewRow(i); curRow.assign(Functions.div(curRow.zSum())); ll += Math.log(curRow.get((int)depData.get(i,0))); } return ll; }