コード例 #1
0
ファイル: LRTest.cpp プロジェクト: Maple-Wang/libLAML
int main(void) {

	double data[][4] = {
			{3.5, 5.3, 0.2, -1.2},
			{4.4, 2.2, 0.3, 0.4},
			{1.3, 0.5, 4.1, 3.2}
	};

	int labels[] = {1, 2, 3};

	Classifier* logReg = new LogisticRegression();
	logReg->epsilon = 1e-5;
	logReg->feedData<4>(data, 3, 4);
	logReg->feedLabels(labels, 3);

	// Get elapsed time in seconds
	tic();
	logReg->train();
	fprintf("Elapsed time: %.3f seconds.\n", toc());

	fprintf("W:\n");
	printMatrix(*logReg->W);
	fprintf("b:\n");
	printVector(logReg->b, 3);

	// double** dataTest = data;
	double dataTest[][4] = {
			{3.5, 5.3, 0.2, -1.2},
			{4.4, 2.2, 0.3, 0.4},
			{1.3, 0.5, 4.1, 3.2}
	};

	fprintf("Ground truth:\n");
	printMatrix(*logReg->Y);
	fprintf("Predicted probability matrix:\n");
	Matrix& Prob_pred = logReg->predictLabelScoreMatrix<4>(dataTest, 3, 4);
	disp(Prob_pred);
	fprintf("Predicted label matrix:\n");
	Matrix& Y_pred = logReg->predictLabelMatrix<4>(dataTest, 3, 4);
	printMatrix(Y_pred);
	int* pred_labels = logReg->predict(dataTest, 3, 4);
	Classifier::getAccuracy(pred_labels, labels, 3);

	tic();
	std::string trainDataFilePath = "heart_scale";
	logReg = new LogisticRegression();
	DataSet& dataSet = readDataSetFromFile(trainDataFilePath);
	logReg->feedData(*dataSet.X);
	logReg->feedLabels(dataSet.Y, dataSet.nExample);
	logReg->train();

	Matrix& XTest = *dataSet.X;
	pred_labels = logReg->predict(XTest);
	int nt = XTest.getRowDimension();
	Classifier::getAccuracy(pred_labels, logReg->labels, nt);

	fprintf("Elapsed time: %.3f seconds.\n", toc());

	return EXIT_SUCCESS;

}