Scikit-learn での学習モデルの構築

Scikit-learn での学習モデルの構築

Scikit-learn は、機械学習モデルの構築プロセスを簡素化するオープンソースの Python ライブラリです。初心者と経験豊富なユーザーの両方が効率的に作業できるようにする、クリーンで一貫したインターフェイスを提供します。

  • 分類回帰クラスタリングや前処理などのタスクをサポート
  • モデル構築を高速かつ信頼性の高いものにする
  • トレーニングと評価にすぐに使えるツールを提供
  • アルゴリズムの手動実装を回避することで複雑さを軽減します

Scikit-learn のインストールと使用

モデルの構築を開始する前に、次のことをインストールする必要があります Scikit を学習します。 これには Python 3.8 以降が必要で、次の 2 つの重要なライブラリに依存します。 ナムピー そして サイピー。 これらが最初にインストールされていることを確認してください。

Scikit-learn をインストールするには、次のコマンドを実行します。

pip install -U scikit-learn

これにより、Scikit-learn の最新バージョンがその依存関係とともにダウンロードされ、インストールされます。 Scikit-learn ライブラリを使用してモデルを構築するプロセスに含まれるさまざまな手順を見てみましょう。

ステップ 1: データセットのロード

データセットは次のもので構成されます。

  • 特徴 (X): データを説明する入力変数
  • ターゲット (y): 予測したい値

Scikit-learn は、Iris Digits や Boston Housing などの組み込みデータセットを提供します。アイリス データセットの使用:

  • load_iris() はデータをロードします
  • X は特徴データを保存します
  • y はターゲットラベルを格納します
  • feature_names と target_names にはわかりやすい名前が付けられます

最初の数行を調べて構造を理解できます。カスタム データセットの場合、CSV などの外部ファイルを読み込むために Pandas がよく使用されます。

Python
   from   sklearn.datasets   import   load_iris   iris   =   load_iris  ()   X   =   iris  .  data   y   =   iris  .  target   feature_names   =   iris  .  feature_names   target_names   =   iris  .  target_names   print  (  'Feature names:'     feature_names  )   print  (  'Target names:'     target_names  )   print  (  '  n  Type of X is:'     type  (  X  ))   print  (  '  n  First 5 rows of X:  n  '     X  [:  5  ])   

出力: 

モデル1データセットをロードしています

場合によっては、独自のカスタム データを操作してから外部データセットをロードする必要があります。これには、 パンダ図書館 データセットの読み込みと操作が簡単になります。

これについては、に関する記事を参照してください。 CSVファイルをパンダにインポートする方法 ?

ステップ 2: データセットの分割

モデルを公平に評価するために、データを次のように分割します。

  • トレーニング セット: モデルのトレーニングに使用されます
  • テストセット: モデルがどの程度一般化されているかを評価するために使用されます。

train_test_split を使用して、60% がトレーニング用、40% がテスト用になるように Iris データセットを分割しました (test_size=0.4)。 random_state=1 は再現性を保証します。

分割後は次のようになります。

  • X_train y_train -> トレーニング データ
  • X_test y_test -> テストデータ

形状をチェックすると、データが正しく分割されていることを確認できます。

Python
   from   sklearn.model_selection   import   train_test_split   X_train     X_test     y_train     y_test   =   train_test_split  (  X     y     test_size  =  0.4     random_state  =  1  )   

では、確認してみましょう 形状 分割データの両方のセットにデータの正しい比率が含まれていることを確認し、モデルの評価またはトレーニングにおける潜在的なエラーを回避します。

Python
   print  (  'X_train Shape:'     X_train  .  shape  )   print  (  'X_test Shape:'     X_test  .  shape  )   print  (  'Y_train Shape:'     y_train  .  shape  )   print  (  'Y_test Shape:'     y_test  .  shape  )   

出力:

モデル2分割されたデータの形状

ステップ 3: カテゴリデータの処理

機械学習アルゴリズムは数値入力を処理するため、カテゴリ (テキスト) データを数値に変換する必要があります。適切にエンコードされていない場合、モデルはカテゴリを誤って解釈する可能性があります。 Scikit-learn は複数のエンコード方法を提供します。

1. ラベルエンコーディング : 各カテゴリを一意の整数に変換します。たとえば、「猫」、「犬」、「鳥」などのカテゴリを含む列では、それぞれ 0、1、2 に変換されます。この方法は、カテゴリに「低」「中」「高」などの意味のある順序がある場合にうまく機能します。

  • LabelEncoder(): これは、カテゴリ値を数値ラベルに変換するエンコーダ オブジェクトを作成するために初期化されます。
  • fit_transform(): このメソッドは、まずエンコーダーをカテゴリ データに適合させ、次にカテゴリを対応する数値ラベルに変換します。
Python
   from   sklearn.preprocessing   import   LabelEncoder   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   encoder   =   LabelEncoder  ()   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'Encoded feature:'     encoded_feature  )   

出力:

エンコードされた特徴: [1 2 2 1 0]

2. ワンホットエンコーディング : ワンホット エンコーディングでは、カテゴリごとに個別のバイナリ列が作成されます。これは、カテゴリに自然な順序がない場合に便利です。例: 猫 犬 鳥 -> 1 と 0 を含む 3 つの新しい列 (猫/犬/鳥)。

  • 入力は 2D 配列に再形成する必要があります
  • OneHotEncoder(sparse_output=False) はバイナリ列を生成します
Python
   from   sklearn.preprocessing   import   OneHotEncoder   import   numpy   as   np   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   categorical_feature   =   np  .  array  (  categorical_feature  )  .  reshape  (  -  1     1  )   encoder   =   OneHotEncoder  (  sparse_output  =  False  )   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'OneHotEncoded feature:  n  '     encoded_feature  )   

出力:

モデル3

ラベル エンコーディングとワンホット エンコーディング以外にも、次のような技術があります。 平均エンコーディング

ステップ 4: モデルのトレーニング

データの準備ができたので、機械学習モデルをトレーニングします。 Scikit-learn には、トレーニングの予測と評価のための一貫したインターフェイスを備えた多くのアルゴリズムがあります。ここで使用します ロジスティック回帰 例として。

注記 : アルゴリズムの実装を理解することだけに興味があるため、アルゴリズムがどのように機能するかについては詳しく説明しません。 

  • log_reg = ロジスティック回帰(max_iter=200): ロジスティック回帰分類器オブジェクトを作成します。
  • log_reg.fit(X_train y_train): これを使うと ロジスティック回帰モデルは、データに最もよく適合するようにモデルのパラメーターを調整します。
Python
   from   sklearn.linear_model   import   LogisticRegression   log_reg   =   LogisticRegression  (  max_iter  =  200  )   log_reg  .  fit  (  X_train     y_train  )   
モデル4ロジスティック回帰を使用したトレーニング。

ステップ 5: 予測を立てる

トレーニングが完了したら、モデルを使用して、predict メソッドを呼び出してテスト データ X_test の予測を行います。これにより、予測ラベル y_pred が返されます。

  • log_reg.predict: トレーニングされたロジスティック回帰モデルを使用して、テスト データ X_test のラベルを予測します。
Python
   y_pred   =   log_reg  .  predict  (  X_test  )   

ステップ 6: モデルの精度の評価

y_test と y_pred を比較して、モデルのパフォーマンスがどの程度優れているかを確認します。ここでは、メトリクス モジュールのメソッドAccuracy_scoreを使用しています。

Python
   from   sklearn   import   metrics   print  (  'Logistic Regression model accuracy:'     metrics  .  accuracy_score  (  y_test     y_pred  ))   

出力:

ロジスティック回帰モデルの精度: 0.9666666666666667

ここで、モデルに新しいサンプル データを予測させたいと思います。その後、サンプル入力は、特徴行列を渡すのと同じ方法で簡単に渡すことができます。 ここではサンプル = [[3 5 4 2] [2 3 5 4]] として使用しました。

Python
   sample   =   [[  3     5     4     2  ]   [  2     3     5     4  ]]   preds   =   log_reg  .  predict  (  sample  )   pred_species   =   [  iris  .  target_names  [  p  ]   for   p   in   preds  ]   print  (  'Predictions:'     pred_species  )   

出力: 

予測: [np.str_('virginica') np.str_('virginica')]

Scikit-learnの特徴

Scikit-learn が使用されるのは、機械学習モデルの構築が簡単かつ効率的になるためです。重要な理由は次のとおりです。

  1. すぐに使えるツール : データの前処理トレーニング モデルや予測などの一般的なタスクのための組み込み関数を提供します。これにより、アルゴリズムを最初からコーディングする必要がなくなり、時間が節約されます。
  2. 簡単なモデル評価 : 相互検証やパフォーマンス メトリクスなどのツールを使用すると、モデルがどの程度機能するかを測定し、改善の余地がある領域を特定するのに役立ちます。
  3. 幅広いアルゴリズムのサポート : 分類回帰やクラスタリングを含む多くの一般的な機械学習アルゴリズムを提供しており、問題に対して適切なモデルを柔軟に選択できます。
  4. スムーズな統合 : NumPy や SciPy などの重要な Python ライブラリの上に構築されているため、既存のデータ分析ワークフローに適合します。
  5. シンプルで一貫したインターフェース : 同じ単純な構文が異なるモデル間で機能するため、アルゴリズムの学習と切り替えが容易になります。
  6. モデルのチューニングが簡単に : グリッド検索などのツールを使用すると、余分な手間をかけずにモデルの設定を微調整して精度を向上させることができます。

Scikit-learn を使用する利点

  • 使いやすい : Scikit-learn の一貫したシンプルなインターフェイスにより、初心者にとっても使いやすく、専門家にとっても最適です。
  • 時間の節約: 事前に構築されたツールとアルゴリズムにより開発時間が短縮され、詳細なコーディングよりも問題の解決に集中できるようになります。
  • モデルのパフォーマンスの向上 : 使いやすい調整および評価ツールは、モデルの精度と信頼性の向上に役立ちます。
  • 柔軟でスケーラブル : 幅広いアルゴリズムをサポートし、他の Python ライブラリとスムーズに統合することで、あらゆる規模のプロジェクトに適したものにすることができます。
  • 強力なコミュニティサポート : 大規模なアクティブなコミュニティにより、広範なドキュメントが定期的に更新され、行き詰まったときに役立つリソースが豊富にあります。
クイズの作成