模型的特征数量必须与输入匹配。模型的特征数量为7985,而输入的特征数量为1

我使用随机森林构建了一个垃圾邮件分类器,并希望创建一个单独的函数来将文本消息分类为垃圾邮件或正常邮件,我尝试了以下代码:

def predict_message(pred_text):    pred_text=[pred_text]    pred_text2 = tfidf_vect.fit_transform(pred_text)    pred_features = pd.DataFrame(pred_text2.toarray())    prediction = rf_model.predict(pred_features)    return (prediction)pred_text = "how are you doing today?"prediction = predict_message(pred_text)print(prediction)

但它给出了以下错误:

The number of features of the model must match the input.Model n_features is 7985 and input n_features is 1 

我看不出问题所在,如何才能使它正常工作?


回答:

通过调用tfidf_vect.fit_transform(pred_text),你的向量化器会丢失来自原始训练语料库的所有信息。

你应该只调用transform

以下更改应该有帮助:

def predict_message(pred_text):    pred_text=[pred_text]    pred_text2 = tfidf_vect.transform(pred_text)  # 已更改    prediction = rf_model.predict(pred_text2)    return (prediction)pred_text = "how are you doing today?"prediction = predict_message(pred_text)print(prediction)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

模型的特征数量必须与输入匹配。模型的特征数量为40,而输入的特征数量为38

我遇到了这个错误。请给我一些解决建议。这里是我的代码。我从train.csv中获取训练数据,从另一个文件test.csv中获取测试数据。我是机器学习的新手,所以我不明白问题出在哪里。请给我一些建议。

import quandl,math    import numpy as np    import pandas as pd    import matplotlib.pyplot as pltfrom matplotlib import styleimport datetimefrom sklearn.ensemble import RandomForestClassifierfrom sklearn.preprocessing import LabelEncoderfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn import metricstrain = pd.read_csv("train.csv", index_col=None)test = pd.read_csv("test.csv", index_col=None)vectorizer = CountVectorizer(min_df=1)X1 = vectorizer.fit_transform(train['question'])Y1 = vectorizer.fit_transform(test['testing'])X=X1.toarray()Y=Y1.toarray()#print(Y.shape)number=LabelEncoder()train['answer']=number.fit_transform(train['answer'].astype('str'))features = ['question','answer']y = train['answer']clf=RandomForestClassifier(n_estimators=100)clf.fit(X[:25],y)predicted_result=clf.predict(Y[17])p_result=number.inverse_transform(predicted_result)f = open('output.txt', 'w')t=str(p_result)f.write(t)print(p_result)

回答:

你的代码存在多个问题。但与这个问题相关的是,你在训练和测试数据上都对CountVectorizer (vectorizer)进行了拟合,这就是为什么你得到了不同的特征。

你应该做的是:

X1 = vectorizer.fit_transform(train['question'])# 以下这行已更改Y1 = vectorizer.transform(test['testing'])

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

模型的特征数量必须与输入匹配。模型的特征数量为20,而输入的特征数量为4

输入图片描述我在使用随机森林分类器时遇到了这个错误。以下是我的代码:

import quandl, math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import style
import datetime
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.feature_extraction.text import CountVectorizer
train = pd.read_csv("train.csv", index_col=None)
vectorizer = CountVectorizer(min_df=1)
X1 = vectorizer.fit_transform(train['question'])
X=X1.toarray()
corpus=['tell me your name']
t1= vectorizer.fit_transform(corpus)
t=t1.toarray()
number=LabelEncoder()
train['answer']=number.fit_transform(train['answer'].astype('str'))
features = ['question','answer']
y= train['question'].values
clf=RandomForestClassifier(n_estimators=20)
clf.fit(X,y)
predicted_result=clf.predict(t)

回答:

对于训练数据和测试数据,请使用相同的训练过的向量化器。如果第二次再次拟合数据,它将仅基于这组新数据生成向量。

X1 = vectorizer.fit_transform(train['question'])
t1= vectorizer.transform(corpus)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注