Sklearn: объект «str» не имеет атрибута «чтение»

Я хочу использовать Sklearn для векторизации моих данных в большом CSV-файле, я использовал следующий код:

Первая попытка:

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(input='file', stop_words = 'english', ngram_range=(1,2))

vectorizer.fit_transform('test.csv')

Но я получил эту ошибку:

AttributeError: объект «str» не имеет атрибута «чтение»

Вторая ПОПЫТКА, но ошибка все еще возникает:

import csv

file = open('test.csv', 'r')

f = file.readline()

vectorizer.fit_transform(f)

Третья ПОПЫТКА: эта работала, но была убита из-за нехватки памяти.

file = open('test.csv', 'r')
a = file.read()
vectorizer = TfidfVectorizer(stop_words = 'english', ngram_range=(1,2))
de = vectorizer.fit_transform(a.split('\n'))

Как использовать fit_transform в Sklearn для обработки большого файла CSV?


person Kun    schedule 20.10.2016    source источник


Ответы (1)


Вы рассматриваете свой ввод как file и даете ему string в обоих случаях (file.readline() возвращает первую строку вашего файла как string).

Вместо этого дайте ему файл .

Сделайте следующее:

file = open('test.csv', 'r')
vectorizer.fit_transform(file)
person MMF    schedule 21.10.2016
comment
Чуть более простым решением может быть просто отредактировать input='file' -> input='files', тогда объект ожидает список имен файлов, а не файловый объект. - person piman314; 21.10.2016
comment
Да, но у него только один файл и векторизатор ожидает получить не список строк, а список файлов (file.readlines() возвращает список строк) - person MMF; 21.10.2016