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]の両方に列車['question']を供給していますか? –

答えて

0

トレーニングとテストの両方のデータに同じ訓練されたベクトル化ツールを使用してください。 2回目にもう一度データを適合させると、この新しいデータのみに基づいてベクトルに変換されます。

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

私は別のファイルからテストデータを取って、私はit.itsのためのベクトル化ツールを試しました! –

+0

今、私は訓練時間に文字列を整数に変換したので、私の出力が整数として来るのを知りたいのですが、私はoutput.giveという文字列を私に提案します。 –

+0

私はあなたを得ませんでした。あなたが文字列を望むなら、それは何の入力です。ベクタライザは文字列ipをintegeresのvectoeに変換することを意味します – rakesh

関連する問題