Gewichte als Indizien
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 18 von 58.
Was bringt einen Ladenbesucher zum Kauf? Skaliere die Merkmale, sodass jedes Gewicht pro Standardabweichung gilt, und lies die Gewichte dann als Hinweise:
X_scaled = StandardScaler().fit_transform(visits)
model = LogisticRegression(max_iter=1000)
model.fit(X_scaled, bought)
print(np.round(model.coef_[0], 2)) # eine Zeile mit GewichtenDies gibt die Gewichte in der Reihenfolge der Spalten aus:
[ 0.87 0.12 -0.3 -0.72]Das Vorzeichen gibt die Richtung an: Ein positives Vorzeichen drängt in Richtung Klasse 1, also Kaufen; ein negatives davon weg. Der Betrag gibt die Stärke an.
Durch Skalierung werden Größen vergleichbar: Ohne Skalierung wäre das Gewicht eines Preises in Cent 100-mal kleiner als in Dollar.
Aufgabe
MittelEine Sprachlern-App fragt, welche Gewohnheiten damit einhergehen, eine 30-Tage-Serie aufrechtzuerhalten oder einen Kurs abzuschließen. learners.csv enthält sechs Merkmale und beide Zielvariablen; das Programm liest ein, welche Zielvariable untersucht werden soll. Der vorgegebene Code teilt die Daten auf und skaliert sie.
- Trainiere ein
LogisticRegression-Modell mit den skalierten Trainingszeilen. - Gib alle Gewichte mit ihrer Richtung aus, beginnend mit dem größten (2 Dezimalstellen).
- Gib den stärksten Hinweis aus, unabhängig von der Richtung.
Für eine andere App:
friends: 1.02, pushes toward yes
reminder_on: 0.42, pushes toward yes
age: 0.06, pushes toward yes
daily_goal_min: -0.11, pushes toward no
lessons_week1: -0.2, pushes toward no
night_owl: -0.64, pushes toward no
Strongest evidence: friendsProbier es selbst
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
learners = pd.read_csv("learners.csv")
features = ["daily_goal_min", "friends", "reminder_on", "lessons_week1", "night_owl", "age"]
label = input() # kept_streak oder finished_course
X_train, X_test, y_train, y_test = train_test_split(learners[features], learners[label], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler