> AttributeError: у объекта 'list' нет атрибута 'lower' (в нижнем регистре данных) - PullRequest
2 голосов
/ 20 июня 2019

Я не понимаю эту ошибку ... Я уже превратил df в нижний регистр, прежде чем превратить его в список

dataframe:

    all_cols
0   who is your hero and why
1   what do you do to relax
2   this is a hero
4   how many hours of sleep do you get a night
5   describe the last time you were relax

Код:

from sklearn.cluster import MeanShift
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import FunctionTransformer
from sklearn.feature_extraction.text import TfidfVectorizer

df['all_cols'] = df['all_cols'].str.lower()
df_list = df.values.tolist()

pipeline = Pipeline(steps=[
('tfidf', TfidfVectorizer()),
('trans', FunctionTransformer(lambda x: x.todense(), accept_sparse=True)),
('clust', MeanShift())])

pipeline.fit(df_list)
pipeline.named_steps['clust'].labels_

result = [(label,doc) for doc,label in zip(df_list, pipeline.named_steps['clust'].labels_)]

for label,doc in sorted(result):
    print(label, doc)

Но у меня есть ошибка в этой строке:

AttributeError Traceback (последний вызов был последним) в

----> 1 pipe.fit (df_list)

 2 pipeline.named_steps['clust'].labels_

AttributeError: у объекта 'list' нет атрибута 'lower'

Но почему программа возвращает ошибку в нижнем регистре, если я уже передала нижний регистр данных?

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Указанный столбец для df_list для исключения вложенных списков:

df_list = df.values.tolist()
print (df_list)
[['who is your hero and why'], 
 ['what do you do to relax'], 
 ['this is a hero'], 
 ['how many hours of sleep do you get a night'], 
 ['describe the last time you were relax']]

df_list = df['all_cols'].values.tolist()
print (df_list)
['who is your hero and why', 
 'what do you do to relax', 
 'this is a hero',
 'how many hours of sleep do you get a night',
 'describe the last time you were relax']
1 голос
/ 20 июня 2019

Преобразуйте его во фрейм данных Pandas, а затем выполните операцию, которую вы делаете выше. Это будет работать. Я все еще вставил фрагмент, и вы можете попробовать сами.

import pandas as pd

col = pd.Series(["who is your hero and why", "what do you do to relax", "this is a hero", "how many hours of sleep do you get a night", "describe the last time you were relax"])
fr = {"all_cols":col}
df = pd.DataFrame(fr)
df['all_cols'] = df['all_cols'].str.lower()
df_list = df.values.tolist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...