【问题标题】:building 2D datasets from text file从文本文件构建二维数据集
【发布时间】:2014-09-13 15:42:16
【问题描述】:

在 scikit-learn 中,我必须在文本文档集合上实现线性 SVM 分类器。有关特征提取的文档显示了如何仅转换可用的数据集、虹膜等。我需要上传我自己的文本文件集合并对其进行转换,以便估计器可以使用它。为此,我尝试使用它。

    fil = datasets.load_files('/home/ayushi/Dropbox/Bundeli/corpus/wob/sklearn',    description=None, categories=None, load_content=True, shuffle=True, encoding='utf-8', charset=None, charset_error=None, decode_error='strict', random_state=0)

    vec = DictVectorizer()
    vec.fit_transform(fil).toarray()

现在我得到这个错误

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/dict_vectorizer.py", line 143, in fit_transform
return self.transform(X)
    File "/usr/lib/python2.7/dist-packages/sklearn/feature_extraction/dict_vectorizer.py", line 231, in transform
    values.append(dtype(v))
    ValueError: could not convert string to float: gaari

Gaari 是一种流派的名称,文本需要分类。

另外,当我尝试这个时:http://scikit-learn.org/stable/auto_examples/svm/plot_iris.html#example-svm-plot-iris-py

使用 load_files() 获取我自己的数据并准确地跟踪所有内容,我遇到了这个错误。

    TypeError : list indices should be integer not tuples

但是,我仍然需要将其转换为 2D 数据集。有人有什么建议吗?

【问题讨论】:

    标签: python scikit-learn svm


    【解决方案1】:

    sklearn.datasets.load_files 只将文件加载到内存中,生成字符串,而DictVectorizer 想要字典作为输入。您需要一个执行实际特征提取的函数:

    data = datasets.load_files('/home/ayushi/Dropbox/Bundeli/corpus/wob/sklearn',
                               encoding='utf-8')
    vec = DictVectorizer()
    X = vec.fit_transform(extract_features(f) for f in data.data)
    

    其中extract_features 是一个特定于数据集的函数,它接受一个字符串并生成一个将特征名称映射到特征值的字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多