【问题标题】:Scikit Learn - Working with datasetsScikit Learn - 使用数据集
【发布时间】:2016-07-13 14:32:23
【问题描述】:

阅读了一些stackoverflow问题,我找不到我要找的东西,至少,当我阅读各种帖子时,我认为它不是。

我设置了一些训练数据,如here 所述 所以,我正在使用 sklearn.datasets.load_files 来读取它们,因为它在设置上是完美匹配的。

但是我的文件已经是 tsv 作为词袋了(也就是每一行都是一个词,它的频率计数由制表符分隔)。

说实话,我不知道该怎么做。 load_files 提取的数据被设置为一个列表,其中每个元素是每个文件的内容,包括换行符。我什至不能 100% 确定 Bunch 数据类型如何跟踪哪些文件属于哪个分类器文件夹。

我之前在 tsvs 上使用过 scikit-learn,但它是一个包含所有数据的单个 tsv 文件,所以我使用 pandas 读取它,然后使用 numpy.array 从中获取我需要的内容,即我尝试做的一件事,但我不知道如何处理多个文件,其中分类器是文件夹名称,就像我之前使用的单个 tsv 文件一样,每一行训练数据都是单独的

对于将数据转换为可用于训练分类器的格式的一些帮助,我们将不胜感激。

【问题讨论】:

  • 您是否阅读过这部分内容:“要在 scikit-learn 分类或聚类算法中使用文本文件,您需要使用 sklearn.feature_extraction.text 模块来构建适合您的特征提取转换器问题。”
  • 我有......但这依赖于原始数据,我很确定......我没有。
  • 您可以编写一个自定义特征提取器,它将从数据集中提取您的特征。如果您花时间阅读文档,它实际上使用起来非常简单。查看子类化BaseEstimator 以提取您想要的特征。
  • 我不确定这如何将我的数据转换为正确的格式。 BaseEstimator 类看起来不像是用于特征提取的。
  • 对不起,我的意思是TransformerMixin

标签: python-2.7 numpy machine-learning scipy scikit-learn


【解决方案1】:

您可以遍历文件并阅读它们,以创建一个字典列表,其中每个字典将包含每个文档的特征和频率。假设文件1.txt:

import codecs
corpus = []
#make a loop over the files here and repeat the following
f = codecs.open("1.txt", encoding='utf8').read().splitlines()
corpus.append({line.split("\t")[0]:line.split("\t")[1] for line in f})
#exit the loop here
from sklearn.feature_extraction import DictVectorizer
vec=DictVectorizer()
X=vec.fit_transform(measurements)

你可以在这里找到更多DictVectorizer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-14
    • 2015-05-22
    • 2017-01-09
    • 2022-06-18
    • 2021-05-10
    • 2015-08-23
    • 2017-02-24
    • 2013-04-22
    相关资源
    最近更新 更多