如何使用自己的算法提取scikit-learn中的特征(文本特征提取)

时间:2015-08-30 17:14:18

标签: python machine-learning scikit-learn

我想使用自己的算法从训练数据中提取要素,然后使用CountVectorize中的scikit-learn进行拟合和转换。

目前我在做:

from sklearn.feature_extraction.text import CountVectorizer
cvect_obj = CountVectorizer()
vects = cvect_obj.fit_transform(traning_data)

fit_transform(traning_data)会自动提取功能并对其进行转换,但我想使用自己的算法来提取功能。

2 个答案:

答案 0 :(得分:1)

实际上直接使用它是不可能的。通过scikit-learn规则它们只添加成熟的算法。自出版物,200多次引用以及广泛使用和有用性以来,经验法则至少为3年。还将考虑包括在广泛使用的方法上提供明确改进(例如,增强的数据结构或有效近似)的技术。

此外,您的实现不需要在scikit中学习与scikit-learn工具一起使用。以scikit-learn兼容的方式实现您喜欢的算法,将其上传到github,它将列在Related Projects下。

答案 1 :(得分:1)

由于您无法改变sklearn核心,因此您可以随时保留自己的功能提取。所有你必须确保sklearn中的大多数数字模块处理稀疏矩阵,如scipy.sparse.csr_matrix。

您需要的只是一种方法或模块,它以原始形式(例如,句子)获取数据,并将其转换为稀疏矩阵。我要写的基本框架是:

class MyFeatureExtractor:
  def __init__():
    dictionary = {}
    vocab = []

  def fit(list of sentences):
    # learn the words after basic nlp pipeline
    # build dictionary/map between word and feature index

  def transform(new sentences):
    # for each sentence, build a sparse vector of length equal to 
    # your vocabulary, or size of dictionary
    # return the matrix

现在,您可以使用FeatureExtractor进行转换,就像常规的sklearn模块一样。