【Python/scikit-learn】Irisデータセットで学ぶ機械学習の基本:特徴量と可視化
scikit-learnのload_irisは、アヤメ(Iris)データセットを読み込む関数です。このデータセットは、機械学習の分類タスクにおける定番のデータセットで、3種類のアヤメの花(Iris-setosa, Iris-versicolor, Iris-virginica)を識別する問題に使用されます。
各サンプルには4つの特徴量(花弁とがく片の長さと幅)が含まれており、これを基に3つのアヤメの品種を分類する問題です。
load_iris 関数の基本的な説明
load_iris 関数を呼び出す際は以下のimport文を使います。
from sklearn.datasets import load_iris
load_iris 関数の使用例
以下は、load_irisを使ってデータを読み込み、簡単な機械学習モデル(決定木)を構築し、予測を行う例です。
# 必要なライブラリのインポート from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # Irisデータセットの読み込み iris = load_iris() # データの確認 print(iris.feature_names) # 特徴量名の確認 print(iris.target_names) # ターゲット名の確認 # 特徴量とターゲットの分割 X = iris.data # 特徴量データ y = iris.target # ターゲット(クラスラベル) # 訓練データとテストデータの分割(8割訓練用、2割テスト用) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 決定木分類器の作成 clf = DecisionTreeClassifier() # モデルの訓練 clf.fit(X_train, y_train) # テストデータで予測 y_pred = clf.predict(X_test) # モデルの精度を確認 accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy:.2f}")
- load_iris()でデータセットをロードし、Xに特徴量、yにターゲットを格納します。
- train_test_split()でデータを訓練セットとテストセットに分割します。
- DecisionTreeClassifier()を使って決定木モデルを構築し、訓練セットで学習します。
- テストセットに対して予測を行い、その精度をaccuracy_scoreで計算します。
出玉結果は以下の通りです。
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] ['setosa' 'versicolor' 'virginica'] Accuracy: 1.00
Irisデータセットの各名称の意味は以下のようになります:
- sepal length: がく片の長さ
- sepal width: がく片の幅
- petal length: 花弁の長さ
- petal width: 花弁の幅
データの可視化
特徴量の可視化もデータの理解を深めるために役立ちます。
以下のソースコードを先程のソースコードの後ろに追加してみてください。全ての特徴量での可視化することができます。
import seaborn as sns import pandas as pd # データをPandasのDataFrameに変換 iris_df = pd.DataFrame(X, columns=iris.feature_names) iris_df['species'] = iris.target # ペアプロットで全特徴量を可視化 sns.pairplot(iris_df, hue='species', markers=['o', 's', 'D']) plt.show()
実行すると以下のチャートが現れます。
- 0(薄いピンク色の丸): Iris-setosa
- 1(紫色の四角): Iris-versicolor
- 2(濃い紫色のダイヤ): Iris-virginica
Iris-setosa(ピンク色)は、特にペタル(花弁)の特徴(長さと幅)で他の2つの品種とは明確に分離されています。Iris-versicolor(紫色の四角)とIris-virginica(濃い紫のダイヤ)は、ペタルの特徴量ではある程度分離されていますが、がく片(sepal)の特徴量では重なりがあるため区別が難しい部分もあります。特にpetal lengthとpetal widthのプロットでは、3つの品種の分離が非常に良好であることが確認でき、これらの特徴量が分類において有効であることがわかります。
Irisデータセットの特徴量を理解し、可視化を行うことで、データの構造や分類の難しさが明確になります。ぜひ、実際にデータ分析を試して、分類モデルの構築に挑戦してみましょう。
スポンサーリンク