Преобразование текстовых данных в одно число с плавающей запятой для подгонки svc

#python #pandas #machine-learning #scikit-learn

#python #pandas #машинное обучение #scikit-learn

Вопрос:

Я пытаюсь изучить ML в твите.

Я конвертирую твиты через

 df['vectorised_words'] = vectorizer.transform(df.tweet)
 

что дает мне pandas.core.series.Series , и мой векторизатор CountVectorizer

Мои X и Y следующие:

 X = df['vectorised_words']
y = df['is_hate_speech'].astype(int)
 

где X — это текст (например "This is a sample tweet" ), а Y логическое значение — True или False .

Затем я хочу выполнить следующее:

 svc_1 = SVC(kernel='linear')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state=46)
svc_1.fit(X_train, y_train)
 

Однако функция подгонки выдает следующую ошибку:

 TypeError: float() argument must be a string or a number, not 'csr_matrix'
 

Если я суммирую массив с плавающей запятой, я думаю, что логика преобразования будет потеряна. Что я делаю не так?

Ответ №1:

Кажется, вы пытаетесь поместить целую разреженную матрицу в один столбец фрейма данных pandas, что не так.

Просто определите свой X как

 X = vectorizer.transform(df.tweet.values)
 

и все должно быть в порядке.