logo

Iris 데이터 셋 📂머신러닝

Iris 데이터 셋

개요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

줄리아에서는 머신러닝 데이터 셋 패키지인 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().features, Iris().targets, Iris().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 ↩︎