Windows11 WSL2 Ubuntu Python Ⅱ
scikit-learn インストール
今度は、scikit-learn を使用して行きます。
このライブラリを利用するとデータの標準化とそれを元の値に戻すことが簡単にできます。
scikit-learn は2つのライブラリ scipy と numpy に依存関係があります。
これらの依存関係のあるライブラリがインストールされていないとscikit-learnは使用することができません。
scipy と numpy は TensorFlow をインストールしたときに一緒にインストールされたようで
私の Windows11 WSL2 Ubuntu Miniconda 環境には入っていました。
それでは scikit-learn をインストールします。
WSL2 Ubuntu のターミナルを立ち上げます。
scikit-learn も Miniconda の仮想環境のなかに構築して行きます。
yamada@yama:~$ conda update conda
yamada@yama:~$ conda install scikit-learn
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ conda list
でインスト-ルを確認すると
scikit-learn 1.3.0 py310h1128e8f_0
がインストールされました。
scikit-learn 動作確認ファイル作成
scikit-learn を動かしてみます。
Scikit-learn ライブラリに実装されている、
標準化スケール変換メソッド StandardScaler を使ってみます。
Scikit-learnでデータをスケール変換する
が参考になります。
- ライブラリインポート
必要となるライブラリをインポートします。
NumPy と sklearn の中にある preprocessing モジュールが必要です。
import numpy as np
from sklearn import preprocessing
import matplotlib.pyplot as plt - 標準化したいデータ
標準化したいデータ x0 を作成します。
x0 = np.arange(0, 9, 1)
[0 1 2 3 4 5 6 7 8]
の9個のデータができました。 - データ x0 を2次元に変換。
残念なことに標準化したいデータが1次元だと標準化してくれません。
x0 を2次元に変換する必要があるのです。
preprocessing の標準化メソッド fit_transform は
2次元配列を縦(axis=0)方向に標準化します。
# x0 1次元配列を 1×n 次元に変換
x = x0.reshape(-1,1)[[0] [1] [2] [3] [4] [5] [6] [7] [8]]
1×9の配列に変換されました。
- 標準化
インスタンスを作成します。
sscaler = preprocessing.StandardScaler()
配列 X を標準化します。
fit_transform メソッドを使用します。
y = sscaler.fit_transform(x)
print(y) - 標準化したデータの復元
標準化したデータを元に戻します。
inverse_transform メソッドを使用します。
z = sscaler.inverse_transform(y)
print(z) - 標準化したデータの再スケール変換
標準化したデータを再スケール変換します。
平均(mean) = 5
標準偏差(scale) = 2
のデータにスケール変換します。
mean, scale = 5, 2
w = y * scale + mean
print(w) - 標準化の図示
計算した x,y,w を図示します。
plt.plot(x,x) # 青
plt.plot(x,y) # 緑
plt.plot(x,w) # 橙
x: 青の線も
w: 緑の線も
標準化するとどちらも
y: 橙の線になります。
scikit-learn 動作確認ファイルまとめ
ここまで説明してきたスクリプトを標準化ファイルにまとめます。
# coding: utf-8 import numpy as np from sklearn import preprocessing import matplotlib.pyplot as plt x0 = np.arange(0, 9, 1) print(x0) # 1次元配列は 1×n 次元に変換 x = x0.reshape(-1,1) print('x の値') print(x) print(np.mean(x)) print(np.std(x)) # インスタンスの作成 sscaler = preprocessing.StandardScaler() # xを標準化 # fit_transform を使用 y = sscaler.fit_transform(x) print('標準化した値') print(y) # 標準化したデータを元に戻す # inverse_transform を使用 z = sscaler.inverse_transform(y) print('復元値') print(z) # 標準化したデータの再スケール変換 mean, scale = 5, 2 w = y * scale + mean print('標準化データのスケール変換') print(w) # 標準化の図示 plt.plot(x0,x) plt.plot(x0,y) plt.plot(x0,w) plt.show() # yamada@yama:~$ conda activate # (base) yamada@yama:~$ python3 public_html/dsc-sci.py
上記ファイルを windows 側で作成します。
上記内容をすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を dsc-sci.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/dsc-sci.py
とします。
引き続き scikit-learn 動作ファイルの確認をしていきます。