📁
Pythonで秒速の機械学習「FastText」を分類で簡単に使う方法
注意
僕に処理が悪いのかクソ性能です。
不均衡データ & 15項目で分類したテスト結果が以下になります。
(3572, 0.524636058230683, 0.524636058230683)
おそらく次元削減をするなど項目を減らせば飛躍的に精度が上がるかと思います。
環境構築
- ※pipでインストールするとエラーが起こります。
そのため、git cloneします。
git clone https://github.com/facebookresearch/fastText.git
cd fastText
make
- ※M1チップで"make"コマンドが打つと以下のエラーが出ました。
c++ -pthread -std=c++11 -march=native -O3 -funroll-loops -DNDEBUG -c src/args.cc
clang: error: the clang compiler does not support '-march=native'
makeを実行したディレクトリにあるMakefileに入り、
-march=native を消して -mcpu=apple-m と書き換えたらうまく行きました。
データがある場合の使い方
学習するデータはこのように格納しておく
model.txt
label1 | にんじんしりしり |
label1 | にんじんスープ |
label1 | にんじんチップス |
import sys
import fasttext as ft
# 学習モデルを作成
model = ft.train_supervised(input="model.txt")
# モデルを保存
model.save_model("model.bin")
モデルを使ってカテゴリを予測
そうすると、モデルを使ってカテゴリを予測できるようになります。
model.predict("にんじんジュース")
(3572, 0.524636058230683, 0.524636058230683)
参考図書
Pythonの基礎が怪しい人向け
スッキリわかるPython入門
機械学習がわからない人向け
Pythonの基礎でも紹介した、スッキリわかるPython機械学習
この本で機械学習を勉強しました。
scikit-learn 20本ノック (いまにゅさんの動画)
- Kaggleで勝つ技術
そのとき読んでクリアできた。
Discussion