package gem;
import com.gregdennis.drej.*;
import javax.vecmath.GMatrix;
import javax.vecmath.GVector;
import java.util.Random;
/**
* @author Ozgun Babur
*/
public class Regretor
{
static final Random r = new Random();
public static void main(String[] args)
{
int n = 4;
int m = 2;
GMatrix data = new GMatrix(m, n);
GVector values = new GVector(n);
for (int i = 0; i < m; i++)
{
data.setRow(i, getRandomArray(n));
}
double[] v = new double[n];
for (int i = 0; i < n; i++)
{
double[] col = new double[m];
data.getColumn(i, col);
v[i] = getValue(col);
}
values.set(v);
System.out.println("data = " + data);
System.out.println("values = " + values);
Kernel kernel = new PolynomialKernel(m);
// Kernel kernel = LinearKernel.KERNEL;
double lambda = 0.5;
Representer representer = Regression.solve(data, values, kernel, lambda);
GVector gv = representer.coeffs();
double dd = representer.eval(new GVector(new double[]{2, 3}));
System.out.println("dd = " + dd);
System.out.println(gv);
}
private static double[] getRandomArray(int size)
{
double[] d = new double[size];
for (int i = 0; i < size; i++)
{
d[i] = r.nextDouble() * 10;
}
return d;
}
static final double[] c = new double[]{5, 2};
private static double getValue(double[] p)
{
double sum = 0;
for (int i = 0; i < p.length; i++)
{
sum += c[i] * p[i];
}
return sum;
}
}