繁体   English   中英

重新创建稀疏矩阵列以进行ML模型预测

[英]recreating sparse matrix columns for ML model predictions

我一直在使用sklearn建立模型,其中很大一部分利用CountVectorizer()函数从训练集中的一组字符串创建稀疏矩阵。

例如:

vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus).toarray()

导出模型后,格式化数据的最佳方法是我想创建预测以匹配训练创建的特征名称的数据? 我是否还应该导出(通过泡菜?) vectorizer.get_feature_names() ,然后使用它? 或者,还有更好的方法?

换句话说,如果在我的训练集中vectorizer.get_feature_names() = ['apple', 'dog', 'cat']并且我想对'hello cat'做出预测,那么我的特征提取方法应基于什么预测要求是? 如果Im错误,请纠正我,但是特征提取的结果需要为[0, 0, 1]才能匹配模型。

在这里我也可能完全不了解我的方法,因此不胜感激任何帮助或建议

谢谢!

当您键入

vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus).toarray()

vectorizer器用于适合您在corpus的单词的VOCABULARY

因此,使用SAME vectorizertransform另一个数据集,您将看到新数据集的词频与corpus的词汇相对应

记住,您执行fit_transform(X)时说“使用X的词汇”,并且只执行一次。 然后,您只需进行tranform(Y)表示,“无论您将X用作什么,都将其用作列,并将Y的术语适合这些X

from sklearn.feature_extraction.text import CountVectorizer
corpus = ['love dogs, hate cows, and also pigs, actually dogs too']
vectorizer = CountVectorizer(max_features=3000)
sparse_matrix = vectorizer.fit_transform(corpus)
df = pd.DataFrame(sparse_matrix.toarray())
df.columns = vectorizer.get_feature_names()
print(df)

会给你这个:

   actually  also  and  cows  dogs  hate  love  pigs  too
0         1     1    1     1     2     1     1     1    1

接着:

test = vectorizer.transform(['hello cat']) #Notice how I use transform and not fit_transform
df = pd.DataFrame(test.toarray())
df.columns = vectorizer.get_feature_names()
print(df)

   actually  also  and  cat  cows  dogs  hate  love  pigs  too
0         0     0    0    1     0     0     0     0     0    0

请注意, hello cat如何适合被调用fit_transform的术语词汇表。 因此,在特征提取中,您将“ hello cat” fit_transform到称为fit_transform的词汇表上!

现在,将所有这10列用作特征以预测标签y 您正在做的事情称为向量空间模型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM