<jupyter_start><jupyter_text>Augabe 1: Fehlende Werte auffüllen- Überprüfen Sie welche Attribute in `X_train` N/A-Werte enthalten- Füllen Sie diese Werte mit dem Durchschnittswerte der übrigen Werte aus der gleichen Spalte auf<jupyter_code>print("BEFORE:\n")
X_train.isna().sum() # Missing in Age

age_mean = X_train['Age'].mean()
print(age_mean)

X_train['Age'] = X_train['Age'].fillna(age_mean)

print("AFTER:\n")                               
X_train.isna().sum() # Missing in Age<jupyter_output>BEFORE:

29.745183887915935
AFTER:<jupyter_text>Aufgabe 2: Daten skalieren- Skalieren Sie die Daten aus `X_train` mit einem `StandardScaler`<jupyter_code>from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
X_scaled = scaler.transform(X_train)
X_scaled<jupyter_output><empty_output><jupyter_text>Aufgabe 3:  Modelltraining- Trainieren Sie das Modell auf dem skalierten `X_train` und `y_train`<jupyter_code>from sklearn.linear_model import LinearRegression

reg = LinearRegression()
reg.fit(X_scaled, y_train)<jupyter_output><empty_output><jupyter_text>Aufgabe 4: Evaluation- Entfernen Sie alle Datenpunkte mit N/A-Werten aus `X_test`- Entfernen Sie die genau gleichen Zeilen auch aus `y_test`- Skalieren Sie die Datenpunkte `X_test` mit dem gleichen skalieren wie in Aufgabe 2- Machen Sie eine Vorhersage auf den skalierten Testdaten und berechnen sie Accuracy, Precision und Recall<jupyter_code># Vorhersage, Accurancy, Precision und Recall
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score, precision_score, recall_score

# Datenpunkte aus X_test entfernen
X_test = X_test.dropna()
X_test.shape
# Datenpunkte aus y_test entfernen
y_test = y_test[X_test.index]
y_test.shape
# Datenpunkte Skalieren
X_test_scaled = scaler.transform(X_test)

# Make predictions
predictions = reg.predict(X_test_scaled)

# Determine accurancy score
accuracy_score(y_test, predictions.round())
# Determine precision score
precision_score(y_test, predictions.round())
# Determine recall score
recall_score(y_test, predictions.round())<jupyter_output><empty_output><jupyter_text>Aufgabe 5. Neues Feature `Embarked`- Fügen Sie `Embarked` als weiteres Attribut zu `df_selection` hinzu (Zelle 3). - Führen Sie ein one-hot-encoding dieses Attributs durch und durchlaufen Sie Schritte aus Aufgabe 1 bis 4.- Vergleichen Sie die Performance des Modells mit und ohne dieses Feature.<jupyter_code># Embarked hinzufügen
data = df[["Survived", "Pclass", "Age", "SibSp", "Parch", "Fare", "Embarked"]].copy()

# Transform with one-hot-encoding
one_hot_feature_1 = pd.get_dummies(data["Embarked"]) 
one_hot_feature_1.head()

data_all = pd.concat([data, one_hot_feature_1], axis=1)
data_all.head()

# Drop Embarked column
d_X = data_all.drop(columns=['Embarked'])
d_X

# Aufgabe 1 - 4
# ....TODO 1-4...<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09965156794425087, 'fraction_numerical': 0.011846689895470384, 'mean_word_length': 6.323979591836735, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 20, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '112305', 'license': 'MIT', 'n_tokens_mistral': 1085, 'n_tokens_neox': 1044, 'n_words': 256, 'path': '3_Titanic_Dataset_Features.ipynb', 'repo_name': 'daniel-vera-g/ml-kurs', 'size': '2870'}