この質問を投稿する前に、私はこのボードで15以上の類似したトピックを徹底的に読んだことがありますが、それぞれ異なる推奨事項がありますが、CountVectorizer MultinomialNBのディメンション不一致エラー
私は、CountVectorizerとその 'fit_transform'関数を使ってコーパスの語彙に合わせて、テキストから単語数の特徴を抽出することで、元のCSV形式のテキストデータをトレーニングとテストのセットに分割しました。そして、MultinomialNB()を適用してトレーニングセットから学び、テストセットを予測しました。ここでは(簡体字)私のコードです:
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cross_validation import train_test_split
from sklearn.naive_bayes import MultinomialNB
# loading data
# data contains two columns ('text', 'target')
spam = pd.read_csv('spam.csv')
spam['target'] = np.where(spam_data['target']=='spam',1,0)
# split data
X_train, X_test, y_train, y_test = train_test_split(spam_data['text'], spam_data['target'], random_state=0)
# fit vocabulary and extract word count features
cv = CountVectorizer()
X_traincv = cv.fit_transform(X_train)
X_testcv = cv.fit_transform(X_test)
# learn and predict using MultinomialNB
clfNB = MultinomialNB(alpha=0.1)
clfNB.fit(X_traincv, y_train)
# so far so good, but when I predict on X_testcv
y_pred = algo.predict(X_testcv)
# Python throws me an error: dimension mismatch
行が元の迷惑メールデータの文字列形式(はい、あります)、または(3)X_testで何もしません。しかし、それらのすべては鐘を鳴らさなかったし、Pythonは私に次元の不一致のエラーを与え続けた。 4時間苦労した後、私はStackoverflowに屈服しなければなりませんでした。誰もが私にこのことを教えてもらえると本当に感謝しています。私のコードで何がうまくいかないのか、次元を正しく得る方法を知りたいだけです。
ありがとうございます。
ところで、元のデータ・エントリは、すでにトレーニングデータを装着してきたこの
_
test target
0 Go until jurong point, crazy.. Available only 0
1 Ok lar... Joking wif u oni... 0
2 Free entry in 2 a wkly comp to win FA Cup fina 1
3 U dun say so early hor... U c already then say 0
4 Nah I don't think he goes to usf, he lives aro 0
5 FreeMsg Hey there darling it's been 3 week's n 1
6 WINNER!! As a valued network customer you have 1
CountVectorizer
ありがとうございました。ありがとうございました。私は、.fit_transformと.transformの違いを説明してくれてありがとうございました。私はこれを前に試しましたが、当時私にエラーメッセージを投げかけました。 –