1

enter image description here我在使用随机森林分类器时出现此错误。这里是我的代码:模型的特征数量必须与输入匹配。模型n_features是20,输入n_features是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) 
+0

你为什么要向X和Y提供train ['question']? –

回答

0

对列车和测试数据都使用相同的训练矢量。第二次,如果你再次适合数据,那么它会根据这个新数据将它变成矢量。

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

我从另一个文件中获取测试数据,我尝试了vector.its工作! –

+0

现在我想知道我的输出是作为整数来的,因为我在训练时将字符串转换为整数,但我想要字符串作为输出。我的建议 –

+0

我没有得到你。如果你想要字符串,那么这是什么输入。 Vectorizer意味着将你的字符串ip转换为intectres的vectoe – rakesh