機械学習の勉強をしていると、まず最初に登場するのが、Irisデータセットではないでしょうか。
今回は、Irisデータセットを手軽に用意する方法についてまとめます。
Irisデータセットを用意する方法は多数ありますが、今回はPythonの科学計算ライブラリであるscikit-learnを用いる方法でIrisデータセットを手軽に用意します。
また、Irisデータセットの説明も行います。
- Irisデータセットの解説
- scikit-learnを用いて手軽にIrisデータセットを用意する
- Irisデータセットを可視化して確認する
Irisデータセットの解説
まず、Irisデータセットの解説を簡単にします。
Irisデータセットとは、3種類のアヤメの花において、がく片(sepal)の長さ、幅、および、花弁(petal)の長さ、幅の4系列の指標を取得したデータセットになります。
がく片や花弁と言われてもピンとこないと思うので、図を掲載します。

花弁(petal)が花びらで、がく片(sepal)が、花の下にある支え(?)のようなものですかね。
私は植物に詳しくないのですが、petalとsepalの縦幅(lenght)と横幅(width)の4種類の系列があることを理解しておけば良いでしょう。
またアヤメの花の種類は3種類あり、それぞれ、setosa、versicolor、virginicaの3種類です。
それぞれの画像を用意するとこのような感じです。

データセット中での数字との対応は以下のようになっています。
- setosa: 0
- versicolor: 1
- virginica: 2
Irisデータセットにはデータの正解ラベルが与えられていますので、上記の対応表から、0のデータはsetosaのデータだと読み取ることができます。
Irisデータセットには、このようなデータが150ほどあります。
それではデータセットの解説はこの辺にして、早速データセットを用意していきましょう。
Irisデータセットの用意
まず、Irisデータセットを準備します。Irisは表形式のデータセットなので、取り扱いを楽にするために、pandasも用います。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from sklearn.datasets import load_iris
scikit-learnからIrisデータセットを読み込みむのは、sklearn.datasetsモジュールに含まれるload_iris()関数を呼び出すだけです。
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['label'] = iris.target
pandas.DataFrameのdfオブジェクトのlabel系列には正解ラベルが格納されています。
dfの中身を確認するとこのようになっています。

ここで、labelはデータセットの解説で紹介した数字に対応しています。
Irisデータセットを可視化する
新しいデータセットを扱う場合、可視化ツールを用いてデータを可視化して確認することは、データの傾向をつかむ上で非常に重要です。
今回は、Pythonの可視化ライブラリであるseaborn(sns)を用いて、4つの特徴をぞれぞれ散布図で示してみます。
sns.pairplot(df, hue="label")
seabornを用いると、2つの特徴間の散布図を簡単に作ることができます。

上記のコードを実行すると、このように表現することができました。
4系列あり、ぞれぞれの4×4の16通りの散布図が出ているのがわかります。同じ系列のところは、データのヒストグラムが表示されています。
ざっと眺めてみます。例えば花びら(petal)の大きさ(lengthとwidth)に注目してみると、下図における赤い四角の場所になります。

アヤメの種類別に色が塗り分けられていますが、右上に行くほど花びらが大きいことになります。
ある程度ですが、種類によって花びらの大きさに傾向があり、virginica、versicolor、setosaの順に花びらが大きいことが見て取れます。
他にもsepalに注目してみたりすると面白いので、ぜひ確認してみてください。