sklearn.compose.ColumnTransformer () неправильно обрабатывает имя одного столбца в массиве? - PullRequest
0 голосов
/ 22 сентября 2019

В ColumnTransformer я хочу использовать конвейер Tfidf.Но даже для этого простого примера тип выходного преобразования исходного конвейера и входного сигнала в ColumnTransformer имеет совершенно другой тип.Почему тип отличается?

Несколько столбцов могут быть переданы как массив ['col1', 'col2'].Почему это не работает для одного столбца ['col1']?

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize

X = pd.DataFrame({'message': ['Lets start.', 'This is it.', 'We are done.']})

def tokenize(text):
    tokens = word_tokenize(text)
    lemmatizer = WordNetLemmatizer()

    clean_tokens = []
    for tok in tokens:
        clean_tok = lemmatizer.lemmatize(tok).lower().strip()
        clean_tokens.append(clean_tok)

    return clean_tokens

p = Pipeline(steps = [ 
            ('vect', CountVectorizer(tokenizer=tokenize)),
            ('tfidf', TfidfTransformer())
            ])  

print(p.fit_transform(X['message']))

#  (0, 6)        0.652490884512534
#  (0, 5)        0.652490884512534
#  (0, 0)        0.3853716274664007
#  (1, 7)        0.546454011634009
#  (1, 4)        0.546454011634009
#  (1, 3)        0.546454011634009
#  (1, 0)        0.3227445421804912
#  (2, 8)        0.546454011634009
#  (2, 2)        0.546454011634009
#  (2, 1)        0.546454011634009
#  (2, 0)        0.3227445421804912


ct = ColumnTransformer(transformers = [ 
        ('txt', p, ['message'])
    ])  

print(ct.fit_transform(X))

#array([[1.]])

ct = ColumnTransformer(transformers = [ 
        ('txt', p, 'message')
    ])  

print(ct.fit_transform(X))

#[[0.38537163 0.         0.         0.         0.         0.65249088
#  0.65249088 0.         0.        ]
# [0.32274454 0.         0.         0.54645401 0.54645401 0.
#  0.         0.54645401 0.        ]
# [0.32274454 0.54645401 0.54645401 0.         0.         0.
#  0.         0.         0.54645401]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...