Anzeige
Anzeige
Ratgeber
Artikel merken

Crash-Kurs mit Python und Machine Learning: Einstieg in Scikit-Learn

Machine Learning und KI sind Buzzwords in der Tech-Szene. Doch was oft sehr kompliziert und abstrakt klingt, muss es gar nicht sein.

Von Haluka Maier-Borst
3 Min. Lesezeit
Anzeige
Anzeige

(Foto: RAYphotographer / Shutterstock)

Ein Beispiel für einen ersten Einstieg in Machine Learning ist die Library Scikit-Learn für Python.

Wieso Scikit?

Anzeige
Anzeige

Scikit ist sicherlich nicht die Library mit der größten Auswahl an Machine-Learning-Algorithmen. Aber dafür ist die Dokumentation für Scikit sehr gut, und die Community auf Stackoverflow ebenfalls sehr lebendig, was vor allem Einsteigern hilft.

Ich persönlich habe Scikit im Rahmen meiner Masterarbeit zum ersten Mal genutzt. Ich wollte versuchen, Bot-Tweets über sprachliche Auffälligkeiten herauszufiltern, und habe dafür den Ansatz der Stylometrics verwendet. Das heißt also, dass zum Beispiel die Anzahl an bestimmten Satzzeichen, die Menge an verschiedenen Wörtern und die durchschnittliche Länge von Worten in Bot-Tweets anders ist als bei „normalen“ Tweets.

Anzeige
Anzeige

Für diesen Usecase habe ich verschiedene Algorithmen ausprobiert, darunter den klassische Decision Tree, Regressionsanalysen oder auch Support Vector Machine, das immer wieder als eines der besten Tools benannt wird. Am Ende bin ich jedoch bei einem Random Forrest Classifier gelandet, der eine Art Durchschnitt von Decision Trees ist, die aus Teilgruppen des Datensatzes gebildet werden.

Anzeige
Anzeige

Hier kurz mein Vorgehen Step by Step:

Step 0: Libraries laden

Wir benötigen die Python Libraries Pandas und Scikit-Learn, die am besten über die Command Line mit Pip Install installiert werden. Anschließend werden im Modul selbst folgendermaßen die Libraries geladen:

Anzeige
Anzeige
import pandas as pd
 import re
 #importing all machine learning libraries
 from sklearn.ensemble import RandomForestClassifier
 from sklearn.model_selection import train_test_split
 from sklearn import metrics
 from sklearn.metrics import confusion_matrix

Step1: Datensatz aufbauen

Da es hier hauptsächlich um Scikit geht, will ich nicht lange darüber sprechen, wie genau ich den Datensatz zusammengestellt habe: Ganz einfach gesagt besteht er zur Hälfte aus Tweets, die ich als von Bots gesendet klassifiziert habe, und zur Hälfte aus Tweets von normalen Usern. Jeder Tweet ist eine Reihe von Zahlen in einem CSV-Dokument.

testdata=pd.read_csv("botRELcounts.csv")
 (testdata.head())

Step 2: Datensatz aufteilen

Dann definiere ich meine abhängige Variable, speichere sie separat und spalte nochmal den Datensatz in zwei Teile. Einen Teil, mit dem ich den Algorithmus trainiere, und einen anderen Teil, mit dem ich seine Performance teste. Hier gibt es verschiedene Herangehensweisen. Ich benutze hier den klassischen Ansatz des Hold-Outs (X Prozent eines Datensatzes werden zurückgehalten und für das Prüfen genutzt). Es gibt aber auch die Möglichkeit von Cross-Validation. Der Datensatz wird dafür in Y Teile geteilt, jedes Mal bleibt ein anderer Teil als Hold-Out zurück, und mit dem Rest wird der Algorithmus trainiert. Am Ende wird dann über Y Durchläufe das Ergebnis gemittelt.

#loading in the dataset
 X = testdata

#defining the dependent variable as the botornot column in the dataset
 y=X['botornot']

#removing user_id and bot_or_not column from the dataset with the independent variables
 del X['botornot']
 del X['user_id']
 (X.head())

#splitting the dataset
 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

#defining rf as the RandomForestClassifier
 clf=RandomForestClassifier()

Step 3: Datensatz einlesen, Algorithmus trainieren und Performance prüfen

Das alles ist erstaunlich einfach in Scikit-Learn. Es wird dafür schlichtweg der eine Teil des Datensatzes fürs Aufbauen des Algorithmus eingelesen und mit dem anderen eine Vorhersage getroffen. Anschließend lässt sich über die Metrics sehen, wie genau der Algorithmus ist.

Anzeige
Anzeige

Was Mut macht: Mit dem relativ einfachen Ansatz hatte ich bereits eine Genauigkeit von rund 70 Prozent im Vergleich zu einem rein zufälligen Raten mit einer Genauigkeit von 50 Prozent. Entsprechend sind die Beispiele, die folgen, aus diesem Projekt.

#train the dataset with fitting
 clf.fit(X_train, y_train)
 #then run the prediction with the rest of the dataset
 pred_test = clf.predict(X_test)
 print ("Mean absolute error:",metrics.mean_absolute_error(y_test,pred_test))
 print ("Accuracy:",metrics.accuracy_score(y_test,pred_test))
 print (confusion_matrix(y_test, pred_test))

Step 4: Vorhersagen machen

Nun ist das Modell aufgebaut, und entsprechend könnte man sich jetzt an einem neuen Datensatz von Tweets an Vorhersagen versuchen. Dazu muss man schlichtweg die Zeile

pred_test = clf.predict(X_test)

nochmals auf den neuen Datensatz anwenden. Wichtig: Der Datensatz muss genau so viele Variablen/Spalten haben und genau auf die gleiche Art und Weise angeordnet sein.

Anzeige
Anzeige

Viel Spaß beim Ausprobieren! Der ganze Code ist hinterlegt auf Github.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige