use of smile.data.parser.DelimitedTextParser in project smile by haifengl.
the class AdaBoostTest method testUSPS.
/**
* Test of learn method, of class AdaBoost.
*/
@Test
public void testUSPS() {
System.out.println("USPS");
DelimitedTextParser parser = new DelimitedTextParser();
parser.setResponseIndex(new NominalAttribute("class"), 0);
try {
AttributeDataset train = parser.parse("USPS Train", smile.data.parser.IOUtils.getTestDataFile("usps/zip.train"));
AttributeDataset test = parser.parse("USPS Test", smile.data.parser.IOUtils.getTestDataFile("usps/zip.test"));
double[][] x = train.toArray(new double[train.size()][]);
int[] y = train.toArray(new int[train.size()]);
double[][] testx = test.toArray(new double[test.size()][]);
int[] testy = test.toArray(new int[test.size()]);
for (int i = 0; i < y.length; i++) {
if (y[i] != 0)
y[i] = 1;
}
for (int i = 0; i < testy.length; i++) {
if (testy[i] != 0)
testy[i] = 1;
}
AdaBoost forest = new AdaBoost(x, y, 100, 6);
int error = 0;
for (int i = 0; i < testx.length; i++) {
if (forest.predict(testx[i]) != testy[i]) {
error++;
}
}
System.out.println("AdaBoost error = " + error);
System.out.format("USPS error rate = %.2f%%%n", 100.0 * error / testx.length);
assertTrue(error <= 25);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.parser.DelimitedTextParser in project smile by haifengl.
the class AdaBoostTest method testUSPSNominal.
/**
* Test of learn method, of class AdaBoost.
*/
@Test
public void testUSPSNominal() {
System.out.println("USPS nominal");
DelimitedTextParser parser = new DelimitedTextParser();
parser.setResponseIndex(new NominalAttribute("class"), 0);
try {
AttributeDataset train = parser.parse("USPS Train", smile.data.parser.IOUtils.getTestDataFile("usps/zip.train"));
AttributeDataset test = parser.parse("USPS Test", smile.data.parser.IOUtils.getTestDataFile("usps/zip.test"));
double[][] x = train.toArray(new double[train.size()][]);
int[] y = train.toArray(new int[train.size()]);
double[][] testx = test.toArray(new double[test.size()][]);
int[] testy = test.toArray(new int[test.size()]);
for (double[] xi : x) {
for (int i = 0; i < xi.length; i++) {
xi[i] = Math.round(255 * (xi[i] + 1) / 2);
}
}
for (double[] xi : testx) {
for (int i = 0; i < xi.length; i++) {
xi[i] = Math.round(255 * (xi[i] + 1) / 2);
}
}
Attribute[] attributes = new Attribute[256];
String[] values = new String[attributes.length];
for (int i = 0; i < attributes.length; i++) {
values[i] = String.valueOf(i);
}
for (int i = 0; i < attributes.length; i++) {
attributes[i] = new NominalAttribute("V" + i, values);
}
for (int i = 0; i < y.length; i++) {
if (y[i] != 0)
y[i] = 1;
}
for (int i = 0; i < testy.length; i++) {
if (testy[i] != 0)
testy[i] = 1;
}
AdaBoost forest = new AdaBoost(attributes, x, y, 100, 6);
int error = 0;
for (int i = 0; i < testx.length; i++) {
if (forest.predict(testx[i]) != testy[i]) {
error++;
}
}
System.out.println("AdaBoost error = " + error);
System.out.format("USPS error rate = %.2f%%%n", 100.0 * error / testx.length);
assertTrue(error <= 25);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.parser.DelimitedTextParser in project smile by haifengl.
the class SpectralClusteringTest method testUSPSNystrom.
/**
* Test of learn method, of class SpectralClustering.
*/
@Test
public void testUSPSNystrom() {
System.out.println("USPS Nystrom approximation");
DelimitedTextParser parser = new DelimitedTextParser();
parser.setResponseIndex(new NominalAttribute("class"), 0);
try {
AttributeDataset train = parser.parse("USPS Train", smile.data.parser.IOUtils.getTestDataFile("usps/zip.train"));
double[][] x = train.toArray(new double[train.size()][]);
int[] y = train.toArray(new int[train.size()]);
SpectralClustering spectral = new SpectralClustering(x, 10, 100, 8.0);
AdjustedRandIndex ari = new AdjustedRandIndex();
RandIndex rand = new RandIndex();
double r = rand.measure(y, spectral.getClusterLabel());
double r2 = ari.measure(y, spectral.getClusterLabel());
System.out.format("Training rand index = %.2f%%\tadjusted rand index = %.2f%%%n", 100.0 * r, 100.0 * r2);
assertTrue(r > 0.8);
assertTrue(r2 > 0.35);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.parser.DelimitedTextParser in project smile by haifengl.
the class SpectralClusteringTest method testUSPS.
/**
* Test of learn method, of class SpectralClustering.
*/
@Test
public void testUSPS() {
System.out.println("USPS");
DelimitedTextParser parser = new DelimitedTextParser();
parser.setResponseIndex(new NominalAttribute("class"), 0);
try {
AttributeDataset train = parser.parse("USPS Train", smile.data.parser.IOUtils.getTestDataFile("usps/zip.train"));
double[][] x = train.toArray(new double[train.size()][]);
int[] y = train.toArray(new int[train.size()]);
SpectralClustering spectral = new SpectralClustering(x, 10, 8.0);
AdjustedRandIndex ari = new AdjustedRandIndex();
RandIndex rand = new RandIndex();
double r = rand.measure(y, spectral.getClusterLabel());
double r2 = ari.measure(y, spectral.getClusterLabel());
System.out.format("Training rand index = %.2f%%\tadjusted rand index = %.2f%%%n", 100.0 * r, 100.0 * r2);
assertTrue(r > 0.85);
assertTrue(r2 > 0.45);
} catch (Exception ex) {
System.err.println(ex);
}
}
use of smile.data.parser.DelimitedTextParser in project smile by haifengl.
the class GAFeatureSelectionTest method testLearn.
/**
* Test of learn method, of class GAFeatureSelection.
*/
@Test
public void testLearn() {
System.out.println("learn");
int size = 100;
int generation = 20;
ClassifierTrainer<double[]> trainer = new LDA.Trainer();
ClassificationMeasure measure = new Accuracy();
DelimitedTextParser parser = new DelimitedTextParser();
parser.setResponseIndex(new NominalAttribute("class"), 0);
try {
AttributeDataset train = parser.parse("USPS Train", smile.data.parser.IOUtils.getTestDataFile("usps/zip.train"));
AttributeDataset test = parser.parse("USPS Test", smile.data.parser.IOUtils.getTestDataFile("usps/zip.test"));
double[][] x = train.toArray(new double[train.size()][]);
int[] y = train.toArray(new int[train.size()]);
double[][] testx = test.toArray(new double[test.size()][]);
int[] testy = test.toArray(new int[test.size()]);
GAFeatureSelection instance = new GAFeatureSelection();
BitString[] result = instance.learn(size, generation, trainer, measure, x, y, testx, testy);
for (BitString bits : result) {
System.out.format("%.2f%% %d ", 100 * bits.fitness(), Math.sum(bits.bits()));
for (int i = 0; i < x[0].length; i++) {
System.out.print(bits.bits()[i] + " ");
}
System.out.println();
}
assertTrue(result[result.length - 1].fitness() > 0.88);
} catch (Exception ex) {
System.err.println(ex);
}
}
Aggregations