見出し画像

Dicision Tree Classifier from scratch -決定木分類モデルのfortran化について-

▼以下決定木分類(Dicision Tree Classifier)のfortran90コードです。いわゆるfrom scratchというもののひとつに当たるかと思います。自由に用いて構いません。ただし、コード自体の積極的な使用はすすめません。これを使用・改変した結果を外に出す場合は、その旨を記載して下さると有難いです。
必要なもの:
・csvファイル"iris-dataset.csv
 -いわゆるiris-dataset。1行目はラベル名。2行目以降に変数150データ 。
 -最終列は目的変数を整数で書く。(0,1,2に書き換えておく)
・fortranプログラム実行に必要なもの。

個人的な興味から2、3日くらいで原型を作り、いろいろ遊んでいたものです
が、消えていくのも寂しいかと思い、ここに置くことにしました。

このプログラムは、処理量が~2^(木の深さ)で増えていくものになっており、木の深さ15程度を超えると使い物になりません。他にも、いろいろと危ない箇所があると思いますので、上にも書きましたが積極的な使用はすすめません。決定木にはsklearnを使うのが良いと思います。
目的関数や二分木のロジックそのものをいじるとか、そんな変な使い方を望むならば見る価値があるのかもしれません。

いちおう、有名な機械学習の分類問題"iris-dataset"において、
pythonのライブラリscikit-learnのDecisionTreeClassifier(ただしハイパーパラメータは以下)と同じ結果を返すことを確認しています。

model = DecisionTreeClassifier(
   criterion='entropy',
   splitter='best',
   max_depth=10,
   min_samples_split=2,
   min_samples_leaf=1,
   max_features=None,
   max_leaf_nodes=None,
   min_impurity_decrease=0.0
)



この記事が気に入ったらサポートをしてみませんか?