Titanic Datensatz einlesen
[codesyntax lang=“php“]train <- read.csv(„C:/[PFAD]/train.csv“, header = TRUE)[/codesyntax]
Information über die Datenstruktur
[codesyntax lang=“php“]str (train)[/codesyntax]
Ergebnis:
‚train.frame‘: 891 obs. of 11 variables:
$ survived: int 0 1 1 1 0 0 0 0 1 1 …
$ pclass : int 3 1 3 1 3 3 1 3 3 2 …
$ name : Factor w/ 891 levels „Abbing, Mr. Anthony“,..: 109 191 358 277 16 559 520 629 417 581 …
$ sex : Factor w/ 2 levels „female“,“male“: 2 1 1 1 2 2 2 2 1 1 …
$ age : num 22 38 26 35 35 NA 54 2 27 14 …
$ sibsp : int 1 1 0 1 0 0 0 3 0 1 …
$ parch : int 0 0 0 0 0 0 0 1 2 0 …
$ ticket : Factor w/ 681 levels „110152“,“110413″,..: 524 597 670 50 473 276 86 396 345 133 …
$ fare : num 7.25 71.28 7.92 53.1 8.05 …
$ cabin : Factor w/ 148 levels „“,“A10″,“A14″,..: 1 83 1 57 1 1 131 1 1 1 …
$ embarked: Factor w/ 4 levels „“,“C“,“Q“,“S“: 4 2 4 4 4 3 4 4 4 2 …
Die ersten Datensätzte ink. Spaltenüberschrift anzeigen lassen
[codesyntax lang=“php“]head (train)[/codesyntax]
Ergebnis:
survived pclass name sex age sibsp parch ticket fare cabin embarked
1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.2500 S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.9250 S
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1000 C123 S
5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.0500 S
6 0 3 Moran, Mr. James male NA 0 0 330877 8.4583 Q
Anzahl der Zeilen & Spalten bzw. Datensätze
[codesyntax lang=“php“]dim(tableName)
oder
nrow (train)
ncol (train)[/codesyntax]
Ergebnis:
891
11
Anzahl überlebende und verstorbene Passagiere
[codesyntax lang=“php“]table (train$survived)x[/codesyntax]
Ergebnis:
342 Überlebende
549 Verstorbene
Darstellung:
[codesyntax lang=“php“]pie ( table(train$survived), labels=c( paste(„Verstorbene =“, table (train$survived), „Personen“), „Überlebende“), main = „Anzahl überlebende und verstorbene Passagiere“ )[/codesyntax]
# Prozentuale Auswertung
[codesyntax lang=“php“]prop.table(table (train$survived))[/codesyntax]
Ergebnis:
38% Überlebende
62% Verstorbene
Übersicht über das Geschlecht der Reisenden
[codesyntax lang=“php“]table (train$sex)[/codesyntax]
Ergebnis:
Anzahl weibliche Passagiere: 314
Anzahl männliche Passagiere: 577
Darstellung:
[codesyntax lang=“php“]barplot(table (train$sex), col = c(„pink“, „blue“), ylab = „Anzahl Passagiere“, main = „Anzahl Passagiere nach Geschlecht unterteilt“, legend.text = TRUE, args.legend = list(x=0.5, y=600), ylim = c(0,600) )[/codesyntax]
Anzahl überlebende und verstorbene Passagiere nach Geschlecht
[codesyntax lang=“php“]table(train$sex, train$survived)[/codesyntax]
Ergebnis:
Anzahl überlebende Frauen: 233
Anzahl verstorbene Frauen: 81
Anzahl überlebende Männer: 109
Anzahl verstorbene Männer: 468
Darstellung:
[codesyntax lang=“php“]barplot(table(train$sex, train$survived), col = c(„pink“, „blue“), ylab = „Anzahl Passagiere“, xlab = „0 = verstorben | 1 = überlebt „, main = „Übersicht überlebende und verstorbene Passagiere“, legend.text = TRUE, args.legend = list(x=2.4, y=600), ylim = c(0,600) )[/codesyntax]
Anzahl (prozentual) überlebende und verstorbene Passagiere nach Geschlecht (ausgehend von Gesamtzahl der Passagiere)
[codesyntax lang=“php“]prop.table(table(train$sex, train$survived))[/codesyntax]
Ergebnis:
Anzahl überlebende Frauen: 26%
Anzahl verstorbene Frauen: 9%
Anzahl überlebende Männer: 12%
Anzahl verstorbene Männer: 53%
Anzahl (prozentual) überlebende und verstorbene Passagiere (geschlechtsspezifisch)
[codesyntax lang=“php“]prop.table(table(train$sex, train$survived),1)[/codesyntax]
Ergebnis:
Anzahl überlebende Frauen: 26% aller Frauen
Anzahl verstorbene Frauen: 74%
Anzahl überlebende Männer: 19% aller Männer
Anzahl verstorbene Männer: 81%
Anzahl der Personen pro Klasse
[codesyntax lang=“php“]table (train$pclass)[/codesyntax]
Ergebnis:
Erste Klasse: 216 Personen
Zweite Klasse: 184 Personen
Dritte Klasse: 491 Personen
Anzahl der Überlebende und verstorbene pro Klasse (ausgehend von Gesamtzahl der Passagiere)
[codesyntax lang=“php“]table(train$survived, train$pclass)[/codesyntax]
Ergebnis:
Erste Klasse:
Anzahl überlebende: 136
Anzahl verstorbene: 80
Zweite Klasse:
Anzahl überlebende: 87
Anzahl verstorbene: 97
Dritte Klasse:
Anzahl überlebende: 119
Anzahl verstorbene: 372
Darstellung:
[codesyntax lang=“php“]dotchart(table(train$survived, train$pclass), pch = 15, col=“blue“, gcolor = „red“, lcolor = „orange“, xlab = „Anzahl überlebende und verstorbene Passagiere“, ylab = „Überlebende und versorbene Passagiere nach Klassen“, main = „Auflistung aller überlebenden und verstorbenene Passagiere nach Klassen“ )[/codesyntax]
Anzahl (prozentual) der Überlebende pro Klasse (ausgehend von Gesamtzahl der Passagiere)
[codesyntax lang=“php“]prop.table(table(train$survived, train$pclass))[/codesyntax]
Ergebnis:
Erste Klasse
Anzahl überlebende: 15%
Anzahl verstorbene: 9%
Zweite Klasse
Anzahl überlebende: 10%
Anzahl verstorbene: 11%
Dritte Klasse
Anzahl überlebende: 13%
Anzahl verstorbene: 42%
Anzahl (prozentual) der überlebenden und verstorbenen Passgiere aus der ersten Klasse
[codesyntax lang=“php“]
100/216*136 #62.96296
100/216*80 #37.03704[/codesyntax]
Ergebnis:
63% der Passagiere aus der ersten Klasse haben überlebt
37% der Passagiere aus der ersten Klasse sind verstorben
Ergebnis für die zweite Klasse
47% der Passagiere aus der zweiten Klasse haben überlebt
53% der Passagiere aus der zweiten Klasse sind verstorben
Ergebnis für die dritte Klasse
24% der Passagiere aus der dritten Klasse haben überlebt
76% der Passagiere aus der dritten Klasse sind verstorben
Anzahl überlebende Frauen und Männer aus der einzelnen Klassen
[codesyntax lang=“php“]table(train$sex, train$survived, train$pclass)[/codesyntax]
Ergebnis:
Erste Klasse
Überlebende Frauen: 91
Verstorbene Frauen: 3
Überlebende Männer: 45
Verstorbene Männer: 77
Zweite Klasse
Überlebende Frauen: 70
Verstorbene Frauen: 6
Überlebende Männer: 17
Verstorbene Männer: 91
Dritte Klasse
Überlebende Frauen: 72
Verstorbene Frauen: 72
Überlebende Männer: 47
Verstorbene Männer: 300
Alter der Passagiere
[codesyntax lang=“php“]qplot(age, ylab = „Number“, main = „Alter der Passagiere“, data = train, geom = „bar“)[/codesyntax]
Durchschnittsalter der Passagiere
[codesyntax lang=“php“]summary(train$age)[/codesyntax]
Ergebnis:
Min. 1st Qu. Median Mean 3rd Qu. Max. NA’s
0.42 20.12 28.00 29.70 38.00 80.00 177
Durchschnittsalter der Überlebenden Frauen aus der ersten Klasse
[codesyntax lang=“php“]summary(train[train$survived==“1″ & train$sex==“male“ & train$pclass==“1″ ,]$age)[/codesyntax]
Ergebnis:
Min. 1st Qu. Median Mean 3rd Qu. Max. NA’s
14.00 23.25 35.00 34.94 44.00 63.00 9
Ergebnis für die zweite Klasse:
Min. 1st Qu. Median Mean 3rd Qu. Max. NA’s
2.00 21.75 28.00 28.08 35.25 55.00 2
Ergebnis für die dritte Klasse:
Min. 1st Qu. Median Mean 3rd Qu. Max. NA’s
0.75 13.50 19.00 19.33 26.50 63.00 25
Anzahl Kinder in der ersten Klasse (Annahme: Kinder sind unter 18):
Eingabe:
sum (table(train[train$pclass==“1″ & train$age < 18 ,]$age))
Ergebnis:
12
Ergebnis für die zweite Klasse:
23
Ergebnis für die dritte Klasse:
78
Anzahl verstorbene Kinder aus der ersten Klasse
[codesyntax lang=“php“]sum (table(train[train$survived==“0″ & train$pclass==“1″ & train$age < 18 ,]$age))[/codesyntax]
Ergebnis:
1
Ergebnis für die zweite Klasse:
2
Ergebnis für die dritte Klasse:
49
Anzahl überlebende Kinder (Mädchen) aus der ersten Klasse
[codesyntax lang=“php“]sum (table(train[train$survived==“1″ & train$sex==“female“ & train$pclass==“1″ & train$age < 18 ,]$age))[/codesyntax]
Ergebnis:
7
Ergebnis für die zweite Klasse:
12
Ergebnis für die dritte Klasse:
19
Anzahl verstorbene Kinder (Mädchen) aus der ersten Klasse
[codesyntax lang=“php“]sum (table(train[train$survived==“0″ & train$sex==“female“ & train$pclass==“1″ & train$age < 18 ,]$age))[/codesyntax]
Ergebnis:
1
Ergebnis für die zweite Klasse:
0
Ergebnis für die dritte Klasse:
16
Information Gain
Def.: Der Information Gain ermittelt das Attribut, welches den meisten Informationsgehalt bringt. Es hat das Ziel, die Tiefe des Entscheidungsbaumes zu minimieren. Quelle: [Künstliche Intelligenz: Ein moderner Ansatz]
# Paket ‚FSelector‘ installieren und laden
[codesyntax lang=“php“]install.packages(„FSelector“)
library (FSelector)[/codesyntax]
# Berechnung von ‚Information gain‘ – ‚target value‘ entspricht ‚train$survived‘.
[codesyntax lang=“php“]information.gain(train)[/codesyntax]
# Ergebnis:
attr_importance
pclass 0.053608163
name 1.609435396
sex 0.145685212
age 0.008687071
sibsp 0.000000000
parch 0.000000000
ticket 1.355042740
fare 0.048528443
cabin 0.318976005
embarked 0.022301869
Die wichtigsten Attribute, für das Überleben der Passagiere sind ’name‘ und ‚ticket‘.
Feststellen, ob die Spalte ’name‘ Duplikate beinhaltet
[codesyntax lang=“php“]anyDuplicated( as.character(train$name) )[/codesyntax]
Ergebnis:
0 # Keine Duplikate
Nach (Mrs., Miss., Mr., Master.) filtern
[codesyntax lang=“php“]titles <- NULL
mrs <- NULL
miss <- NULL
mr <- NULL
master <- NULL
other <- NULL
ages <- NULL
parseTitle <- function(name) {
name <- as.character(name)
if (length(grep(„Mrs.“, name)) > 0) {
mrs <<- c(mrs, name)
return („Mrs.“)
} else if (length(grep(„Miss.“, name)) > 0) {
miss <<- c(miss, name)
return („Miss.“)
} else if (length(grep(„Mr.“, name)) > 0) {
mr <<- c(mr, name)
return („Mr.“)
} else if (length(grep(„Master.“, name)) > 0) {
master <<- c(master, name)
return („Master.“)
} else {
other <<- c(other, name)
return („Other“)
}
}
for (i in 1:nrow(train)) {
titles <- c(titles, parseTitle(train[i, „name“]))
ages <<- c(ages, train[i,5])
}
table(titles)[/codesyntax]
Ergebnis:
Master. Miss. Mr. Mrs. Other
40 180 518 129 24
Anzahl überlebende und verstorbene nach Title
[codesyntax lang=“php“]table(titles, train$survived)[/codesyntax]
Ergebnis:
titles 0 1
Master. 17 23
Miss. 54 126
Mr. 436 82
Mrs. 27 102
Other 15 9
Anzahl überlebende und verstorbene nach Title (Prozentual)
[codesyntax lang=“php“]100/40*17 # 42,5%
100/40*23 # 57,5%[/codesyntax]
Ergebnis:
titles 0 1
Master. 42,5% 57,5%
Miss. 30% 70%
Mr. 84,2% 15,8%
Mrs. 20,9% 79,1%
Other 62,5% 37,5%
Titel nach Klassen unterteilt
[codesyntax lang=“php“]table(titles, train$survived, train$pclass)[/codesyntax]
Ergebnis:
Erste Klasse
titles 0 1
Master. 0 3
Miss. 2 44
Mr. 70 38
Mrs. 1 43
Other 7 8
Zweite Klasse
titles 0 1
Master. 0 9
Miss. 1 31
Mr. 83 8
Mrs. 5 38
Other 8 1
Dritte Klasse
titles 0 1
Master. 17 11
Miss. 51 51
Mr. 283 36
Mrs. 21 21
Other 0 0
Alter der Passagiere innerhalb der einzelnen Klassen berechnen
[codesyntax lang=“php“]table(titles, ages)[/codesyntax]
Ergebnis:
# Der älteste Master. ist 12
# Die älteste Miss. ist 63
# Der älteste Mr. ist 80
# Die älteste Mrs. ist 63