【scikit-learn】統計学習: scikit-learn の設定とestimator【Python】

本ページでは以下のページを要約するとともに、個人的な解説も記載しています。独特な解釈をしている部分があるので、誤りなどの指摘はtwitterまでお願いします。

参考ページ
Statistical learning: the setting and the estimator object in scikit-learn — scikit-learn 1.1.2 documentation
https://scikit-learn.org/stable/tutorial/statistical_inference/settings.html
閲覧日:2022年10月10日

scikit-learnは、二次元配列で表される1つ以上のデータを学習データとして使用します。二次元配列は、1行が1つのデータ、1列が1つの特徴として表現されます。

以下のコードでscikit-learnのライブラリに含まれるアヤメのデータセットを呼び出すことができます。

scikit-learn に同梱されている簡単な例: iris データセット

from sklearn import datasets
iris = datasets.load_iris()
data = iris.data
data.shape
#(150, 4)

150行4列の配列です。つまり、150個のデータがあり、それぞれ4つの特長量(がく片と花弁の長さと幅))を持つことを意味しています。

学習に使用したいデータがこのようになっていない場合、前処理を行いこちらのデータと同様に整理する必要があります。

例えば、画像データを使用し機械学習を行いたい場合はそのような前処理が必要です。

例えば「手書き文字」のデータセットの場合、元のデータが画像なので前処理が必要となります。
8×8のデータが1797個の三次元配列となっています。

digits = datasets.load_digits()
digits.images.shape
#(1797, 8, 8)
import  matplotlib.pyplot  as  plt
plt.imshow(digits.images[-1],cmap=plt.cm.gray_r)

このデータセットを使用して学習を行うには、以下のコードで8×8の画像を長さ64の1次元配列に変換する必要があります。

data = digits.images.reshape((digits.images.shape[0], -1))
data.shape
#(1797, 64)

※scikit-learnから既に変換されたデータを呼び出すこともできますが、ここでは前処理の例として説明しています。

estimator

AIモデルを作成させるときはestimatorを使用します。estimatorには様々な種類のアルゴリズムが用意されていますが、基本的な使用方法は全て統一されています。

例えば、以下のようなコードで学習が可能です。
estimator部分を任意のアルゴリズムのものに書き換え

estimator.fit(data)

インスタンス化するときは以下のようなコードで行うことができ、合わせてハイパーパラメータの調整も可能です。

estimator = Estimator(param1=1, param2=2)
estimator.param1
#1

学習した後にハイパーパラメータを確認したい時は以下のコードで確認ができます。

estimator.estimated_param_