« 笑わない数学でコラッツ予想やっていたので、Excelで一行(というか1セル入力だけで)SCAN関数とLAMBDA関数を使ってコラッツ予想を計算する。 | トップページ | Python in Excel(PY関数を使うとExcelでPythonコードがかける)を使う(その2)SciPyでローレンツ方程式をsolve_ivpのDOP853(Dormand&Prince 8次のルンゲクッタ法)で計算して、3Dプロットをする。Excel Labs(実験的なアドイン)のPython Editorも補完がきいて便利。 »

2023年10月15日 (日)

Python in Excel(ExcelであるセルでPY関数を使うとPythonコードがかける)を使う(その1)scikit-learnを使ってアイリス(あやめ)の分類を様々な機械学習(k-最近傍法、ロジスティック回帰、ランダムフォレスト、SVM、ニューラルネットワーク)を試す。Python Editorも試す。

Python in Excelの発表があったが、

Microsoft、ExcelでPythonを使える「Python in Excel」のプレビュー版を公開

やっと私のPCでも使えるようになった!

Anacondaが動いていてもうすでにいろんなライブラリもインストールされている(日本語訳バグってるけど)。

Excel のオープンソース ライブラリと Python

NumPy, SciPy, Pandas, Matplotlib,SymPyはもちろん、pytorchやscikit-learnもある。

ではExcelらしいこととして、セルにデータを入れてそれをPythonで処理してみよう。Python in ExcelのサンプルプログラムがIrisに関するものが多いので、おなじみのIrisデータのscikit-learnによる分類をする。

まず、あるセルで=PY(とうつとPythonのソースコードが入力できるようになる。

他のセルにデータが入っているとして選択すると、xl(範囲)のようにコードに入る。これはPandasのDataFrameにすでになっている。

今回はNumPyのndarrayにしたかったのでこうした。

X = xl("A2:D152", headers=True).to_numpy()
y = xl("E2:E152", headers=True).to_numpy()
分離もおなじみの
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0)

で出来るし、k-最近傍法なら

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
knn.score(X_test, y_test)
と数行で書ける。
スケーリングは
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
で、他のロジスティック回帰、ランダムフォレスト、SVM、ニューラルネットワークも、

-----------------------------
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression()
lr.fit(X_train, y_train)
lr.score(X_test, y_test)
--------------------
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, random_state=0)
rf.fit(X_train, y_train)
rf.score(X_test, y_test)
------------------
from sklearn.svm import SVC
svm = SVC(kernel='rbf', C=10, gamma=0.1)
svm.fit(X_train_scaled, y_train)
svm.score(X_test_scaled, y_test)
-------------------
from sklearn.neural_network import MLPClassifier
nn = MLPClassifier(solver='lbfgs', random_state=0, hidden_layer_sizes=[10,10])
nn.fit(X_train_scaled, y_train)
nn.score(X_test_scaled, y_test)
と非常に簡単にかける。
今回変数のスコープがどうなってる?を知るのにわざわざ別セルにいれたが、もちろん一緒にしてもいい。
結果はこんな感じ。方法によってスコア全然変わらなかった…

Sklearn01

でもちまちまセルの内容を関数入力のところに書くのは面倒くさい?ということですでにExcel labsにPython Editorもある。

「Python in Excel」に強力な援軍、「Python Editor」のテストが開始

それを使ってみたのがこちら:2列になってますが実際は1列です。

Sklearn02

これめちゃくちゃ使えるんじゃないだろうか!もうVBAいらないかも…

これからPython in Excelを使うシリーズをいろいろ開始します。

scikit-learnはこちらを全面的に参考にしました。

 

« 笑わない数学でコラッツ予想やっていたので、Excelで一行(というか1セル入力だけで)SCAN関数とLAMBDA関数を使ってコラッツ予想を計算する。 | トップページ | Python in Excel(PY関数を使うとExcelでPythonコードがかける)を使う(その2)SciPyでローレンツ方程式をsolve_ivpのDOP853(Dormand&Prince 8次のルンゲクッタ法)で計算して、3Dプロットをする。Excel Labs(実験的なアドイン)のPython Editorも補完がきいて便利。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 笑わない数学でコラッツ予想やっていたので、Excelで一行(というか1セル入力だけで)SCAN関数とLAMBDA関数を使ってコラッツ予想を計算する。 | トップページ | Python in Excel(PY関数を使うとExcelでPythonコードがかける)を使う(その2)SciPyでローレンツ方程式をsolve_ivpのDOP853(Dormand&Prince 8次のルンゲクッタ法)で計算して、3Dプロットをする。Excel Labs(実験的なアドイン)のPython Editorも補完がきいて便利。 »

最近の記事

最近のコメント

2024年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
フォト
無料ブログはココログ