Zurück habe ich es durch lineare Regression implementiert, diesmal jedoch mit Nichtlinearität.
Ich habe die Datenvorverarbeitung unter Bezugnahme auf diesen Artikel weiter implementiert. "Data Preprocessing" -Kaggle Popular Tutorial
① LinearRegression ② Ridge-Regression (Ridge) ③ Unterstützung der Vektor-Maschinen-Regression (SVR) ④ RandomForestRegressor Ich habe ein Modell für diese vier gemacht.
#Erklärende und objektive Variablen
x = df_train[['OverallQual', 'YearBuilt', 'TotalBsmtSF', 'GrLivArea']]
y = df_train['SalePrice']
#Modul importieren
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
#Trainingsdaten und Testdaten trennen
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
def calc_model(model):
#Trainiere das Modell
model.fit(X_train, y_train)
# X_Voraussichtlicher Wert für den Test
pred_y = model.predict(X_test)
#Ermitteln Sie den durchschnittlichen quadratischen Fehler
score = mean_squared_error(y_test, pred_y)
return score
#Für die lineare Regression
from sklearn.linear_model import LinearRegression
#Modell bauen
lr = LinearRegression()
#Berechnen Sie den durchschnittlichen quadratischen Fehler
lr_score = calc_model(lr)
lr_score
# >>>Ausgabe
0.02824050462867693
#Zur Zeit von Ridge Rückkehr
from sklearn.linear_model import Ridge
#Modell bauen
ridge = Ridge()
#Berechnen Sie den durchschnittlichen quadratischen Fehler
ridge_score = calc_model(ridge)
ridge_score
# >>>Ausgabe
0.028202963714955512
#Zum Zeitpunkt der Unterstützung Vektor Maschine Regression
from sklearn.svm import SVR
#Modell bauen
svr = SVR()
#Berechnen Sie den durchschnittlichen quadratischen Fehler
svr_score = calc_model(svr)
svr_score
# >>>Ausgabe
0.08767857928794534
#Zum Zeitpunkt der zufälligen Waldrückgabe
from sklearn.ensemble import RandomForestRegressor
forest = RandomForestRegressor()
#Berechnen Sie den durchschnittlichen quadratischen Fehler
forest_score = calc_model(forest)
forest_score
# >>>Ausgabe
0.03268455739481754
Infolgedessen war der mittlere quadratische Fehler der nichtlinearen Regression groß.
#Vorverarbeitung von Testdaten
#Extrahieren Sie den Wert von Id
df_test_index = df_test['Id']
#Bestätigung fehlender Werte
df_test = df_test[['OverallQual', 'YearBuilt', 'TotalBsmtSF', 'GrLivArea']]
df_test.isnull().sum()
# >>>Ausgabe
OverallQual 0
YearBuilt 0
TotalBsmtSF 1
GrLivArea 0
dtype: int64
Ergänzen Sie den fehlenden Wert von TotalBsmtSF mit dem Durchschnittswert.
#Ergänzen Sie fehlende Werte mit Durchschnittswerten
df_test['TotalBsmtSF'] = df_test['TotalBsmtSF'].fillna(df_test['TotalBsmtSF'].mean())
#Überprüfen Sie, ob Werte fehlen
df_test.isnull().sum()
# >>>Ausgabe
OverallQual 0
YearBuilt 0
TotalBsmtSF 0
GrLivArea 0
dtype: int64
Es fehlen keine Werte.
#Modell montieren
pred_y = ridge.predict(df_test)
#Erstellen eines Datenrahmens
submission = pd.DataFrame({'Id': df_test_index,
'SalePrice': np.exp(pred_y)})
#Ausgabe in CSV-Datei
submission.to_csv('submission.csv', index=False)
Das Ergebnis war 0,17184 und das Ergebnis stieg nicht an.
Recommended Posts