はじめに
ブログタイトルの通り,scikit-learnの決定木の実装を読みながら,フルスクラッチで写経していこうと思います。
とはいっても,決定木の実装,めちゃくちゃムズイです。
主な理由としては,アルゴリズムのコアとなる部分の大半がCythonで実装されていることが挙げられます。
他にも,サブモジュール類が複数に分かれていて,従属関係を把握しづらい,という面もあります。
ということで,いきなりゼロからガリガリ書いたるで!っというやり方はしません。
代わりに,最初のうちはサブモジュール・基底クラスなどのかたまりはコピペ・importして使い,インターフェイス部分から徐々に掘り下げていく方針を取ろうと思います。
ということでまずは,分類木 DecisionTreeClassifierから見ていきます。
予測モデルを作る時って,だいたいいつもこんな感じでやりますよね?
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
ではいきなりですが,scikit-learnのGitHubからDecisionTreeClassifier
を拾って来て,動かしてみましょう!
続きを読む