Alterskategorien Encoden

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Axel.py
User
Beiträge: 1
Registriert: Donnerstag 9. Juni 2022, 17:58

Servus,
in Rahmen eines Semesterprojektes möchte ich mit einen Datensatz arbeiten, der sich mit Herzproblemen behandelt. In diesem ist das Alter kategorisch angegeben, also z.b 18-24. Gut ich habe aus diesen Werten jetzt schon einzelne gemacht, die ich in einem DecisionTree verwenden möchte. Jedoch sind die Spannweiten zu klein und somit wird der DecisionTree überflutet und einfach zu groß.
So habe ich das bis jetzt gemacht:

Code: Alles auswählen

encode_AgeCategory = {'18-24':21,'25-29':27,'30-34':32, '35-39':37,
                      '40-44':42, '45-49':47,'50-54':52,'55-59':57,
                      '60-64':62,'65-69':67,'70-74':72, '75-79':77,
                      '80 or older':80}

df['AgeCategory'] = df['AgeCategory'].apply(lambda x: encode_AgeCategory[x])
df['AgeCategory'] = df['AgeCategory'].astype('float')
Jetzt würde ich gerne die ['21', '27', '32','37', '42', '47','52', '57', '62','67', '72', '77', '80'] jeweils 2 zu einen machen, also Z:B 21 und 27 zu 24, jedoch habe ich irgendwie noch kein weg gefunden. Wahrscheinlich habe gerade auch nur ein Brett vor den Kopf, aber HMMMMMM.
Wichtig ist, das Später weiter weiter mit ['AgeCategory'] gemacht wird, für das MLS.
Vielen Dank.
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

Variablennamen werden komplett klein geschrieben, und sollten aussagekräftig sein, `df` ist nicht sehr aussagekräftig. Statt `apply` benutzt man `map`.
Warum definierst Du Dein Mapping nicht gleich so, dass es passt?

Code: Alles auswählen

encode_age_category = {
    '18-24':25, '25-29':25,
    '30-34':35, '35-39':35,
    '40-44':45, '45-49':45,
    '50-54':55, '55-59':55,
    '60-64':65, '65-69':65,
    '70-74':75, '75-79':75,
    '80 or older':80
}
df['AgeCategory'] = df['AgeCategory'].map(encode_age_category)
Antworten