NaiveBayesでTF-IDFで作成したデータベースを学習
実行結果
このプログラムではNaiveBayes(ナイーブベイズ)を利用してTF-IDFのデータベースを学習している。
TF-IDFのデータベースを読み込む
data = pickle.load(open("text/genre.pickle", "rb"))
y = data[0] # ラベル
x = data[1] # TF-IDF
hanamichi-sukusuku.hatenablog.com
genre.pickleに関しては上記でlivedoorニュースコーパスのデータを利用してTF-IDFベクトルに変換したデータを作成している。
学習用とテスト用に分ける
x_train, x_test, y_train, y_test = train_test_split(
x, y, test_size=0.2)
ナイーブベイズで学習
model = GaussianNB()
model.fit(x_train, y_train)
評価して結果を出力
y_pred = model.predict(x_test)
acc = metrics.accuracy_score(y_test, y_pred)
rep = metrics.classification_report(y_test, y_pred)
print("正解率=", acc)
print(rep)
metrics.classification_report()では正解データと予測データを渡すことでprecision(適合率)やrecall(再現率)などのそれぞれのデータを比較したときの詳細をみることができる。
metrics.classification_report()見方
y_test = [0,0,0,1](正解)
y_pred = [0,0,1,1](予測)
例えばmetrics.classification_report(y_test, y_pred)このような場合
precision
・precision(適合率)は0と予測した2つはどちらも正解なので適合率1.00。
・1と予測した2つはそのうちの1つが正解なので適合率0.50。
recall
・recall(再現率)は正解が0だった3つのうち、正しく0だと予測されたものは2つなので再現率0.67。
・正解が1だった1つを予測結果で予測できているので再現率1.00。
f1-score
fi-scoreは調和平均。
support
正解の要素数。