ChatGPT の Noteable プラグインで Iris データセットを分析する
先程書いたOpenCALMのデータはいくらなんでもデータが少なすぎだったので、みんな大好き世界で1億回は分析されてきたであろうIris(あやめ)のデータセットを Noteable で分析させてみる。と思ったった通りの結果だったのだけど、グラフ描画やいろんなアルゴリズムを試してもらう、というコードもサクッと書いてくれたのでめちゃ便利感あったので📝。
- https://chat.openai.com/share/e99aaf30-08a8-4941-ad3e-c52e8c432c40
- https://app.noteable.io/f/c3246857-4f24-4204-b499-5aeca55321b9/iris_dataset_analysis.ipynb
標準統計量の出力はまぁそうだよね、という感じだけど、ペアプロット描画はいつもドキュメント読みながら、みたいな感じなるので、それを target (品種)ごとに色分けして、かつ seaborn で綺麗に描画してくれてポイント高し。
"target 以外のデータを使って、target を予想するモデルを作りたいです。どのようなアルゴリズムで予想モデルを作ると良いでしょうか?noteableを使って回答して下さい。" という指定だけで、8:2 にtrain/testを分割、5つのsklearnのアルゴリズムの実装を書いて、実際の結果まで表示、というのが便利であった。いちいち自分で書くの面倒だからねぇ。今回はすべて100%の精度だったけど、アルゴリズムごとに精度が違ったら、何故そのような結果になったのかも問えば多分教えてくれる。
なおNotableで自動作成されたnotebookコードはこんな感じ。
from sklearn.model_selection import train_test_split
X = iris_df.drop('target', axis=1)
y = iris_df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
models = [
('Logistic Regression', LogisticRegression()),
('Decision Tree', DecisionTreeClassifier()),
('Random Forest', RandomForestClassifier()),
('SVM', SVC()),
('KNN', KNeighborsClassifier())
]
results = []
for name, model in models:
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
results.append((name, accuracy))
results
[('Logistic Regression', 1.0),
('Decision Tree', 1.0),
('Random Forest', 1.0),
('SVM', 1.0),
('KNN', 1.0)]
この結果をChatGPTが解りやすく返答してくれている。
続いてクラスタリング & 次元削減での視覚化。地味に自分で書くとドキュメント見つつになるので面倒なんだけど、これらもサクッと。最初PCAでの次元削減だったので、t-SNEだとどうなる?といえばそのグラフがシュッと出てきて便利だ。
クラスタリングして次元削減(PCA / t-SNE)結果描画はこんな感じ。
ChatGPT は自分が知らない未知のデータは、FewShot できるとはいえ、ちゃんと分析できない。そこを notebook を使って実行しつつ、その結果を持って ChatGPT 経由で対話しながら引き出すことができる、というのはいま時点の ChatGPT の弱点をうまく補完しつつ使えるサービス、というわけで Noteable すげーと改めて感じた。
そして、データ分析している方々は「ああ、またチュートリアルIrisね」という感じで分析したいと思わないだろうから、Iris データセットを自発的にまた分析したいなんて日が来るなんて驚きである。