Skip to content
This repository was archived by the owner on Feb 21, 2023. It is now read-only.

Examples

Yannis edited this page Dec 12, 2016 · 2 revisions

###Training and activation (Objective-C, using Matrices):

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]);

###Training and activation (Swift, using Matrices):

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")
Clone this wiki locally