python sklearn 不仅仅使用计数特征来进行朴素贝叶斯学习
python sklearn using more than just the count features for naive bayes learning
首先,我是 python 和 nlp / 机器学习的新手。
现在我有以下代码:
vectorizer = CountVectorizer(
input="content",
decode_error="ignore",
strip_accents=None,
stop_words = stopwords.words('english'),
tokenizer=myTokenizer
)
counts = vectorizer.fit_transform(data['message'].values)
classifier = MultinomialNB()
targets = data['sentiment'].values
classifier.fit(counts, targets)
现在这实际上工作得很好。我通过 CountVectorizer
得到一个稀疏矩阵,classifier
使用该矩阵以及目标 (0,2,4)
。
但是,如果我想在向量中使用更多特征而不仅仅是字数统计,我该怎么办?我似乎无法找到它。提前谢谢你。
这取决于您的数据和您要执行的操作。除了字数统计之外,您还可以使用不同的转换方法:词袋、TFIDF、词向量,...
您可以从这些文档中阅读更多内容:
- http://billchambers.me/tutorials/2015/01/14/python-nlp-cheatsheet-nltk-scikit-learn.html
- http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
在你的例子中 counts
是一个稀疏矩阵;您可以向其中添加具有额外功能的列:
import numpy as np
from scipy import sparse as sp
counts = vectorizer.fit_transform(data['message'].values)
ones = np.ones(shape=(len(data), 1))
X = sp.hstack([counts, ones])
classifier.fit(X, targets)
scikit-learn 还为此提供了一个内置的帮助程序;它被称为 FeatureUnion. There is an example of combining features from two transformers in scikit-learn docs:
estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]
combined = FeatureUnion(estimators)
# then you can do this:
X = combined.fit_transform(my_data)
FeatureUnion 的作用几乎相同:它获取一个矢量化器列表(带有名称),为相同的输入数据调用它们,然后按列连接结果。
通常最好使用 FeatureUnion,因为您可以更轻松地使用 scikit-learn 交叉验证、酸洗最终管道等。
另请参阅这些教程:
首先,我是 python 和 nlp / 机器学习的新手。 现在我有以下代码:
vectorizer = CountVectorizer(
input="content",
decode_error="ignore",
strip_accents=None,
stop_words = stopwords.words('english'),
tokenizer=myTokenizer
)
counts = vectorizer.fit_transform(data['message'].values)
classifier = MultinomialNB()
targets = data['sentiment'].values
classifier.fit(counts, targets)
现在这实际上工作得很好。我通过 CountVectorizer
得到一个稀疏矩阵,classifier
使用该矩阵以及目标 (0,2,4)
。
但是,如果我想在向量中使用更多特征而不仅仅是字数统计,我该怎么办?我似乎无法找到它。提前谢谢你。
这取决于您的数据和您要执行的操作。除了字数统计之外,您还可以使用不同的转换方法:词袋、TFIDF、词向量,...
您可以从这些文档中阅读更多内容: - http://billchambers.me/tutorials/2015/01/14/python-nlp-cheatsheet-nltk-scikit-learn.html - http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html
在你的例子中 counts
是一个稀疏矩阵;您可以向其中添加具有额外功能的列:
import numpy as np
from scipy import sparse as sp
counts = vectorizer.fit_transform(data['message'].values)
ones = np.ones(shape=(len(data), 1))
X = sp.hstack([counts, ones])
classifier.fit(X, targets)
scikit-learn 还为此提供了一个内置的帮助程序;它被称为 FeatureUnion. There is an example of combining features from two transformers in scikit-learn docs:
estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]
combined = FeatureUnion(estimators)
# then you can do this:
X = combined.fit_transform(my_data)
FeatureUnion 的作用几乎相同:它获取一个矢量化器列表(带有名称),为相同的输入数据调用它们,然后按列连接结果。
通常最好使用 FeatureUnion,因为您可以更轻松地使用 scikit-learn 交叉验证、酸洗最终管道等。
另请参阅这些教程: