Example #1
0
/*
This example uses a Generalized Linear Model (GLM), in this case a LOGIT to fit to the Wisconsin Breast Cancer
data set.  The output is shown below.  The solution coefficients are shown.

Actual input count: 9
Actual output count: 1
Iteration #1, Error: inf
Iteration #2, Error: 0.63698368
Iteration #3, Error: 0.37629115
Iteration #4, Error: 0.24127030
Iteration #5, Error: 0.12430888
Iteration #6, Error: 0.03587100
Iteration #7, Error: 0.00312089
Ideal: 0.00, Actual: 0.02
Ideal: 0.00, Actual: 0.91
Ideal: 0.00, Actual: 0.01
Ideal: 0.00, Actual: 0.77
Ideal: 0.00, Actual: 0.02
Ideal: 1.00, Actual: 1.00
Ideal: 0.00, Actual: 0.09
Ideal: 0.00, Actual: 0.01
Ideal: 0.00, Actual: 0.01
...
Ideal: 0.00, Actual: 0.00
Ideal: 1.00, Actual: 0.94
Ideal: 0.00, Actual: 0.00
Ideal: 0.00, Actual: 0.01
Ideal: 0.00, Actual: 0.00
Ideal: 0.00, Actual: 0.00
Ideal: 1.00, Actual: 0.99
Ideal: 1.00, Actual: 0.95
Ideal: 1.00, Actual: 0.98
*/
void ExampleGLM(int argIndex, int argc, char **argv) {	
	char filename[FILENAME_MAX];
	NORM_DATA *norm;
	DATA_SET *data;
	REGRESSION_MODEL *reg;
	double *ideal, actual, *input, error;
	unsigned int i, iteration;

	LocateFile("breast-cancer-wisconsin.csv",filename,FILENAME_MAX);
	
	/* Normalize the data.  If you use a different data set, this area will need to be
	   updated. */
	norm = NormCreate();
	NormDefIgnore(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefPass(norm);
	NormDefReplace(norm,4,1,0);

	NormAnalyze(norm,filename);
	data = NormProcess(norm,filename,9,1);
	
	printf("Actual input count: %i\n", data->inputCount);
	printf("Actual output count: %i\n", data->idealCount);

	reg = RegressionCreate(data->inputCount,LinkLOGIT);
	
	iteration = 0;
    do {
		iteration++;
		error = RegressionReweightLeastSquares(reg,data);
		printf("Iteration #%i, Error: %.8f\n",iteration,error);
	} while (iteration < 1000 && error > 0.01);

	/* Display results */
	for(i=0;i<data->recordCount;i++) {
		ideal = DataGetIdeal(data,i);
		input = DataGetInput(data,i);
		actual = RegressionCalculate(reg,input);
		printf("Ideal: %.2f, Actual: %.2f\n",ideal[0],actual);
	}

	NormDelete(norm);
	DataDelete(data);
	RegressionDelete(reg);
}
Example #2
0
/*
    This example takes awhile to execute.  It uses simulated annealing to fit an RBF network to the iris data set.
    You can see the output from the example here.  As you can see, it took 2000 iterations to train to 0.78.
    You can see that it is able to classify many of the iris species correctly, but not all.

    This example uses one-of-n encoding for the iris species.  Equilateral could have also been used.

Iteration #1: Score: 0.500285
Iteration #2: Score: 0.500285
Iteration #3: Score: 0.500285
Iteration #4: Score: 0.500285
Iteration #5: Score: 0.500285
Iteration #6: Score: 0.500285
Iteration #7: Score: 0.500285
Iteration #8: Score: 0.500285
Iteration #9: Score: 0.500285
Iteration #10: Score: 0.500285
Iteration #11: Score: 0.500285
Iteration #12: Score: 0.500285
Iteration #13: Score: 0.500285
Iteration #14: Score: 0.500285
Iteration #15: Score: 0.500285
Iteration #16: Score: 0.500285
Iteration #17: Score: 0.500285
Iteration #18: Score: 0.500285
Iteration #19: Score: 0.500285
Iteration #20: Score: 0.500285
Iteration #21: Score: 0.500285
Iteration #22: Score: 0.500285
Iteration #23: Score: 0.500285
Iteration #24: Score: 0.500285
Iteration #25: Score: 0.500285
Iteration #26: Score: 0.500285
Iteration #27: Score: 0.500285
Iteration #28: Score: 0.500285
Iteration #29: Score: 0.500285
Iteration #30: Score: 0.500285
Iteration #31: Score: 0.500285
Iteration #32: Score: 0.500285
Iteration #33: Score: 0.500285
Iteration #34: Score: 0.500285
Iteration #35: Score: 0.500285
Iteration #36: Score: 0.500285
Iteration #37: Score: 0.500285
Iteration #38: Score: 0.500285
Iteration #39: Score: 0.500285
Iteration #40: Score: 0.500285
Iteration #41: Score: 0.500285
Iteration #42: Score: 0.500285
Iteration #43: Score: 0.500285
Iteration #44: Score: 0.500285
Iteration #45: Score: 0.500285
Iteration #46: Score: 0.500285
Iteration #47: Score: 0.500285
Iteration #48: Score: 0.500285
Iteration #49: Score: 0.500285
Iteration #50: Score: 0.500285
Iteration #51: Score: 0.500285
Iteration #52: Score: 0.500285
Iteration #53: Score: 0.500285
Iteration #54: Score: 0.500285
Iteration #55: Score: 0.500285
Iteration #56: Score: 0.500285
Iteration #57: Score: 0.500285
Iteration #58: Score: 0.500285
Iteration #59: Score: 0.500285
Iteration #60: Score: 0.500285
Iteration #61: Score: 0.500285
Iteration #62: Score: 0.500285
Iteration #63: Score: 0.500285
Iteration #64: Score: 0.500285
Iteration #65: Score: 0.500285
Iteration #66: Score: 0.500285
Iteration #67: Score: 0.500285
Iteration #68: Score: 0.500285
Iteration #69: Score: 0.500285
Iteration #70: Score: 0.500285
Iteration #71: Score: 0.500285
Iteration #72: Score: 0.500285
Iteration #73: Score: 0.500285
Iteration #74: Score: 0.500285
Iteration #75: Score: 0.500285
Iteration #76: Score: 0.500285
Iteration #77: Score: 0.500285
...
Iteration #1951: Score: 0.081008
Iteration #1952: Score: 0.081008
Iteration #1953: Score: 0.081008
Iteration #1954: Score: 0.081008
Iteration #1955: Score: 0.081008
Iteration #1956: Score: 0.081008
Iteration #1957: Score: 0.081008
Iteration #1958: Score: 0.081008
Iteration #1959: Score: 0.080988
Iteration #1960: Score: 0.080988
Iteration #1961: Score: 0.080988
Iteration #1962: Score: 0.080988
Iteration #1963: Score: 0.080988
Iteration #1964: Score: 0.080988
Iteration #1965: Score: 0.080988
Iteration #1966: Score: 0.080988
Iteration #1967: Score: 0.080988
Iteration #1968: Score: 0.080988
Iteration #1969: Score: 0.080988
Iteration #1970: Score: 0.080988
Iteration #1971: Score: 0.080988
Iteration #1972: Score: 0.080789
Iteration #1973: Score: 0.080725
Iteration #1974: Score: 0.080710
Iteration #1975: Score: 0.080710
Iteration #1976: Score: 0.080464
Iteration #1977: Score: 0.080153
Iteration #1978: Score: 0.080153
Iteration #1979: Score: 0.080153
Iteration #1980: Score: 0.080120
Iteration #1981: Score: 0.080021
Iteration #1982: Score: 0.080021
Iteration #1983: Score: 0.080021
Iteration #1984: Score: 0.080021
Iteration #1985: Score: 0.080021
Iteration #1986: Score: 0.080006
Iteration #1987: Score: 0.079343
Iteration #1988: Score: 0.079343
Iteration #1989: Score: 0.079343
Iteration #1990: Score: 0.078997
Iteration #1991: Score: 0.078155
Iteration #1992: Score: 0.078155
Iteration #1993: Score: 0.078155
Iteration #1994: Score: 0.078155
Iteration #1995: Score: 0.077979
Iteration #1996: Score: 0.077960
Iteration #1997: Score: 0.077717
Iteration #1998: Score: 0.077717
Iteration #1999: Score: 0.077640
Iteration #2000: Score: 0.077640
Iteration #2001: Score: 0.077640
[0.22,0.62,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.17,0.42,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.11,0.50,0.05,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.08,0.46,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.67,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.31,0.79,0.12,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.08,0.58,0.07,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.58,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.03,0.37,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.17,0.46,0.08,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.31,0.71,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.14,0.58,0.10,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.14,0.42,0.07,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.00,0.42,0.02,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.42,0.83,0.03,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.39,1.00,0.08,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.31,0.79,0.05,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.62,0.07,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.39,0.75,0.12,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.75,0.08,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.31,0.58,0.12,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.71,0.08,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.08,0.67,0.00,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.54,0.12,0.17] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.14,0.58,0.15,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.42,0.10,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.58,0.10,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.25,0.62,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.25,0.58,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.11,0.50,0.10,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.14,0.46,0.10,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.31,0.58,0.08,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.25,0.87,0.08,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.33,0.92,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.17,0.46,0.08,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.50,0.03,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.33,0.62,0.05,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.17,0.46,0.08,0.00] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.03,0.42,0.05,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.58,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.62,0.05,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.06,0.12,0.05,0.08] -> Actual: [Iris-versicolor], Ideal: [Iris-setosa]
[0.03,0.50,0.05,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.62,0.10,0.21] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.75,0.15,0.13] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.14,0.42,0.07,0.08] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.22,0.75,0.10,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.08,0.50,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.28,0.71,0.08,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.19,0.54,0.07,0.04] -> Actual: [Iris-setosa], Ideal: [Iris-setosa]
[0.75,0.50,0.63,0.54] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.58,0.50,0.59,0.58] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.72,0.46,0.66,0.58] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.33,0.12,0.51,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.61,0.33,0.61,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.39,0.33,0.59,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.56,0.54,0.63,0.62] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.17,0.17,0.39,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.64,0.37,0.61,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.25,0.29,0.49,0.54] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.19,0.00,0.42,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.44,0.42,0.54,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.47,0.08,0.51,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.50,0.37,0.63,0.54] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.36,0.37,0.44,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.67,0.46,0.58,0.54] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.36,0.42,0.59,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.42,0.29,0.53,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.53,0.08,0.59,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.36,0.21,0.49,0.42] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.44,0.50,0.64,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.50,0.33,0.51,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.56,0.21,0.66,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.50,0.33,0.63,0.46] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.58,0.37,0.56,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.64,0.42,0.58,0.54] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.69,0.33,0.64,0.54] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.67,0.42,0.68,0.67] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.47,0.37,0.59,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.39,0.25,0.42,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.33,0.17,0.47,0.42] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.33,0.17,0.46,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.42,0.29,0.49,0.46] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.47,0.29,0.69,0.62] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.31,0.42,0.59,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.47,0.58,0.59,0.62] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.67,0.46,0.63,0.58] -> Actual: [Iris-virginica], Ideal: [Iris-versicolor]
[0.56,0.12,0.58,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.36,0.42,0.53,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.33,0.21,0.51,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.33,0.25,0.58,0.46] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.50,0.42,0.61,0.54] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.42,0.25,0.51,0.46] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.19,0.12,0.39,0.38] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.36,0.29,0.54,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.39,0.42,0.54,0.46] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.39,0.37,0.54,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.53,0.37,0.56,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.22,0.21,0.34,0.42] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.39,0.33,0.53,0.50] -> Actual: [Iris-versicolor], Ideal: [Iris-versicolor]
[0.56,0.54,0.85,1.00] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.42,0.29,0.69,0.75] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.78,0.42,0.83,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.56,0.37,0.78,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.61,0.42,0.81,0.88] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.92,0.42,0.95,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.17,0.21,0.59,0.67] -> Actual: [Iris-versicolor], Ideal: [Iris-virginica]
[0.83,0.37,0.90,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.67,0.21,0.81,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.81,0.67,0.86,1.00] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.61,0.50,0.69,0.79] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.58,0.29,0.73,0.75] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.69,0.42,0.76,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.39,0.21,0.68,0.79] -> Actual: [Iris-versicolor], Ideal: [Iris-virginica]
[0.42,0.33,0.69,0.96] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.58,0.50,0.73,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.61,0.42,0.76,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.94,0.75,0.97,0.88] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.94,0.25,1.00,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.47,0.08,0.68,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-virginica]
[0.72,0.50,0.80,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.36,0.33,0.66,0.79] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.94,0.33,0.97,0.79] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.56,0.29,0.66,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.67,0.54,0.80,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.81,0.50,0.85,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.53,0.33,0.64,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.50,0.42,0.66,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.58,0.33,0.78,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.81,0.42,0.81,0.62] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.86,0.33,0.86,0.75] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[1.00,0.75,0.92,0.79] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.58,0.33,0.78,0.88] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.56,0.33,0.69,0.58] -> Actual: [Iris-versicolor], Ideal: [Iris-virginica]
[0.50,0.25,0.78,0.54] -> Actual: [Iris-versicolor], Ideal: [Iris-virginica]
[0.94,0.42,0.86,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.56,0.58,0.78,0.96] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.58,0.46,0.76,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.47,0.42,0.64,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.72,0.46,0.75,0.83] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.67,0.46,0.78,0.96] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.72,0.46,0.69,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.42,0.29,0.69,0.75] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.69,0.50,0.83,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.67,0.54,0.80,1.00] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.67,0.42,0.71,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.56,0.21,0.68,0.75] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.61,0.42,0.71,0.79] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.53,0.58,0.75,0.92] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
[0.44,0.42,0.69,0.71] -> Actual: [Iris-virginica], Ideal: [Iris-virginica]
 */
void ExampleAnnealIris(int argIndex, int argc, char **argv) {
	IRIS_PARAMS *params;
	NORM_DATA *norm;
	TRAIN *train;
	double *x0, *input, *ideal,y[3];
	unsigned int size,i;
	NORM_DATA_ITEM *irisSpecies;
	char *idealSpecies,*actualSpecies;
	const int kMax = 2000;

	params = (IRIS_PARAMS*)calloc(1,sizeof(IRIS_PARAMS));
	norm = NormCreate();
	params->training = create_iris_training(norm);
	params->errorCalc = ErrorCreate(TYPE_ERROR_MSE);
	params->network = RBFNetworkCreate(RBFGaussian,4,5,3);
	RBFNetworkReset(params->network);

	size = params->network->ltm_size*sizeof(double);
	x0 = (double*)calloc(size,1);
	memcpy(x0,params->network->long_term_memory,size);

	/* Extract the species definition */
	irisSpecies = NormGetColumnItem(norm, 4);
	
	train = TrainCreateAnneal(score_function,x0,size,400,0.0001,100,kMax,params);
	TrainRun(train,kMax,0.01,1);
	TrainComplete(train,params->network->long_term_memory);

	/* Perform the evaluation */
	for(i=0;i<params->training->recordCount;i++) {
		input = DataGetInput(params->training,i);
		ideal = DataGetIdeal(params->training,i);
		RBFNetworkComputeRegression(params->network, input, y);
		idealSpecies = DeNormOneOfN(irisSpecies->firstClass,irisSpecies->targetLow,irisSpecies->targetLow,ideal);
		actualSpecies = DeNormOneOfN(irisSpecies->firstClass,irisSpecies->targetLow,irisSpecies->targetLow,y);
		printf("[%.2f,%.2f,%.2f,%.2f] -> Actual: [%s], Ideal: [%s]\n",
			input[0],input[1],input[2],input[3],actualSpecies,idealSpecies);
	}
	
	DataDelete(params->training);
	ErrorDelete(params->errorCalc);
	RBFNetworkDelete(params->network);
	NormDelete(norm);
	free(params);
}
Example #3
0
void ExampleAnalyze(int argIndex, int argc, char **argv) {	
	char filename[FILENAME_MAX];
	NORM_DATA *norm;
	NORM_DATA_ITEM *col;
	NORM_DATA_CLASS *currentClass;

	LocateFile("iris.csv",filename,FILENAME_MAX);
	norm = NormCreate();
	NormDefRange(norm,0,1);
	NormDefRange(norm,0,1);
	NormDefRange(norm,0,1);
	NormDefRange(norm,0,1);
	NormDefClass(norm,NORM_CLASS_ONEOFN,0,1);
	NormAnalyze(norm,filename);
	
	col = norm->firstItem;
	while(col!=NULL) {

		if( col->type == NORM_TYPE_RANGE ) {
			printf("Column: \"%s\",actualMin=%.2f,actualHigh=%.2f\n",col->name,col->actualHigh,col->actualLow);
		} else {
			printf("Column: \"%s\",classes= ",col->name);
			currentClass = col->firstClass;
			while(currentClass!=NULL) {
				printf("\"%s\";",currentClass->name);
				currentClass = currentClass->next;
			}
			printf("\n");

		}
		col = col->next;
	}

	printf("Rows: %i\n",norm->rowCount);

	NormDelete(norm);
}