Can anyone help me with this exception:
scala> val r = classifier.classify(ys(0).features)
java.lang.UnsupportedOperationException: Empty .max
at scalala.tensor.TensorLike$class.argmax(Tensor.scala:354)
at scalala.tensor.mutable.Counter$Impl.argmax(Counter.scala:52)
at scalanlp.classify.Classifier$class.classify(Classifier.scala:34)
at scalanlp.classify.LinearClassifier.classify(LinearClassifier.scala:45)
To give context, I am trying to classify into two classes, 1 and 0. The features are three doubles. Here is an example:
Example { ids =, label = 0, features = 0.137787
0.00000
0.00000}
This is an extract of the output when I train the svm:
scala> val classifier = svm.train(xs)
(INFO) (SVM.scala:98) rate: 10.0
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 0 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 5.0
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 1 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 3.333333333333333
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 2 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 2.5
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 3 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 2.0
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 4 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 1.6666666666666665
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 5 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 1.4285714285714284
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 6 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 1.25
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 7 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 1.1111111111111112
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 8 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 1.0
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 9 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.9090909090909091
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 10 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.8333333333333333
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 11 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.7692307692307692
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 12 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.7142857142857142
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 13 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.6666666666666666
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 14 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.625
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 15 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.588235294117647
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 16 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.5555555555555556
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 17 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.5263157894736842
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 18 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.5
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 19 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.47619047619047616
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 20 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.45454545454545453
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 21 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.4347826086956521
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 22 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.41666666666666663
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 23 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.4
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 24 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3846153846153846
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 25 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.37037037037037035
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 26 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3571428571428571
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 27 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3448275862068965
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 28 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3333333333333333
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 29 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3225806451612903
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 30 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.3125
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 31 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.303030303030303
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 32 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2941176470588235
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 33 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2857142857142857
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 34 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2777777777777778
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 35 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.27027027027027023
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 36 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2631578947368421
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 37 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2564102564102564
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 38 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.25
(INFO) (SVM.scala:99) subset size: 0
(INFO) (SVM.scala:111) iter: 39 0.0
(INFO) (SVM.scala:122) Post loss: 0.0
(INFO) (SVM.scala:98) rate: 0.2439024390243902
(INFO) (SVM.scala:99) subset size: 0
It is this code in Tensor.scala that is throwing the exception:
/** Returns a key associated with the largest value in the tensor. */
def argmax : K = {
if (!pairsIterator.hasNext) {
throw new UnsupportedOperationException("Empty .max");
}
var (arg,max) = pairsIterator.next;
foreachPair((k,v) => if (scalar.>(v, max)) { max = v; arg = k; });
arg;
}
Anyone have any ideas?