Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: 'numpy.float64' object does not support item assignment

Tags:

python

numpy

def classify(self, texts):
        vectors = self.dictionary.feature_vectors(texts)
        predictions = self.svm.decision_function(vectors)
        predictions = np.transpose(predictions)[0]
        predictions = predictions / 2 + 0.5
        predictions[predictions > 1] = 1
        predictions[predictions < 0] = 0
        return predictions

The error:

TypeError: 'numpy.float64' object does not support item assignment

occurs on the following line:

        predictions[predictions > 1] = 1

Does anyone has an idea of solving this problem? Thanks!

like image 215
chen Avatar asked Jan 13 '15 05:01

chen


1 Answers

Try this testing code and pay attention to np.array([1,2,3], dtype=np.float64). It seems self.svm.decision_function(vectors) returns 1d array instead of 2d. If you replace [1,2,3] to [[1,2,3], [4,5,6]] everything will be ok.

import numpy as np
predictions = np.array([1,2,3], dtype=np.float64)
predictions = np.transpose(predictions)[0]
predictions = predictions / 2 + 0.5
predictions[predictions > 1] = 1
predictions[predictions < 0] = 0

Output:

Traceback (most recent call last):
  File "D:\temp\test.py", line 7, in <module>
    predictions[predictions > 1] = 1
TypeError: 'numpy.float64' object does not support item assignment

So, what your vectors are?

like image 73
Max Tkachenko Avatar answered Oct 15 '22 03:10

Max Tkachenko