import static java.lang.System.out;
import java.util.*;
import javastat.*;
import javastat.multivariate.*;
import static javastat.util.Output.*;
import javastat.util.*;
/**
*
*
<p>Example: class DiscriminantAnalysis.</p>
*
<p>Data Source: Fisher's iris data</p>
*/
public class DiscriminantAnalysisExample
{
public
static void main(String arg[])
{
DataManager dm = new DataManager();
double[][] testdata = new
double[4][];
dm.scanFileToMatrix(System.getProperty("user.dir") +
System.getProperty("file.separator") +
"iris.txt", testdata, 4);
double[] testgroup = new
double[150];
for (int j = 0; j < 3; j++)
{
for (int i = 0; i < 50; i++)
{
testgroup[j * 50 + i] = j + 1;
}
}
DiscriminantAnalysis testclass1 = new DiscriminantAnalysis(testgroup,
testdata);
double[][] linearDiscriminants1 = {testclass1.linearDiscriminants[0],
testclass1.linearDiscriminants[1]};
DiscriminantAnalysis testclass2 = new DiscriminantAnalysis();
double[][] linearDiscriminants2 =
testclass2.linearDiscriminants(
testgroup, testdata);
double[][] predata = new
double[4][];
dm.scanFileToMatrix(System.getProperty("user.dir") +
System.getProperty("file.separator") +
"iris2.txt", predata, 4);
int[]
predictedGroup2 = testclass2.predictedGroup(testgroup,
testdata,
predata);
double errorRate = 0.0;
for (int i
= 0; i < predictedGroup2.length; i++)
{
if ((int) testgroup[i] != predictedGroup2[i])
{
errorRate += 1.0;
}
}
errorRate /=
predictedGroup2.length;
DiscriminantAnalysis testclass3 = new DiscriminantAnalysis(testgroup,
testdata, testdata);
double[][] linearDiscriminants3 =
{testclass3.linearDiscriminants[0],
testclass3.linearDiscriminants[1]};
int[]
predictedGroup3 = testclass3.predictedGroup;
int preg
= predictedGroup3[predictedGroup3.length - 1];
Hashtable argument1 = new Hashtable();
StatisticalAnalysis testclass4 = new DiscriminantAnalysis(argument1,
testgroup, testdata).statisticalAnalysis;
linearDiscriminants1 = (double[][])
testclass4.output.get(
LINEAR_DISCRIMINANTS);
Hashtable argument2 = new Hashtable();
DiscriminantAnalysis testclass5 =
new DiscriminantAnalysis(argument2,
null);
linearDiscriminants2 =
testclass5.linearDiscriminants(argument2, testgroup, testdata);
predictedGroup2 = testclass5.predictedGroup(argument2,
testgroup,
testdata, predata);
errorRate = 0.0;
for (int i
= 0; i < predictedGroup2.length; i++)
{
if ((int) testgroup[i] != predictedGroup2[i])
{
errorRate += 1.0;
}
}
errorRate /=
predictedGroup2.length;
Hashtable argument3 = new Hashtable();
StatisticalAnalysis testclass6 = new DiscriminantAnalysis(argument3,
testgroup, testdata, testdata).statisticalAnalysis;
linearDiscriminants3 = (double[][])
testclass6.output.get(
LINEAR_DISCRIMINANTS);
predictedGroup3 =
(int[])
testclass6.output.get(PREDICTED_GROUP);
preg = predictedGroup3[predictedGroup3.length
- 1];
}
}
Results:
The
first discriminant based on non-null constructor =
[-0.946
, -1.803 , 1.523 , 4.002]
The
second discriminant based on non-null constructor =
[0.031 ,
1.382 , -1.551 , 4.32]
The
first discriminant based on null constructor = [-0.946 , -1.803 , 1.523 , 4.002]
The second
discriminant based on null constructor = [0.031 , 1.382 , -1.551 , 4.32]
The
error rate based on null constructor = 0.02
{LINEAR_DISCRIMINANTS=[[D@
PREDICTED_GROUP=[I@1d58aae}
The
first discriminant based on non-null constructor =
[-0.946
, -1.803 , 1.523 , 4.002]
The
second discriminant based on non-null constructor =
[0.031 ,
1.382 , -1.551 , 4.32]
The
last observation of Iris data was assigned to = group 3.0
{LINEAR_DISCRIMINANTS=[[D@83cc67,
PREDICTED_GROUP=[I@e09713}