>100 Views
February 10, 26
スライド概要
クラスタリングは「教師なし学習」のため、回帰や分類と異なり正解ラベル(target)の指定が不要なのが最大の特徴です。基本的には分析データと、結果の再現性を確保するためのsession_idを指定するだけで、複雑な前処理の準備が整います。
2つの記述スタイルとその使い分け
●関数型API: グローバルに命令を実行する直感的なスタイルです。手軽に素早く分析を進めたい学習時や小規模なタスクに適しています。
●オブジェクト指向API (OO API): ClusteringExperimentクラスから「実験管理用の箱(インスタンス)」を生成するスタイル。同一ノートブック内で「標準化の有無」など、複数の実験条件をデータが混ざることなく同時に並行管理できるのが大きなメリットです。
どちらの流儀を選んでも、膨大な前処理をわずか数行のコードに凝縮できるPyCaretのスマートさを体感できるはずです。
すべてのビジネスパーソンが意思決定プロセスにデータを活用する思考を身につけるため、まずは、データサイエンスの分析を体験していきましょう。SECIモデルの最初の段階、共同化(Socialization)からはじめていきます。 下記のブログで、ここにアップしたスライド、動画を随時、公開中です。 【ブログ】https://tutorial4datascience.blogspot.com/ 【Youtubeチャンネル】https://www.youtube.com/@DataScience_for_everyone 【Kindle】そして、このブログをまとめて書籍にしました! https://amzn.to/4ryVppn https://amzn.to/4pGgFb1
4th STEP 機械学習 Section 21 クラスタリング(2) 前処理 Setup Create Model Assign Model Analyze Model データサイエンス チュートリアル Prediction Save Model 1
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 モジュールのインポートとsetup関数の実行 1行目は解説で、2行目は、PyCaretのうち回帰に用いるモジュール『clustering』をインポートしています。このモジュー ルは、似た性質を持つデータを自動的にグループ分けするクラスタリングに使用しますワイルドカード『*』を使うとモジュール で公開されているすべての関数や変数などがインポートされて使えるようになります。 3行目は、PyCaretのモジュール『clustering』に含まれるsetup関数を記載しています。 setup関数は、欠損値処理、データ分割などの前処理を行うことができます。ここでは、実験の再現性を確保するための 乱数シード(擬似乱数を生成する際の『開始点』)のみが引数として設定されています。 setup関数の結果を変数『s』に格納することで、設定内容をオブジェクトとして保持しています。 変数『s』に格納することで、下記のように、s1とs2の結果を混同せずに比較できます。 s1 = setup(data, transformation=True) # 設定1 s2 = setup(data, transformation=False) # 設定2 データサイエンス チュートリアル 2
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup 関数 他の引数 setup(data, session_id = 123) normalize 必要最小限の引数は下記の*2個 教師なし学習ですので、 『正解ラベル(Target)』を 指定する必要はありません。 分析するデータ名 後で再現可能にする ための擬似乱数設定 normalize_method data transformation session_id pca *session_idは、無くても動きますが、毎回違う結果が出てくる ことがありますので固定しておきましょう。 ignore_features データサイエンス チュートリアル True に設定すると、データが正規化されます。 正規化の手法を指定します。 zscore, minmax, maxabs,robust True にすると、データを正規分布に近づけます。 True にすると、主成分分析(PCA)を行い次 元圧縮します。変数が多すぎる場合に有効で す。 クラスタリングに使用したくない列名(IDや名前 など)をリストで指定します。 3
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数の出力(1) 実験の再現性を確保するための乱数シード(擬似乱数を生成する際の『開始点』) 読み込んだデータのサイズ 前処理をすべて適用した後データのサイズ 数値データ(整数/intや浮動小数点数/float)として認識された列の数 『True』は、機械学習に適した形にデータを自動加工しますよ、という合図 欠損値補完をデフォルトで行ったという記録(数値データ、カテゴリーデータの欠損値の デフォルト処理は次の2行に記載有) mean(平均値)で補完 mode(最頻値)で補完 処理を、コンピューターのCPUをいくつ使って並列実行するかという設定について記載し たもの。『-1』の場合(デフォルト)、使用しているコンピューターが持っている すべての CPUコア をフル活用して計算します。 データサイエンス チュートリアル 4
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数の出力(1) 実験の再現性を確保するための背番号(乱数シード/擬似乱数を生成する際の 『開始点』) 分析の全プロセスを自動的に記録・保存するかどうかという設定。デフォルトでは 『False』。 『True』にすると、『試したモデルの精度』、『ハイパーパラメータ』、『実行時 間』、『可視化グラフ』をすべて自動で保存してくれます。 実行した実験に付けるラベル(名前) 識別用のシリアルナンバー(4桁のハッシュ値) データサイエンス チュートリアル 5
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数 オブジェクト指向API(1) 前出のモジュールのインポートとsetup関数の実行のコードは、『関数型API』で書きましたが、ここからは、モジュールのイン ポートと関数を使った前処理を『オブジェクト指向API』でプログラムを書いていきます。 学習時の短いコードの場合は関数型APIで書いても構いませんが、多くのコードを書く場合は、判読性の良さや複数の実験 管理などがしやすい等の点から、オブジェクト指向APIを推奨します。 さて、オブジェクト指向APIを見てみましょう。 2行目で、pycaret.regressionモジュールからRegressionExperimentクラスをインポートしています。 3行目では、オブジェクト指向プログラミングを可能にしています。具体的には、 RegressionExperiment クラス の オブジェクト(インスタンス) を作成し、expという変数に割り当てています。 データとそれに関連する処理の設計図 クラスという設計図に基づいて生成された、 『実験用の箱(インスタンス)』のこと。 データサイエンス チュートリアル 6
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 【参考】 setup関数 オブジェクト指向API(1) 関数型API では、『from pycaret.clustering import *』 と書いて、直接 setup 関数などを呼び出すのが一般 的でした。しかし、このオブジェクト指向APIには以下の大きな利点があります。 例えば、下記のように『標準化あり』の実験と『標準化なし』の実験を同じノートブック内で同時に比較したい場合、箱 を2つ作ることでデータが混ざるのを防げます。 # 実験Aの箱 exp1 = ClusteringExperiment() exp1.setup(data, normalize = True) # 実験Bの箱 exp2 = ClusteringExperiment() exp2.setup(data, normalize = False) データサイエンス チュートリアル 7
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数 オブジェクト指向API(2) type()は、『その変数の中身が一体何者(どのクラスのオブジェクト)なのか』を確認するための命令です。 下記は、expと いう変数について、 type()を適用しています。 出力を見ると、変数expが、『pycaret.clustering.oop.ClusteringExperiment』であることが表示されます。 これは、expが『PyCaretのクラスタリング・モジュールに含まれる、オブジェクト指向(OOP)用の実験管理クラス』であることを 示しています。 データサイエンス チュートリアル 8
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数 オブジェクト指向API(3) このコードは、作成した実験用オブジェクト exp に対して、具体的なデータの読み込みと前処理の初期設定を行う ために、setup関数を使っています。 出力は、 『関数型API』の場合と同じです。 データサイエンス チュートリアル 9
4th STEP 機械学習 Section 21 クラスタリング(2)前処理 setup関数のまとめ どちらの流儀で関数を書いても、結果は同じになります。 関数型API from pycaret.clustering import * s = setup(data, session_id = 123) オブジェクト指向API from pycaret.clustering import ClusteringExperiment exp = ClusteringExperiment() type(exp) exp.setup(data, session_id = 123) データサイエンス チュートリアル 10