{"id":193612,"date":"2024-04-02T05:06:00","date_gmt":"2024-04-02T04:06:00","guid":{"rendered":"https:\/\/liora.io\/de\/?p=193612"},"modified":"2026-08-03T14:00:13","modified_gmt":"2026-08-03T12:00:13","slug":"category-encoders-das-schweizer-taschenmesser-der-codierung","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/category-encoders-das-schweizer-taschenmesser-der-codierung","title":{"rendered":"Category encoders: Das Schweizer Taschenmesser der Codierung"},"content":{"rendered":"\n<p><strong>In einem Datensatz gibt es zwei Arten von Variablen: quantitative Variablen, die Mengen messen (z. B. Gr\u00f6\u00dfe, Preis), und qualitative oder kategoriale Variablen, die eher Kategorien oder Modalit\u00e4ten bestimmen (z. B. Geschlecht, Farbe). Da Machine Learning auf verschiedenen mathematischen Operationen beruht, ist es entscheidend, unsere kategorialen Variablen in numerische Werte umzuwandeln oder besser gesagt zu kodieren, damit sie von unseren Modellen verarbeitet werden k\u00f6nnen. Dies geschieht in der Phase der Datenvorverarbeitung, auch &#8222;Preprocessing&#8220; genannt.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-analyst\">Alles \u00fcber Datenkodierung lernen<\/a><\/div><\/div>\n\n\n\n<p>Die <a href=\"https:\/\/liora.io\/de\/imbalanced-learn-alles-ueber-die-python-bibliothek-zur-reequilibrierung-von-ml-datasets\">Python-Bibliothek<\/a> category encoders bietet, wie der Name schon sagt, eine Vielzahl von Kodierungstechniken f\u00fcr unsere Variablen. Wie jede andere Bibliothek wird sie mit dem Befehl pip install category_encoders installiert und mit import category_encoders as ce importiert.<\/p>\n\n\n\n<p>In diesem Artikel werden wir uns einige der vielen Kodierungstechniken ansehen, die diese <strong>Bibliothek<\/strong> anbietet. Wir betrachten auch das folgende <a href=\"https:\/\/liora.io\/de\/dataframe\">DataFrame<\/a> als Beispiel. Dieses DataFrame enth\u00e4lt f\u00fcnf Spalten: drei kategoriale Variablen (Name, Geschlecht und Gr\u00f6\u00dfe) und zwei quantitative Variablen (Alter und Status).<\/p>\n\n\n\n<p>Die Zielvariable, die wir vorhersagen wollen, ist die berufliche Situation, die in der gleichnamigen Spalte eingetragen ist: Sie hat den Wert 1, wenn die Person besch\u00e4ftigt ist, und 0, wenn sie arbeitslos ist.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:269px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eOne-Hot Encoding\u201c\" decoding=\"async\" height=\"100\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image3.png\" style=\"width:269px;max-width:100%;height:auto\" width=\"269\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"one-hot-encoding\">One-Hot Encoding<\/h2>\n\n\n\n<p>Beginnen wir mit der <strong>Kodierungsmethode<\/strong>, die wahrscheinlich am h\u00e4ufigsten verwendet wird. Bei jeder zu kodierenden Spalte wird sie durch <strong>One-Hot Encoding in X Spalten aufgeteilt<\/strong>, wobei X die Anzahl der unterschiedlichen Werte ist. Wenden wir One-Hot Encoding auf die Spalte &#8222;Geschlecht&#8220; in unserem DataFrame an:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:338px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eOne-Hot Encoding\u201c\" decoding=\"async\" height=\"108\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image1.png\" style=\"width:338px;max-width:100%;height:auto\" width=\"338\"\/><\/figure>\n\n\n\n<p>Wie wir feststellen k\u00f6nnen, wurde die Spalte &#8222;Geschlecht&#8220; in die beiden Spalten &#8222;Frau&#8220; und &#8222;Mann&#8220; aufgeteilt. Ebenso sind die Werte in dieser Spalte nun bin\u00e4r: 1, wenn das Geschlecht in der Spalte mit der untersuchten Person \u00fcbereinstimmt, 0 sonst.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eOne-Hot Encoding\u201c\" decoding=\"async\" height=\"563\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders1.jpg\" style=\"width:100%;height:auto\" width=\"1000\"\/><\/figure>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"binare-kodierung\">Bin\u00e4re Kodierung<\/h3>\n\n\n\n<p>Die <strong>bin\u00e4re Kodierung<\/strong> funktioniert fast genauso wie die<strong> One-Hot-Kodierung:<\/strong> Sie teilt die zu kodierende Spalte in X verschiedene Spalten auf, deren Werte bin\u00e4r sind. Der Unterschied liegt hier in den Werten: W\u00e4hrend die One-Hot-Kodierung die Werte ohne besondere Reihenfolge auf 0 oder 1 setzt, z\u00e4hlt die Bin\u00e4rkodierung die Werte zur Basis 2. Sehen wir uns das mit demselben DataFrame an:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:335px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eBin\u00e4re Kodierung\u201c\" decoding=\"async\" height=\"107\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image4.png\" style=\"width:335px;max-width:100%;height:auto\" width=\"335\"\/><\/figure>\n\n\n\n<p>Wenn wir wie oben zwei getrennte Spalten f\u00fcr das Geschlecht erhalten, haben die Werte nicht die gleiche Bedeutung. Die bin\u00e4re Kodierung z\u00e4hlt den Wert &#8222;F&#8220;, der an erster Stelle steht, als die Zahl 1 (01 zur Basis 2) und den Wert &#8222;M&#8220; als die Zahl 2 (10 zur Basis 2).<\/p>\n\n\n\n<p>Tats\u00e4chlich k\u00f6nnen die One-Hot- und Bin\u00e4rcodierungen als Teilmenge einer anderen Codierungsart betrachtet werden, die von category_encoders unterst\u00fctzt wird: die N-Base-Codierung. Diese Kodierung erm\u00f6glicht es, unsere kategorialen Variablen in Tabellenform in ihre N-Base-\u00c4quivalente umzuwandeln. Wenn also die bin\u00e4re Kodierung einer Base-2-Kodierung entspricht, kann der One-Hot als Base-1-Kodierung betrachtet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"die-ordinalkodierung\">Die Ordinalkodierung<\/h3>\n\n\n\n<p>Innerhalb der kategorialen Variablen gibt es eine Unterkategorisierung, die wir bisher noch nicht erw\u00e4hnt haben. Im Allgemeinen werden kategoriale Variablen als &#8222;nominal&#8220; bezeichnet, in dem Sinne, dass sie eine endliche Menge von Werten zulassen, die in keiner Beziehung zueinander stehen. In unserem DataFrame zum Beispiel sind die Variablen &#8222;Name&#8220; und &#8222;Alter&#8220; nominal, da sie 3 bzw. 2 Werte enthalten, die in keiner Beziehung zueinander stehen.<\/p>\n\n\n\n<p>Wenn diese<strong> kategorialen Variablen jedoch eine Ordnungsbeziehung<\/strong> zwischen ihren Werten zulassen, werden sie als &#8222;ordinal&#8220; bezeichnet. Das kann eine Erw\u00e4hnung in einer Pr\u00fcfung, eine Platzierung in einem Wettbewerb, eine Altersgruppe usw. sein. In unserem Beispiel ist die Variable &#8222;K\u00f6rpergr\u00f6\u00dfe&#8220; eine ordinale Variable, da ihre Werte in eine Rangfolge gebracht werden k\u00f6nnen: klein &gt; mittel &gt; gro\u00df.<\/p>\n\n\n\n<p>F\u00fcr die<strong> Verarbeitung von ordinalen Variablen ist daher die Ordinalkodierung<\/strong> besser geeignet, da sie die bei der Kodierung der Werte erstellte Rangfolge ber\u00fccksichtigt und beibeh\u00e4lt. Wenden wir eine ordinale Kodierung auf unseren DataFrame in der Spalte &#8222;Gr\u00f6\u00dfe&#8220; an:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:258px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eDie Ordinalkodierung\u201c\" decoding=\"async\" height=\"117\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image6.png\" style=\"width:258px;max-width:100%;height:auto\" width=\"258\"\/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-analyst\">Beherrsche die Datenkodierung<\/a><\/div><\/div>\n\n\n\n<p>Wie wir sehen k\u00f6nnen, haben wir nicht nur die Spaltenwerte numerisch umgewandelt, sondern auch die Hierarchie unserer Gr\u00f6\u00dfen gut beibehalten!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eDie Ordinalkodierung\u201c\" decoding=\"async\" height=\"605\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders2.jpg\" style=\"width:100%;height:auto\" width=\"1000\"\/><\/figure>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"die-zielkodierung\">Die Zielkodierung<\/h3>\n\n\n\n<p>In jedem <a href=\"https:\/\/liora.io\/de\/data-poisoning-eine-bedrohung-fuer-machine-learning-modelle\">Machine-Learning-Modell<\/a> gibt es eine Zielvariable, die wir \u00fcber dieses Modell vorhersagen wollen. In unserem Beispiel ist dies die berufliche Situation. Daher kann es sinnvoll sein, eine Kodierung auf unsere kategorialen Variablen anzuwenden, die, anstatt ihnen einen bestimmten numerischen Wert zu geben, diesen auf der Grundlage der Zielvariablen berechnet. Hier kommt die Zielkodierung oder &#8222;target encoder&#8220; zum Einsatz!<\/p>\n\n\n\n<p>Die Zielkodierung \u00fcbersetzt kategoriale Variablen, indem sie den Mittelwert der entsprechenden Zielvariablen f\u00fcr jede Kategorie berechnet, die sich von der kategorialen Variable unterscheidet, die wir kodieren wollen.<\/p>\n\n\n\n<p>Wenden wir diese Kodierung auf die Spalten Geschlecht und Gr\u00f6\u00dfe in unserem Beispiel-DataFrame an, wobei wir klarstellen, dass unsere Zielvariable die Spalte &#8222;Situation&#8220; ist:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:294px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eDie Zielkodierung\u201c\" decoding=\"async\" height=\"110\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image5.png\" style=\"width:294px;max-width:100%;height:auto\" width=\"294\"\/><\/figure>\n\n\n\n<p>Hier nimmt jeder Wert in den Spalten Geschlecht und Gr\u00f6\u00dfe gut einen numerischen Wert an, der als Mittelwert der Zielvariablen Situation berechnet wird. Die allgemeine Berechnung f\u00fcr jede einzelne Kategorie in den Kategorienspalten wird wie folgt durchgef\u00fchrt:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:572px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eDie Zielkodierung\u201c\" decoding=\"async\" height=\"68\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image2.png\" style=\"width:572px;max-width:100%;height:auto\" width=\"572\"\/><\/figure>\n\n\n\n<p>Diese Berechnung ergibt eine numerische Darstellung jeder kategorialen Kategorie, die auf dem Mittelwert der mit dieser Kategorie verbundenen Zielvariablen basiert. Diese codierten Werte k\u00f6nnen dann als Merkmale in einem Machine-Learning-Modell verwendet werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fazit\">Fazit<\/h2>\n\n\n\n<p>Die<strong> category_encoders-Bibliothek<\/strong> bietet eine gro\u00dfe Auswahl an Werkzeugen, um kategoriale Variablen in numerische Werte zu kodieren.<\/p>\n\n\n\n<p>W\u00e4hrend wir hier vier Methoden vorgestellt haben, unterst\u00fctzt category_encoders etwa 15 verschiedene Kodierungstechniken, die in verschiedenen Situationen eingesetzt werden k\u00f6nnen!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eFazit\u201c\" decoding=\"async\" height=\"634\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders3.jpg\" style=\"width:100%;height:auto\" width=\"1000\"\/><\/figure>\n\n\n\n<p>Um ein Experte in der <strong>Datenkodierung zu werden,<\/strong> solltest du unbedingt die von Liora angebotenen Data Scientist &amp; Data Analyst-Trainings absolvieren!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-analyst\">Informiere dich \u00fcber die Verschl\u00fcsselung von Daten<\/a><\/div><\/div>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>In einem Datensatz gibt es zwei Arten von Variablen: quantitative Variablen, die Mengen messen (z. B. Gr\u00f6\u00dfe, Preis), und qualitative oder kategoriale Variablen, die eher Kategorien oder Modalit\u00e4ten bestimmen (z. B. Geschlecht, Farbe). Da Machine Learning auf verschiedenen mathematischen Operationen beruht, ist es entscheidend, unsere kategorialen Variablen in numerische Werte umzuwandeln oder besser gesagt zu [&hellip;]<\/p>\n","protected":false},"author":76,"featured_media":193623,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-193612","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/193612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=193612"}],"version-history":[{"count":4,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/193612\/revisions"}],"predecessor-version":[{"id":224180,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/193612\/revisions\/224180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/193623"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=193612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=193612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}