【问题标题】:Preparing text data for SciKit classification为 SciKit 分类准备文本数据
【发布时间】:2015-10-22 06:25:19
【问题描述】:

我正在尝试将我的数据加载到 scikit-learn 中以训练一堆分类器。我的数据不像标准那样每个文档一个文件,每个类别一个文件夹,而是如下所示(分号分隔的 csv):

train_data.csv :
    label; sentence
    cat0 ; data
    cat0 ; data
    cat1 ; data
    cat2 ; data
    ...

因此,我不能使用 load_files,而且在以相关方式提取特征时我有点迷茫。

我应该将我的数据分成每个类别的一个文件,每个文件包含所有相关文档,并放在一个命名文件夹中,还是可以从我的 csv 中按原样导入?每个文档只有一个文件似乎是对时间/资源的极大浪费。

这是我正在处理的代码,但显然缺少一步:)

def create_training_tfidf():
    docs = []
    targets = []
    with open("sets/test2.csv", "r") as sentences_file:
        reader = csv.reader(sentences_file, delimiter=';')
        reader.next()
        for row in reader:
            docs.append(row[1])
            targets.append(row[0])

    from sklearn.feature_extraction.text import TfidfVectorizer
    tf = TfidfVectorizer(analyzer='word', ngram_range=(1,3), min_df = 0, stop_words = 'english')
    tfidf_matrix = tf.fit_transform(docs)
    print tf.get_feature_names()
    return tfidf_matrix, targets

【问题讨论】:

  • 首先,必须尝试使用​​哪些代码来加载您的 CSV?你在使用熊猫还是什么?有几种方法可以解决您的任务。
  • 我没有尝试过 Pandas,我认为基本的 csv/collections 可以解决问题,我添加了我目前正在处理的代码
  • 代码在我看来没问题。您阅读了 csv 并获得了 tf-Idf 功能以及标签……那里缺少什么?除此之外,您的 csv 文件在我看来是一种比每个类别都有一个文件夹更方便的格式,只要文档大小合理。
  • 是的,现在它开始工作了,我很愚蠢,0 和 1 倒退了 :) 谢谢

标签: python csv scikit-learn


【解决方案1】:

您只需将数据放入两个矩阵中:特征和实际目标。如何解析和检索这些数据完全取决于您。

我之前用过'pandas'来解析数据。

另外,据我记得有一些函数(可能不在“pandas”中),您可以使用分隔符来解析。

希望对你有所帮助

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2015-04-07
    • 2015-07-11
    • 2017-05-26
    • 2016-07-15
    • 2015-02-05
    • 2019-05-24
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多