連載
» 2022年06月13日 05時00分 公開

Iris Dataset:あやめ(花びら/がく片の長さと幅の4項目)の表形式データセットAI・機械学習のデータセット辞典

データセット「Iris」について説明。150件のあやめの「表形式データ(花びら/がく片の長さと幅の4項目)」+「ラベル(3種類のあやめの分類)」が無料でダウンロードでき、多クラス分類問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learnとTensorFlowにおける利用コードも紹介。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習のデータセット辞典」のインデックス

連載目次

データセット解説

 Irisデータセット(「あやめ」という花の形状データ)は、「花びら(petal)/がく片(sepal)の長さと幅(cm)」という4つの特徴量と、あやめの種類である「setosa/versicolor/virginica」という3つのラベルで構成される表形式データセット(=構造化データセット)である(図1)。

図1 Irisデータセットの内容例 図1 Irisデータセットの内容例
データセットの配布元: 「https://archive-beta.ics.uci.edu/ml/datasets/iris」。ライセンスはCC BY 4.0

 Irisデータセットは、主に多クラス分類(具体的には「あやめの種類の予測」)を目的とした統計学/機械学習/ディープラーニングなどで活用できる。

 ただし、データ件数は150件しかない。ディープラーニングに使うには少ないが、初歩的な実装方法の解説などで使われることが多い。

 図1を見ると分かるように、Irisデータセットの特徴量は、

  • がく片の長さ(cm): Sepal Length
  • がく片の幅(cm): Sepal Width
  • 花びらの長さ(cm): Petal Length
  • 花びらの幅(cm): Petal Width

の4項目となっている。花びらは漢字で書くと「花弁」であり「かべん」とも読む。花の上部にあるのが「花びら」で、下部にあるのが「がく片」となる。あやめの場合、「花びらよりもがく片の方が大きく、がく片が花のような形と色彩である」という特徴があるので注意してほしい。図2は論文「The Species Problem in Iris」(1936年)から引用した図で、2つずつ並ぶ左の大きい方がSepal(がく片)で小さい方がPetal(花びら)となっている。

図2 3種類のあやめが持つ花びら/がく片のスケッチ(論文「The Species Problem in Iris」から引用) 図2 3種類のあやめが持つ花びら/がく片のスケッチ(論文「The Species Problem in Iris」から引用)
引用元: 論文「The Species Problem in Iris」(1936年)

 また、目的変数(target variable)となるラベル(=正解を示す教師データ)には、

  • setosa: 値は0で、「セトーサ」と読む、日本名:ヒオウギアヤメ
  • versicolor: 値は1で、「ヴァーシカラー」と読む、日本名:ブルーフラッグ
  • virginica: 値は2で、「ヴァージニカ」と読む、日本名:ヴァージニカ

の3種類がある。それぞれ50件ずつあり、合計で150件となる。

引用のための情報

 このデータセットは、基本的に自由に使用できる(UCI Machine Learning Repositoryでは、ライセンスとしてCC BY 4.0が指定されている。データの取得元を明記する場合は、以下を参考にしてほしい)。

  • 論文著者: R.A. Fisher
  • タイトル: The use of multiple measurements in taxonomic problems, Annual Eugenics, 7, Part II, 179-188.
  • 公開年: 1936(下記リンク先に、このデータセットがUCI Machine Learning Repositoryに提出されたのは1988年7月1日との記載がある)
  • URL: https://archive-beta.ics.uci.edu/ml/datasets/iris

 Ronald Aylmer Fisher氏は、20世紀の統計学者/生物学者として非常に有名なフィッシャーのことである。このため、「Fisher's Iris dataset(フィッシャーのあやめデータセット)」と呼ばれることもある。

 また、元々のデータ収集はEdgar Anderson氏が行っているため(参考:「The Species Problem in Iris」、1936年)、「Anderson's Iris dataset(アンダーソンのあやめデータセット)」と呼ばれることもある。

利用方法

 実際にIrisデータセットを使うには、ライブラリscikit-learnやTensorFlow Datasetsが提供する機能を利用することをお勧めする。ムダな作業を省いて、効率的に使えるためだ。なお、Keras/PyTorchにはIrisデータセットは用意されていなかった。

 以下に、scikit-learnやTensorFlow Datasetsで「どのようなコードを書くとIrisデータセットが使えるか」の典型的なコードを簡単に示しておく(コードの詳細は解説しない)。

scikit-learn

# !pip install scikit-learn  # ライブラリ「scikit-learn」をインストール

from sklearn.datasets import load_iris

iris = load_iris()

リスト1 scikit-learnでIrisデータセットを利用する基本的なコード

 sklearn.datasets.load_iris()関数を呼び出せばよい。戻り値として(sklearn.utils.Bunch型の)辞書オブジェクトを返す。その配下のdataにデータが、targetにラベルが、feature_namesに特徴量名が、target_namesにラベル名が、関数の引数にas_frame=Trueを含めた場合はframeに全5列のpandasデータフレーム(target列は最後の列)が格納されている。

 scikit-learnのページによると、UCI Machine Learning Repositoryには間違ったデータポイントが2つあり、Fisherの論文に基づきそれらが修正されているため、scikit-learnで得られるデータセットとUCI Machine Learning Repositoryのデータセットは異なる、とのことである。筆者が確認したところ、35番目と38番目のデータが異なっていた。このことから、Irisデータセットはscikit-learnのものを使うのが一番よいかもしれない。

TensorFlow Datasets

# !pip install tensorflow-datasets  # ライブラリ「TensorFlow Datasets」をインストール

import tensorflow_datasets as tfds

iris_train = tfds.load(name="iris", split="train")

リスト3 TensorFlowでIrisデータセットを利用する基本的なコード

 TensorFlow Datasetsのirisデータセット情報は、こちらのページにまとめられている。tensorflow_datasetsモジュール(=tfds)のtfds.load関数から利用できる。

「AI・機械学習のデータセット辞典」のインデックス

AI・機械学習のデータセット辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。