У меня есть фрейм данных pandas с 56 столбцами. Около половины столбцов являются плавающими, а остальные - строковыми (текстовые данные), и, наконец, col56 является столбцом метки. Набор данных выглядит примерно так
Col1 Col2...Col26 Col27 Col 28 ..... Col55 Col 56
1 4 76 I like cats Cats are cool Cat bags 1
.
.
.
1900 rows
Я хочу использовать как числовые, так и текстовые данные для запуска алгоритмов классификации. Быстрый поиск в Google показал, что лучший способ продолжить - использовать Feature Union
Это код на данный момент
import pandas as pd
import numpy as np
from sklearn.preprocessing import FunctionTransformer
from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.svm import SVC
from sklearn.pipeline import FeatureUnion
from sklearn.feature_extraction.text import CountVectorizer
df=pd.read_csv('url')
X=df[[Col1...Col55]]
y=df[[Col56]]
from sklearn.model_selection import train_test_split
stop_list=(i, am, the...)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
pipeline = Pipeline([
('union',FeatureUnion([
('Col1', Pipeline([
('selector', ItemSelector(column='Col1')),
('caster', ArrayCaster())
])),
.
.
.
.
.
('Col27',Pipeline([
('selector', ItemSelector(column='Col27')),
('vectorizer', CountVectorizer())
])),
.
.
.
('Col55',Pipeline([
('selector', ItemSelector(column='Col55')),
('vectorizer', CountVectorizer())
]))
])),
('model',SVC())
])
Тогда я получаю ошибку
TypeError Traceback (most recent call last)
<ipython-input-8-7a2cab7bed7d> in <module>
167 (' Col27',Pipeline([
168 ('selector', ItemSelector(column=' Col27')),
--> 169 ('vectorizer', CountVectorizer(stop_words=stop_list))
170 ]))
TypeError: 'tuple' object is not callable
Я не понимаю, поскольку используется точно такой же метод здесь и здесь
И там нет никаких ошибок. Что я делаю неправильно? Как я могу это исправить?