python - 多个特征作为 ML NLP 文本分析预测的输入
问题描述
我有 8 列作为输入和 1 列输出来预测。在尝试拟合 countvectorizer 和 tfidf 时,我得到了
ValueError: Found input variables with inconsistent numbers of samples: [7, 23752]
但是X_train.shape
,X.shape
当我应用 fit_transform 时是正确的,为什么会出现此错误?
代码
X_train, X_test, y_train, y_test = train_test_split(df[['A','B','C',
'D','E','F',
'G']], df.final, test_size=0.2,
random_state = 42)
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfTransformer
nb = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB()),
])
nb.fit(X_train, y_train)
解决方案
CountVectorizer 应用于字符串,而不是 NumPy 数组。
TfidfTransformer 将在 CountVectorizer 计数矩阵上工作,因此您的管道没有意义,您也缺少参数。
由于您已经拥有 numpy 数组表示,因此只需直接适合 NB 分类器。
X_train, X_test, y_train, y_test = train_test_split(df[['A','B','C',
'D','E','F',
'G']], df.final, test_size=0.2,
random_state = 42)
from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit(X_train, y_train)
推荐阅读
- cmake - Cmake 错误:STRING 子命令 REPLACE 至少需要四个参数
- angular - 在 Angular 中导航时聚焦和阅读主页标题标签
- datetime - convert date time series to seconds interval in fortran
- vb.net - VB.NET:将非文本文件修改为文本而不破坏它
- spring-boot - 仅当我在 Kafka 中完成当前消息时才收听另一条消息
- java - 从 Firestore 检索当前登录用户的数据
- c# - 两个 ulong 的减法给出错误的输出
- .htaccess - 如何在 url 中使用 # 进行 .htaccess 301 重定向
- r - 使用 ggmap 映射点
- javascript - Flask - 将 Javascript 变量发送到 Python