python PR

Pythonデータ分析の強力な味方|scikit-learn入門ガイド

Python データ分析 scikit-learn
記事内に商品プロモーションを含む場合があります

scikit-learnは、Pythonでデータ分析を行う際に非常に便利な機械学習ライブラリです

多くの機械学習アルゴリズムや便利なツールが用意されており、初心者から上級者まで幅広く利用されています

この記事では、scikit-learnの基本的な使い方や上手い使い方を解説していきます

これからデータ分析を0から学び始める方は、Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップも合わせて参考にしてください

筆者について

2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功

大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富

医療データを機械学習を用いて解析したり、学会発表も行なっている

Pythonで機械学習を学んで実装してみよう

scikit-learnとは

scikit-learnとはscikit-learnは、Pythonで機械学習を実践するためのオープンソースライブラリで、データサイエンティストや機械学習エンジニアに広く利用されています

シンプルで使いやすいAPIが魅力であり、多様な機械学習アルゴリズムやデータ前処理手法が実装されています

scikit-learnのインストール方法

scikit-learnのインストール方法scikit-learnをインストールするには、pipを利用して以下のコマンドを実行します。

pip install scikit-learn

Anacondaを使っている場合には、

conda install scikit-learn

scikit-learnの活用方法

scikit-learnの活用方法scikit-learnは、Pythonでデータ分析を行うための強力なライブラリで、機械学習アルゴリズムを簡単に実装できます

主な機能には、分類・回帰・クラスタリング・次元削減・モデル選択・前処理などが含まれます

scikit-learnを活用することで、データセットの前処理や欠損値の補完、カテゴリ変数のエンコーディング、データの正規化・標準化などが容易に行えます

また、線形回帰やロジスティック回帰などの機械学習手法の実装やモデルの評価・チューニングが効率的に行えるため、データ分析のプロセスをスムーズに進めることができます

scikit-learnの基本的なデータ前処理

scikit-learnの基本的なデータ前処理データ分析を行う前に、データを前処理することが重要です

scikit-learnでは、次のような前処理が可能です

  • 欠損値の補完
  • データの正規化・標準化
  • カテゴリ変数のエンコーディング

欠損値の補完

欠損値の補完欠損値の補完は、データセット内の欠損値(NaNやnullなど)を適切な値で埋める処理です

欠損値をそのままにしておくと、機械学習モデルの精度や効率が低下することがあります

scikit-learnでは、SimpleImputer クラスを使って簡単に欠損値の補完ができます

import numpy as np
from sklearn.impute import SimpleImputer

data = np.array([
    [1, np.nan, 3],
    [4, 5, np.nan],
    [np.nan, 7, 8],
])

# 平均値で欠損値を補完
imputer = SimpleImputer(strategy='mean')
imputed_data = imputer.fit_transform(data)

print(imputed_data)

サンプルコードでは、SimpleImputerをインポートし、欠損値を含むデータセットdataを定義しています

strategy='mean' は、各列の平均値で欠損値を補完することを意味します

fit_transform()メソッドを使って、欠損値を補完したデータセットimputed_dataを生成しています

SimpleImputerstrategyパラメータには、他にもmedian(中央値)、most_frequent(最頻値)、constant(指定した定数)などのオプションがあります

適切な補完方法を選択することで、機械学習モデルの性能を向上させることができます

欠損値の補完も、データ前処理の重要なステップです

データ分析を0から始める方は、Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップの記事も参考にしてください

データの正規化・標準化

データの正規化・標準化データの正規化と標準化は、特徴量のスケールを揃えることで、機械学習モデルの性能を向上させるための前処理手法です

scikit-learnでは、MinMaxScalerStandardScalerが提供されています

正規化 (MinMaxScaler)

正規化は、データを0から1の範囲にスケーリングします

MinMaxScalerを使用すると、次のように正規化を実行できます

from sklearn.preprocessing import MinMaxScaler
import numpy as np

data = np.array([[10, 2], [5, 6], [8, 4]])
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print(normalized_data)

標準化 (StandardScaler)

標準化は、データの平均を0、標準偏差を1にすることでスケーリングを行います

StandardScalerを使用すると、次のように標準化を実行できます

from sklearn.preprocessing import StandardScaler

data = np.array([[10, 2], [5, 6], [8, 4]])
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print(standardized_data)

カテゴリ変数のエンコーディング

カテゴリ変数のエンコーディングカテゴリ変数は、数値データではないデータで、機械学習モデルが扱える形式に変換する必要があります

scikit-learnでは、LabelEncoderOneHotEncoderが提供されています。

LabelEncoder

LabelEncoderは、カテゴリ変数を整数に変換します

これにより、順序尺度のカテゴリ変数を適切に表現できます

LabelEncoderを使用すると、次のようにエンコーディングを行えます

from sklearn.preprocessing import LabelEncoder

data = ['red', 'blue', 'green', 'blue', 'red']
encoder = LabelEncoder()
encoded_data = encoder.fit_transform(data)
print(encoded_data)

OneHotEncoder

OneHotEncoderは、カテゴリ変数をバイナリベクトルに変換します

これにより、名義尺度のカテゴリ変数を適切に表現できます

OneHotEncoderを使用すると、次のようにエンコーディングを行えます。

from sklearn.preprocessing import OneHotEncoder

data = [['red'], ['blue'], ['green'], ['blue'], ['red']]
encoder = OneHotEncoder(sparse=False)
encoded_data = encoder.fit_transform(data)
print(encoded_data)

前処理手法を活用することで、データを機械学習モデルに適した形式に変換できます

正規化・標準化やカテゴリ変数のエンコーディングを適切に行うことで、モデルの学習効率を向上させ、精度を高めることが可能になります

前処理手法は、データ分析の過程で重要な役割を果たすため、Python データ分析の基本となる技術です

scikit-learnを使用して、これらの前処理手法を習得し、データ分析プロジェクトに活用しましょう

代表的な機械学習アルゴリズム

代表的な機械学習アルゴリズムscikit-learnでは、以下のような機械学習アルゴリズムが用意されています

  • 線形回帰
  • ロジスティック回帰
  • サポートベクターマシン
  • 決定木
  • ランダムフォレスト
  • k近傍法
  • 主成分分析(PCA)

それぞれのアルゴリズムについては、別の記事で詳しく解説していますので、参考にしてください

モデルの訓練と評価

モデルの訓練と評価モデルの訓練と評価は、scikit-learnを使用したデータ分析の中核部分です

以下の手順でモデルを訓練し、評価を行います。

  1. データを訓練データとテストデータに分割する
  2. アルゴリズムを選択してモデルを生成する
  3. 訓練データを用いてモデルを訓練する
  4. テストデータを用いてモデルを評価する

今回紹介するのは、ロジスティック回帰を使ってモデルを訓練し、評価するサンプルコードです

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# データの読み込み
iris = load_iris()
X = iris.data
y = iris.target

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# モデルの生成
model = LogisticRegression()

# モデルの訓練
model.fit(X_train, y_train)

# モデルの評価
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

ハイパーパラメータチューニング

ハイパーパラメータチューニングモデルの性能を向上させるためには、ハイパーパラメータチューニングが重要です

scikit-learnでは、GridSearchCVRandomizedSearchCVなどのクラスを使って、簡単にハイパーパラメータチューニングができます

以下は、ランダムフォレストのハイパーパラメータチューニングのサンプルコードです

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris

# データの読み込み
iris = load_iris()
X = iris.data
y = iris.target

# モデルの生成
model = RandomForestClassifier()

# ハイパーパラメータの候補
param_grid = {
    'n_estimators': [10, 50, 100, 200],
    'max_depth': [None, 10, 20, 30]
}

# グリッドサーチ
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X, y)

# 最適なハイパーパラメータの表示
print("Best parameters: ", grid_search.best_params_)

scikit-learnの学ぶべき内容

scikit-learnの学ぶべき内容ここまでで、scikit-learnの基本的な使い方を紹介しましたが、まだまだ学ぶべき内容はたくさんあります

以下は、さらに学ぶべき内容の一部です

  • 特徴量選択
  • アンサンブル学習
  • クロスバリデーション
  • モデルの保存と読み込み
  • カスタム機械学習アルゴリズムの実装
  • パイプラインの構築

ここからは、上記の内容を簡単に解説をしていきます

特徴量選択

特徴量選択特徴量選択は、データセット内の重要な特徴を選択し、不要な特徴を削除するプロセスです

これにより、モデルの計算負荷が減り、過学習のリスクが低減されます

scikit-learnでは、SelectKBestRFE(Recursive Feature Elimination)などの特徴量選択アルゴリズムが提供されています

アンサンブル学習

アンサンブル学習アンサンブル学習は、複数のモデルを組み合わせて、より高い精度を達成する手法です

scikit-learnでは、バギング、ブースティング、ランダムフォレスト、勾配ブースティングなどのアンサンブル手法が提供されています

これらの手法は、異なるモデルの弱点を補完し合い、全体としてより良い予測を行うことができます

クロスバリデーション

クロスバリデーションクロスバリデーションは、データセットを複数の部分に分割し、それぞれの部分をテストセットとして用いることで、モデルの評価を行う方法です

これにより、モデルの性能が新しいデータに対してどれほど汎用性があるかを評価できます

scikit-learnのcross_val_score関数を使用して、簡単にクロスバリデーションを実行できます。

モデルの保存と読み込み

モデルの保存と読み込み訓練済みのモデルを保存して、後で再利用することができます

これにより、訓練時間が短縮され、再利用が容易になります

scikit-learnでは、joblibライブラリを使用して、モデルを簡単に保存および読み込むことができます

カスタム機械学習アルゴリズムの実装

カスタム機械学習アルゴリズムの実装既存のアルゴリズムだけでは不十分な場合、独自の機械学習アルゴリズムを実装することも可能です

scikit-learnでは、カスタムアルゴリズムをBaseEstimatorおよびRegressorMixinまたはClassifierMixinを継承したクラスとして実装することができます

これにより、独自のアルゴリズムをscikit-learnの他のツールと同様に利用できるようになります

パイプラインの構築

パイプラインの構築scikit-learnでは、データ前処理、特徴量選択、モデル学習、評価などの一連の処理をパイプラインとして組み立てることができます

Pipelineクラスを使用することで、処理手順を簡潔に記述し、コードの見通しを良くすることができます

また、パイプラインを使用することで、データリークを防止し、モデルの再利用が容易になります。

まとめ

まとめ今回の記事では、scikit-learnを使ったデータ分析における重要な概念や手法について詳しく述べました

これらの知識を活用して、Pythonでのデータ分析プロジェクトを効率的に進めることができるでしょう

さらなる情報や実践的なガイドについては、「Pythonでデータ分析を始めよう!挫折しない実践ガイドでスキルアップ」を参照してください

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.