Précédente, je l'ai implémenté par régression linéaire, mais cette fois je l'ai implémenté en utilisant la non-linéarité.
J'ai continué à implémenter le prétraitement des données en me référant à cet article. "Prétraitement des données" - Tutoriel populaire Kaggle
① Régression linéaire ② Régression Ridge (Ridge) ③ Prise en charge de la régression de la machine vectorielle (SVR) ④ RandomForestRegressor J'ai fait un modèle pour ces quatre.
#Variables explicatives et objectives
x = df_train[['OverallQual', 'YearBuilt', 'TotalBsmtSF', 'GrLivArea']]
y = df_train['SalePrice']
#Module d'importation
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
#Séparez les données d'entraînement et les données de test
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
def calc_model(model):
#Former le modèle
model.fit(X_train, y_train)
# X_Valeur prédite pour le test
pred_y = model.predict(X_test)
#Obtenez l'erreur quadratique moyenne
score = mean_squared_error(y_test, pred_y)
return score
#Pour la régression linéaire
from sklearn.linear_model import LinearRegression
#Construire un modèle
lr = LinearRegression()
#Calculer l'erreur quadratique moyenne
lr_score = calc_model(lr)
lr_score
# >>>production
0.02824050462867693
#Au moment du retour de Ridge
from sklearn.linear_model import Ridge
#Construire un modèle
ridge = Ridge()
#Calculer l'erreur quadratique moyenne
ridge_score = calc_model(ridge)
ridge_score
# >>>production
0.028202963714955512
#Au moment de la régression de la machine vectorielle de support
from sklearn.svm import SVR
#Construire un modèle
svr = SVR()
#Calculer l'erreur quadratique moyenne
svr_score = calc_model(svr)
svr_score
# >>>production
0.08767857928794534
#Au moment du retour aléatoire de la forêt
from sklearn.ensemble import RandomForestRegressor
forest = RandomForestRegressor()
#Calculer l'erreur quadratique moyenne
forest_score = calc_model(forest)
forest_score
# >>>production
0.03268455739481754
En conséquence, l'erreur quadratique moyenne de la régression non linéaire était importante.
#Prétraitement des données de test
#Extraire la valeur de Id
df_test_index = df_test['Id']
#Confirmation des valeurs manquantes
df_test = df_test[['OverallQual', 'YearBuilt', 'TotalBsmtSF', 'GrLivArea']]
df_test.isnull().sum()
# >>>production
OverallQual 0
YearBuilt 0
TotalBsmtSF 1
GrLivArea 0
dtype: int64
Complétez la valeur manquante de TotalBsmtSF avec la valeur moyenne.
#Compléter les valeurs manquantes avec des valeurs moyennes
df_test['TotalBsmtSF'] = df_test['TotalBsmtSF'].fillna(df_test['TotalBsmtSF'].mean())
#Vérifiez les valeurs manquantes
df_test.isnull().sum()
# >>>production
OverallQual 0
YearBuilt 0
TotalBsmtSF 0
GrLivArea 0
dtype: int64
Il n'y a aucune valeur manquante.
#Ajuster le modèle
pred_y = ridge.predict(df_test)
#Créer un bloc de données
submission = pd.DataFrame({'Id': df_test_index,
'SalePrice': np.exp(pred_y)})
#Sortie vers un fichier CSV
submission.to_csv('submission.csv', index=False)
Le résultat était de 0,17184, et le résultat n'a pas augmenté.
Recommended Posts