diff --git a/Code/MonoMutliViewClassifiers/ExecClassif.py b/Code/MonoMutliViewClassifiers/ExecClassif.py index f8fda518905289312b29dd0ccc55b7dd63034ce7..6f4ce211b298be608eb7a337239d39c192fef097 100644 --- a/Code/MonoMutliViewClassifiers/ExecClassif.py +++ b/Code/MonoMutliViewClassifiers/ExecClassif.py @@ -266,22 +266,22 @@ for viewIndex, viewArguments in enumerate(argumentDictionaries["Monoview"].value # bestClassifiersConfigs = [["1"],["1"],["1"],["1"]] try: if benchmark["Multiview"]: - # try: - # if benchmark["Multiview"]["Mumbo"]: - # for combination in itertools.combinations_with_replacement(range(len(benchmark["Multiview"]["Mumbo"])), NB_VIEW): - # classifiersNames = [benchmark["Multiview"]["Mumbo"][index] for index in combination] - # arguments = {"CL_type": "Mumbo", - # "views": args.views.split(":"), - # "NB_VIEW": len(args.views.split(":")), - # "NB_CLASS": len(args.CL_classes.split(":")), - # "LABELS_NAMES": args.CL_classes.split(":"), - # "MumboKWARGS": {"classifiersNames": classifiersNames, - # "maxIter":int(args.MU_iter[0]), "minIter":int(args.MU_iter[1]), - # "threshold":args.MU_iter[2], - # "classifiersConfigs": [argument.split(":") for argument in args.MU_config]}} - # argumentDictionaries["Multiview"].append(arguments) - # except: - # pass + try: + if benchmark["Multiview"]["Mumbo"]: + for combination in itertools.combinations_with_replacement(range(len(benchmark["Multiview"]["Mumbo"])), NB_VIEW): + classifiersNames = [benchmark["Multiview"]["Mumbo"][index] for index in combination] + arguments = {"CL_type": "Mumbo", + "views": args.views.split(":"), + "NB_VIEW": len(args.views.split(":")), + "NB_CLASS": len(args.CL_classes.split(":")), + "LABELS_NAMES": args.CL_classes.split(":"), + "MumboKWARGS": {"classifiersNames": classifiersNames, + "maxIter":int(args.MU_iter[0]), "minIter":int(args.MU_iter[1]), + "threshold":args.MU_iter[2], + "classifiersConfigs": [argument.split(":") for argument in args.MU_config]}} + argumentDictionaries["Multiview"].append(arguments) + except: + pass try: if benchmark["Multiview"]["Fusion"]: try: diff --git a/Code/MonoMutliViewClassifiers/Monoview/ExecClassifMonoView.py b/Code/MonoMutliViewClassifiers/Monoview/ExecClassifMonoView.py index 8b154b6c558ca8e19e7b559c5b1e5011edaa74e9..c12e3cc6ae3e1b7f55c2edbeb6bd5e2bc337fd27 100644 --- a/Code/MonoMutliViewClassifiers/Monoview/ExecClassifMonoView.py +++ b/Code/MonoMutliViewClassifiers/Monoview/ExecClassifMonoView.py @@ -60,46 +60,39 @@ def ExecMonoview(X, Y, name, learningRate, nbFolds, nbCores, databaseType, path, logging.debug("Done:\t Determine Train/Test split") # Begin Classification RandomForest - logging.debug("Start:\t Classification") classifierModule = getattr(MonoviewClassifiers, CL_type) classifierGridSearch = getattr(classifierModule, "gridSearch") if gridSearch: + logging.debug("Start:\t RandomSearch best settings") cl_desc = classifierGridSearch(X_train, y_train, nbFolds=nbFolds, nbCores=nbCores, metric=metric, nIter=nIter) clKWARGS = dict((str(index), desc) for index, desc in enumerate(cl_desc)) + logging.debug("Done:\t RandomSearch best settings") + logging.debug("Start:\t Training") cl_res = classifierModule.fit(X_train, y_train, NB_CORES=nbCores, **clKWARGS) t_end = time.time() - t_start - # Add result to Results DF - df_class_res = pd.DataFrame() - # df_class_res = df_class_res.append({'a_class_time':t_end, 'b_cl_desc': cl_desc, 'c_cl_res': cl_res, - # 'd_cl_score': cl_res.best_score_}, ignore_index=True) - - logging.debug("Info:\t Time for Classification: " + str(t_end) + "[s]") - logging.debug("Done:\t Classification") - - # CSV Export - # logging.debug("Start:\t Exporting to CSV") - # directory = os.path.dirname(os.path.abspath(__file__)) + "/Results-ClassMonoView/" - # filename = datetime.datetime.now().strftime("%Y_%m_%d") + "-CMV-" + name + "-" + feat - # ExportResults.exportPandasToCSV(df_class_res, directory, filename) - # logging.debug("Done:\t Exporting to CSV") + logging.debug("Info:\t Time for Training: " + str(t_end) + "[s]") + logging.debug("Done:\t Training") + logging.debug("Start:\t Predicting") # Stats Result y_test_pred = cl_res.predict(X_test) classLabelsDesc = pd.read_csv(path + fileCLD, sep=";", names=['label', 'name']) classLabelsNames = classLabelsDesc.name + logging.debug("Done:\t Predicting") #logging.debug("" + str(classLabelsNames)) classLabelsNamesList = classLabelsNames.values.tolist() #logging.debug(""+ str(classLabelsNamesList)) - logging.debug("Start:\t Statistic Results") + logging.debug("Start:\t Getting Results") #Accuracy classification score accuracy_score = ExportResults.accuracy_score(y_test, y_test_pred) logging.info("Accuracy :" +str(accuracy_score)) cl_desc = [value for key, value in sorted(clKWARGS.iteritems())] + logging.debug("Done:\t Getting Results") return [CL_type, accuracy_score, cl_desc, feat] # # Classification Report with Precision, Recall, F1 , Support # logging.debug("Info:\t Classification report:") diff --git a/Code/MonoMutliViewClassifiers/Monoview/ExecPlot.py b/Code/MonoMutliViewClassifiers/Monoview/ExecPlot.py index 5edc1d9e1d38f33564a43d0aeaf13b186cb81679..979636c29b84d4561934377f971bae7ce017c800 100644 --- a/Code/MonoMutliViewClassifiers/Monoview/ExecPlot.py +++ b/Code/MonoMutliViewClassifiers/Monoview/ExecPlot.py @@ -6,7 +6,8 @@ import argparse # for acommand line arguments import datetime # for TimeStamp in CSVFile import os # to geth path of the running script - +import matplotlib +matplotlib.use('Agg') # Import 3rd party modules import pandas as pd # for Series import numpy as np # for DataFrames diff --git a/Code/MonoMutliViewClassifiers/Monoview/ExportResults.py b/Code/MonoMutliViewClassifiers/Monoview/ExportResults.py index 85841f4f258de885d4af3161c2eb27d3a6f078e3..68368d389708b768cac2ac8d649ffbf5c87d65ef 100644 --- a/Code/MonoMutliViewClassifiers/Monoview/ExportResults.py +++ b/Code/MonoMutliViewClassifiers/Monoview/ExportResults.py @@ -11,6 +11,8 @@ import pandas as pd # for Series and DataFrames import numpy as np # for Numpy Arrays import matplotlib.pyplot as plt # for Plots from scipy.interpolate import interp1d # to Interpolate Data +import matplotlib +matplotlib.use('Agg') from matplotlib.offsetbox import AnchoredOffsetbox, TextArea, HPacker # to generate the Annotations in plot from pylab import rcParams # to change size of plot from sklearn import metrics # For stastics on classification diff --git a/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py b/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py index ad434d7f7180cf529db28205f7dc11db45b1178c..01557c51d67e90677c137488c1a5656d35d24de8 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py +++ b/Code/MonoMutliViewClassifiers/Multiview/ExecMultiview.py @@ -79,7 +79,7 @@ def ExecMultiview(DATASET, name, learningRate, nbFolds, nbCores, databaseType, p if gridSearch: - logging.info("Start:\t Gridsearching best settings for monoview classifiers") + logging.info("Start:\t Randomsearching best settings for monoview classifiers") bestSettings, fusionConfig = classifierGridSearch(DATASET, classificationKWARGS, learningIndices , metric=metric, nIter=nIter) classificationKWARGS["classifiersConfigs"] = bestSettings @@ -87,8 +87,9 @@ def ExecMultiview(DATASET, name, learningRate, nbFolds, nbCores, databaseType, p classificationKWARGS["fusionMethodConfig"] = fusionConfig except: pass - logging.info("Done:\t Gridsearching best settings for monoview classifiers") + logging.info("Done:\t Randomsearching best settings for monoview classifiers") + logging.info("Start:\t Classification") # Begin Classification for foldIdx, fold in enumerate(kFolds): if fold != range(datasetLength): diff --git a/Code/MonoMutliViewClassifiers/Multiview/Fusion/analyzeResults.py b/Code/MonoMutliViewClassifiers/Multiview/Fusion/analyzeResults.py index 6c30126c80ec228f09abe7730dd402284c68ca59..2ecd6283b687a413fdc3e51c5cd48a8821e37f6f 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Fusion/analyzeResults.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Fusion/analyzeResults.py @@ -1,11 +1,14 @@ from sklearn.metrics import precision_recall_fscore_support, accuracy_score, classification_report import numpy as np +import matplotlib +matplotlib.use('Agg') import matplotlib.pyplot as plt import operator from datetime import timedelta as hms from Methods import * import Methods.LateFusion + def error(testLabels, computedLabels): error = sum(map(operator.ne, computedLabels, testLabels)) return float(error) * 100 / len(computedLabels) diff --git a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py index 057b64744eecd7d6c56689cd6f68036ebdfd9b2c..7a71219a0f8b03e5ee32d5183466288a8df632db 100644 --- a/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py +++ b/Code/MonoMutliViewClassifiers/Multiview/Mumbo/analyzeResults.py @@ -1,5 +1,7 @@ from sklearn.metrics import precision_recall_fscore_support, accuracy_score, classification_report import numpy as np +import matplotlib +matplotlib.use('Agg') import matplotlib.pyplot as plt import operator from datetime import timedelta as hms @@ -8,6 +10,7 @@ from Classifiers import * import logging + def findMainView(bestViews): views = list(set(bestViews)) viewCount = np.array([list(bestViews).count(view) for view in views]) diff --git a/Code/MonoMutliViewClassifiers/ResultAnalysis.py b/Code/MonoMutliViewClassifiers/ResultAnalysis.py index c175a59a0240deda78cdac3eb5c8ce8f96e93d4b..eee8f24cb77316958843b1b8d178d6446d1a7a0a 100644 --- a/Code/MonoMutliViewClassifiers/ResultAnalysis.py +++ b/Code/MonoMutliViewClassifiers/ResultAnalysis.py @@ -1,3 +1,5 @@ +import matplotlib +matplotlib.use('Agg') import matplotlib.pyplot as plt import time import pylab diff --git a/Code/MonoMutliViewClassifiers/Versions.py b/Code/MonoMutliViewClassifiers/Versions.py index 8c6fbbe08debe650a2b92729b25d7f5493130ea5..b2409d64a6c098c17c9b2b959e2e408653b07d5d 100644 --- a/Code/MonoMutliViewClassifiers/Versions.py +++ b/Code/MonoMutliViewClassifiers/Versions.py @@ -14,32 +14,58 @@ __author__ = "Nikolas Huelsmann" __status__ = "Prototype" # Production, Development, Prototype __date__ = 2016-03-25 -import sys -print("Python-V.: " + sys.version) - -import cv2 -print("OpenCV2-V.: " + cv2.__version__) - -import pandas as pd -print("Pandas-V.: " + pd.__version__) - -import numpy -print("Numpy-V.: " + numpy.version.version) - -import scipy -print("Scipy-V.: " + scipy.__version__) - -import matplotlib -print("Matplotlib-V.: " + matplotlib.__version__) - -import sklearn -print("Sklearn-V.: " + sklearn.__version__) - - -import logging # To create Log-Files -print("Logging: " + logging.__version__) - -import joblib -print("joblib: " + joblib.__version__) +try: + import sys + print("Python-V.: " + sys.version) +except: + print "Please install Python 2.7" + +try: + import cv2 + print("OpenCV2-V.: " + cv2.__version__) +except: + print "Please install cv2 module" + +try: + import pandas as pd + print("Pandas-V.: " + pd.__version__) +except: + print "Please install pandas module" + +try: + import numpy + print("Numpy-V.: " + numpy.version.version) +except: + print "Please install numpy module" + +try: + import scipy + print("Scipy-V.: " + scipy.__version__) +except: + print "Please install scipy module" + +try: + import matplotlib + print("Matplotlib-V.: " + matplotlib.__version__) +except: + print "Please install matplotlib module" + +try: + import sklearn + print("Sklearn-V.: " + sklearn.__version__) +except: + print "Please install sklearn module" + +try: + import logging # To create Log-Files + print("Logging: " + logging.__version__) +except: + print "Please install logging module" + +try: + import joblib + print("joblib: " + joblib.__version__) +except: + print "Pease install joblib module"