[mlpack-svn] r15664 - in mlpack/conf/jenkins-conf/benchmark: methods/mlpy methods/scikit methods/shogun util
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Aug 26 07:10:11 EDT 2013
Author: marcus
Date: Mon Aug 26 07:10:09 2013
New Revision: 15664
Log:
Use the new timeout function for the shogun methods and catch memory exception.
Modified:
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py
mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py
mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py
mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py
mlpack/conf/jenkins-conf/benchmark/util/timer.py
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py Mon Aug 26 07:10:09 2013
@@ -63,29 +63,33 @@
labels = referenceData[:, (referenceData.shape[1] - 1)]
referenceData = referenceData[:,:-1]
- with totalTimer:
- # Get all the parameters.
- k = re.search("-k (\d+)", options)
- if not k:
- Log.Fatal("Required option: Number of furthest neighbors to find.")
- q.put(-1)
- return -1
- else:
- k = int(k.group(1))
- if (k < 1 or k > referenceData.shape[0]):
- Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
- + "less ")
+ try:
+ with totalTimer:
+ # Get all the parameters.
+ k = re.search("-k (\d+)", options)
+ if not k:
+ Log.Fatal("Required option: Number of furthest neighbors to find.")
q.put(-1)
return -1
-
- # Perform All K-Nearest-Neighbors.
- model = mlpy.KNN(k)
- model.learn(referenceData, labels)
-
- if len(self.dataset) == 2:
- out = model.pred(queryData)
- else:
- out = model.pred(referenceData)
+ else:
+ k = int(k.group(1))
+ if (k < 1 or k > referenceData.shape[0]):
+ Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
+ + "less ")
+ q.put(-1)
+ return -1
+
+ # Perform All K-Nearest-Neighbors.
+ model = mlpy.KNN(k)
+ model.learn(referenceData, labels)
+
+ if len(self.dataset) == 2:
+ out = model.pred(queryData)
+ else:
+ out = model.pred(referenceData)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py Mon Aug 26 07:10:09 2013
@@ -53,47 +53,51 @@
Log.Info("Loading dataset", self.verbose)
data = np.genfromtxt(self.dataset, delimiter=',')
- with totalTimer:
- # Get the new dimensionality, if it is necessary.
- dimension = re.search('-d (\d+)', options)
- if not dimension:
- d = data.shape[0]
- else:
- d = int(dimension.group(1))
- if (d > data.shape[1]):
- Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
- + "than existing dimensionality (" + str(data.shape[1]) + ")!")
- q.put(-1)
- return -1
-
- # Get the kernel type and make sure it is valid.
- kernel = re.search("-k ([^\s]+)", options)
- if not kernel:
- Log.Fatal("Choose kernel type, valid choices are 'polynomial', " +
- "'gaussian', 'linear' and 'hyptan'.")
+ try:
+ with totalTimer:
+ # Get the new dimensionality, if it is necessary.
+ dimension = re.search('-d (\d+)', options)
+ if not dimension:
+ d = data.shape[0]
+ else:
+ d = int(dimension.group(1))
+ if (d > data.shape[1]):
+ Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
+ + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+ q.put(-1)
+ return -1
+
+ # Get the kernel type and make sure it is valid.
+ kernel = re.search("-k ([^\s]+)", options)
+ if not kernel:
+ Log.Fatal("Choose kernel type, valid choices are 'polynomial', " +
+ "'gaussian', 'linear' and 'hyptan'.")
+ q.put(-1)
+ return -1
+ elif kernel.group(1) == "polynomial":
+ degree = re.search('-D (\d+)', options)
+ degree = 1 if not degree else int(degree.group(1))
+
+ kernel = mlpy.kernel_polynomial(data, data, d=degree)
+ elif kernel.group(1) == "gaussian":
+ kernel = mlpy.kernel_gaussian(data, data, sigma=2)
+ elif kernel.group(1) == "linear":
+ kernel = mlpy.kernel_linear(data, data)
+ elif kernel.group(1) == "hyptan":
+ kernel = mlpy.kernel_sigmoid(data, data)
+ else:
+ Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
+ "choices are 'polynomial', 'gaussian', 'linear' and 'hyptan'.")
q.put(-1)
return -1
- elif kernel.group(1) == "polynomial":
- degree = re.search('-D (\d+)', options)
- degree = 1 if not degree else int(degree.group(1))
-
- kernel = mlpy.kernel_polynomial(data, data, d=degree)
- elif kernel.group(1) == "gaussian":
- kernel = mlpy.kernel_gaussian(data, data, sigma=2)
- elif kernel.group(1) == "linear":
- kernel = mlpy.kernel_linear(data, data)
- elif kernel.group(1) == "hyptan":
- kernel = mlpy.kernel_sigmoid(data, data)
- else:
- Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
- "choices are 'polynomial', 'gaussian', 'linear' and 'hyptan'.")
- q.put(-1)
- return -1
-
- # Perform Kernel Principal Components Analysis.
- model = mlpy.KPCA()
- model.learn(kernel)
- out = model.transform(kernel, k=d)
+
+ # Perform Kernel Principal Components Analysis.
+ model = mlpy.KPCA()
+ model.learn(kernel)
+ out = model.transform(kernel, k=d)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py Mon Aug 26 07:10:09 2013
@@ -68,12 +68,16 @@
q.put(-1)
return -1
- with totalTimer:
- # Create the KMeans object and perform K-Means clustering.
- if seed:
- kmeans = mlpy.kmeans(data, int(clusters.group(1)), seed=int(seed.group(1)))
- else:
- kmeans = mlpy.kmeans(data, int(clusters.group(1)))
+ try:
+ with totalTimer:
+ # Create the KMeans object and perform K-Means clustering.
+ if seed:
+ kmeans = mlpy.kmeans(data, int(clusters.group(1)), seed=int(seed.group(1)))
+ else:
+ kmeans = mlpy.kmeans(data, int(clusters.group(1)))
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py Mon Aug 26 07:10:09 2013
@@ -54,11 +54,15 @@
inputData = np.genfromtxt(self.dataset[0], delimiter=',')
responsesData = np.genfromtxt(self.dataset[1], delimiter=',')
- with totalTimer:
- # Perform LARS.
- model = mlpy.LARS()
- model.learn(inputData, responsesData)
- out = model.beta()
+ try:
+ with totalTimer:
+ # Perform LARS.
+ model = mlpy.LARS()
+ model.learn(inputData, responsesData)
+ out = model.beta()
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
y = X[:, (X.shape[1] - 1)]
X = X[:,:-1]
- with totalTimer:
- # Perform linear regression.
- model = mlpy.OLS()
- model.learn(X, y)
- b = model.beta()
+ try:
+ with totalTimer:
+ # Perform linear regression.
+ model = mlpy.OLS()
+ model.learn(X, y)
+ b = model.beta()
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py Mon Aug 26 07:10:09 2013
@@ -53,7 +53,8 @@
Log.Info("Loading dataset", self.verbose)
data = np.genfromtxt(self.dataset, delimiter=',')
- with totalTimer:
+ try:
+ with totalTimer:
# Find out what dimension we want.
match = re.search('-d (\d+)', options)
@@ -74,6 +75,9 @@
prep = mlpy.PCA(whiten = s)
prep.learn(data)
out = prep.transform(data, k)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py Mon Aug 26 07:10:09 2013
@@ -85,15 +85,19 @@
return -1
else:
l = int(leafSize.group(1))
-
- # Perform All K-Nearest-Neighbors.
- model = NearestNeighbors(n_neighbors=k, algorithm='kd_tree', leaf_size=l)
- model.fit(referenceData)
-
- if len(self.dataset) == 2:
- out = model.kneighbors(queryData, k, return_distance=True)
- else:
- out = model.kneighbors(referenceData, k, return_distance=True)
+
+ try:
+ # Perform All K-Nearest-Neighbors.
+ model = NearestNeighbors(n_neighbors=k, algorithm='kd_tree', leaf_size=l)
+ model.fit(referenceData)
+
+ if len(self.dataset) == 2:
+ out = model.kneighbors(queryData, k, return_distance=True)
+ else:
+ out = model.kneighbors(referenceData, k, return_distance=True)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
n = 250 if not n else int(n.group(1))
s = 0 if not s else int(s.group(1))
- # Create the Gaussian Mixture Model.
- model = mixture.GMM(n_components=g, covariance_type='full', random_state=s,
- n_iter=n)
- with totalTimer:
- model.fit(dataPoints)
+ try:
+ # Create the Gaussian Mixture Model.
+ model = mixture.GMM(n_components=g, covariance_type='full', random_state=s,
+ n_iter=n)
+ with totalTimer:
+ model.fit(dataPoints)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py Mon Aug 26 07:10:09 2013
@@ -55,11 +55,15 @@
s = re.search('-s (\d+)', options)
s = 0 if not s else int(s.group(1))
- # Perform ICA.
- with totalTimer:
- model = FastICA(random_state=s)
- ic = model.fit(data).transform(data)
- mixing = model.get_mixing_matrix()
+ try:
+ # Perform ICA.
+ with totalTimer:
+ model = FastICA(random_state=s)
+ ic = model.fit(data).transform(data)
+ mixing = model.get_mixing_matrix()
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py Mon Aug 26 07:10:09 2013
@@ -68,31 +68,35 @@
# Get the kernel type and make sure it is valid.
kernel = re.search("-k ([^\s]+)", options)
- if not kernel:
- Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan' " +
- "and 'polynomial'.")
+ try:
+ if not kernel:
+ Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan' " +
+ "and 'polynomial'.")
+ q.put(-1)
+ return -1
+ elif kernel.group(1) == "linear":
+ model = KernelPCA(n_components=d, kernel="linear")
+ elif kernel.group(1) == "hyptan":
+ model = KernelPCA(n_components=d, kernel="sigmoid")
+ elif kernel.group(1) == "polynomial":
+ degree = re.search('-D (\d+)', options)
+ degree = 1 if not degree else int(degree.group(1))
+
+ model = KernelPCA(n_components=d, kernel="poly", degree=degree)
+ else:
+ Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
+ "choices are 'linear', 'hyptan' and 'polynomial'.")
+ q.put(-1)
+ return -1
+
+ out = model.fit_transform(data)
+ except Exception as e:
q.put(-1)
return -1
- elif kernel.group(1) == "linear":
- model = KernelPCA(n_components=d, kernel="linear")
- elif kernel.group(1) == "hyptan":
- model = KernelPCA(n_components=d, kernel="sigmoid")
- elif kernel.group(1) == "polynomial":
- degree = re.search('-D (\d+)', options)
- degree = 1 if not degree else int(degree.group(1))
-
- model = KernelPCA(n_components=d, kernel="poly", degree=degree)
- else:
- Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
- "choices are 'linear', 'hyptan' and 'polynomial'.")
- q.put(-1)
- return -1
-
- out = model.fit_transform(data)
time = totalTimer.ElapsedTime()
q.put(time)
- return -1
+ return time
return timeout(RunKPCAScikit, self.timeout)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py Mon Aug 26 07:10:09 2013
@@ -77,20 +77,24 @@
m = 1000 if not maxIterations else int(maxIterations.group(1))
- # Create the KMeans object and perform K-Means clustering.
- with totalTimer:
- if len(self.dataset) == 2:
- kmeans = KMeans(k=centroids.shape[1], init=centroids, n_init=1,
- max_iter=m)
- elif seed:
- kmeans = KMeans(n_clusters=int(clusters.group(1)), init='random',
- n_init=1, max_iter=m, random_state=int(seed.group(1)))
- else:
- kmeans = KMeans(n_clusters=int(clusters.group(1)), n_init=1, max_iter=m)
-
- kmeans.fit(data)
- labels = kmeans.labels_
- centers = kmeans.cluster_centers_
+ try:
+ # Create the KMeans object and perform K-Means clustering.
+ with totalTimer:
+ if len(self.dataset) == 2:
+ kmeans = KMeans(k=centroids.shape[1], init=centroids, n_init=1,
+ max_iter=m)
+ elif seed:
+ kmeans = KMeans(n_clusters=int(clusters.group(1)), init='random',
+ n_init=1, max_iter=m, random_state=int(seed.group(1)))
+ else:
+ kmeans = KMeans(n_clusters=int(clusters.group(1)), n_init=1, max_iter=m)
+
+ kmeans.fit(data)
+ labels = kmeans.labels_
+ centers = kmeans.cluster_centers_
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py Mon Aug 26 07:10:09 2013
@@ -54,15 +54,19 @@
inputData = np.genfromtxt(self.dataset[0], delimiter=',')
responsesData = np.genfromtxt(self.dataset[1], delimiter=',')
- with totalTimer:
- # Get all the parameters.
- lambda1 = re.search("-l (\d+)", options)
- lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
-
- # Perform LARS.
- model = LassoLars(alpha=lambda1)
- model.fit(inputData, responsesData)
- out = model.coef_
+ try:
+ with totalTimer:
+ # Get all the parameters.
+ lambda1 = re.search("-l (\d+)", options)
+ lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
+
+ # Perform LARS.
+ model = LassoLars(alpha=lambda1)
+ model.fit(inputData, responsesData)
+ out = model.coef_
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
y = X[:, (X.shape[1] - 1)]
X = X[:,:-1]
- with totalTimer:
- # Perform linear regression.
- model = SLinearRegression()
- model.fit(X, y, n_jobs=-1)
- b = model.coef_
+ try:
+ with totalTimer:
+ # Perform linear regression.
+ model = SLinearRegression()
+ model.fit(X, y, n_jobs=-1)
+ b = model.coef_
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py Mon Aug 26 07:10:09 2013
@@ -58,12 +58,16 @@
labels = trainData[:, (trainData.shape[1] - 1)]
trainData = trainData[:,:-1]
- with totalTimer:
- # Create and train the classifier.
- nbc = MultinomialNB()
- nbc.fit(trainData, labels)
- # Run Naive Bayes Classifier on the test dataset.
- nbc.predict(testData)
+ try:
+ with totalTimer:
+ # Create and train the classifier.
+ nbc = MultinomialNB()
+ nbc.fit(trainData, labels)
+ # Run Naive Bayes Classifier on the test dataset.
+ nbc.predict(testData)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py Mon Aug 26 07:10:09 2013
@@ -53,32 +53,36 @@
Log.Info("Loading dataset", self.verbose)
data = np.genfromtxt(self.dataset, delimiter=',')
- with totalTimer:
- # Gather parameters.
- seed = re.search("-s (\d+)", options)
- maxIterations = re.search("-m (\d+)", options)
- minResidue = re.search("-e ([^\s]+)", options)
- updateRule = re.search("-u ([^\s]+)", options)
-
- m = 10000 if not maxIterations else int(maxIterations.group(1))
- e = 1e-05 if not maxIterations else int(minResidue.group(1))
-
- if updateRule:
- u = updateRule.group(1)
- if u != 'alspgrad':
- Log.Fatal("Invalid update rules ('" + u + "'); must be 'alspgrad'.")
- q.put(-1)
- return -1
-
- # Perform NMF with the specified update rules.
- if seed:
- s = int(seed.group(1))
- model = ScikitNMF(n_components=2, init='random', max_iter = m, tol = e, random_state = s)
- else:
- model = ScikitNMF(n_components=2, init='nndsvdar', max_iter = m, tol = e)
-
- W = model.fit_transform(data)
- H = model.components_
+ try:
+ with totalTimer:
+ # Gather parameters.
+ seed = re.search("-s (\d+)", options)
+ maxIterations = re.search("-m (\d+)", options)
+ minResidue = re.search("-e ([^\s]+)", options)
+ updateRule = re.search("-u ([^\s]+)", options)
+
+ m = 10000 if not maxIterations else int(maxIterations.group(1))
+ e = 1e-05 if not maxIterations else int(minResidue.group(1))
+
+ if updateRule:
+ u = updateRule.group(1)
+ if u != 'alspgrad':
+ Log.Fatal("Invalid update rules ('" + u + "'); must be 'alspgrad'.")
+ q.put(-1)
+ return -1
+
+ # Perform NMF with the specified update rules.
+ if seed:
+ s = int(seed.group(1))
+ model = ScikitNMF(n_components=2, init='random', max_iter = m, tol = e, random_state = s)
+ else:
+ model = ScikitNMF(n_components=2, init='nndsvdar', max_iter = m, tol = e)
+
+ W = model.fit_transform(data)
+ H = model.components_
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py Mon Aug 26 07:10:09 2013
@@ -53,27 +53,31 @@
Log.Info("Loading dataset", self.verbose)
data = np.genfromtxt(self.dataset, delimiter=',')
- with totalTimer:
- # Find out what dimension we want.
- match = re.search('-d (\d+)', options)
-
- if not match:
- k = data.shape[1]
- else:
- k = int(match.group(1))
- if (k > data.shape[1]):
- Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater "
- + "than existing dimensionality (" + str(data.shape[1]) + ")!")
- q.put(-1)
- return -1
-
- # Get the options for running PCA.
- s = True if options.find("-s") > -1 else False
-
- # Perform PCA.
- pca = decomposition.PCA(n_components = k, whiten = s)
- pca.fit(data)
- score = pca.transform(data)
+ try:
+ with totalTimer:
+ # Find out what dimension we want.
+ match = re.search('-d (\d+)', options)
+
+ if not match:
+ k = data.shape[1]
+ else:
+ k = int(match.group(1))
+ if (k > data.shape[1]):
+ Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater "
+ + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+ q.put(-1)
+ return -1
+
+ # Get the options for running PCA.
+ s = True if options.find("-s") > -1 else False
+
+ # Perform PCA.
+ pca = decomposition.PCA(n_components = k, whiten = s)
+ pca.fit(data)
+ score = pca.transform(data)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py Mon Aug 26 07:10:09 2013
@@ -57,11 +57,15 @@
l = re.search("-l (\d+)", options)
l = 0 if not l else int(l.group(1))
- with totalTimer:
- # Perform Sparse Coding.
- model = SparseCoder(dictionary=dictionary, transform_algorithm='lars',
- transform_alpha=l)
- code = model.transform(inputData)
+ try:
+ with totalTimer:
+ # Perform Sparse Coding.
+ model = SparseCoder(dictionary=dictionary, transform_algorithm='lars',
+ transform_alpha=l)
+ code = model.transform(inputData)
+ except Exception as e:
+ q.put(-1)
+ return -1
time = totalTimer.ElapsedTime()
q.put(time)
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py Mon Aug 26 07:10:09 2013
@@ -48,9 +48,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def AllKnnShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunAllKnnShogun():
+ def RunAllKnnShogun(q):
totalTimer = Timer()
# Load input dataset.
@@ -68,38 +66,42 @@
labels = MulticlassLabels(referenceData[:, (referenceData.shape[1] - 1)])
referenceData = referenceData[:,:-1]
- with totalTimer:
- # Get all the parameters.
- k = re.search("-k (\d+)", options)
- if not k:
- Log.Fatal("Required option: Number of furthest neighbors to find.")
- return -1
- else:
- k = int(k.group(1))
- if (k < 1 or k > referenceData.shape[0]):
- Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
- + "less ")
+ try:
+ with totalTimer:
+ # Get all the parameters.
+ k = re.search("-k (\d+)", options)
+ if not k:
+ Log.Fatal("Required option: Number of furthest neighbors to find.")
+ q.put(-1)
return -1
+ else:
+ k = int(k.group(1))
+ if (k < 1 or k > referenceData.shape[0]):
+ Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
+ + "less ")
+ q.put(-1)
+ return -1
+
+ referenceFeat = RealFeatures(referenceData.T)
+ distance = EuclideanDistance(referenceFeat, referenceFeat)
+
+ # Perform All K-Nearest-Neighbors.
+ model = SKNN(k, distance, labels)
+ model.train()
+
+ if len(self.dataset) == 2:
+ out = model.apply(queryFeat).get_labels()
+ else:
+ out = model.apply(referenceFeat).get_labels()
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
- referenceFeat = RealFeatures(referenceData.T)
- distance = EuclideanDistance(referenceFeat, referenceFeat)
-
- # Perform All K-Nearest-Neighbors.
- model = SKNN(k, distance, labels)
- model.train()
-
- if len(self.dataset) == 2:
- out = model.apply(queryFeat).get_labels()
- else:
- out = model.apply(referenceFeat).get_labels()
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunAllKnnShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ return timeout(RunAllKnnShogun, self.timeout)
'''
Perform All K-Nearest-Neighbors. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def GMMShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunGMMShogun():
+ def RunGMMShogun(q):
totalTimer = Timer()
# Load input dataset.
@@ -64,19 +62,21 @@
g = 1 if not g else int(g.group(1))
n = 250 if not n else int(n.group(1))
- # Create the Gaussian Mixture Model.
- model = Clustering.GMM(g)
- model.set_features(dataFeat)
- with totalTimer:
- model.train_em(1e-9, n, 1e-9)
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunGMMShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ # Create the Gaussian Mixture Model.
+ model = Clustering.GMM(g)
+ model.set_features(dataFeat)
+ with totalTimer:
+ model.train_em(1e-9, n, 1e-9)
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunGMMShogun, self.timeout)
'''
Perform Gaussian Mixture Model. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py Mon Aug 26 07:10:09 2013
@@ -48,9 +48,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def KPCAShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunKPCAShogun():
+ def RunKPCAShogun(q):
totalTimer = Timer()
# Load input dataset.
@@ -58,53 +56,58 @@
data = np.genfromtxt(self.dataset, delimiter=',')
dataFeat = RealFeatures(data.T)
- with totalTimer:
- # Get the new dimensionality, if it is necessary.
- dimension = re.search('-d (\d+)', options)
- if not dimension:
- d = data.shape[1]
- else:
- d = int(dimension.group(1))
- if (d > data.shape[1]):
- Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
- + "than existing dimensionality (" + str(data.shape[1]) + ")!")
- return -1
-
- # Get the kernel type and make sure it is valid.
- kernel = re.search("-k ([^\s]+)", options)
- if not kernel:
- Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan'" +
- ", 'polynomial' and 'gaussian'.")
+ try:
+ with totalTimer:
+ # Get the new dimensionality, if it is necessary.
+ dimension = re.search('-d (\d+)', options)
+ if not dimension:
+ d = data.shape[1]
+ else:
+ d = int(dimension.group(1))
+ if (d > data.shape[1]):
+ Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
+ + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+ q.put(-1)
+ return -1
+
+ # Get the kernel type and make sure it is valid.
+ kernel = re.search("-k ([^\s]+)", options)
+ if not kernel:
+ Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan'" +
+ ", 'polynomial' and 'gaussian'.")
+ q.put(-1)
+ return -1
+ elif kernel.group(1) == "polynomial":
+ degree = re.search('-D (\d+)', options)
+ degree = 1 if not degree else int(degree.group(1))
+
+ kernel = PolyKernel(dataFeat, dataFeat, degree, True)
+ elif kernel.group(1) == "gaussian":
+ kernel = GaussianKernel(dataFeat, dataFeat, 2.0)
+ elif kernel.group(1) == "linear":
+ kernel = LinearKernel(dataFeat, dataFeat)
+ elif kernel.group(1) == "hyptan":
+ kernel = SigmoidKernel(dataFeat, dataFeat, 2, 1.0, 1.0)
+ else:
+ Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid choices"
+ + " are 'linear', 'hyptan', 'polynomial' and 'gaussian'.")
+ q.put(-1)
return -1
- elif kernel.group(1) == "polynomial":
- degree = re.search('-D (\d+)', options)
- degree = 1 if not degree else int(degree.group(1))
-
- kernel = PolyKernel(dataFeat, dataFeat, degree, True)
- elif kernel.group(1) == "gaussian":
- kernel = GaussianKernel(dataFeat, dataFeat, 2.0)
- elif kernel.group(1) == "linear":
- kernel = LinearKernel(dataFeat, dataFeat)
- elif kernel.group(1) == "hyptan":
- kernel = SigmoidKernel(dataFeat, dataFeat, 2, 1.0, 1.0)
- else:
- Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid choices"
- + " are 'linear', 'hyptan', 'polynomial' and 'gaussian'.")
- return -1
-
- # Perform Kernel Principal Components Analysis.
- model = KernelPCA(kernel)
- model.set_target_dim(d)
- model.init(dataFeat)
- model.apply_to_feature_matrix(dataFeat)
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunKPCAShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+
+ # Perform Kernel Principal Components Analysis.
+ model = KernelPCA(kernel)
+ model.set_target_dim(d)
+ model.init(dataFeat)
+ model.apply_to_feature_matrix(dataFeat)
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunKPCAShogun, self.timeout)
'''
Perform Kernel Principal Components Analysis. If the method has been
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py Mon Aug 26 07:10:09 2013
@@ -98,9 +98,7 @@
return time
else:
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunKMeansShogun():
+ def RunKMeansShogun(q):
import numpy as np
from shogun.Distance import EuclideanDistance
from shogun.Features import RealFeatures
@@ -117,22 +115,24 @@
dataFeat = RealFeatures(data.T)
distance = EuclideanDistance(dataFeat, dataFeat)
- # Create the K-Means object and perform K-Means clustering.
- with totalTimer:
- model = Clustering.KMeans(int(clusters.group(1)), distance)
- model.set_max_iter(maxIterations)
- model.train()
-
- labels = model.apply().get_labels()
- centers = model.get_cluster_centers()
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunKMeansShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ # Create the K-Means object and perform K-Means clustering.
+ with totalTimer:
+ model = Clustering.KMeans(int(clusters.group(1)), distance)
+ model.set_max_iter(maxIterations)
+ model.train()
+
+ labels = model.apply().get_labels()
+ centers = model.get_cluster_centers()
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunKMeansShogun, self.timeout)
'''
Perform K-Means Clustering. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def LARSShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunLARSShogun():
+ def RunLARSShogun(q):
totalTimer = Timer()
# Load input dataset.
@@ -63,21 +61,23 @@
lambda1 = re.search("-l (\d+)", options)
lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
- with totalTimer:
- # Perform LARS.
- model = LeastAngleRegression(False)
- model.set_max_l1_norm(lambda1)
- model.set_labels(responsesFeat)
- model.train(inputFeat)
- model.get_w(model.get_path_size() - 1)
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunLARSShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ with totalTimer:
+ # Perform LARS.
+ model = LeastAngleRegression(False)
+ model.set_max_l1_norm(lambda1)
+ model.set_labels(responsesFeat)
+ model.train(inputFeat)
+ model.get_w(model.get_path_size() - 1)
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunLARSShogun, self.timeout)
'''
Perform Least Angle Regression. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def LinearRegressionShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunLinearRegressionShogun():
+ def RunLinearRegressionShogun(q):
totalTimer = Timer()
# Load input dataset.
@@ -64,19 +62,21 @@
y = X[:, (X.shape[1] - 1)]
X = X[:,:-1]
- with totalTimer:
- # Perform linear regression.
- model = LeastSquaresRegression(RealFeatures(X.T), RegressionLabels(y))
- model.train()
- b = model.get_w()
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunLinearRegressionShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ with totalTimer:
+ # Perform linear regression.
+ model = LeastSquaresRegression(RealFeatures(X.T), RegressionLabels(y))
+ model.train()
+ b = model.get_w()
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunLinearRegressionShogun, self.timeout)
'''
Perform Linear Regression. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def NBCShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunNBCShogun():
+ def RunNBCShogun(q):
totalTimer = Timer()
Log.Info("Loading dataset", self.verbose)
@@ -60,24 +58,26 @@
# Labels are the last row of the training set.
labels = MulticlassLabels(trainData[:, (trainData.shape[1] - 1)])
- with totalTimer:
- # Transform into features.
- trainFeat = RealFeatures(trainData[:,:-1].T)
- testFeat = RealFeatures(testData.T)
-
- # Create and train the classifier.
- nbc = GaussianNaiveBayes(trainFeat, labels)
- nbc.train()
- # Run Naive Bayes Classifier on the test dataset.
- nbc.apply(testFeat).get_labels()
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunNBCShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ with totalTimer:
+ # Transform into features.
+ trainFeat = RealFeatures(trainData[:,:-1].T)
+ testFeat = RealFeatures(testData.T)
+
+ # Create and train the classifier.
+ nbc = GaussianNaiveBayes(trainFeat, labels)
+ nbc.train()
+ # Run Naive Bayes Classifier on the test dataset.
+ nbc.apply(testFeat).get_labels()
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunNBCShogun, self.timeout)
'''
Perform Naive Bayes Classifier. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py Mon Aug 26 07:10:09 2013
@@ -51,44 +51,45 @@
@return - Elapsed time in seconds or -1 if the method was not successful.
'''
def PCAShogun(self, options):
-
- @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
- def RunPCAShogun():
+ def RunPCAShogun(q):
totalTimer = Timer()
# Load input dataset.
Log.Info("Loading dataset", self.verbose)
feat = RealFeatures(self.data.T)
- with totalTimer:
- # Find out what dimension we want.
- match = re.search('-d (\d+)', options)
-
- if not match:
- k = self.data.shape[1]
- else:
- k = int(match.group(1))
- if (k > self.data.shape[1]):
- Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater than"
- + "existing dimensionality (" + str(self.data.shape[1]) + ")!")
- return -1
-
- # Get the options for running PCA.
- s = True if options.find("-s") > -1 else False
-
- # Perform PCA.
- prep = ShogunPCA(s)
- prep.set_target_dim(k)
- prep.init(feat)
- prep.apply_to_feature_matrix(feat)
-
- return totalTimer.ElapsedTime()
-
- try:
- return RunPCAShogun()
- except TimeoutError as e:
- Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
- return -2
+ try:
+ with totalTimer:
+ # Find out what dimension we want.
+ match = re.search('-d (\d+)', options)
+
+ if not match:
+ k = self.data.shape[1]
+ else:
+ k = int(match.group(1))
+ if (k > self.data.shape[1]):
+ Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater than"
+ + "existing dimensionality (" + str(self.data.shape[1]) + ")!")
+ q.put(-1)
+ return -1
+
+ # Get the options for running PCA.
+ s = True if options.find("-s") > -1 else False
+
+ # Perform PCA.
+ prep = ShogunPCA(s)
+ prep.set_target_dim(k)
+ prep.init(feat)
+ prep.apply_to_feature_matrix(feat)
+ except Exception as e:
+ q.put(-1)
+ return -1
+
+ time = totalTimer.ElapsedTime()
+ q.put(time)
+ return time
+
+ return timeout(RunPCAShogun, self.timeout)
'''
Perform Principal Components Analysis. If the method has been successfully
Modified: mlpack/conf/jenkins-conf/benchmark/util/timer.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/util/timer.py (original)
+++ mlpack/conf/jenkins-conf/benchmark/util/timer.py Mon Aug 26 07:10:09 2013
@@ -65,4 +65,8 @@
Log.Warn("Script timed out after " + str(timeout) + " seconds")
return -2
else:
- return q.get()
+ try:
+ r = q.get()
+ except Exception as e:
+ r = -1
+ return r
More information about the mlpack-svn
mailing list