{"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-02-06T05:57:58","modified_gmt":"2026-02-06T04:57:58","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":"<style>\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><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>\t\t\n\t\t<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><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><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>\t\t\n\t\t\t<style>\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image3.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t<h3>One-Hot Encoding<\/h3>\t\t\n\t\t<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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image1.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders1.jpg\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/weiterbildung-data-analyst\">Alles \u00fcber Datenkodierung lernen<\/a><\/div><\/div>\n\n\t\t\t<h3>Bin\u00e4re Kodierung<\/h3>\t\t\n\t\t<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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image4.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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><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>\t\t\n\t\t\t<h3>Die Ordinalkodierung<\/h3>\t\t\n\t\t<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><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><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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image6.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders2.jpg\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/weiterbildung-data-analyst\">Beherrsche die Datenkodierung<\/a><\/div><\/div>\n\n\t\t\t<h3>Die Zielkodierung<\/h3>\t\t\n\t\t<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><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><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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image5.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/image2.png\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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>\t\t\n\t\t\t<h3>Fazit<\/h3>\t\t\n\t\t<p>Die<strong> category_encoders-Bibliothek<\/strong> bietet eine gro\u00dfe Auswahl an Werkzeugen, um kategoriale Variablen in numerische Werte zu kodieren.<\/p><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>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/03\/category_encoders3.jpg\" title=\"\" alt=\"\" loading=\"lazy\">\t\t\t\t\t\t\t\t\t\t\t<figcaption><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t<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>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/weiterbildung-data-analyst\">Informiere dich \u00fcber die Verschl\u00fcsselung von Daten<\/a><\/div><\/div>\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":1,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/193612\/revisions"}],"predecessor-version":[{"id":216927,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/193612\/revisions\/216927"}],"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}]}}