Как исправить ошибку объекта кортежа в объединении объектов и конвейерах (при использовании sklearn)? - PullRequest
0 голосов
/ 07 января 2019

У меня есть фрейм данных 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

Я не понимаю, поскольку используется точно такой же метод здесь и здесь И там нет никаких ошибок. Что я делаю неправильно? Как я могу это исправить?

...