(This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.)

Die Iris-Datensammlung ist eine der populärsten Beispieldatensammlung des Maschinenlernens. Man findet sie inklusive Dokumentation hier. Wir importieren die Daten.

iris <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data",header=F)

Ein erster Überblick mit

str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ V1: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ V2: num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ V3: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ V4: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ V5: Factor w/ 3 levels "Iris-setosa",..: 1 1 1 1 1 1 1 1 1 1 ...

zeigt, dass beim Import “V1”,…,“V5” automatisch als Variablennamen gesetzt worden sind. Wir tragen die richtigen Namen ein.

colnames(iris) <- c("sepal.length","sepal.width","petal.length","petal.width","species")

Die Bedeutung von “petal” bzw. “sepal” ist “Kronblatt” bzw. “Kelchblatt”.

Einen detaillierteren Überblick über die Daten - insbesondere über die Wertebereiche der Variablen - erhält man mit

summary(iris)
##   sepal.length    sepal.width     petal.length    petal.width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.054   Mean   :3.759   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##             species  
##  Iris-setosa    :50  
##  Iris-versicolor:50  
##  Iris-virginica :50  
##                      
##                      
## 

Eine typische Herausforderung im Maschinenlernen besteht darin, eine Funktion zu finden, die bei gegebenen Wertebelegungen der Attribute “sepal.length”, “sepal.width”, “petal.length” und “petal.width” den richtigen Wert für “species” ausgibt. Da “species” ein kategorielles Attribut ist, spricht man hier von einer Klassifizierungsaufgabe. Dass diese Aufgabe nicht trivial ist, lassen die mit dem Paket

require(lattice, quietly = TRUE)

erstellten Grafiken ahnen.

Z.B. liefet die Projektion der Daten auf den durch Kelchblattlänge und -breite aufgespannten Raum das Bild

xyplot(sepal.length ~ sepal.width, iris,
       group=species,
       grid=TRUE,
       auto.key = TRUE)

und die Beziehung zwischen Kronblattlänge und Kronblattbreite das Bild

xyplot(petal.length ~ petal.width, iris,
       group=species,
       grid=TRUE,
       auto.key = TRUE)

```