Scikit-learn(sklearn)は、Pythonで機械学習を行うためのオープンソースライブラリであり、シンプルかつ効率的にデータ解析や予測モデルの構築が可能です。データサイエンス、統計解析、人工知能の研究や実務において広く利用されています。以下に、Scikit-learnの特徴と実用例を説明します。
Scikit-learnの特徴
多様なアルゴリズム
Scikit-learnは、回帰、分類、クラスタリング、次元削減など、さまざまな機械学習アルゴリズムを提供しています。これにより、多岐にわたるタスクに対応できます。
シンプルなAPI
Scikit-learnのAPIは統一されており、学習、予測、評価といった操作が一貫したインターフェースで行えます。これにより、異なるアルゴリズム間の切り替えが容易です。
統合されたデータセット
学習や評価に使用できるサンプルデータセットが組み込まれており、迅速にプロトタイプを作成することができます。
豊富なドキュメント
詳細なドキュメントと豊富なチュートリアルが提供されており、初心者から専門家まで幅広いユーザーが活用できます。
例題1: 乳がん診断データセットの分類
まず、乳がん診断データセットを用いて、分類モデルを構築する基本的な例を示します。
インストール
pip install scikit-learn
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# データセットの読み込み
data = load_breast_cancer()
X, y = data.data, data.target
# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# データの標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# ロジスティック回帰モデルの作成と訓練
model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)
# テストデータを用いた予測
y_pred = model.predict(X_test)
# 精度の評価
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
結果
Accuracy: 0.9736842105263158
このコードでは、乳がん診断データセットをロードし、ロジスティック回帰モデルを用いて分類を行っています。データの標準化、モデルの訓練、予測、精度の評価まで、一連の流れをシンプルに実装できます。
例題2: アイリスデータセットのクラスタリング
次に、アイリスデータセットを用いて、クラスタリングを行う例を示します。
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# データセットの読み込み
iris = load_iris()
X = iris.data
# KMeansクラスタリングの適用
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# クラスタリング結果の可視化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Iris Data Clustering')
plt.show()
結果
このコードでは、アイリスデータセットをロードし、KMeansアルゴリズムを用いてクラスタリングを行っています。結果を2次元プロットで可視化し、クラスタリングの結果を視覚的に確認できます。
例題3: ハウジングデータの回帰分析
最後に、ハウジングデータを用いて、回帰分析を行う例を示します。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
from sklearn.datasets import fetch_california_housing
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
# データセットの読み込み
housing = fetch_california_housing()
X, y = housing.data, housing.target
# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# データの標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 線形回帰モデルの作成と訓練
model = LinearRegression()
model.fit(X_train, y_train)
# テストデータを用いた予測
y_pred = model.predict(X_test)
# 平均二乗誤差の評価
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
結果
Mean Squared Error: 0.5558915986952441
このコードでは、カリフォルニア州のハウジングデータをロードし、線形回帰モデルを用いて価格を予測しています。データの標準化、モデルの訓練、予測、評価まで、簡潔に実装できます。
結論
Scikit-learnは、機械学習の分野で非常に強力なツールです。多様なアルゴリズム、シンプルなAPI、統合されたデータセット、豊富なドキュメントにより、初心者から専門家まで幅広いユーザーが利用できます。分類、クラスタリング、回帰分析など、さまざまなタスクに対応でき、データ解析や予測モデルの構築を効率的に行うことができます。Scikit-learnはデータサイエンスや機械学習の研究・実践において欠かせないツールです。