From 41127fd260c70f7ed6c47ba6447e0b1c37fc4f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Zbyszy=C5=84ski?= <m.zbyszynski@gold.ac.uk> Date: Wed, 27 Sep 2017 13:42:14 +0100 Subject: [PATCH] added overload for recordSingleElement to generate a label. using in HelloRapidMix --- .../HelloRapidMix.xcodeproj/project.pbxproj | 76 +++++++++++++++---- examples/HelloRapidMix/HelloRapidMix/main.cpp | 14 ++-- src/machineLearning/trainingData.cpp | 7 ++ src/machineLearning/trainingData.h | 3 + 4 files changed, 80 insertions(+), 20 deletions(-) diff --git a/examples/HelloRapidMix/HelloRapidMix.xcodeproj/project.pbxproj b/examples/HelloRapidMix/HelloRapidMix.xcodeproj/project.pbxproj index cdbf610..2f0638d 100644 --- a/examples/HelloRapidMix/HelloRapidMix.xcodeproj/project.pbxproj +++ b/examples/HelloRapidMix/HelloRapidMix.xcodeproj/project.pbxproj @@ -23,6 +23,25 @@ BE2D955E1EFD4FB300014209 /* seriesClassification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2D955C1EFD4FB300014209 /* seriesClassification.cpp */; }; BE2D95651EFD504C00014209 /* rapidGVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2D95631EFD504C00014209 /* rapidGVF.cpp */; }; BE2D9BE11EFD507700014209 /* GVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE2D9BDC1EFD507700014209 /* GVF.cpp */; }; + BEF47B281F7BD119005B0C35 /* rapidXMM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B261F7BD118005B0C35 /* rapidXMM.cpp */; }; + BEF47B291F7BD1A2005B0C35 /* xmmKMeans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F5D1EE0294F0025DE57 /* xmmKMeans.cpp */; }; + BEF47B2A1F7BD1A7005B0C35 /* xmmKMeansParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F5F1EE0294F0025DE57 /* xmmKMeansParameters.cpp */; }; + BEF47B2B1F7BD1B1005B0C35 /* xmmHierarchicalHmm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F551EE0294F0025DE57 /* xmmHierarchicalHmm.cpp */; }; + BEF47B2C1F7BD1B3005B0C35 /* xmmHmmParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F571EE0294F0025DE57 /* xmmHmmParameters.cpp */; }; + BEF47B2D1F7BD1B6005B0C35 /* xmmHmmSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F5A1EE0294F0025DE57 /* xmmHmmSingleClass.cpp */; }; + BEF47B2E1F7BD1C0005B0C35 /* xmmGmm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F4E1EE0294F0025DE57 /* xmmGmm.cpp */; }; + BEF47B2F1F7BD1C2005B0C35 /* xmmGmmParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F501EE0294F0025DE57 /* xmmGmmParameters.cpp */; }; + BEF47B301F7BD1C4005B0C35 /* xmmGmmSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F521EE0294F0025DE57 /* xmmGmmSingleClass.cpp */; }; + BEF47B311F7BD1D0005B0C35 /* xmmAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F341EE0294F0025DE57 /* xmmAttribute.cpp */; }; + BEF47B321F7BD1D3005B0C35 /* xmmJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F381EE0294F0025DE57 /* xmmJson.cpp */; }; + BEF47B331F7BD1DB005B0C35 /* xmmGaussianDistribution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F3C1EE0294F0025DE57 /* xmmGaussianDistribution.cpp */; }; + BEF47B341F7BD1E1005B0C35 /* xmmPhrase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F481EE0294F0025DE57 /* xmmPhrase.cpp */; }; + BEF47B351F7BD1E2005B0C35 /* xmmTrainingSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F4A1EE0294F0025DE57 /* xmmTrainingSet.cpp */; }; + BEF47B361F7BD226005B0C35 /* xmmModelSharedParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F431EE0294F0025DE57 /* xmmModelSharedParameters.cpp */; }; + BEF47B371F7BD237005B0C35 /* xmmModelSingleClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE021F451EE0294F0025DE57 /* xmmModelSingleClass.cpp */; }; + BEF47B3A1F7BD271005B0C35 /* searchWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B381F7BD271005B0C35 /* searchWindow.cpp */; }; + BEF47B3D1F7BD27D005B0C35 /* fastDTW.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B3B1F7BD27D005B0C35 /* fastDTW.cpp */; }; + BEF47B401F7BD287005B0C35 /* warpPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF47B3E1F7BD287005B0C35 /* warpPath.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -40,8 +59,6 @@ /* Begin PBXFileReference section */ BE021EEA1EE028610025DE57 /* machineLearning.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = machineLearning.cpp; sourceTree = "<group>"; }; BE021EEB1EE028610025DE57 /* machineLearning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = machineLearning.h; sourceTree = "<group>"; }; - BE021EED1EE028610025DE57 /* rapidXmmTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rapidXmmTools.cpp; sourceTree = "<group>"; }; - BE021EEE1EE028610025DE57 /* rapidXmmTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidXmmTools.h; sourceTree = "<group>"; }; BE021EEF1EE028610025DE57 /* trainingData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trainingData.cpp; sourceTree = "<group>"; }; BE021EF01EE028610025DE57 /* trainingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trainingData.h; sourceTree = "<group>"; }; BE021EF11EE028610025DE57 /* rapidmix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidmix.h; sourceTree = "<group>"; }; @@ -229,6 +246,14 @@ BE2D9BDE1EFD507700014209 /* GVFGesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GVFGesture.h; sourceTree = "<group>"; }; BE2D9BDF1EFD507700014209 /* GVFUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GVFUtils.h; sourceTree = "<group>"; }; BE2D9BE01EFD507700014209 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; }; + BEF47B261F7BD118005B0C35 /* rapidXMM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rapidXMM.cpp; sourceTree = "<group>"; }; + BEF47B271F7BD118005B0C35 /* rapidXMM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rapidXMM.h; sourceTree = "<group>"; }; + BEF47B381F7BD271005B0C35 /* searchWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = searchWindow.cpp; sourceTree = "<group>"; }; + BEF47B391F7BD271005B0C35 /* searchWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = searchWindow.h; sourceTree = "<group>"; }; + BEF47B3B1F7BD27D005B0C35 /* fastDTW.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fastDTW.cpp; sourceTree = "<group>"; }; + BEF47B3C1F7BD27D005B0C35 /* fastDTW.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastDTW.h; sourceTree = "<group>"; }; + BEF47B3E1F7BD287005B0C35 /* warpPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = warpPath.cpp; sourceTree = "<group>"; }; + BEF47B3F1F7BD287005B0C35 /* warpPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = warpPath.h; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -256,25 +281,16 @@ BE021EE91EE028610025DE57 /* machineLearning */ = { isa = PBXGroup; children = ( + BEF47B251F7BD118005B0C35 /* rapidXMM */, BE2D95621EFD504C00014209 /* rapidGVF */, BE021EEA1EE028610025DE57 /* machineLearning.cpp */, BE021EEB1EE028610025DE57 /* machineLearning.h */, - BE021EEC1EE028610025DE57 /* rapidXmmTools */, BE021EEF1EE028610025DE57 /* trainingData.cpp */, BE021EF01EE028610025DE57 /* trainingData.h */, ); path = machineLearning; sourceTree = "<group>"; }; - BE021EEC1EE028610025DE57 /* rapidXmmTools */ = { - isa = PBXGroup; - children = ( - BE021EED1EE028610025DE57 /* rapidXmmTools.cpp */, - BE021EEE1EE028610025DE57 /* rapidXmmTools.h */, - ); - path = rapidXmmTools; - sourceTree = "<group>"; - }; BE021EF21EE028610025DE57 /* signalProcessing */ = { isa = PBXGroup; children = ( @@ -297,6 +313,12 @@ BE021F001EE028950025DE57 /* src */ = { isa = PBXGroup; children = ( + BEF47B3E1F7BD287005B0C35 /* warpPath.cpp */, + BEF47B3F1F7BD287005B0C35 /* warpPath.h */, + BEF47B3B1F7BD27D005B0C35 /* fastDTW.cpp */, + BEF47B3C1F7BD27D005B0C35 /* fastDTW.h */, + BEF47B381F7BD271005B0C35 /* searchWindow.cpp */, + BEF47B391F7BD271005B0C35 /* searchWindow.h */, BE286DF51EFD54DD00E49A85 /* dtw.cpp */, BE286DF61EFD54DD00E49A85 /* dtw.h */, BE286DF21EFD516600E49A85 /* rapidStream.cpp */, @@ -768,6 +790,15 @@ path = ../../dependencies/GVF; sourceTree = "<group>"; }; + BEF47B251F7BD118005B0C35 /* rapidXMM */ = { + isa = PBXGroup; + children = ( + BEF47B261F7BD118005B0C35 /* rapidXMM.cpp */, + BEF47B271F7BD118005B0C35 /* rapidXMM.h */, + ); + path = rapidXMM; + sourceTree = "<group>"; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -830,13 +861,32 @@ BE0220001EE02ABE0025DE57 /* classification.cpp in Sources */, BE0220011EE02AC00025DE57 /* knnClassification.cpp in Sources */, BE0220041EE02ACA0025DE57 /* regression.cpp in Sources */, + BEF47B281F7BD119005B0C35 /* rapidXMM.cpp in Sources */, BE2D9BE11EFD507700014209 /* GVF.cpp in Sources */, BE2D955B1EFD4F8300014209 /* svmClassification.cpp in Sources */, + BEF47B3D1F7BD27D005B0C35 /* fastDTW.cpp in Sources */, BE2D955E1EFD4FB300014209 /* seriesClassification.cpp in Sources */, - BE286DF71EFD54DD00E49A85 /* dtw.cpp in Sources */, + BEF47B2E1F7BD1C0005B0C35 /* xmmGmm.cpp in Sources */, BE2D95651EFD504C00014209 /* rapidGVF.cpp in Sources */, BE0220061EE02AE90025DE57 /* jsoncpp.cpp in Sources */, + BEF47B331F7BD1DB005B0C35 /* xmmGaussianDistribution.cpp in Sources */, + BEF47B2F1F7BD1C2005B0C35 /* xmmGmmParameters.cpp in Sources */, + BE286DF71EFD54DD00E49A85 /* dtw.cpp in Sources */, + BEF47B2A1F7BD1A7005B0C35 /* xmmKMeansParameters.cpp in Sources */, + BEF47B401F7BD287005B0C35 /* warpPath.cpp in Sources */, + BEF47B301F7BD1C4005B0C35 /* xmmGmmSingleClass.cpp in Sources */, + BEF47B351F7BD1E2005B0C35 /* xmmTrainingSet.cpp in Sources */, + BEF47B311F7BD1D0005B0C35 /* xmmAttribute.cpp in Sources */, + BEF47B371F7BD237005B0C35 /* xmmModelSingleClass.cpp in Sources */, + BEF47B361F7BD226005B0C35 /* xmmModelSharedParameters.cpp in Sources */, + BEF47B321F7BD1D3005B0C35 /* xmmJson.cpp in Sources */, + BEF47B341F7BD1E1005B0C35 /* xmmPhrase.cpp in Sources */, + BEF47B3A1F7BD271005B0C35 /* searchWindow.cpp in Sources */, + BEF47B2B1F7BD1B1005B0C35 /* xmmHierarchicalHmm.cpp in Sources */, + BEF47B2C1F7BD1B3005B0C35 /* xmmHmmParameters.cpp in Sources */, + BEF47B291F7BD1A2005B0C35 /* xmmKMeans.cpp in Sources */, BE0220071EE02AFE0025DE57 /* trainingData.cpp in Sources */, + BEF47B2D1F7BD1B6005B0C35 /* xmmHmmSingleClass.cpp in Sources */, BE286E051EFD553700E49A85 /* libsvm.cpp in Sources */, BE286DF41EFD516600E49A85 /* rapidStream.cpp in Sources */, BE0220081EE02B0F0025DE57 /* machineLearning.cpp in Sources */, diff --git a/examples/HelloRapidMix/HelloRapidMix/main.cpp b/examples/HelloRapidMix/HelloRapidMix/main.cpp index 2bd63cc..44a91ba 100644 --- a/examples/HelloRapidMix/HelloRapidMix/main.cpp +++ b/examples/HelloRapidMix/HelloRapidMix/main.cpp @@ -16,26 +16,26 @@ int main(int argc, const char * argv[]) { rapidmix::trainingData myData; //Create a place to hold training Data //Setting up the first element of training data - std::vector<double> input = { 48 }; - std::vector<double> output = { 130.81 }; - myData.addElement(input, output); + std::vector<double> input { 48 }; + std::vector<double> output { 130.81 }; + myData.recordSingleElement(input, output); //More elements input = { 54 }; output = { 185.00 }; - myData.addElement(input, output); + myData.recordSingleElement(input, output); input = { 60 }; output = { 261.63 }; - myData.addElement(input, output); + myData.recordSingleElement(input, output); input = { 66 }; output = { 369.994 }; - myData.addElement(input, output); + myData.recordSingleElement(input, output); input = { 72 }; output = { 523.25 }; - myData.addElement(input, output); + myData.recordSingleElement(input, output); //Train the machine learning model with the data mtofRegression.train(myData); diff --git a/src/machineLearning/trainingData.cpp b/src/machineLearning/trainingData.cpp index 2bafca6..f666e7a 100644 --- a/src/machineLearning/trainingData.cpp +++ b/src/machineLearning/trainingData.cpp @@ -67,6 +67,13 @@ namespace rapidmix { return returnId; }; + uint32_t trainingData::recordSingleElement(const std::vector<double> &input, const std::vector<double> &output) { + startRecording(); + int returnId = addElement(input, output); + stopRecording(); + return returnId; + }; + uint32_t trainingData::recordSingleElement(const std::string &label, const std::vector<double> &input, const std::vector<double> &output) { startRecording(label); int returnId = addElement(input, output); diff --git a/src/machineLearning/trainingData.h b/src/machineLearning/trainingData.h index 616a765..614f967 100644 --- a/src/machineLearning/trainingData.h +++ b/src/machineLearning/trainingData.h @@ -62,6 +62,9 @@ namespace rapidmix { /** Create a phrase with a single element that has a label and input. Returns phrase id. */ uint32_t recordSingleElement(const std::string &label, const std::vector<double> &input); + /** Create a phrase with a single element that has input, and output. Returns phrase id. */ + uint32_t recordSingleElement(const std::vector<double> &input, const std::vector<double> &output); + /** Create a phrase with a single element that has a label, input, and output. Returns phrase id. */ uint32_t recordSingleElement(const std::string &label, const std::vector<double> &input, const std::vector<double> &output); -- GitLab