0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

簡単な決定木を実行してみる

Last updated at Posted at 2025-03-24

機械学習の学びのため簡単な決定木を実行してみる。

使うもの

matplotlib(グラフ描画のためのライブラリ)
scikit-learn(データ分析や機械学習のためのライブラリ)
Iris Dataset(アイリスデータセット)
→150件のあやめ(花)のデータ。
中身は以下である。
・「花びら(petal)/がく片(sepal)の長さと幅(cm)」という4つの特徴や属性。
・あやめの種類である「setosa(セトサ)/versicolor(バージカラー)/virginica(バージニカ)」という3つのラベル。

データ処理のざっくりとした流れ

①必要なライブラリのインポート:データ操作、可視化、機械学習などに必要なライブラリをインポート。
②Irisデータセットのロード:Scikit-learnのデータセットからIrisデータセットをロードし、特徴量データ X とターゲットデータ y に分ける。
③データの分割:データをトレーニングセットとテストセットに分割する。トレーニングセットが70%、テストセットが30%。
※訓練データとテストデータが分かれている理由は、まずは訓練データだけで学習を行い、データの特徴を理解する。その後、テストデータを使って、未知のデータに対しても正しく判断できるかをチェックする。
④モデルのトレーニング:トレーニングデータを使用してモデルを訓練する。
⑤テストデータに対する予測:テストデータに対して予測を行う。
⑥正確度の評価:予測結果と実際のラベルを比較してモデルの正確度を算出し、表示する。
⑦決定木の可視化:訓練された決定木モデルを視覚化する。特徴量名とクラス名を表示し、ツリーの各ノードを色付けする。

# 必要なライブラリをインポート
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.tree import plot_tree

# Irisデータセットをロード
iris = datasets.load_iris()
X = iris.data
y = iris.target

# データをトレーニングセットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 決定木分類器のインスタンス化
clf = DecisionTreeClassifier(random_state=42)

# モデルのトレーニング
clf.fit(X_train, y_train)

# テストデータに対する予測
y_pred = clf.predict(X_test)

# 正確度の評価
accuracy = accuracy_score(y_test, y_pred)
print(f'モデルの正確度: {accuracy * 100:.2f}%')

# 決定木の可視化
plt.figure(figsize=(20, 10))
plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names, rounded=True)
plt.show()

無題.png

決定木の見え方

条件分岐:条件が満たされている場合は左へ、満たされない場合は右へ分岐。
gini:データが異なるクラスに属する程度を示す指標。(数値を最小化するように分割することで、より精度の高いモデルを構築できる)
samples:データに含まれるサンプルがそのノードに何個行き着いたか。
value:そのノードに行き着いた学習サンプルがどのクラスに属しているか。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?