Herzleiden-Datenanalyse
Datenanalyse ist ein Prozess des Extrahierens, Präsentierens und Modellierens auf Basis von Informationen aus erhobenen numerischen Daten. In diesem Beispiel demonstrieren wir einen Arbeitsablauf der Datenanalyse in der Wolfram Language. Der verwendete Datensatz stammt vom UCI Machine Learning Repository, das die Diagnosedaten von 1541 Patienten mit Herzleiden sammelt.
Importieren Sie Diagnosedaten zu Herzkrankheiten und parsen Sie diese, so dass jede Zeile einem anderen Patienten und jede Säule einem anderen Attribut entspricht.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_111.png)
rawdata =
Import["https://archive.ics.uci.edu/ml/machine-learning-databases/\
heart-disease/new.data", "Text"];
data = StringSplit[rawdata, LetterCharacter ..];
data = Table[
ToExpression[StringSplit[dat, (" " | "\n") ..]], {dat, data}];
Extrahieren Sie die relevanten Attribute in „Labels“ und „Features“. Die in „labels“ gespeicherten Werte sind 0 und 1, was jeweils dem Bestehen und der Abwesenheit einer Herzerkrankung entspricht.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_112.png)
labels = Unitize[data[[All, 58]]];
features =
data[[All, {3, 4, 9, 10, 12, 16, 19, 32, 38, 40, 41, 44, 51}]];
![Click for copyable input](assets.de/heart-disease-data-analysis/In_113.png)
Take[labels, 10]
![](assets.de/heart-disease-data-analysis/O_81.png)
Für jeden Patienten ist der Feature-Vektor eine Liste numerischer Werte. Allerdings sind die Daten nicht vollständig und enthalten fehlende Felder, die als gespeichert sind.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_114.png)
features[[-3]]
![](assets.de/heart-disease-data-analysis/O_82.png)
Ersetzen Sie fehlende Werte durch den Durchschnittswert der vorhandenen Daten im entsprechenden Attribut und visualisieren Sie dann die Korrelation zwischen verschiedenen Attributen.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_115.png)
features = Transpose[Table[
N[attribute /. {-9 -> Mean[N[DeleteCases[attribute, -9]]]}]
, {attribute, Transpose[features]}]];
cormat = Correlation[features];
![](assets.de/heart-disease-data-analysis/O_83.png)
Um die Datenverteilung zu veranschaulichen, wird eine Hauptkomponentenanalyse (PCA) durchgeführt, um die ersten beiden Hauptkomponenten zu extrahieren. Anschließend werden die projizierten Datenpunkte als Streudiagramm dargestellt.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_117.png)
pcs2 = Take[PrincipalComponents[features, Method -> "Correlation"],
All, 2];
![](assets.de/heart-disease-data-analysis/O_84.png)
Um die beiden Klassen voneinander zu trennen, werden die projizierten Daten einer Gaußschen Mischverteilung mit zwei Komponenten angepasst.
![Click for copyable input](assets.de/heart-disease-data-analysis/In_119.png)
edist = EstimatedDistribution[pcs2,
MixtureDistribution[{p1,
p2}, {BinormalDistribution[{m11, m12}, {s11, s12}, r1],
BinormalDistribution[{m21, m22}, {s21, s22}, r2]}]];
Plotten Sie die Entscheidungsgrenze (schwarze Kurve) und die Konturen der Wahrscheinlichkeitsdichte (rote Kurve) der Mischverteilung und stellen Sie diese gemeinsam mit dem Streudiagramm dar. Die erste Komponente der Gaußschen Mischverteilung hat innerhalb der Entscheidungsgrenze eine höhere Wahrscheinlichkeit.
![](assets.de/heart-disease-data-analysis/O_85.png)