LoginSignup
0
1

More than 1 year has passed since last update.

子豚検知による分類アルゴリズムの比較

Last updated at Posted at 2022-10-22

はじめに

先日、子豚の有無を判別する学習モデルをランダムフォレストで作成しましたが、ほかの分類アルゴリズムも教科書に掲載されていたので、それぞれの分類アルゴリズムを使って精度を比較してみようと思いました。

比較するモデル
・サポートベクタマシン model_svc
・決定木 model_tree
・ランダムフォレスト model_forest

事前準備

同じデータを使って3種類のモデルを作成して、それぞれの結果を出力させます。
使用している画像やフォルダ構成についてはこちらの記事を参照してください。

それぞれのモデルを作成

from sklearn.svm import SVC

model_svc = SVC()
model_svc.fit(X_train, y_train)
from sklearn.tree import DecisionTreeClassifier

model_tree = DecisionTreeClassifier(max_depth=3)
model_tree.fit(X_train, y_train)
from sklearn.ensemble import RandomForestClassifier

model_forest = RandomForestClassifier(random_state=123)
model_forest.fit(X_train, y_train)

それぞれのモデルでテストデータを検証

in
from sklearn.metrics import classification_report

pred_svc = model_svc.predict(X_test)
print(classification_report(y_test, pred_svc))

pred_tree = model_tree.predict(X_test)
print(classification_report(y_test, pred_tree))

pred_forest = model_forest.predict(X_test)
print(classification_report(y_test, pred_forest))
out
              precision    recall  f1-score   support

           0       0.84      0.59      0.70        54
           1       0.67      0.88      0.76        51

    accuracy                           0.73       105
   macro avg       0.76      0.74      0.73       105
weighted avg       0.76      0.73      0.73       105

              precision    recall  f1-score   support

           0       0.67      0.85      0.75        54
           1       0.78      0.55      0.64        51

    accuracy                           0.70       105
   macro avg       0.72      0.70      0.70       105
weighted avg       0.72      0.70      0.70       105

              precision    recall  f1-score   support

           0       0.88      0.81      0.85        54
           1       0.82      0.88      0.85        51

    accuracy                           0.85       105
   macro avg       0.85      0.85      0.85       105
weighted avg       0.85      0.85      0.85       105

確認結果

項目 サポートベクタマシン 決定木 ランダムフォレスト
子豚なし(0)の適合率 0.84 0.67 0.88
子豚なし(0)の再現率 0.59 0.85 0.81
子豚あり(1)の適合率 0.67 0.78 0.82
子豚あり(1)の再現率 0.88 0.55 0.88

概ね予想通りでしたが、このような結果になりました。
子豚のあり・なしの単純な2値分類ですが、子豚検知には写真を使っていて、案外複雑な画像認識のような気もするので、ランダムフォレストのようなアンサンブル学習の精度が良くなるのかなと思いましたか。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1