Lerninhalte finden
Features
Entdecke
© StudySmarter 2024, all rights reserved.
Du arbeitest als Datenwissenschaftler für ein E-Commerce-Unternehmen und bist verantwortlich für die Reinigung und Aufbereitung eines großen Datensatzes mit Kundentransaktionsdaten. Der Datensatz enthält mehrere Inkonsistenzen, fehlende Werte, Duplikate und Rauschen. Zur Verbesserung der Datenqualität und Genauigkeit ist eine gründliche Datenbereinigung unerlässlich.
Beschreibe drei Techniken, die Du verwenden würdest, um den Datensatz von Rauschen und Inkonsistenzen zu bereinigen. Erkläre dabei jeweils den grundsätzlichen Ansatz der Technik und wie sie speziell in Deinem Fall angewendet werden könnte.
Lösung:
Um den Datensatz von Rauschen und Inkonsistenzen zu bereinigen, sind hier drei Techniken, die ich verwenden würde:
Ein häufiger Fehler im Datensatz ist das Fehlen von transaktionsspezifischen Informationen wie dem Transaktionsbetrag oder dem Datum. Beschreibe den Prozess der Imputation und wähle eine geeignete Methode, um die fehlenden Werte im Datensatz zu ersetzen. Begründe Deine Entscheidung und berechne ein Beispiel mit fiktiven Daten. Angenommen, die Transaktionsbeträge in EUR sind: [50, 75, ?, 100, ?, 90].
Lösung:
Um die fehlenden Werte im Datensatz zu ersetzen, kannst Du den Prozess der Imputation nutzen. Imputation ist eine Technik, bei der fehlende Werte durch geschätzte Werte ersetzt werden, die auf den vorhandenen Daten basieren. Dies hilft, die Integrität des Datensatzes zu bewahren und die Genauigkeit der Analysen zu verbessern.
In diesem Fall würde ich die Mittelwert-Imputation wählen. Diese Methode ist einfach zu implementieren und funktioniert gut für numerische Daten wie Transaktionsbeträge, wenn der Datensatz keine extremen Ausreißer enthält, die den Mittelwert verzerren könnten. Der Mittelwert gibt auch einen guten Schätzwert für den Durchschnitt der Transaktionsbeträge.
Angenommen, die Transaktionsbeträge in EUR sind: [50, 75, ?, 100, ?, 90]. Zuerst berechnen wir den Mittelwert der vorhandenen Werte:
Jetzt können wir die fehlenden Werte (markiert als ?) durch den Mittelwert ersetzen:
Transaktionsbeträge: [50, 75, 78.75, 100, 78.75, 90]
import pandas as pdimport numpy as np# Initialer Datensatz mit fehlenden Wertendaten = {'Transaktionsbetrag': [50, 75, np.nan, 100, np.nan, 90]}df = pd.DataFrame(daten)# Mittelwert berechnenmittelwert = df['Transaktionsbetrag'].mean()# Fehldaten durch Mittelwert ersetzendf['Transaktionsbetrag'].fillna(mittelwert, inplace=True)print(df)
Das Ergebnis ist ein bereinigter Datensatz:
Transaktionsbetrag0 50.001 75.002 78.753 100.004 78.755 90.00
Durch die Mittelwert-Imputation haben wir die fehlenden Werte durch den berechneten Mittelwert ersetzt, was zu einem vollständigen Datensatz führt.
Im Datensatz wurden Duplikate entdeckt, die zwischen fehlerhaften und korrekten Datenzeilen unterscheiden. Beschreibe den Prozess der Deduplication und entwickle einen Algorithmus in Python, der diese Duplikate identifiziert und entfernt. Zeige ein Beispiel anhand der folgenden fiktiven Daten (ID, Kunde, Transaktion, Datum): [(1, 'A', 100, '2023-10-01'), (2, 'B', 200, '2023-10-02'), (1, 'A', 100, '2023-10-01'), (3, 'C', 150, '2023-10-03')].
Lösung:
Der Prozess der Deduplication, also das Entfernen von Duplikaten, ist essenziell, um die Datenqualität zu gewährleisten und genaue Analysen durchführen zu können. Hier sind die Schritte zur Deduplication und ein Python-Algorithmus, der dies erreicht:
Hier ist ein Python-Algorithmus, der die Duplikate in einem DataFrame basierend auf allen Spalten erkennt und entfernt:
import pandas as pd# Fiktive Datendaten = [(1, 'A', 100, '2023-10-01'), (2, 'B', 200, '2023-10-02'), (1, 'A', 100, '2023-10-01'), (3, 'C', 150, '2023-10-03')]# Erstellen des DataFramesdf = pd.DataFrame(daten, columns=['ID', 'Kunde', 'Transaktion', 'Datum'])# Anzeigen des ursprünglichen DataFramesprint('Ursprünglicher DataFrame:')print(df)# Identifizieren und Entfernen von Duplikatendf_bereinigt = df.drop_duplicates()# Anzeigen des bereinigten DataFramesprint('Bereinigter DataFrame:')print(df_bereinigt)
Der ursprüngliche Datensatz enthält Duplikate:
ID Kunde Transaktion Datum0 1 A 100 2023-10-011 2 B 200 2023-10-022 1 A 100 2023-10-013 3 C 150 2023-10-03
Nach der Deduplication sieht der bereinigte Datensatz wie folgt aus:
ID Kunde Transaktion Datum0 1 A 100 2023-10-011 2 B 200 2023-10-023 3 C 150 2023-10-03
In diesem Beispiel wurde die duplizierte Zeile (ID 1, Kunde 'A', Transaktion 100, Datum '2023-10-01') erfolgreich entfernt.
Dieser Algorithmus identifiziert und entfernt Duplikate basierend auf allen Spalten des DataFrames. Du kannst die Methode drop_duplicates()
weiter anpassen, indem Du angibst, welche Spalten verglichen werden sollen, oder indem Du definierst, welche der duplizierten Zeilen beibehalten werden soll (z.B. die erste oder die letzte).
Du hast einen Datensatz mit Verkaufszahlen für ein Online-Geschäft, der tägliche Verkaufszahlen über einen Zeitraum von einem Jahr enthält. Deine Aufgabe besteht darin, verschiedene Datenvorbereitungs- und Transformationstechniken anzuwenden, um die Daten für die weitere Analyse zu normalisieren und zu aggregieren. Die täglichen Verkaufszahlen variieren stark, sodass verschiedene Normalisierungsmethoden in Betracht gezogen werden müssen. Ebenfalls sollen verschiedene Aggregationstechniken verwendet werden, um monatliche Summen und Durchschnittswerte zu berechnen.
Wende die Min-Max-Skalierung auf die Verkaufszahlen an. Die niedrigste Verkaufszahl im Datensatz beträgt 10 und die höchste Verkaufszahl beträgt 500. Berechne die normalisierten Werte für eine Verkaufszahl von 200 und 450. Verwende die Formel: \ \( \text{X'} = \frac{\text{X} - \text{min}(X)}{\text{max}(X) - \text{min}(X)} \)
Lösung:
Um die Min-Max-Skalierung auf die Verkaufszahlen anzuwenden, verwenden wir die gegebene Formel:
\( \text{X'} = \frac{\text{X} - \text{min}(X)}{\text{max}(X) - \text{min}(X)} \)
Hierbei:
Wir berechnen die normalisierten Werte für:
Für die Verkaufszahl 200:
\( \text{X'} = \frac{200 - 10}{500 - 10} \)\( \text{X'} = \frac{190}{490} \)\( \text{X'} ≈ 0.3878 \)
Für die Verkaufszahl 450:
\( \text{X'} = \frac{450 - 10}{500 - 10} \)\( \text{X'} = \frac{440}{490} \)\( \text{X'} ≈ 0.8979 \)
Die normalisierten Werte sind somit:
Eine weitere Methode zur Normalisierung ist die Z-Skalierung. Berechne die z-transformierten Werte für die Verkaufszahlen 200 und 450. Gegeben sind der Mittelwert \( \text{mean}(X) = 150 \) und die Standardabweichung \( \text{std}(X) = 50 \). Verwende die Formel: \ \( \text{Z} = \frac{\text{X} - \text{mean}(X)}{\text{std}(X)} \)
Lösung:
Um die Z-Skalierung auf die Verkaufszahlen anzuwenden, verwenden wir die gegebene Formel:
\( \text{Z} = \frac{\text{X} - \text{mean}(X)}{\text{std}(X)} \)
Hierbei:
Wir berechnen die z-transformierten Werte für:
Für die Verkaufszahl 200:
\( \text{Z} = \frac{200 - 150}{50} \)\( \text{Z} = \frac{50}{50} \)\( \text{Z} = 1 \)
Für die Verkaufszahl 450:
\( \text{Z} = \frac{450 - 150}{50} \)\( \text{Z} = \frac{300}{50} \)\( \text{Z} = 6 \)
Die z-transformierten Werte sind somit:
Berechne für die Verkaufszahlen eines Monats den Durchschnitt und die Summe der Verkäufe. Gegeben sind die Verkaufszahlen: [120, 130, 150, 180, 200, 210, 220, 240, 260, 280, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580]. Verwende die Formeln: \ \( \text{Durchschnitt} = \frac{1}{N}\sum_{i=1}^{N} X_i \) \ \( \text{Summe} = \sum_{i=1}^{N} X_i \)
Lösung:
Um den Durchschnitt und die Summe der Verkaufszahlen des Monats zu berechnen, verwenden wir die folgenden Formeln:
\( \text{Durchschnitt} = \frac{1}{N} \sum_{i=1}^{N} X_i \) \( \text{Summe} = \sum_{i=1}^{N} X_i \)
Gegeben sind die Verkaufszahlen des Monats:
[120, 130, 150, 180, 200, 210, 220, 240, 260, 280, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580]
Hierbei ist N die Anzahl der Tage des Monats, also:
N = 30
Wir berechnen zuerst die Summe der Verkaufszahlen:
\( \text{Summe} = 120 + 130 + 150 + 180 + 200 + 210 + 220 + 240 + 260 + 280 + 300 + 310 + 320 + 330 + 340 + 350 + 360 + 370 + 380 + 390 + 400 + 420 + 440 + 460 + 480 + 500 + 520 + 540 + 560 + 580 \) \( \text{Summe} = 9300 \)
Nun berechnen wir den Durchschnitt der Verkaufszahlen:
\( \text{Durchschnitt} = \frac{1}{30} \times \text{Summe} \) \( \text{Durchschnitt} = \frac{1}{30} \times 9300 \) \( \text{Durchschnitt} = 310 \)
Die Ergebnisse sind somit:
Überwachtes Lernen, einschließlich Regression und Klassifikation Angewandtes Lernen aus bekannten Eingabe- und Ausgabe-Datenpaaren, um ein Modell zu erstellen, das zukünftige Ausgaben vorhersagen kann.
Angenommen, Du hast einen Datensatz mit den Attributen Anzahl Studienstunden (x) und erreichte Punktzahl (y). Du möchtest das Modell einer linearen Regression fitten.
Lösung:
y = \beta_0 + \beta_1 x + \epsilonHierbei ist y die vorhergesagte abhängige Variable (die erreichte Punktzahl), x die unabhängige Variable (die Anzahl der Studienstunden), \(\beta_0\) ist der Achsenabschnitt und \(\beta_1\) ist die Steigung der Regressionsgeraden. Das \(\epsilon\) steht für den Fehlerterm.
\(\beta_1 = \frac{\sum{(x_i - \overline{x})(y_i - \overline{y})}}{\sum{(x_i - \overline{x})^2}}\)\(\beta_0 = \overline{y} - \beta_1\overline{x}\)Hierbei sind \( \overline{x} \) und \( \overline{y} \) die Mittelwerte der unabhängigen und abhängigen Variablen.
y = 2 + 5 \cdot 3 y = 2 + 15 y = 17Somit wäre die vorhergesagte Punktzahl 17.
Für eine Klassifikationsaufgabe hast Du zwei Kategorien: bestanden (y=1) und nicht bestanden (y=0). Du verwendest logistische Regression, um vorherzusagen, ob ein Student bestehen wird basierend auf der Anzahl der Studienstunden (x).
Lösung:
P(y=1|x) = \frac{1}{1+e^{-(w_0 + w_1 x)}}Hierbei ist P(y=1|x) die Wahrscheinlichkeit, dass der Student besteht (y=1) basierend auf der Anzahl der Studienstunden (x). Die Gewichte w_0 und w_1 sind Parameter des Modells.
P(y=1|x) = \frac{1}{1+e^{-(1 + 2\cdot x)}}Für einen Studenten mit 1 Stunde Studienzeit setzen wir x = 1 ein:
P(y=1|1) = \frac{1}{1+e^{-(1 + 2\cdot 1)}} = \frac{1}{1+e^{-(1 + 2)}} = \frac{1}{1+e^{-3}} = \frac{1}{1 + 0.0498} = \frac{1}{1.0498} ≈ 0.9526Somit beträgt die Wahrscheinlichkeit, dass ein Student mit 1 Stunde Studienzeit bestehen wird, ungefähr 95.26%.
Du möchtest eine Clusteranalyse mit dem k-Means-Algorithmus durchführen. Du hast eine Datenmenge von 150 Kunden, die du in 3 Cluster (Gruppen) unterteilen möchtest, um ähnliche Verhaltensmuster zu identifizieren. Jeder Kunde hat Attribute wie Alter, jährliches Einkommen und Ausgaben. Da der k-Means-Algorithmus die Mittelwerte der Clusterzentren iterativ optimiert, musst du die zugehörigen Formeln und Distanzmaße kennen, um diesen Prozess zu verstehen und durchzuführen.
Erkläre den k-Means-Algorithmus, indem du die Schritte des Algorithmus beschreibst. Gehe insbesondere darauf ein, wie die initialen Cluster-Zentralen gewählt werden und wie das Zuweisen der Datenpunkte zu den Clustern abläuft.
Lösung:
Beschreibung des k-Means-Algorithmus:
d(x, c) = \sqrt{\sum_{i=1}^{n}(x_i - c_i)^2}
c_j = \frac{1}{|X|} \sum_{x \in X}x
Implementiere den k-Means-Algorithmus in einer Programmiersprache deiner Wahl (z. B. Python). Benutze dabei folgende Musterdaten für die 150 Kunden:
import numpy as npfrom sklearn.datasets import make_blobs# Erzeugung von 150 Kunden-Datenpunkten mit 3 ClusternX, y = make_blobs(n_samples=150, centers=3, n_features=3, random_state=42)# Deine Implementierung hier
Lösung:
Hier ist eine Implementierung des k-Means-Algorithmus in Python, wobei die Musterdaten für die 150 Kunden verwendet werden:
import numpy as npfrom sklearn.datasets import make_blobsimport matplotlib.pyplot as plt# Erzeugung von 150 Kunden-Datenpunkten mit 3 ClusternX, y = make_blobs(n_samples=150, centers=3, n_features=3, random_state=42)# Initialisierung der Cluster-Zentrendef initialize_centroids(X, k): np.random.seed(42) random_indices = np.random.permutation(X.shape[0]) centroids = X[random_indices[:k]] return centroids# Zuweisung der Datenpunkte zu den nächsten Zentrendef assign_clusters(X, centroids): distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)) return np.argmin(distances, axis=0)# Berechnung neuer Zentrendef update_centroids(X, labels, k): centroids = np.array([X[labels == i].mean(axis=0) for i in range(k)]) return centroids# Hauptalgorithmusdef k_means(X, k, max_iters=100): centroids = initialize_centroids(X, k) for _ in range(max_iters): labels = assign_clusters(X, centroids) new_centroids = update_centroids(X, labels, k) # Überprüfung der Konvergenz if np.all(centroids == new_centroids): break centroids = new_centroids return centroids, labels# Anzahl der Clusterk = 3centroids, labels = k_means(X, k)# Visualisierung der Ergebnissefig = plt.figure()ax = fig.add_subplot(111, projection='3d')colors = ['r', 'g', 'b']for i in range(k): points = X[labels == i] ax.scatter(points[:, 0], points[:, 1], points[:, 2], s=20, c=colors[i])ax.scatter(centroids[:, 0], centroids[:, 1], centroids[:, 2], s=300, c='yellow', marker='*', label='Centroids')plt.title('K-Means Clustering')plt.xlabel('Feature 1')plt.ylabel('Feature 2')ax.set_zlabel('Feature 3')plt.legend()plt.show()
Diese Implementierung des k-Means-Algorithmus in Python:
initialize_centroids
-Funktion.assign_clusters
-Funktion.update_centroids
-Funktion.Die Ergebnisse werden abschließend in einem 3D-Plot visualisiert.
Berechne die Summe der quadratischen Abstände für die unten stehenden Punkte manuell, wenn die Cluster-Zentralen wie folgt gewählt werden:
Die Formel zur Berechnung der Summe der quadratischen Abstände lautet:
\[ \sum_{j=1}^k \sum_{x_i \in C_j} ||x_i - \mu_j||^2 \]Lösung:
Um die Summe der quadratischen Abstände zu berechnen, müssen wir zunächst die euklidische Distanz zwischen jedem gegebenen Datenpunkt und den entsprechenden Cluster-Zentren berechnen. Anschließend quadrieren wir diese Werte und summieren sie.
Gegeben:
Datenpunkte:
Wir gehen davon aus, dass jeder Datenpunkt seinem nächstgelegenen Cluster zugeordnet wird:
Berechnung der Distanzen für jeden Datenpunkt und das zugewiesene Cluster:
Summe der quadratischen Abstände:
\[ \sum_{j=1}^k \sum_{x_i \in C_j} ||x_i - \mu_j||^2 = 4010004 + 4002501 + 1010001 = 9022506 \]Die Summe der quadratischen Abstände für die gegebenen Punkte beträgt also \(9022506\).
Diskutiere die Wahl der Parameter (wie die Anzahl der Cluster und das verwendete Distanzmaß) und deren Einfluss auf die Qualität der Clusteranalyse. Welche Herausforderungen können bei der Wahl der Parameter auftreten?
Lösung:
Diskussion der Wahl der Parameter und deren Einfluss auf die Qualität der Clusteranalyse:
Insgesamt ist es wichtig, die Parameterwahl basierend auf einer fundierten Analyse der Daten und Experimenten zu treffen, um qualitativ hochwertige Clustering-Ergebnisse zu erzielen.
Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.
Kostenloses Konto erstellenDu hast bereits ein Konto? Anmelden