2016-09-03 10 views
11

Metin verilerinden bazı özelliklerin çıkarılması için scikit-learn'den TfidfVectorizer kullanıyorum. Puanlı bir CSV dosyası (+1 veya -1 olabilir) ve bir İnceleme (metin) var. Bu verileri bir DataFrame'e çektim, böylece Vectorizer'ı çalıştırabilirim. NaN ama olabildiğince okumak ediliyor TfidfVectorizer scikit-learn: ValueError: np.nan geçersiz bir belgedir

Traceback (most recent call last): 
    File "/home/PycharmProjects/Review/src/feature_extraction.py", line 16, in <module> 
x = v.fit_transform(df['Review']) 
File "/home/b/hw1/local/lib/python2.7/site- packages/sklearn/feature_extraction/text.py", line 1305, in fit_transform 
    X = super(TfidfVectorizer, self).fit_transform(raw_documents) 
File "/home/b/work/local/lib/python2.7/site-packages/sklearn/feature_extraction/text.py", line 817, in fit_transform 
self.fixed_vocabulary_) 
File "/home/b/work/local/lib/python2.7/site- packages/sklearn/feature_extraction/text.py", line 752, in _count_vocab 
    for feature in analyze(doc): 
File "/home/b/work/local/lib/python2.7/site-packages/sklearn/feature_extraction/text.py", line 238, in <lambda> 
tokenize(preprocess(self.decode(doc))), stop_words) 
File "/home/b/work/local/lib/python2.7/site-packages/sklearn/feature_extraction/text.py", line 118, in decode 
raise ValueError("np.nan is an invalid document, expected byte or " 
ValueError: np.nan is an invalid document, expected byte or unicode string. 

Hiçbir şey için CSV dosyası ve DataFrame kontrol: En fazla bu hata için traceback olan

import pandas as pd 
import numpy as np 
from sklearn.feature_extraction.text import TfidfVectorizer 

df = pd.read_csv("train_new.csv", 
      names = ['Score', 'Review'], sep=',') 

# x = df['Review'] == np.nan 
# 
# print x.to_csv(path='FindNaN.csv', sep=',', na_rep = 'string', index=True) 
# 
# print df.isnull().values.any() 

v = TfidfVectorizer(decode_error='replace', encoding='utf-8') 
x = v.fit_transform(df['Review']) 

:

Bu

benim kodudur hiçbir şey bulamadım. 18000 satır var, bunların hiçbiri True olarak isnan döndürüyor.

Bu gibi df['Review'].head() görünür: Açıkça traceback olarak söz ediyor d_type object dize unicode dönüştürmek gerekir

0 This book is such a life saver. It has been s... 
    1 I bought this a few times for my older son and... 
    2 This is great for basics, but I wish the space... 
    3 This book is perfect! I'm a first time new mo... 
    4 During your postpartum stay at the hospital th... 
    Name: Review, dtype: object 
+1

Eğer 'df [ 'İnceleme']' başkanı görüntüler Could: TFIDF Vectorizer Doc sayfasından

x = v.fit_transform(df['Review'].values.astype('U')) ## Even astype(str) would work 

başka her şeyden daha mı? –

+0

Elbette. Gönderiyi yeni düzenledim. – boltthrower

+0

Ve ayrıca yazın (df ['Review']. Iloc [0]) '? –

cevap

28

. Beni dataframe içindeki metnin kodlama ile ilgili hiç göründüğü kadar

fit_transform(raw_documents, y=None)

Parameters: raw_documents : iterable
an iterable which yields either str, unicode or file objects

+1

verir. Çok teşekkür ederim. Doğru cevap olarak işaretlemek. – boltthrower

İlgili konular