ValueError: установка элемента массива с последовательностью для включения модели word2vec в мой кадр данных панд - PullRequest
0 голосов
/ 10 мая 2018

Я получаю «ValueError: установка элемента массива с последовательностью». ошибка, когда я пытаюсь запустить свой классификатор случайных лесов на разнородных данных - текстовые данные передаются в модель word2vec, и я извлекаю одномерный числовой массив, беря среднее значение векторов word2vec для каждого слова в строке текста.

Вот пример данных, с которыми я работаю:

col-A    col-B .....  col-z

100      230   ...... [0.016612869501113892, -0.04279713928699493, .....]

где col-z - массив с фиксированным размером 300 в каждой строке.

Ниже приведен код для вычисления средних векторов word2vec и создания массивов с пустыми значениями:

`    final_data = []
     for i, row in df.iterrows():
         text_vectorized = []
         text = row['col-z']
         for word in text:
             try:
                 text_vectorized.append(list(w2v_model[word]))
             except Exception as e:
                 pass
         try:
             text_vectorized = np.asarray(text_vectorized, dtype='object')
             text_vectorized_mean = list(np.mean(text_vectorized, axis=0))
         except Exception as e:
             text_vectorized_mean = list(np.zeros(100))
             pass
         try:
             len(text_vectorized_mean)
         except:
             text_vectorized_mean = list(np.zeros(100))
         temp_row = np.asarray(text_vectorized_mean, dtype='object')
         final_data.append(temp_row)
    text_array = np.asarray(final_data, dtype='object')`

После этого я конвертирую text_array в pandas dataframe и объединяю его с моим исходным dataframe с другими числовыми столбцами. Но как только я пытаюсь передать эти данные в классификатор, в этой строке выдается сообщение об ошибке:

-->  array = np.array(array, dtype=dtype, order=order, copy=copy)

Почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 10 мая 2018

Вы пытаетесь создать массив из смешанного списка, содержащего как числовые значения, так и другой список. Попробуйте сначала сгладить массив, используя .ravel()

Например,

text_array = np.asarray(final_data.ravel(), dtype='object')
...