 So, liebe Damen und Herren auf der KSW, ich begrüße Sie sehr herzlich. Zum nächsten Talk. Was macht ein Informatiker, wenn da eine Küche steht? Das ist eine rhetorische Frage, die wird beantwortet werden von unserem lieben Limluk. Limluk, kommen wir hoch. Ich glaube, wir müssen gerade den Übergang ein bisschen füllen. Ja, doch ich denke, das sollten wir auch wünn kriegen. Limluk ist genauso wie ich ein Teil von Chaos West, ist das richtig? Ja, also ich wohne ja kaum von dir entfernt. Wir kennen uns auch persönlich, das ist auch richtig? Ich glaube, wir sind uns in Siegen schon mal begegnet, ich weiß auch nicht. Diese Bühne hier ist ja eine Self-Organized Session. Und ich habe Limluk gefragt, ob er nicht einen Vortrag halten kann, das war wann. Oh, gute Frage, müsste jetzt... Ich weiß gar nicht mehr, wann du mich gefragt hast. Auf jeden Fall, naja, ich hatte da eh so ein Problem mit der Küche, was dann irgendwie zu Jagdshaving geführt hat und da kam irgendwie ein Vortrag raus. Sehr schön, und wann bist du damit fertig geworden? Ich glaube, von einer halben Stunde. Es sind 20 Minuten. Ah, okay. Ich wünsche euch viel Spaß mit dem großartigen Limluk und seiner Weihnachtsbeckerei, Applaus. Ja, was macht einen Informatiker, wenn er in der Küche steht? In meinem Fall Plätzchenbacken. Also das, was man zu Weihnachten üblicherweise in der Küche hat. Üblicherweise in deutschen Küchen zu tut. Ich dachte mir an einem Sonntag, ja, was machst du? Versuchst mal Plätzchen zu backen für deine Freunde. Kurz darauf kam ich dann auch direkt zu den üblichen, tieferen Sinnfragen des Lebens. Was ist ein Plätzchen? Und dachten wir, ja, komm, ich bin Informatiker, das kann man auch mit Informatik lösen. Machine Learning ist ja gerade so der heiße Scheiß. Auf diesem Konkés haben wir, glaube ich, 4, 5, 6 Vorträge zum Machine Learning. Und was so alles die Implikationen davon sind. Und ich finde, Machine Learning kann auch in der deutschen Küche anwenden. Also habe ich mir überlegt, ja, bestimmen wir jetzt mal einfach, was ist ein Plätzchen? Was gehört da rein? Was gehört da nicht rein? Wo geht man dahin, wenn man wissen will, wenn man irgendein Rezept braucht? Zu Chef Koch. Eine wunderschöne Seite, 316.834 Rezepte momentan. Das weiß ich, weil ich sie alle runtergeladen habe. Das wollen die eigentlich nicht. Ich dachte mir auch, ich bin Informatiker. Cool, die haben hier eine Api rumliegen. Ja, was mache ich? Ne, mal alle Rezepte aus der Api raus. Magst du ein volles Mikro nehmen? Ich nehme auch ein volles Mikro, dann kann ich vielleicht noch ein bisschen länger reden. Also, nächster Schritt. Script schreiben. Ach nee. Erst mal natürlich böser Hacker sein. Dann Hoodie überziehen, Handschuhe anziehen. Man will ja nicht erwischt werden, wenn man irgendwie die Daten klaut von irgendwo her. Und dann Script schreiben. Was habe ich getan? Ich bin einfach jede Idee, die möglich ist, durchgegangen. Hab sämtliche Daten dazu als Jason mir geben lassen. Hab sie runtergeladen und in eine NoSQL Datenbank rein gepackt. Jetzt heißt es NoSQL, hipster Scheiß. Warum tust du das? Ich habe das gestellt, SQL Datenbanken skalieren bei irgendwie 314.000 Daten, die irgendwie nur so zusammenhängen. Nicht. Und genau zu sein, gar nicht. Da habe ich dann irgendwie ein paar Stunden darauf gewartet, dass da irgendwas sinnvolles herauskam und habe es dann einfach eben kurz in MongoDB reingepiped. Also irgendwie auf diesem LED-List zugeben, wenn man das nicht so gut sieht. Egal. Nicht so wichtig. Nächster Schritt, nachdem ich die Daten runtergeladen habe, war... Lade ich sie mal, gucke ich mir einfach an, was ist denn da eigentlich drin? Ja, dann habe ich festgestellt, ja, Scheiße. Eine Datenbank mit irgendwie 3.000 etwas spalten und 316.000 Zeilen ist nicht wirklich gut zu händeln. Also, ich erstand davor und dachte überhaupt, mh, das sind Daten. Was jetzt? Okay, dachte ich mir ja, guckst du mal an, korreliert da eigentlich irgendwas? Nee, irgendwie. Wirklich was zu sehen ist da auch nicht. Also, schaue ich mir erstmal einzelne Sachen an. Ja, guck ich mir mal an, was hat eigentlich so das Chefkoch-Rezept für Kilo-Galerienangaben? Wie fett werde ich, wenn ich irgendwas esse, was bei Chefkoch gekocht wird? Ja, sieht irgendwie auch doof aus. Irgendwie sind also komische Werte mit irgendwie 65.000 Kilo-Galerien. Das erscheint mir irgendwie doof. Also, was tu ich? Ich habe Ausreißer und will diese loswerten. Wer von euch hat mal Statistik? Hände hoch. Oh, sehr schön. Was tut man, um Ausreißer loszuwerden? Vorschläge. Okay. Sinnvollerweise haben wir 3 Möglichkeiten. Wir konvertieren das Ganze und betrachten uns die Daten logaritmisch. Ist ein bisschen unständig. Also, ja, kann man machen, sieht man dann aber fürs Auge nicht mehr wirklich viel. Weil muss man dann immer denken, äh, logaritmische Umformung, äh, nee, lass ich. Ich kann meine Daten quasi als Signal betrachten. Das heißt, wie jedes andere Signal auch und interpretiere Ausreißer einfach als Störsignale, die eine Frequenz haben und kann mir über eine Fourier-Transformation einfach mal angucken, was für Störsignale ich da drin habe. Ist aber bei Textdaten auch eher unschön, genau zu sein. Gerade bei Textdaten und so Random Kram bringt das nicht wirklich was. Bleibt der letzte, der wunderbare Interquartilsabstand. Ich gehe hin und sage, was sind die 50% mittleren Werte, die ich habe? Nehmen wir also sozusagen um den Mittelpunkt, sozusagen 25% da oben, 25% da unten, die Daten raus. Gucken wir diese Grenzen an. Multipliziere diese Grenzen dann nochmal mit 1,5, dass ich halt noch ein bisschen, eine Datengruppe kriege und habe eigentlich dann alle Ausreißer nach unten eliminiert. Ja und schon weiß ich, im Mittelwert hat so ein Chefkochrezept ungefähr 350 Gallerien. Kann man jetzt auch nicht so viel mit anfangen, aber für andere Parameter kann das halt schon mal interessanter werden. Nächster Schritt, jetzt habe ich meine gesamten Daten, irgendwie verarbeiten. Also muss ich irgendwie die Dimension reduzieren. Das heißt, Dimensionsresoluzierung heißt nichts anderes aus, ich habe jetzt meine 3000 etwas Variablen quasi und mache daraus 2. Wie mache ich das? Geschickter Trick, nennt sich PCA. Ich mache lineare Funktionen aus meinen Variablen, ich mache lineare Kombinationen raus. Hat man irgendwann mal im Zweiten Weltkrieg in England entdeckt, wir können quasi Meterattribute erschaffen. Also Attribute, die drunter liegende Attribute beschreiben. Hat man damals gemacht, um die Stärke der deutschen Marine einzuschätzen, in dem man quasi die größten Attribute von Schlachtschiffen in Meterattribute verwandelt haben. Was machen wir jetzt daraus? Wir wollen daraus jetzt quasi Rezepte beschreiben. Ist nicht ganz so glorreich wie irgendwie Schlachtschiffe, aber ja, plotten wir das ganze mal. Sieht komisch aus und irgendwie ... irgendwie das sieht doof aus. Was haben wir auf der X-Achse? Die X-Achse ist das erste Meterattribut, was wir geschafft haben, die Y-Achse, das zweite. Jetzt haben wir also komische Linien drin. Wie haben wir eine Idee, was das ist? Ja, Linien. Das sind Attribute, die sehr stetig steigen bzw. fallen. Zum Beispiel Hochzählen der IDs. Hochzählen der IDs sind doof. Die machen uns wirklich hässliche Linien, so dass wir nichts anderes mehr sehen. Kurz Erklärung zu den Fragen. Zu den Farben, nicht zu den Fragen. Wir haben jetzt hier die grünen Attribute, sind quasi Rezepte, die geteckt sind mit Weihnachtsplätzchen. Während rote Attribute sonstiges Weihnachtsgebäck sind bzw. blaue Attribute, irgendwelche Kekse, die nicht Weihnachtskekse sind. Das heißt, wir können unsere Plätzchen trennen von sonstigen Keksen und sonstigen Gebäckwaren. Also, was machen wir? Wir gucken uns jetzt die Daten an und eliminieren alle Attribute, die irgendwie einfach nur aufsteigend hochzählen könnten. Das sieht schon besser aus. Nun haben wir aber immer noch das Problem optisch, können wir jetzt kaum trennen, was dazu gehört und was nicht dazu gehört. Wir können nicht ausmachen, wir können hier keine klaren Cluster ausmachen. Normalerweise nutzt man diese Technik gerne, um eben Cluster zu bilden, dass man genau sagen kann, hey, diese Datensätze haben diese Cluster, diejenigen, die haben diese Cluster, weil aus diesen Metaattributen können wir jetzt die Wichtigkeit der einzelnen Attribute zurückrechnen. Sieht dann so aus. Das sind jetzt Weihnachtsplätzchen. Was lernen wir? Für Weihnachtsplätzchen ist so was wie, die brauchen relativ lange, also die Gesamtzeit ist relativ wichtig bei der Produktion. Sie müssen mal zwischengekühlt werden. Die Vorbereitungszeit ist relativ wichtig und Zucker ist so die Hauptzutat. Was jetzt entweder nicht überrascht ist. Gucken wir uns das Ganze mal ein riesiges weihnachtliches Gebäck an, was keine Plätzchen sind. Ah, da sieht man schon Unterschiede. Während jetzt bei den Weihnachtsplätzchen so was wie Zucker die Hauptzutat ist, haben wir hier auf einmal als wichtigste Variable, die diese Gruppe kennzeichnet, so was wie Zitronat, Orange Art, heißt, hier werden vielfach so was wie Stollen, wie Christian zum Beispiel, reinfallen, wo halt eben Zitronat und Orange Art relativ viel drin ist. Nun, haben wir optisch gesehen, ja schon mal gesehen, hey, da gibt es Unterschiede, aber wir können jetzt nicht einfach durch ein Clustering Algorithmus hingehen und sagen, ja, das ist das Cluster, das ist jenes Cluster, das funktioniert so nicht. Ja, lassen wir uns doch einfach Maschinen machen. Was tue ich hier? Ich benutze hier Python und Keras mit dem Clustering Tool und im Endeffekt ist es relativ simpel, was ich da tue. Ich teile zuerst meinen Datensatz. Ich will ja irgendwann später überprüfen können, ob mein Algorithmus, den ich gebaut habe, auch wirklich funktioniert für die Daten, die ich habe. Also lege ich mal einen Datensatz zur Seite, der später zum Test genutzt wird zur Einschätzung der Qualität des Algorithmus und den, der Algorithmus vorher noch nicht gesehen hat. Hier nehme ich jetzt einfach ein Drittel weg aus den Datensatz. Das heißt, ich trainiere meinen Algorithmus mit zwei Drittel der Daten und lasse ein Drittel zur Seite und später zum Testen. Als nächstes baue ich mir mein Neurudner als Netzwerk. Ich habe jetzt hier relativ wenig Daten, also nur einige tausend Datensätze quasi durch die Reduzierung Weihnachtsbäschen und sonstige Wegwarn, aber das macht es halt relativ performant. Wie sieht jetzt, so gesehen, dieses Neuronale jetzt weg aus? Zuerst definiere ich mir meine Input-Schicht. Also das ist, wo ich oben einfach mal Daten reinschmeiße. Dann habe ich ein Hidden Layer, also ein Layer, wo ich keinen direkten Zugriff drauf habe, was untereinander verbunden ist. Dans, heißt hierbei, bei Keras als Keyword, sind alle untereinander verbunden. Also jeder Knoten kann mit jedem reden. Und ich kann, so gesehen, danach die Daten in meine Output Layer reinschmeißen und bekomme unten noch einen einzigen Wert zurück. Nämlich ein Flow zwischen 0 und 1. Wie weit jetzt geht dasjenige Rezept, wenn es ein Weihnachtsplätzchen Rezept ist oder eben nicht optisch, kann man sich ungefähr so vorstellen, ich habe zuerst 12 Knoten quasi in meinem Input-Layer, die nehmen die Daten einfach entgegen und leiten sie weiter in mein Hidden Layer. Dort habe ich 8 Knoten und unten 1. Das heißt, ich reduziere die Dimension meiner Layer immer weiter nach unten, dass ich quasi ein Trichter bekomme. Und dieser Trichter filtert eben dann die einzelnen Rezepte durch. Das funktioniert auch noch mit den 3000 etwas Spalten für die verschiedenen Zutaten, sehr performant. Ja, und da muss ich mir eigentlich nur sagen, hey, kompalme das und fange an zu trainieren. Das macht Machine Learning wirklich extrem simple. Also das ist wirklich so eine Sache von einem Nachmittag, bis man damit die ersten Ergebnisse rausbekommen hat. Ebenso sieht man relativ gut, dass die Accuracy, also die Genauigkeiten meines Algorithmus, also wie viele richtige Treffer in meinem Gesamtergebnis liegen, relativ schnell ansteigt. Also am Ende, nachdem mal die ganzen Zyklen durchlaufen ist, war ich irgendwie so bei 96% richtige. Ich meine, kennt man ja vom Bahnhof Südkreuz, ist ganz okay. Meinst du, das ist ja der Demisier. Wenn man sich dann die Testdaten dazu nimmt und anfängt die Testdaten mit zu beurteilen und sozusagen die eigentliche Präzision zu testen mit Daten, die er nicht kennt, fällt das leider relativ schnell ab. Hier habe ich jetzt einen den Testdatensatz ihm übergeben und ihm gesagt hey, wie viel Prozent Genauigkeit bekomme ich da aber raus. Und Schwups erstmal nur bei 72% Genauigkeit. Das heißt, 72% der das Ergebnisdatensatz, den ich kriege, sind auch wirklich Weihnachtsplätze. Dresdlichen 28% halt eben nicht. Dabei muss man jetzt sagen, ja, das ist für Maschinenlearning wirklich ein absolut beschissenes Ergebnis. Weil, wenn man jetzt rechnet, wenn ich jetzt mehr Datensätze darauf hätte, wenn ich noch mehr Rezepte mehr machen würde. Und da jetzt 100.000 Rezepte draufwerfen. Ja, habe ich 72.000 Plätzchenrezepte, aber ich habe eben auch 28.000 Rezepte gemiszt sind. Das heißt, wenn ich jetzt meinen Roboter da irgendwie meine Plätzchen backen lasse, dann habe ich auf einmal jede Menge Sachen, die garantiert keine Plätzchen sind, da aber auch mit dabei. Dementsprechend eher nicht so. Das wiederum lässt einem, ja, sagen wir mal wirklich zu, die jetzt an diesem Beispiel relativ, ja, sagen wir mal witzig sind, weil sie keine Konsequenzen haben, aber bei Einsatz von Maschinenlearning in der realen Umwelt wirklich gravierende Konsequenzen haben. Wenn diesen hernimmt, also der würde das wahrscheinlich zur Terrorbekämpfung einsetzen, die, ich meine, keine Ahnung, irgendwelche islamistischen Plätzchen nicht den deutschen Backofen irgendwie hier besudeln oder so. Das Problem ist, eben auch hier, 72% Präzision ist besser als Raten, also es ist immer noch besser, als welchen Mensch da hinsetzen würde und den Raten lasse, hey, ist das jetzt ein Plätzchenrezept oder nicht, aber naja, für alle anderen Dinge ungeeignet. Andere Schlüsse, die man daraus ziehen kann, die auch für die reale Weltführung geben, ist neben, wir brauchen eine hohe Präzision, wir brauchen die Daten. Weil wenn einer von euch jetzt einfach nur die Ergebnisse hier bekommen, hey, das sind sozusagen hier Plätze hier, 72% Präzision. Schön, kann ich aber nicht nachprüfen. Bekommt man das ähnliche Problem, wie gestern Morgen zum Beispiel im Social-Bot-Vortrag gezeigt wurde, ich kann mit 72% Präzision sagen, was ein BOT ist, ich kann es aber nicht an irgendjemandem extern überprüfen lassen. Das heißt, das Ergebnis ist im Endeffekt, ja, so im luftblären Raum relativ sinnlos. Weil ich ebenso nicht überprüfen kann, welche Gewichte, wie welche Struktur sozusagen hat ihr das, dieser Algorithmus, der dahinter steckt und wie, welche wir zum Beispiel Fehler jetzt gemacht wurden. Genauso gut kann es ja zum Beispiel sein, dass ich meinen Eliminierungen schritten, um meine Daten sozusagen zu verbessern, auch wieder Rückschritte gemacht habe. Das heißt, ohne die Daten, meine Daten nicht publizieren, ist mein Ergebnis wertlos. Was aber wiederum bei Plätzchen relativ egal ist, meine Plätzchen waren am Ende verbrannt und damit ist auch meine kurze Einführung in Probleme und Technik des Maschinen-Learnings auch schon vorbei. Limlock, vielen lieben Dank, für ein absolut großartigen Vortrag. Ich weiß nicht, ob man mich dahinten hat lachen hören, aber es war sehr unterhaltsam. Kommen wir nun zu Fragen im Audienz. Halt jemand Fragen? Ich komme gerne. Ich muss sagen, ich habe bei der Vorbereitung hier für mehr Überplätzchen gelernt, als ich irgendwie jemals mir geträumt hätte. Hi, eine Frage zu der PCA. Ist da so ein bisschen so aus, als ob du vorher nicht die einzelnen Eigenschaften reskaliert hast? Bitte? Du hast die Eigenschaften nicht auf den Unity-Range oder so runterskaliert, sondern einfach auf die Rohnen? Das habe ich jetzt, das ist ein Schritt, den ich jetzt ausgelassen habe. Achso, okay, weil die Skalen so extrem unterschiedlich waren? Das hat mich auch ein bisschen überrascht. Das hätte ich jetzt auch aufgrund der Skalierung nicht erwartet. Kann sein, dass da auch noch ein weiterer, damativerer Fehler in den Daten liegt. Das habe ich jetzt auch nicht weiter überprüft. Okay. Ich hatte eine Frage noch, was ich mal versucht habe, woran ich so ein bisschen gescheitert bin, ist, wie man das so rekonstruieren. Also ich habe Datenpunkte in, weiß ich nicht, 8 Dimensionen oder so, und ich würde da jetzt gerne irgendwie eine Interpolation kriegen, um sozusagen diese Manikfaltigkeit auf dort, weiß ich nicht, zu rekonstruieren und die wieder darzustellen, was ja quasi so ein inverses PCA ist in einer gewissen Art und Weise. Hast du da eine Idee, wie man das machen könnte? Hast du es halt so schon mal probiert? Also verstehe ich, dass du quasi die Manikfaltigkeit, also ja quasi, also ich habe sozusagen, also ansonsten gucken sich Leute in dem Problem halt immer nur die projizierten Versionen an auf 2 oder maximal 3 Dimensionen und dann zwar die Frage, okay, wir gucken uns mal alle 8 gleichzeitig an und wie, also sowas ähnliches wie eine Losfangschwebe hält sie sich auf dieser großen Manikfalt. Würde das damit auch funktionieren? Ich denke, das würde damit auch funktionieren, aber können wir gleich nochmal darüber gucken. Noch Fragen? Ist das immer auf der anderen Seite? Wie entscheidungsbaum-basierte Ansätze? Ja, habe ich, ich habe mich am Ende hier drauf beschränkt, weil beim anderen war es mal im Endeffekt zu viel Arbeit auszuoptimieren. Okay, no good, thank you. Hi, du hattest ja vorhin mal gesagt, dass wenn es nicht so gut klappt, versucht man das einfach nochmal, rührt ein bisschen so ein Rom, jetzt insbesondere bei dem neuronalen Netz, was für Ansätze hättest denn da jetzt noch versuchen können, um das nochmal die Leserungen ein bisschen hoch zu treiben. Also ich hätt jetzt zum Beispiel die Anzahl der Knoten in den einzelnen Layern variieren können, beziehungsweise mehr Layer einführen und sein, die Reduzierung der Dimension auf eben binär langsamer durchführen können im Endeffekt, mehr Zwischenstritten. Okay, und direkt dazu noch eine Nachfrage. Kannst du was über die Aktivierungsfunktionen sagen? Du hattest ja irgendwie verschiedene verwendet, hatte ich gerade und warum du genau die verwendet hast. Das ist für mich irgendwie noch ein bisschen Mysterium, wie wann man welche Aktivierungsfunktionen im wesentlichen verwendet. In diesem Fall war es halt wirklich Try and Error. Okay, vielen Dank. Wenn man jetzt diesen Prozess durchführt und erst ein Modell baut und dann seine Daten testen, also ich kenne mich jetzt nicht groß aus mit Data Science. Ich kenne mich jetzt nicht groß aus mit Data Science, sondern ich kenne diese Daten, die ich mit den Testdaten verwendet habe. Wenn man mit diesem Prozess mehrmals durchführt von Modellbauen und dann Daten testen darauf und wenn man dann so sagen sieht, dass nichts richtiges bei rauskommt und dann wieder das Modell anpasst, kann es nicht passieren, dass dann sozusagen das Modell dann auch wieder von den Testdaten lernt, sozusagen dass die Testdaten dann ihren Wert verlieren. Ich kann jetzt jetzt zum Beispiel ein Algorithmus bauen, der auf den Datensatz, mit dem ich trainiere, perfekt funktioniert. Aber was nicht aufgrund der generalisierten Struktur der Daten liegt, sondern aufgrund der Struktur dieses einen Trainierungsdatensatz ist. Der zum Beispiel eine Struktur hat, die ich nicht kenne, vielleicht eine Regelmäßigkeit, die durch Zufall, durch Störeinstrahlung da reingegommen ist, die aber dann hoffentlich beim Testdatensatz nicht vorhanden ist. Wenn ich diesen Algorithmus-Wort habe, der auf dem Trainierungsdatensatz perfekt funktioniert und der dann auf dem Testdatensatz auf einmal ein richtig miserables Ergebnis hat. Weiß ich, ich habe sozusagen kein generalisiertes Feature gefunden, sondern einfach nur etwas, was durch Zufall in diesem Trainierungsdatensatz drin war. Macht das das halbwegs klar, warum ich diese Trennung durchführe? Ja, also meine Idee war halt bloß, dass das Modell immer weiter anpasst, dass es dann auf die Testdaten stimmt sozusagen, also dann ist halt vielleicht die Gefahr, dass das Modell irgendwann halt auch Eigenheiten von den Testdaten berücksichtigt, die eigentlich gar nicht sozusagen auf die Allgemeinheit wieder übertragbar sind. Ja, das ist eines der Großproblemen teilweise bei sowas, nennt sich Overfitting. Wenn ich halt sozusagen meine Anpassung so gesehen nur auf diesen Trainingsdatensatz immer wieder durchführe, ohne dass ich jetzt sozusagen extern verifiziere, vermeidet man halt zum einen durch diese Zweiteilung, aber auch in diesem Fall wäre es jetzt zum Beispiel sinnvoll andere da von irgendeiner anderen Quelle zu nehmen und die auch noch mal da draufzuschmeißen und zu gucken, ob sozusagen die Präzision erhalten bleibt. Der Kameramann hat ne Frage moment. Das ist immer ganz weit auf der anderen Seite mit den Fragen. Hi, was kannst du denn für Literatur empfehlen, wenn man sich damit näher beschäftigen will? Literaturempfehlungen. Ja, hätt ich jetzt, wenn ich den Titel noch auswendig wüsste, es gibt ein relativ aktuelles Buch, irgendwie Data Science oder irgendwie so in der Ähnlichheit, sonst frag mich gleich nochmal, ich hatte das auch im Rechner. Weitere Fragen, das ist ein sehr gut Moment. Hi, ich bin grad erst dazukommen. Wie hieß die Library nochmal, oder dieses Framework? Ich hab jetzt für also für das Bereinigen von Daten benutze ich jetzt vor allem einmal Pandas zur Datenspeicherung, Nampai natürlich und Sieborn für diese Korrelationsanalysen sowie SK-Learn für dann diese ganzen Bereinigungsgeschichten. Für den Machine Learning Teil habe ich jetzt Keras benutzt. Okay, danke. Fragen, das ist gut. Ich bin auch der Meinung, dass den ordentlich ausgequetscht hat. Den lieben Limluk. Den Datensatz an sich werde ich auch nochmal veröffentlichen auf meiner GitHub-Seite plus den ganzen Sourcecode dazu. Vielen lieben Dank, Limluk.