 Herzlich willkommen zum zweiten Coding Video in Python in der Vorlesung Data Science. In diesem Coding Video soll es um Support Vector Machines gehen und ich fange an, wie immer, wir importieren hier eine ganze Menge an Paketen. Pandas, NumPy, Matplotlib, Seaborn, ich denke darauf müssen wir erst mal gar nicht mehr eingehen. Was wir uns hier zu Nutze machen ist, dass SQLearn vorgefertigte Datensets anbietet, denen man sich zum Training bedienen kann und um als Dozent gewisse Dinge zu zeigen, genau wie ich das hier auch tun werde. Wir bedienen uns hier einen vorgefertigten Datensatz über Brustkrebs und wir importieren wieder unser Train-Test-Split Funktionen. Das bedeutet, dass wir hier unseren Split nicht selber vornehmen müssen. Wir importieren hier unsere Support Vector Maschinen und wir importieren uns noch ein Classifications Report und ein Confusion Matrix Report. Das bedeutet, dass wir diese Confusion Matrix, die ich Ihnen in der Vorlesung vorgestellt habe, uns auch angucken können und wir optimieren das Ganze noch mit einer Grid Search. Das bedeutet, dass wir uns die besten Parameterspezifikationen noch heraus suchen können. Das sind die Pakete, die wir uns hier oben importieren werden und was machen wir als nächstes? Das sehen Sie hier, das heißt, wir laden uns diesen Breast Cancer Datensatz in eine Variable hinein, das ist ein Pandas Dataframe und was machen wir diese Datensetze, die von Esky Learn angeboten werden haben? Eine Spalte, die nennt sich Description, da ist der Datensatz beschrieben, da finden Sie zu jedem Parameter, den dieser Datensatz enthält, eine Beschreibung, Sie finden eine Erklärung, was Sie denn davor sich haben und was machen wir hier? Wir erzeugen uns einen Dataframe, in dem die tatsächlichen Daten enthalten sind, das ist hier mit dem Spaltenamen Data versehen und wir haben hier auch noch unsere Spaltenamen, das sind in dem Fall die Feature Names unserer Variablen und was wir als nächstes machen werden, nachdem wir uns die Beschreibung des Datensatzes hier angesehen haben, werden wir erst mal hergen uns den Kopf dieses Dataframes überhaupt ansehen, damit wir wissen, welche Daten haben wir denn hier überhaupt vor uns und was machen wir damit denn überhaupt? Ich scroll jetzt mal hier weiter runter, was wir als nächstes machen werden ist, das haben Sie bei der Linie an Regression auch schon gesehen, wir splitten unsere Daten, das heißt, diesen Dataframe mit den Daten drin, die packe ich hier in eine X-Variable und eben die Targets, die Targets ist eine Spalte, in der eben drin steht, haben wir Krebs oder haben wir keinen Krebs, den packe ich hier in meine Y-Variable hinein, weil das ist der das, was wir mit den Support Vector Machines quasi herausfinden möchten, welche dieser Patienten haben denn nun Brustkrebs und welche haben diesen nicht, das ist jetzt ein wesentlich härteres Beispiel, wie dieser E-Mails BAM Filter, den ich Ihnen in der Vorlesung gezeugt habe. Und das ist daher viel, viel härter, weil es hier tatsächlich um medizinische Diagnostik geht und ums Leben. Wenn ich einen E-Mails BAM Filter implementiere und dieser E-Mails BAM Filter nicht unbedingt das State of the Art Model ist, dann bekommen Sie halt ab und zu eine Spam-Email durch, die im schlimmsten Fall noch ein Trojaner enthält, aber deswegen sterben Sie nicht sofort. Wenn Sie Machine Learning getrieben medizinische Diagnostik betreiben möchten und Ihnen unterläuft ein Typ 1 Wähler, das heißt Sie sagen einen Patienten, Sie haben keinen Krebs, obwohl er diesen hat, dann wird dieser Patient sterben oder eben erst in Behandlung kommen, wenn eine gewisse Zeit vergangen ist, das heißt hier eine exakte Arbeit abzuliefern ist essentiell. Deswegen bin ich in dieser Data Science Vorlesung auch so harsch vorgegangen, zu sagen es gibt keine Quick Fixes gerade nicht, wenn es um solche Inhalte geht und um aufs Thema zurückzukommen, wir splitten hier unseren Datensatz, das heißt wir machen wieder das gleiche, was wir in den Linearen Regression auch schon gemacht haben. Wir erzeugen ein Trainings- und Testdatenset für unsere x und y Variablen und das nächste, was wir tun, wir setzen hier einen Random State, der hat eigentlich an sich erst mal so für uns gar nichts zu sagen, wenn Sie dieselben Werte erhalten wollen, dieselben Splits erhalten wollen wie ich es tue, dann müssen Sie hier auch den selben Random State eingehen. Was machen wir als nächstes? Wir initiieren das Modell, das heißt hier ist unser Modell unsere Support Vector Machine und dieses Modell wird danach auf die Trainingsdaten gefüttet. Sie sehen, das Vorgehen ist grundsätzlich immer identisch. Wir importieren Pakete, wir laden uns unsere Daten, wir schauen uns unsere Daten an, wir teilen diese Daten in eben unser y und unser x, wir erzeugen unsere Trainings- und Testdatensetze, wir initiieren das Modell und wir fitten das Modell auf diese Trainingsdaten, das passiert in dieser Zeile hier und was machen wir als nächstes? Wir machen Vorhersagen, das heißt wir erstellen hier Predictionen auf Basis des Testdatensetters, das heißt hier wurde das Modell trainiert quasi Brustgrapes Label zu identifizieren und hier machen wir Predictionen auf Basis des Testdatensets und danach um zu sehen wie gut denn nun unser Modell trainiert ist und wie gut das Modell gefüttet ist, lassen wir uns eine Confusion Matrix ausgeben und ein Klassifikationsreport, um sehen zu können wie genau ist denn unsere Klassifikation dieser Brustgrapes Patienten vonstatten gegangen und was wir danach noch machen werden ist wir machen ein sogenanntes Grid Search und dann ist es einfach so, dass wir hier uns den besten Parameter ausgeben lassen können, das heißt wir geben hier gewisse Werte vor, was interessant ist hier das C und das Gamma, wenn sie natürlich genauere Varianten haben möchten, dann können sie hier reinschauen in die Beschreibung, da ist das sehr ausführlich beschrieben, was hier welcher Parameter exakt enttut und an welchen Stellschrauben sie hier denn drehen können, sie sehen da geht es ein ganzes Stück runter, darauf werde ich jetzt hier erst mal verzichten, weil ich denke mal eine Modul Dokumentation lesen, dazu ist jeder von ihnen im Stande und das machen wir danach, wir machen hier Predictionen auf Basis unseres Grids und wir lassen uns hier wieder die Confusion Matrix und ein Klassifikationsreport ausgeben, das heißt ich fasse das noch einmal zusammen, wir importieren unsere Pakete, wir erzeugen unser Datenset, wir explorieren dieses Datenset, wir teilen dieses Datenset in die Features und in das was wir prädiktieren möchten, wir splitten unser Datensets, wir importieren das Modell, also wir implementieren das Modell, trainieren und fitten das Modell, machen Vorhersagen und schauen wie gut wir abgeschlossen haben und am Ende hier gucken wir ob wir das Ganze nochmal optimiert bekommen. Ich lasse das Ganze jetzt einfach mal durchlaufen, erschrecken sie nicht, da kommt relativ viel, so relativ viel, relativ schnell, ich mache den Code einfach mal weg und scrolle hier nur mal durch das Terminer, wie sie sehen können ist das hier oben die Beschreibung des Datensatzes, den wir hier genommen haben, dem Pressed Cancer Wisconsin Diagnostic Dataset und sie sehen hier wieviel Instanzen in diesem Datensatz vorhanden sind die Nummer der Attribute, sie haben hier Informationen was denn hier welche Parameter darstellt von dem Radius des Krebsgeschwürs bis hin zur fragtalen Dimension, das haben wir auch schon kennengelernt, also sie sehen hier das ist hier sehr ausführlich dargestellt mit Minimum und Maximum für jeden Parameter und es können sie sich in Ruhe mal selber ansehen, das heißt diese Datensätze die sie hier vorgefertigt sich ansehen können sind sehr gut dokumentiert und beschrieben, das heißt da können sie sich ruhig austoben und selber experimentieren, sie haben hier noch weitere Referenzen sogar mit angegeben wo sie sich sogar ein Paper mit dazu durchlesen können für den Fall, dass sie medizinisch interessiert sind hier ist dann natürlich der Kopf unseres Data Frames, das ist quasi der Kopf unserer Datensätze wo wir sehen können okay das sind die ganzen Parameter und die ganzen Variablen und sogenannten Features die wir hier eben analysieren können und dann sehen wir hier noch einfach mal als erstes unsere Confusion Matrix hier oben bevor wir uns die Idealisierung bevor wir uns die Optimisierung des Ganzen angesehen haben, das heißt hier sehen wir die Confusion Matrix die man sagt wir haben hier genau einen Patienten einen einzigen bei dem der Algorithmus keinen Krebs diagnostiziert hat obwohl er diesen hätte und wir haben hier 59 und 120 die Stümmeln und wir haben hier die Nummer 8 die hier steht das sind diejenigen denen gesagt wurde sie haben Krebs obwohl sie diese nicht haben warum ist das denn jetzt hier so eingestellt und warum ist es besser zu sagen wir haben 8 Stück den sagt man sie hätten Krebs obwohl sie ihn nicht haben es ist einfach so wenn sie gesund sind und man sagt ihnen auf Basis diese Sachen hier sie haben Krebs dann haben sie natürlich Folgeuntersuchungen den man feststellen kann dass sie ihn nicht haben das wäre mir persönlich wesentlich lieber wie der eine hier unten zu sein den man sagt lieber dozent Vogel du bist gesund obwohl ich eigentlich schwer krank bin und behandelt gehörer das heißt hier sehen sie ihre Confusion Matrix die wir auch in der Vorlesung schon gesehen haben und was wir hier unten noch haben das hier dieses ganze Ding hier das ist dieser Report den wir hier ausgegeben haben und da sehen wir hier die Precision den Recall die F1 Score und den Support das heißt hier sehen wir Performance Maße wo wir sehen können wie gut wir denn abgeschnitten haben das heißt die ganzen Performance Maße die ich ihnen in der Vorlesung um die Confusion Matrix Hausen rum gemalt habe sehen sie hier in einem separaten Report was wir hier dann natürlich machen ist dass wir eine Optimierung machen indem wir verschiedene Parameter hier ausprobieren das können sie hier sehr genau nach vollziehen was hier passiert hier sehen sie die Scores und am Ende ist es so dass ich hier unten ausgegeben bekomme welche Parameter denn am besten geeignet sind die Optimierung der Support Vector Maschinen Parameter und interessanterweise und da kann man sich jetzt darüber streiten ist es so dass wir jetzt hier unten drei Patienten haben denen wir sagen sie sind gesund obwohl sie es nicht sind und wir haben vier Patienten den wir sagen sie haben Krebs obwohl sie eigentlich gesund wären jetzt kann man sich natürlich darüber streiten hier sind insgesamt sieben Miss Spezifikationen gegeben hier unten haben sie dann natürlich noch mal die Performance Maße hier haben sie sieben Miss Spezifikationen gegeben und wenn ich noch mal ganz hoch scroll haben sie hier neun das heißt die Optimierung und das ist ganz wichtig dass sie das verstehen diese Optimierung hat mir zwei Patienten gegeben die nicht viel spezifiziert wurden das bedeutet die wurden richtig zugeordnet allerdings haben wir hier statt neun Patienten nur noch sieben allerdings sind hier unten diejenigen denen wir sagen sie seien gesund obwohl sie krank sind gestiegen und da hört das Machine Learning auf das ist der Punkt an dem sie ihr hier ein schalten müssen und mitdenken müssen und sich überlegen welche Spezifikation für ihr Problem am meisten Sinn macht ich in meiner Position als Data Scientist würde eher den hier oben präferieren in der mir sagt hier du hast hier nur einen einzigen Patienten den du fehl spezifizierst und dafür achte du umsonst zum Arzt schickst bevor ich eine Optimierung blind laufen lasse die mir dann drei Patienten gesund nach Hause schicken die zum schluss sterben könnten und dafür halt nur vier umsonst zum Arzt marschieren und dafür zwei weniger falsch eingestuft sind da fängt dann das an was man dann als Domänen Expertise kennen gelernt hat und ich persönlich bin kein Mediziner habe ich würde diese Klassifikation hier unten der oberen nicht vorziehen weil ich hier drei Patienten habe die ich gesund nach Hause schicke obwohl sie eigentlich krebskrank sind und wenn ich nochmal hoch scroller sie merken ich muss ein bisschen scrollen hier oben habe ich nur einen Patienten den ich fälschlicherweise nach Hause schicke dafür schicke ich einige mehr zum Arzt obwohl sie es nicht müssten und da sind wir im Machine Learning und auch in der deep L und der AI noch nicht soweit dass ein Computer diese zusammen in ihr selbstständig implizieren kann da sind wir vom künstliche Intelligenz und Terminator noch sehr weit entfernt in diesem Sinne sind wir mit den Support Vector Machines und der Klassifikation hier auch schon zu Ende und ich sehe sie im nächsten Coding Video