logo

アイリスデータセット 📂機械学習

アイリスデータセット

概要1

Irisデータセットは、アメリカの植物学者、エドガーアンダーソンEdgar Andersonによって作成され、イギリスの統計学者、ロナルドフィッシャーRonald Fisherによって紹介された2、あやめirisの観測記録に関するデータセットだ。

説明

iris.png

機械学習やデータ分析の練習で最も多く使用されるデータセットである。3

setosa/versicolor/virginicaの3種類のあやめを各50本観察し、それぞれの花の花弁の長さと幅、萼の長さと幅を測定したデータで、すなわち150本の花の種類species、花弁の長さpetal length、花弁の幅petal width、萼の長さsepal length、萼の幅sepal widthに関する情報であり、150行5列のデータフレームである。

使用方法

Julia

Juliaでは、機械学習データセットパッケージのMLDatasets.jlを使うことができる。最初に使用する際にはインストールが必要だ。また、デフォルト設定でデータフレームとして読み込まれるため、DataFrames.jlが必要である。

julia> using MLDatasets
julia> using DataFrames

julia> X = Iris()
dataset Iris:
  metadata   =>    Dict{String, Any} with 4 entries
  features   =>    150×4 DataFrame
  targets    =>    150×1 DataFrame
  dataframe  =>    150×5 DataFrame

julia> X[:]
(features = 150×4 DataFrame
 Row │ sepallength  sepalwidth  petallength  petalwidth
     │ Float64      Float64     Float64      Float64
─────┼──────────────────────────────────────────────────
   1 │         5.1         3.5          1.4         0.2
   2 │         4.9         3.0          1.4         0.2
   3 │         4.7         3.2          1.3         0.2
  ⋮  │      ⋮           ⋮            ⋮           ⋮
 149 │         6.2         3.4          5.4         2.3
 150 │         5.9         3.0          5.1         1.8
                                        145 rows omitted, targets = 150×1 DataFrame
 Row │ class
     │ String15
─────┼────────────────
   1 │ Iris-setosa
   2 │ Iris-setosa
   3 │ Iris-setosa
  ⋮  │       ⋮
 149 │ Iris-virginica
 150 │ Iris-virginica
      145 rows omitted)

オプションをas_df=falseに設定すると、データフレームではなく、タプルとしてデータを得ることができる。

julia> X = Iris(as_df=false)[:]
(features = [5.1 4.9 … 6.2 5.9; 3.5 3.0 … 3.4 3.0; 1.4 1.4 … 5.4 5.1; 0.2 0.2 … 2.3 1.8], targets = InlineStrings.String15[InlineStrings.String15("Iris-setosa") InlineStrings.String15("Iris-setosa") … InlineStrings.String15("Iris-virginica") InlineStrings.String15("Iris-virginica")])

julia> typeof(X)
NamedTuple{(:features, :targets), Tuple{Matrix{Float64}, Matrix{InlineStrings.String15}}}

Iris().featuresIris().targetsIris().dataframesを使って、それぞれ特徴量やクラス、そしてこれら二つを一つにまとめたデータフレームを得ることができる。

julia> Iris().dataframe
150×5 DataFrame
 Row │ sepallength  sepalwidth  petallength  petalwidth  class
     │ Float64      Float64     Float64      Float64     String15
─────┼──────────────────────────────────────────────────────────────────
   1 │         5.1         3.5          1.4         0.2  Iris-setosa
   2 │         4.9         3.0          1.4         0.2  Iris-setosa
   3 │         4.7         3.2          1.3         0.2  Iris-setosa
  ⋮  │      ⋮           ⋮            ⋮           ⋮             ⋮
 149 │         6.2         3.4          5.4         2.3  Iris-virginica
 150 │         5.9         3.0          5.1         1.8  Iris-virginica
                                                        145 rows omitted

環境

  • OS: Windows11
  • Version: Julia v1.8.2, MLDatasets v0.7.6, DataFrames v1.3.6

  1. 권건우·허령, 야사와 만화로 배우는 인공지능 2, p230 ↩︎

  2. The use of multiple measurements in taxonomic problems as an example of linear discriminant analysis ↩︎

  3. https://archive.ics.uci.edu/ml/index.php ↩︎