use of smile.data.AttributeDataset in project smile by haifengl.
the class TXTParserTest method testParse.
/**
* Test of parse method, of class TXTParser.
*/
@Test
public void testParse() throws Exception {
System.out.println("parse");
TXTParser parser = new TXTParser();
try {
AttributeDataset data = parser.parse("PCL", smile.data.parser.IOUtils.getTestDataFile("microarray/Dunham2002.txt"));
double[][] x = data.toArray(new double[data.size()][]);
String[] id = data.toArray(new String[data.size()]);
for (Attribute attribute : data.attributes()) {
assertEquals(Attribute.Type.NUMERIC, attribute.getType());
System.out.println(attribute.getName());
}
assertEquals(6694, data.size());
assertEquals(16, data.attributes().length);
assertEquals("YKR005C", id[0]);
assertEquals(-0.43, x[0][0], 1E-7);
assertEquals(-0.47, x[0][1], 1E-7);
assertEquals(-0.39, x[0][2], 1E-7);
assertEquals("YKR004C", id[6693]);
assertEquals(0.03, x[6693][13], 1E-7);
assertEquals(-0.53, x[6693][14], 1E-7);
assertEquals(0.3, x[6693][15], 1E-7);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.AttributeDataset in project smile by haifengl.
the class RegressionTreeTest method test.
public void test(String dataset, String url, int response) {
System.out.println(dataset);
ArffParser parser = new ArffParser();
parser.setResponseIndex(response);
try {
AttributeDataset data = parser.parse(smile.data.parser.IOUtils.getTestDataFile(url));
double[] datay = data.toArray(new double[data.size()]);
double[][] datax = data.toArray(new double[data.size()][]);
int n = datax.length;
int k = 10;
CrossValidation cv = new CrossValidation(n, k);
double rss = 0.0;
double ad = 0.0;
for (int i = 0; i < k; i++) {
double[][] trainx = Math.slice(datax, cv.train[i]);
double[] trainy = Math.slice(datay, cv.train[i]);
double[][] testx = Math.slice(datax, cv.test[i]);
double[] testy = Math.slice(datay, cv.test[i]);
RegressionTree tree = new RegressionTree(data.attributes(), trainx, trainy, 20);
for (int j = 0; j < testx.length; j++) {
double r = testy[j] - tree.predict(testx[j]);
rss += r * r;
ad += Math.abs(r);
}
}
System.out.format("10-CV RMSE = %.4f \t AbsoluteDeviation = %.4f%n", Math.sqrt(rss / n), ad / n);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.AttributeDataset in project smile by haifengl.
the class RegressionTreeTest method testCPU.
/**
* Test of learn method, of class RegressionTree.
*/
@Test
public void testCPU() {
System.out.println("CPU");
ArffParser parser = new ArffParser();
parser.setResponseIndex(6);
try {
AttributeDataset data = parser.parse(smile.data.parser.IOUtils.getTestDataFile("weka/cpu.arff"));
double[] datay = data.toArray(new double[data.size()]);
double[][] datax = data.toArray(new double[data.size()][]);
int n = datax.length;
int m = 3 * n / 4;
int[] index = Math.permutate(n);
double[][] trainx = new double[m][];
double[] trainy = new double[m];
for (int i = 0; i < m; i++) {
trainx[i] = datax[index[i]];
trainy[i] = datay[index[i]];
}
double[][] testx = new double[n - m][];
double[] testy = new double[n - m];
for (int i = m; i < n; i++) {
testx[i - m] = datax[index[i]];
testy[i - m] = datay[index[i]];
}
RegressionTree tree = new RegressionTree(data.attributes(), trainx, trainy, 20);
System.out.format("RMSE = %.4f%n", Validation.test(tree, testx, testy));
double[] importance = tree.importance();
index = QuickSort.sort(importance);
for (int i = importance.length; i-- > 0; ) {
System.out.format("%s importance is %.4f%n", data.attributes()[index[i]], importance[i]);
}
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.AttributeDataset in project smile by haifengl.
the class ValidationTest method testCv_4args_2.
/**
* Test of cv method, of class Validation.
*/
@Test
public void testCv_4args_2() {
System.out.println("cv");
ArffParser parser = new ArffParser();
parser.setResponseIndex(6);
try {
AttributeDataset data = parser.parse(smile.data.parser.IOUtils.getTestDataFile("weka/cpu.arff"));
double[] y = data.toArray(new double[data.size()]);
double[][] x = data.toArray(new double[data.size()][]);
Math.standardize(x);
RBFNetwork.Trainer<double[]> trainer = new RBFNetwork.Trainer<>(new EuclideanDistance());
trainer.setNumCenters(20);
double rmse = Validation.cv(10, trainer, x, y);
System.out.println("RMSE = " + rmse);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.AttributeDataset in project smile by haifengl.
the class ValidationTest method testTest_3args_2.
/**
* Test of test method, of class Validation.
*/
@Test
public void testTest_3args_2() {
System.out.println("test");
ArffParser parser = new ArffParser();
parser.setResponseIndex(6);
try {
AttributeDataset data = parser.parse(smile.data.parser.IOUtils.getTestDataFile("weka/cpu.arff"));
double[] datay = data.toArray(new double[data.size()]);
double[][] datax = data.toArray(new double[data.size()][]);
Math.standardize(datax);
int n = datax.length;
int m = 3 * n / 4;
double[][] x = new double[m][];
double[] y = new double[m];
double[][] testx = new double[n - m][];
double[] testy = new double[n - m];
int[] index = Math.permutate(n);
for (int i = 0; i < m; i++) {
x[i] = datax[index[i]];
y[i] = datay[index[i]];
}
for (int i = m; i < n; i++) {
testx[i - m] = datax[index[i]];
testy[i - m] = datay[index[i]];
}
double[][] centers = new double[20][];
RadialBasisFunction[] rbf = SmileUtils.learnGaussianRadialBasis(x, centers, 2);
RBFNetwork<double[]> rkhs = new RBFNetwork<>(x, y, new EuclideanDistance(), rbf, centers);
double rmse = Validation.test(rkhs, testx, testy);
System.out.println("RMSE = " + rmse);
} catch (Exception ex) {
System.err.println(ex);
}
}
Aggregations