This repository was archived by the owner on Feb 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
Examples
Yannis edited this page Jan 12, 2018
·
2 revisions
YCMatrix *trainingData = [self matrixWithCSVName:@"housing" removeFirst:YES];
YCMatrix *trainingOutput = [trainingData getRow:13]; // Output row == 13
YCMatrix *trainingInput = [trainingData removeRow:13];
YCELMTrainer *trainer = [YCELMTrainer trainer];
YCFFN *model = (YCFFN *)[trainer train:nil inputMatrix:trainingInput outputMatrix:trainingOutput];
YCMatrix *predictedOutput = [model activateWithMatrix:trainingInput];
Cross-validation example, from data input to presentation of results:
// Change "filePath" with your file path
NSURL *url = [[NSURL alloc] initFileURLWithPath:filePath];
NSMutableArray *dataarray = [[NSArray arrayWithContentsOfCSVURL: url] mutableCopy];
// First row is taken as header
NSArray *header = [dataarray firstObject];
[dataarray removeObjectAtIndex:0];
YCDataframe *input = [YCDataframe dataframe];
for (NSArray *record in dataarray)
{
NSDictionary *recordDictionary = [NSDictionary dictionaryWithObjects:record forKeys:header];
[input addSampleWithData:recordDictionary];
}
YCDataframe *output = [YCDataframe dataframe];
// Change outputAttribute with your target (dependent) variable
NSArray *outputData = [input allValuesForAttribute:outputAttribute];
[input removeAttributeWithIdentifier:eAttribute];
[output addAttributeWithIdentifier:eAttribute data:outputData];
YCkFoldValidation *cv = [[YCkFoldValidation alloc] initWithSettings:@{@"Folds" : @10}];
// Choose the trainer/model that you wish to test
YCBackPropTrainer *trainer = [YCRpropTrainer trainer];
NSLog(@"Results:\n %@", [cv test:trainer input:input output:output]);
var trainingData = self.matrixWithCSVName("housing", removeFirst: true)
trainingData.shuffleColumns()
var cvData = trainingData.matrixWithColumnsInRange(NSMakeRange(trainingData.columns-20, 19))
trainingData = trainingData.matrixWithColumnsInRange(NSMakeRange(0, trainingData.columns-20))
var trainingOutput = trainingData.getRow(13)
var trainingInput = trainingData.removeRow(13)
var cvOutput = cvData.getRow(13)
var cvInput = cvData.removeRow(13)
var trainer = YCELMTrainer()
trainer.settings["C"] = 8
trainer.settings["Hidden Layer Size"] = 1000
var model = trainer.train(nil, inputMatrix: trainingInput, outputMatrix: trainingOutput)
var predictedOutput = model.activateWithMatrix(cvInput)
predictedOutput.subtract(cvOutput)
predictedOutput.elementWiseMultiply(predictedOutput)
var RMSE = sqrt(1.0 / Double(predictedOutput.columns) * predictedOutput.sum)
NSLog("%@", RMSE)
XCTAssertLessThan(RMSE, 9.0, "RMSE above threshold")