#実現したいこと
テキストデータ(仕事内容(20文字程度))をjanomeで形態素解析し、CountVectorizerで配列化し、sklearn.naive_bayes(MultinomialNB)で学習させ、仕事内容から仕事分類を予測したいです。
※説明変数は仕事内容、目的変数は仕事分類、環境はpython3.6
#困っていること
学習及び検証までは実施できましたが、この学習済みモデルに未知データ(学習、検証以外のデータ)を与えて、検証でやった正答率が正しいかを確認したいと思っていますが、以下エラーになり対処が分かりません。。(p_-)皆さんに教えていただければ幸いです。どうぞよろしくお願いします。m(__)m
#コード
import
1from janome.tokenizer import Tokenizer 2 3documents = [] # 形態素用の配列を用意 4t = Tokenizer() 5y = [] # クラスラベル用の配列を用意 6with open('./test.csv') as f: 7 reader = csv.reader(f) 8 next(reader) 9 for columns in reader: 10 y.append(columns[1]) # 仕事分類をクラスラベルとしてまとめる 11 document = [] # 1行分の仮の配列を用意 12 for token in t.tokenize(columns[0]): 13 document.append(token.surface) # 仮の配列に形態素を追加 14 documents.append(' '.join(document)) 15 16import numpy as np 17from sklearn.feature_extraction.text $import CountVectorizer 18 19CountVect = CountVectorizer(min_df=1) 20X = CountVect.fit_transform(documents) 21 22from sklearn.externals import joblib 23clf2 = joblib.load('clf.pkl') 24clf2.predict(X) 25print(clf2.score(X, y))
#エラー内容
ValueError Traceback (most recent call last) <ipython-input-38-8c6bc2aa9621> in <module>() 4 5 #■学習済みモデルから、未知データを予測する ----> 6 clf2.predict(X) 7 print(clf2.score(X, y)) 8 C:\Users\XXXX\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\naive_bayes.py in predict(self, X) 63 Predicted target values for X 64 """ ---> 65 jll = self._joint_log_likelihood(X) 66 return self.classes_[np.argmax(jll, axis=1)] 67 C:\Users\XXXX\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\naive_bayes.py in _joint_log_likelihood(self, X) 705 706 X = check_array(X, accept_sparse='csr') --> 707 return (safe_sparse_dot(X, self.feature_log_prob_.T) + 708 self.class_log_prior_) 709 C:\Users\XXXX\AppData\Local\Continuum\Anaconda3\lib\site-packages\sklearn\utils\extmath.py in safe_sparse_dot(a, b, dense_output) 182 """ 183 if issparse(a) or issparse(b): --> 184 ret = a * b 185 if dense_output and hasattr(ret, "toarray"): 186 ret = ret.toarray() C:\Users\XXXX\AppData\Local\Continuum\Anaconda3\lib\site-packages\scipy\sparse\base.py in __mul__(self, other) 403 404 if other.shape[0] != self.shape[1]: --> 405 raise ValueError('dimension mismatch') 406 407 result = self._mul_multivector(np.asarray(other)) ValueError: dimension mismatch
ソースコードのインデントが消滅していてコードが非常に読みづらいので、次のページを参考にして、ソースコード部分を整形してください。 https://teratail.com/help/question-tips#questionTips3-5-1
見ていただきありがとうございます‼
すみませんでした、スペース入れても変わらなかったので、$を入れて分かるようにしてみました。どうぞ、よろしいお願いしますm(_ _)m
いやそうじゃない。リンク先読みました? "teratailではソースコードをシンタックスハイライトすることができます。" の部分です
誤っており、また遅くなり大変すみませんでした。再度ご確認頂けましたらと思います。
回答1件
あなたの回答
tips
プレビュー