はじめに
これは、Python で人気のある機械学習ライブラリである Scikit-learn の使い方を示す手順に従った実験です。私たちは、さまざまな種類のアヤメの花の物理的属性に関する情報が含まれる Iris データセットを使用します。この実験の目的は、データの読み込み、データ前処理、特徴選択、可視化などの基本的な機械学習タスクを実行するための Scikit-learn の使い方を示すことです。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお尋ねください。セッション後にフィードバックを提供してください。私たちは迅速に問題を解決いたします。
ライブラリのインポート
必要なライブラリをインポートして始めましょう。この実験では、Scikit-learn、NumPy、および Matplotlib を使用します。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import datasets
from sklearn.decomposition import PCA
Iris データセットの読み込み
Scikit-learn の組み込み関数 load_iris を使って Iris データセットを読み込みます。
iris = datasets.load_iris()
X = iris.data[:, :2] ## 最初の 2 つの特徴のみを取ります。
y = iris.target
データの可視化
散布図を使って Iris データセットを可視化します。がく片の長さとがく片の幅をプロットし、点をそのクラスに基づいて色分けします。
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
plt.figure(2, figsize=(8, 6))
plt.clf()
## 学習ポイントをプロットする
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, edgecolor="k")
plt.xlabel("がく片の長さ")
plt.ylabel("がく片の幅")
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.xticks(())
plt.yticks(())
主成分分析 (PCA) の実行
データセットの次元数を削減するために主成分分析 (PCA) を実行します。データを最初の 3 つの主成分に射影し、結果を 3D でプロットします。
fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d", elev=-150, azim=110)
X_reduced = PCA(n_components=3).fit_transform(iris.data)
ax.scatter(
X_reduced[:, 0],
X_reduced[:, 1],
X_reduced[:, 2],
c=y,
cmap=plt.cm.Set1,
edgecolor="k",
s=40,
)
ax.set_title("最初の 3 つの PCA 方向")
ax.set_xlabel("第 1 固有ベクトル")
ax.xaxis.set_ticklabels([])
ax.set_ylabel("第 2 固有ベクトル")
ax.yaxis.set_ticklabels([])
ax.set_zlabel("第 3 固有ベクトル")
ax.zaxis.set_ticklabels([])
まとめ
この実験では、Scikit-learn を使って Iris データセットを読み込み、Matplotlib を使ってデータを可視化し、Scikit-learn を使って主成分分析 (PCA) を実行する方法を学びました。また、データを最初の 3 つの主成分に射影し、結果を 3D で可視化する方法も学びました。