gpt4 book ai didi

python - 使用 CountVectorizer 连接自定义功能

转载 作者:太空狗 更新时间:2023-10-29 17:31:35 28 4
gpt4 key购买 nike

我有一堆包含文章的文件。每篇文章都应该有一些特征,比如:文本长度text_spam(都是整数或 float ,在大多数情况下它们应该从 csv 加载)。而我想要做的是 - 将这些特征与 CountVectorizer 结合起来,然后对这些文本进行分类。

我看了一些教程,但我仍然不知道如何实现这些东西。找到了东西 here ,但实际上无法满足我的需要。

有什么想法可以用 scikit 完成吗?

谢谢。

我现在遇到的是:

from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import FeatureUnion

measurements = [
{'text_length': 1000, 'text_spam': 4.3},
{'text_length': 2000, 'text_spam': 4.1},
]

corpus = [
'some text',
'some text 2 hooray',
]

vectorizer = DictVectorizer()
count_vectorizer = CountVectorizer(min_df=1)

first_x = vectorizer.fit_transform(measurements)
second_x = count_vectorizer.fit_transform(corpus)

combined_features = FeatureUnion([('first', first_x), ('second', second_x)])

对于这一堆代码,我不明白如何加载“真实”数据,因为已经加载了训练集。第二个 - 如何加载类别(适合函数的 y 参数)?

最佳答案

您误解了 FeatureUnion。它应该使用两个变压器,而不是两批 sample 。

您可以强制它处理您拥有的向量化器,但将所有特征放入每个样本的一个大包中并使用单个 DictVectorizer 从这些包中生成向量要容易得多.

# make a CountVectorizer-style tokenizer
tokenize = CountVectorizer().build_tokenizer()

def features(document):
terms = tokenize(document)
d = {'text_length': len(terms), 'text_spam': whatever_this_means}
for t in terms:
d[t] = d.get(t, 0) + 1
return d

vect = DictVectorizer()
X_train = vect.fit_transform(features(d) for d in documents)

不要忘记使用 sklearn.preprocessing.Normalizer 对其进行归一化,并注意即使在归一化之后,那些 text_length 特征也必然会支配中的其他特征规模方面。使用 1 可能更明智。/text_lengthnp.log(text_length) 代替。

And the second one - how to load categories (y parameter for fit function)?

取决于您的数据组织方式。 scikit-learn 有很多辅助函数和类,但如果您的设置不是标准的,它确实希望您编写代码。

关于python - 使用 CountVectorizer 连接自定义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687365/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com