【0から学ぶAI】第219回:Scikit-learnの基礎 〜機械学習ライブラリの基本的な使い方を紹介

目次

前回のおさらいと今回のテーマ

こんにちは!前回は、データの可視化ライブラリSeabornを使って、美しく高度なグラフを作成する方法について解説しました。Seabornを活用することで、データの分布や相関関係を視覚的に把握しやすくなりましたね。

今回は、Pythonで広く使われている機械学習ライブラリScikit-learn(サイキットラーン)の基本的な使い方について学びます。Scikit-learnは、データの前処理、モデルの構築、評価まで一貫して行える強力なライブラリで、初心者からプロフェッショナルまで多くのデータサイエンティストやAIエンジニアに利用されています。では、その基本操作を見ていきましょう!

Scikit-learnとは?

Scikit-learnは、Pythonで機械学習を実装するためのライブラリで、以下の特徴があります。

  1. 豊富な機械学習アルゴリズム: 回帰、分類、クラスタリング、次元削減など、多くのアルゴリズムが用意されている。
  2. データ前処理ツールの充実: 欠損値処理、スケーリング、エンコーディング、データの分割など、モデル構築に必要な前処理機能が充実。
  3. シンプルなAPI: 一貫したAPI設計により、モデルの構築、訓練、予測が簡単に行える。

Scikit-learnのインストール

Anaconda環境にはScikit-learnが含まれている場合が多いですが、手動でインストールしたい場合は以下のコマンドを使用します。

pip install scikit-learn

Scikit-learnのインポート

まずは、必要なモジュールをインポートします。

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

これで準備が整いました。それでは、基本的な操作を見ていきましょう。

Scikit-learnを使った基本的な機械学習の流れ

Scikit-learnを使った機械学習の基本的なステップは以下の通りです。

  1. データの準備: データセットを読み込む。
  2. データの前処理: 欠損値の処理やスケーリング、エンコーディングなどを行う。
  3. データの分割: 学習データとテストデータに分割。
  4. モデルの選択と訓練: アルゴリズムを選び、モデルを訓練する。
  5. モデルの評価: テストデータを使ってモデルの精度を評価する。

1. データの準備

まずは、Pandasを使ってデータを読み込みます。ここではScikit-learnが提供するdiabetesデータセットを例にします。

import pandas as pd
from sklearn.datasets import load_diabetes

# データの読み込み
diabetes = load_diabetes()
df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
df['target'] = diabetes.target

# データの確認
print(df.head())

load_diabetesは、糖尿病のデータセットを読み込みます。このデータセットには、10個の特徴量と1つのターゲット(目的変数)が含まれています。

2. データの前処理

機械学習モデルに適した形にデータを整えます。ここでは、特徴量のスケーリングを行います。

# 特徴量とターゲットの分離
X = df.drop('target', axis=1)
y = df['target']

# データの標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
  • StandardScaler(): 特徴量の平均を0、分散を1に標準化します。これは、モデルの性能を向上させるために重要です。

3. データの分割

データを訓練データテストデータに分割します。

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
  • train_test_split(): データを訓練用とテスト用に分割します。test_sizeでテストデータの割合を指定し、random_stateで分割のランダム性を固定します。

4. モデルの選択と訓練

ここでは、線形回帰モデルを使用します。Scikit-learnでは、モデルのインスタンスを作成し、fitメソッドで訓練を行います。

# 線形回帰モデルの作成と訓練
model = LinearRegression()
model.fit(X_train, y_train)
  • LinearRegression(): 線形回帰モデルを作成します。
  • fit(): 訓練データとターゲットを使ってモデルを訓練します。

5. モデルの評価

訓練が完了したら、テストデータを使ってモデルの精度を評価します。

# 予測の実行
y_pred = model.predict(X_test)

# 評価指標の計算(平均二乗誤差)
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
  • predict(): テストデータを使って予測を行います。
  • mean_squared_error(): 平均二乗誤差を計算し、モデルの精度を数値化します。

Scikit-learnのモデル

Scikit-learnには、様々な機械学習アルゴリズムが用意されています。いくつか代表的なモデルを見ていきましょう。

1. 線形回帰(Linear Regression)

線形回帰は、連続する数値を予測するための基本的な回帰アルゴリズムです。前述のように、LinearRegressionクラスを使って簡単に実装できます。

2. ロジスティック回帰(Logistic Regression)

ロジスティック回帰は、分類問題に使用されます。例えば、二値分類(0または1)などのタスクに適しています。

from sklearn.linear_model import LogisticRegression

# モデルの作成と訓練
clf = LogisticRegression()
clf.fit(X_train, y_train)

# 予測と評価
y_pred = clf.predict(X_test)

3. 決定木(Decision Tree)

決定木は、データを条件に基づいて分割し、分類や回帰を行うアルゴリズムです。

from sklearn.tree import DecisionTreeClassifier

# 決定木モデルの作成と訓練
tree_clf = DecisionTreeClassifier(max_depth=3)
tree_clf.fit(X_train, y_train)

# 予測と評価
y_pred = tree_clf.predict(X_test)
  • DecisionTreeClassifier(): 分類のための決定木モデルです。max_depthで木の深さを制限することができます。

4. k-近傍法(k-Nearest Neighbors, k-NN)

k-NNは、データポイントの近くにあるk個のサンプルのクラスを使って予測するシンプルな分類アルゴリズムです。

from sklearn.neighbors import KNeighborsClassifier

# k-NNモデルの作成と訓練
knn_clf = KNeighborsClassifier(n_neighbors=5)
knn_clf.fit(X_train, y_train)

# 予測と評価
y_pred = knn_clf.predict(X_test)
  • KNeighborsClassifier(): k-NNアルゴリズムを使った分類モデルです。n_neighborsでkの値を設定します。

まとめ

今回は、Scikit-learnの基本的な使い方について解説しました。データの読み込み、前処理、モデルの訓練、評価まで、Scikit-learnを使えばシンプルなコードで一貫した流れが実現できます。また、様

々な機械学習アルゴリズムが用意されており、これらを活用することで、効率的にモデル構築を行えるようになります。

次回予告

次回は、データの前処理に焦点を当て、欠損値処理や特徴量スケーリングなど、モデルの精度を上げるための方法を解説します。データ前処理は機械学習の精度に大きく影響する重要なステップですので、ぜひ次回もお楽しみに!


注釈

  • 線形回帰: 回帰分析の一種で、入力と出力の線形関係をモデル化する手法。
  • ロジスティック回帰: 分類問題に使用される回帰モデルで、確率を基にクラスを予測します。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社PROMPTは生成AIに関する様々な情報を発信しています。
記事にしてほしいテーマや調べてほしいテーマがあればお問合せフォームからご連絡ください。
---
PROMPT Inc. provides a variety of information related to generative AI.
If there is a topic you would like us to write an article about or research, please contact us using the inquiry form.

コメント

コメントする

目次