背景
あるcsvデータを決定木で可視化したくなったのでやってみる by python
まずはChatGPTに聞いてみる
俺: python x google colabでcsvデータを決定木で可視化したい。手順教えて。
ChatGPT: Python で CSV データを読み込み、決定木で可視化するためには、pandas ライブラリでデータを読み込み、scikit-learn ライブラリで決定木モデルを構築し、matplotlib および graphviz を使って可視化するのが一般的です。 ~略~
前処理
- 数値型以外のデータは受け付けなかったので事前に取り除きました
実装
# 必要なライブラリのインポート
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.metrics import accuracy_score
import graphviz
# /content/hoge.csv ファイルの読み込み
df = pd.read_csv('/content/hoge.csv')
# ターゲット変数と特徴量を指定 (ここでは 'target' 列をターゲットと仮定)
X = df.drop('target', axis=1) # 'target' 列を除外
y = df['target'] # 'target' 列
X.fillna(0, inplace=True) # Nanがあるとエラーになるので0にする
# データを訓練セットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 決定木モデルの構築
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# テストデータでの予測と精度の評価
y_pred = clf.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
# 決定木の可視化
dot_data = export_graphviz(clf, out_file=None,
feature_names=X.columns,
class_names=str(clf.classes_),
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("/content/decision_tree") # PDF ファイルとして保存
graph # Jupyter Notebook または Colab で直接表示
簡単!