У меня возникла следующая проблема при обучении наивного байесовского классификатора. Я получаю эту ошибку:
File "/home/juande/Desktop/spark-1.3.0-bin-hadoop2.4/python/pyspark/mllib /classification.py", line 372, in train
return NaiveBayesModel(labels.toArray(), pi.toArray(), numpy.array(theta))
ValueError: invalid __array_struct__
При обучении модели с помощью этой строки
dataframe = dataframe.map(lambda x: LabeledPoint(sections_to_number[x[4]], tf.transform([x[0], x[1], x[2], x[3]])))
model = NaiveBayes.train(dataframe, 1.0)
Где sections_to_number
— словарь, отображающий значение из некоторых строк в числа с плавающей запятой, например спорт -> 0, погода -> 1 и так далее.
Однако, если я тренирую его, используя число вместо использования отображения section_to_number, я не получаю никакой ошибки.
dataframe = dataframe.map(lambda x: LabeledPoint(10.0, tf.transform([x[0], x[1], x[2], x[3]])))
model = NaiveBayes.train(dataframe, 1.0)
Я что-то упускаю? Спасибо