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