{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ " Dans ce notebook , on a testé trois modélisations après le preprocessing et feature engineering .La premiere méthode était de faire une réduction du nombre de variables à l'aide de xgboost regressor , dans la deuxieme méthode on a utilisé une réduction de dimensions en essayant de trouver les axes principales à l'aide de l'analyse des composantes principales. \n", " " ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from sklearn.metrics import mean_squared_error\n", "def rmse(y_true, y_pred):\n", " return np.sqrt(mean_squared_error(y_true, y_pred))\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploration et analyse des données " ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1456, 111)\n", "(1459, 111)\n", "('Training set size:', (1456, 403))\n", "('Test set size:', (1459, 403))\n" ] } ], "source": [ "\n", "train_df = pd.read_csv(\"train.csv\")\n", "test_df = pd.read_csv(\"test.csv\")\n", "\n", "# Il y a quelques maisons avec la variable GrvLivArea supérieure à 4000 qu'on peut considérer comme variables abbérrantes. \n", "# On les élimine donc de notre dataset de training.\n", "\n", "train_df.drop(train_df[train_df[\"GrLivArea\"] > 4000].index, inplace=True)\n", "test_df.loc[666, \"GarageQual\"] = \"TA\"\n", "test_df.loc[666, \"GarageCond\"] = \"TA\"\n", "test_df.loc[666, \"GarageFinish\"] = \"Unf\"\n", "test_df.loc[666, \"GarageYrBlt\"] = \"1980\"\n", "\n", "# Dans la dataset de test, la ligne 1116 a uniquement GarageType et aucune information supplémentaire. On suppose\n", "# qu'elle n'a pas de garage.\n", "test_df.loc[1116, \"GarageType\"] = np.nan\n", "\n", "# Remplacer les valeurs manquantes de LotFrontage values par la médianne.\n", "# LotFrontage par quartier.\n", "lot_frontage_by_neighborhood = train_df[\"LotFrontage\"].groupby(train_df[\"Neighborhood\"])\n", "\n", "# Convertir les variables catégorielles en variables ordinales.\n", "\n", "from sklearn.preprocessing import LabelEncoder\n", "le = LabelEncoder()\n", "\n", "def factorize(df, factor_df, column, fill_na=None):\n", " factor_df[column] = df[column]\n", " if fill_na is not None:\n", " factor_df[column].fillna(fill_na, inplace=True)\n", " le.fit(factor_df[column].unique())\n", " factor_df[column] = le.transform(factor_df[column])\n", " return factor_df\n", "\n", "# Combiner toutes les variables numériques en une seule dataset. \n", "def munge(df):\n", " df_global = pd.DataFrame(index = df.index)\n", " \n", " df_global[\"LotFrontage\"] = df[\"LotFrontage\"] \n", " for key, group in lot_frontage_by_neighborhood:\n", " idx = (df[\"Neighborhood\"] == key) & (df[\"LotFrontage\"].isnull())\n", " df_global.loc[idx, \"LotFrontage\"] = group.median() \n", "\n", " df_global[\"LotArea\"] = df[\"LotArea\"]\n", "\n", " df_global[\"MasVnrArea\"] = df[\"MasVnrArea\"]\n", " df_global[\"MasVnrArea\"].fillna(0, inplace=True)\n", " \n", " df_global[\"BsmtFinSF1\"] = df[\"BsmtFinSF1\"]\n", " df_global[\"BsmtFinSF1\"].fillna(0, inplace=True)\n", "\n", " df_global[\"BsmtFinSF2\"] = df[\"BsmtFinSF2\"]\n", " df_global[\"BsmtFinSF2\"].fillna(0, inplace=True)\n", "\n", " df_global[\"BsmtUnfSF\"] = df[\"BsmtUnfSF\"]\n", " df_global[\"BsmtUnfSF\"].fillna(0, inplace=True)\n", "\n", " df_global[\"TotalBsmtSF\"] = df[\"TotalBsmtSF\"]\n", " df_global[\"TotalBsmtSF\"].fillna(0, inplace=True)\n", "\n", " df_global[\"1stFlrSF\"] = df[\"1stFlrSF\"]\n", " df_global[\"2ndFlrSF\"] = df[\"2ndFlrSF\"]\n", " df_global[\"GrLivArea\"] = df[\"GrLivArea\"]\n", " \n", " df_global[\"GarageArea\"] = df[\"GarageArea\"]\n", " df_global[\"GarageArea\"].fillna(0, inplace=True)\n", "\n", " df_global[\"WoodDeckSF\"] = df[\"WoodDeckSF\"]\n", " df_global[\"OpenPorchSF\"] = df[\"OpenPorchSF\"]\n", " df_global[\"EnclosedPorch\"] = df[\"EnclosedPorch\"]\n", " df_global[\"3SsnPorch\"] = df[\"3SsnPorch\"]\n", " df_global[\"ScreenPorch\"] = df[\"ScreenPorch\"]\n", " \n", " df_global[\"BsmtFullBath\"] = df[\"BsmtFullBath\"]\n", " df_global[\"BsmtFullBath\"].fillna(0, inplace=True)\n", "\n", " df_global[\"BsmtHalfBath\"] = df[\"BsmtHalfBath\"]\n", " df_global[\"BsmtHalfBath\"].fillna(0, inplace=True)\n", "\n", " df_global[\"FullBath\"] = df[\"FullBath\"] \n", " df_global[\"HalfBath\"] = df[\"HalfBath\"] \n", " df_global[\"BedroomAbvGr\"] = df[\"BedroomAbvGr\"] \n", " df_global[\"KitchenAbvGr\"] = df[\"KitchenAbvGr\"] \n", " df_global[\"TotRmsAbvGrd\"] = df[\"TotRmsAbvGrd\"] \n", " df_global[\"Fireplaces\"] = df[\"Fireplaces\"] \n", "\n", " df_global[\"GarageCars\"] = df[\"GarageCars\"]\n", " df_global[\"GarageCars\"].fillna(0, inplace=True)\n", "\n", " df_global[\"CentralAir\"] = (df[\"CentralAir\"] == \"Y\") * 1.0\n", " \n", " df_global[\"OverallQual\"] = df[\"OverallQual\"]\n", " df_global[\"OverallCond\"] = df[\"OverallCond\"]\n", "\n", " # Les variables qui définissent la qualité peuvent étre gardées sous forme de test mais on peut les convertir \n", " # en variables numériques, plus grand le nombre, la meilleure la qualité, et vis versa.\n", "\n", " qual_dict = {None: 0, \"Po\": 1, \"Fa\": 2, \"TA\": 3, \"Gd\": 4, \"Ex\": 5}\n", " df_global[\"ExterQual\"] = df[\"ExterQual\"].map(qual_dict).astype(int)\n", " df_global[\"ExterCond\"] = df[\"ExterCond\"].map(qual_dict).astype(int)\n", " df_global[\"BsmtQual\"] = df[\"BsmtQual\"].map(qual_dict).astype(int)\n", " df_global[\"BsmtCond\"] = df[\"BsmtCond\"].map(qual_dict).astype(int)\n", " df_global[\"HeatingQC\"] = df[\"HeatingQC\"].map(qual_dict).astype(int)\n", " df_global[\"KitchenQual\"] = df[\"KitchenQual\"].map(qual_dict).astype(int)\n", " df_global[\"FireplaceQu\"] = df[\"FireplaceQu\"].map(qual_dict).astype(int)\n", " df_global[\"GarageQual\"] = df[\"GarageQual\"].map(qual_dict).astype(int)\n", " df_global[\"GarageCond\"] = df[\"GarageCond\"].map(qual_dict).astype(int)\n", "\n", " df_global[\"BsmtExposure\"] = df[\"BsmtExposure\"].map(\n", " {None: 0, \"No\": 1, \"Mn\": 2, \"Av\": 3, \"Gd\": 4}).astype(int)\n", "\n", " bsmt_fin_dict = {None: 0, \"Unf\": 1, \"LwQ\": 2, \"Rec\": 3, \"BLQ\": 4, \"ALQ\": 5, \"GLQ\": 6}\n", " df_global[\"BsmtFinType1\"] = df[\"BsmtFinType1\"].map(bsmt_fin_dict).astype(int)\n", " df_global[\"BsmtFinType2\"] = df[\"BsmtFinType2\"].map(bsmt_fin_dict).astype(int)\n", "\n", " df_global[\"Functional\"] = df[\"Functional\"].map(\n", " {None: 0, \"Sal\": 1, \"Sev\": 2, \"Maj2\": 3, \"Maj1\": 4, \n", " \"Mod\": 5, \"Min2\": 6, \"Min1\": 7, \"Typ\": 8}).astype(int)\n", "\n", " df_global[\"GarageFinish\"] = df[\"GarageFinish\"].map(\n", " {None: 0, \"Unf\": 1, \"RFn\": 2, \"Fin\": 3}).astype(int)\n", "\n", " df_global[\"Fence\"] = df[\"Fence\"].map(\n", " {None: 0, \"MnWw\": 1, \"GdWo\": 2, \"MnPrv\": 3, \"GdPrv\": 4}).astype(int)\n", "\n", " df_global[\"YearBuilt\"] = df[\"YearBuilt\"]\n", " df_global[\"YearRemodAdd\"] = df[\"YearRemodAdd\"]\n", "\n", " df_global[\"GarageYrBlt\"] = df[\"GarageYrBlt\"]\n", " df_global[\"GarageYrBlt\"].fillna(0.0, inplace=True)\n", "\n", " df_global[\"MoSold\"] = df[\"MoSold\"]\n", " df_global[\"YrSold\"] = df[\"YrSold\"]\n", " \n", " df_global[\"LowQualFinSF\"] = df[\"LowQualFinSF\"]\n", " df_global[\"MiscVal\"] = df[\"MiscVal\"]\n", "\n", " df_global[\"PoolQC\"] = df[\"PoolQC\"].map(qual_dict).astype(int)\n", "\n", " df_global[\"PoolArea\"] = df[\"PoolArea\"]\n", " df_global[\"PoolArea\"].fillna(0, inplace=True)\n", " \n", " # Ajouter les variables catégoriques en variables numériques\n", " df_global = factorize(df, df_global, \"MSSubClass\")\n", " df_global = factorize(df, df_global, \"MSZoning\", \"RL\")\n", " df_global = factorize(df, df_global, \"LotConfig\")\n", " df_global = factorize(df, df_global, \"Neighborhood\")\n", " df_global = factorize(df, df_global, \"Condition1\")\n", " df_global = factorize(df, df_global, \"BldgType\")\n", " df_global = factorize(df, df_global, \"HouseStyle\")\n", " df_global = factorize(df, df_global, \"RoofStyle\")\n", " df_global = factorize(df, df_global, \"Exterior1st\", \"Other\")\n", " df_global = factorize(df, df_global, \"Exterior2nd\", \"Other\")\n", " df_global = factorize(df, df_global, \"MasVnrType\", \"None\")\n", " df_global = factorize(df, df_global, \"Foundation\")\n", " df_global = factorize(df, df_global, \"SaleType\", \"Oth\")\n", " df_global = factorize(df, df_global, \"SaleCondition\")\n", "\n", " # Les valeurs IR2 et IR3 n'apparaissent pas assez fréquemment, on choisit donc de faire la distinction uniquement\n", " # entre regular et irregular.\n", " df_global[\"IsRegularLotShape\"] = (df[\"LotShape\"] == \"Reg\") * 1\n", "\n", " # La majorité des propriétés sont level; on traite les autres possibilités comme\n", " # étant \"not level\".\n", " df_global[\"IsLandLevel\"] = (df[\"LandContour\"] == \"Lvl\") * 1\n", "\n", " # La majorité des LandSLopes sont \"gentle\"; on traite les autres variables en tant que \"not gentle\".\n", " df_global[\"IsLandSlopeGentle\"] = (df[\"LandSlope\"] == \"Gtl\") * 1\n", "\n", " # La valeur prépondérante est standard circuit breakers, on traite les autres variables en tant que \"not SBrkr\".\n", " df_global[\"IsElectricalSBrkr\"] = (df[\"Electrical\"] == \"SBrkr\") * 1\n", "\n", " # La valeur la plus fréquente de GarageType est \"Detchd\", on traite les autres valeurs en tant que \"not Detchd\".\n", " df_global[\"IsGarageDetached\"] = (df[\"GarageType\"] == \"Detchd\") * 1\n", "\n", " # La valeur la plus fréquente est \"PavedDrive\". On traite dirt/gravel et partial pavement\n", " # en tant que \"not paved\".\n", " df_global[\"IsPavedDrive\"] = (df[\"PavedDrive\"] == \"Y\") * 1\n", "\n", " # La seule caractéristique intéressante est la présence de \"Shed\".\n", " df_global[\"HasShed\"] = (df[\"MiscFeature\"] == \"Shed\") * 1. \n", "\n", " # Si YearRemodAdd != YearBuilt, donc une rénovation a eu lieu.\n", " df_global[\"Remodeled\"] = (df_global[\"YearRemodAdd\"] != df_global[\"YearBuilt\"]) * 1\n", " \n", " # Rénovation de la maison l'année où elle a été vendue?\n", " df_global[\"RecentRemodel\"] = (df_global[\"YearRemodAdd\"] == df_global[\"YrSold\"]) * 1\n", " \n", " # Maison vendue l'année où elle a été batie?\n", " df_global[\"VeryNewHouse\"] = (df_global[\"YearBuilt\"] == df_global[\"YrSold\"]) * 1\n", "\n", " df_global[\"Has2ndFloor\"] = (df_global[\"2ndFlrSF\"] == 0) * 1\n", " df_global[\"HasMasVnr\"] = (df_global[\"MasVnrArea\"] == 0) * 1\n", " df_global[\"HasWoodDeck\"] = (df_global[\"WoodDeckSF\"] == 0) * 1\n", " df_global[\"HasOpenPorch\"] = (df_global[\"OpenPorchSF\"] == 0) * 1\n", " df_global[\"HasEnclosedPorch\"] = (df_global[\"EnclosedPorch\"] == 0) * 1\n", " df_global[\"Has3SsnPorch\"] = (df_global[\"3SsnPorch\"] == 0) * 1\n", " df_global[\"HasScreenPorch\"] = (df_global[\"ScreenPorch\"] == 0) * 1\n", "\n", " \n", " # Les mois avec le plus grand nombre de ventes peut étre intéressant pour notre modèle.\n", " df_global[\"HighSeason\"] = df[\"MoSold\"].replace( \n", " {1: 0, 2: 0, 3: 0, 4: 1, 5: 1, 6: 1, 7: 1, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0})\n", "\n", " df_global[\"NewerDwelling\"] = df[\"MSSubClass\"].replace(\n", " {20: 1, 30: 0, 40: 0, 45: 0,50: 0, 60: 1, 70: 0, 75: 0, 80: 0, 85: 0,\n", " 90: 0, 120: 1, 150: 0, 160: 0, 180: 0, 190: 0}) \n", " \n", " df_global.loc[df.Neighborhood == 'NridgHt', \"Neighborhood_Good\"] = 1\n", " df_global.loc[df.Neighborhood == 'Crawfor', \"Neighborhood_Good\"] = 1\n", " df_global.loc[df.Neighborhood == 'StoneBr', \"Neighborhood_Good\"] = 1\n", " df_global.loc[df.Neighborhood == 'Somerst', \"Neighborhood_Good\"] = 1\n", " df_global.loc[df.Neighborhood == 'NoRidge', \"Neighborhood_Good\"] = 1\n", " df_global[\"Neighborhood_Good\"].fillna(0, inplace=True)\n", "\n", " df_global[\"SaleCondition_PriceDown\"] = df.SaleCondition.replace(\n", " {'Abnorml': 1, 'Alloca': 1, 'AdjLand': 1, 'Family': 1, 'Normal': 0, 'Partial': 0})\n", "\n", " # Maison completée avant vente ou pas?\n", " df_global[\"BoughtOffPlan\"] = df.SaleCondition.replace(\n", " {\"Abnorml\" : 0, \"Alloca\" : 0, \"AdjLand\" : 0, \"Family\" : 0, \"Normal\" : 0, \"Partial\" : 1})\n", " \n", " df_global[\"BadHeating\"] = df.HeatingQC.replace(\n", " {'Ex': 0, 'Gd': 0, 'TA': 0, 'Fa': 1, 'Po': 1})\n", "\n", " area_cols = ['LotFrontage', 'LotArea', 'MasVnrArea', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF',\n", " 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'GrLivArea', 'GarageArea', 'WoodDeckSF', \n", " 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'LowQualFinSF', 'PoolArea' ]\n", " df_global[\"TotalArea\"] = df_global[area_cols].sum(axis=1)\n", "\n", " df_global[\"TotalArea1st2nd\"] = df_global[\"1stFlrSF\"] + df_global[\"2ndFlrSF\"]\n", "\n", " df_global[\"Age\"] = 2010 - df_global[\"YearBuilt\"]\n", " df_global[\"TimeSinceSold\"] = 2010 - df_global[\"YrSold\"]\n", "\n", " df_global[\"SeasonSold\"] = df_global[\"MoSold\"].map({12:0, 1:0, 2:0, 3:1, 4:1, 5:1, \n", " 6:2, 7:2, 8:2, 9:3, 10:3, 11:3}).astype(int)\n", " \n", " df_global[\"YearsSinceRemodel\"] = df_global[\"YrSold\"] - df_global[\"YearRemodAdd\"]\n", " \n", " # Simplification des caractéristiques de qualité mauvais/normal/bon en valeurs numériques.\n", " df_global[\"SimplOverallQual\"] = df_global.OverallQual.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2, 6 : 2, 7 : 3, 8 : 3, 9 : 3, 10 : 3})\n", " df_global[\"SimplOverallCond\"] = df_global.OverallCond.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2, 6 : 2, 7 : 3, 8 : 3, 9 : 3, 10 : 3})\n", " df_global[\"SimplPoolQC\"] = df_global.PoolQC.replace(\n", " {1 : 1, 2 : 1, 3 : 2, 4 : 2})\n", " df_global[\"SimplGarageCond\"] = df_global.GarageCond.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplGarageQual\"] = df_global.GarageQual.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplFireplaceQu\"] = df_global.FireplaceQu.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplFireplaceQu\"] = df_global.FireplaceQu.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplFunctional\"] = df_global.Functional.replace(\n", " {1 : 1, 2 : 1, 3 : 2, 4 : 2, 5 : 3, 6 : 3, 7 : 3, 8 : 4})\n", " df_global[\"SimplKitchenQual\"] = df_global.KitchenQual.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplHeatingQC\"] = df_global.HeatingQC.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplBsmtFinType1\"] = df_global.BsmtFinType1.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2, 6 : 2})\n", " df_global[\"SimplBsmtFinType2\"] = df_global.BsmtFinType2.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2, 6 : 2})\n", " df_global[\"SimplBsmtCond\"] = df_global.BsmtCond.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplBsmtQual\"] = df_global.BsmtQual.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplExterCond\"] = df_global.ExterCond.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " df_global[\"SimplExterQual\"] = df_global.ExterQual.replace(\n", " {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2})\n", " \n", " # Classifier par neighborhood un peu arbitrairement. Les valeurs ont été calculées en utilisant la fonction:\n", " # train_df[\"SalePrice\"].groupby(train_df[\"Neighborhood\"]).median().sort_values()\n", " carte_voisin = {\n", " \"MeadowV\" : 0, # 88000\n", " \"IDOTRR\" : 1, # 103000\n", " \"BrDale\" : 1, # 106000\n", " \"OldTown\" : 1, # 119000\n", " \"Edwards\" : 1, # 119500\n", " \"BrkSide\" : 1, # 124300\n", " \"Sawyer\" : 1, # 135000\n", " \"Blueste\" : 1, # 137500\n", " \"SWISU\" : 2, # 139500\n", " \"NAmes\" : 2, # 140000\n", " \"NPkVill\" : 2, # 146000\n", " \"Mitchel\" : 2, # 153500\n", " \"SawyerW\" : 2, # 179900\n", " \"Gilbert\" : 2, # 181000\n", " \"NWAmes\" : 2, # 182900\n", " \"Blmngtn\" : 2, # 191000\n", " \"CollgCr\" : 2, # 197200\n", " \"ClearCr\" : 3, # 200250\n", " \"Crawfor\" : 3, # 200624\n", " \"Veenker\" : 3, # 218000\n", " \"Somerst\" : 3, # 225500\n", " \"Timber\" : 3, # 228475\n", " \"StoneBr\" : 4, # 278000\n", " \"NoRidge\" : 4, # 290000\n", " \"NridgHt\" : 4, # 315000\n", " }\n", "\n", " df_global[\"NeighborhoodBin\"] = df[\"Neighborhood\"].map(carte_voisin)\n", " return df_global\n", "\n", "train_df_munged = munge(train_df)\n", "test_df_munged = munge(test_df)\n", "\n", "print(train_df_munged.shape)\n", "print(test_df_munged.shape)\n", "\n", "# Copier NeighborhoodBin en une dataset temporaire parce qu'on veut utiliser la version unscaled après\n", "# pour lui appliquer one-hot encode. \n", "neighborhood_bin_train = pd.DataFrame(index = train_df.index)\n", "neighborhood_bin_train[\"NeighborhoodBin\"] = train_df_munged[\"NeighborhoodBin\"]\n", "neighborhood_bin_test = pd.DataFrame(index = test_df.index)\n", "neighborhood_bin_test[\"NeighborhoodBin\"] = test_df_munged[\"NeighborhoodBin\"]\n", "\n", "################################################################################\n", "\n", "numeric_features = train_df_munged.dtypes[train_df_munged.dtypes != \"object\"].index\n", "\n", "# Transformer les variables numériques qui sont skewed en leur appliquant la fonction log(variable + 1).\n", "# Ça va rendre les variables plus normales.\n", "from scipy.stats import skew\n", "\n", "skewed = train_df_munged[numeric_features].apply(lambda x: skew(x.dropna().astype(float)))\n", "skewed = skewed[skewed > 0.75]\n", "skewed = skewed.index\n", "\n", "train_df_munged[skewed] = np.log1p(train_df_munged[skewed])\n", "test_df_munged[skewed] = np.log1p(test_df_munged[skewed])\n", "\n", "# Processing: scaling de notre dataset \n", "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", "scaler.fit(train_df_munged[numeric_features])\n", "\n", "scaled = scaler.transform(train_df_munged[numeric_features])\n", "for i, col in enumerate(numeric_features):\n", " train_df_munged[col] = scaled[:, i]\n", "\n", "scaled = scaler.transform(test_df_munged[numeric_features])\n", "for i, col in enumerate(numeric_features):\n", " test_df_munged[col] = scaled[:, i]\n", "\n", "################################################################################\n", "\n", "# Convertir les caractéristiques catégorielles en utilisant one-hot encoding.\n", "def onehot(df_onehot_encoder, df, column_name, fill_na, drop_name):\n", " df_onehot_encoder[column_name] = df[column_name]\n", " if fill_na is not None:\n", " df_onehot_encoder[column_name].fillna(fill_na, inplace=True)\n", "\n", " dummies = pd.get_dummies(df_onehot_encoder[column_name], prefix=\"_\" + column_name)\n", " \n", " \n", "\n", " df_onehot_encoder = df_onehot_encoder.join(dummies)\n", " df_onehot_encoder = df_onehot_encoder.drop([column_name], axis=1)\n", " return df_onehot_encoder\n", "\n", "def munge_onehot(df):\n", " df_onehot_encoder = pd.DataFrame(index = df.index)\n", "\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"MSSubClass\", None, \"40\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"MSZoning\", \"RL\", \"RH\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"LotConfig\", None, \"FR3\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Neighborhood\", None, \"OldTown\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Condition1\", None, \"RRNe\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BldgType\", None, \"2fmCon\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"HouseStyle\", None, \"1.5Unf\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"RoofStyle\", None, \"Shed\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Exterior1st\", \"VinylSd\", \"CBlock\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Exterior2nd\", \"VinylSd\", \"CBlock\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Foundation\", None, \"Wood\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"SaleType\", \"WD\", \"Oth\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"SaleCondition\", \"Normal\", \"AdjLand\")\n", "\n", " \n", " temp_df = df[[\"MasVnrType\", \"MasVnrArea\"]].copy()\n", " idx = (df[\"MasVnrArea\"] != 0) & ((df[\"MasVnrType\"] == \"None\") | (df[\"MasVnrType\"].isnull()))\n", " temp_df.loc[idx, \"MasVnrType\"] = \"BrkFace\"\n", " df_onehot_encoder = onehot(df_onehot_encoder, temp_df, \"MasVnrType\", \"None\", \"BrkCmn\")\n", "\n", " # Rajouter les variables booléennes de calc_df comme dummy variables. \n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"LotShape\", None, \"IR3\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"LandContour\", None, \"Low\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"LandSlope\", None, \"Sev\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Electrical\", \"SBrkr\", \"FuseP\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"GarageType\", \"None\", \"CarPort\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"PavedDrive\", None, \"P\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"MiscFeature\", \"None\", \"Othr\")\n", "\n", " # Variables que l'on peut ignorer mais que l'on choisit de prendre compte dans notre modèle pour voir\n", " # si elles influencent d'une manière ou d'une autre.\n", " # On choisit d'ignorer la variable Utilities parce que toutes ses valeurs sont égales à AllPub, à l'excepté\n", " # d'une valeur \"NoSeWa\" dans la dataset de training et 2 NA dans la dataset de test.\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Street\", None, \"Grvl\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Alley\", \"None\", \"Grvl\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Condition2\", None, \"PosA\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"RoofMatl\", None, \"WdShake\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Heating\", None, \"Wall\")\n", "\n", " # Transformer ces variables en variables numériques.\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"ExterQual\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"ExterCond\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BsmtQual\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BsmtCond\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"HeatingQC\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"KitchenQual\", \"TA\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"FireplaceQu\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"GarageQual\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"GarageCond\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"PoolQC\", \"None\", \"Ex\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BsmtExposure\", \"None\", \"Gd\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BsmtFinType1\", \"None\", \"GLQ\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"BsmtFinType2\", \"None\", \"GLQ\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Functional\", \"Typ\", \"Typ\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"GarageFinish\", \"None\", \"Fin\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"Fence\", \"None\", \"MnPrv\")\n", " df_onehot_encoder = onehot(df_onehot_encoder, df, \"MoSold\", None, None)\n", " \n", " # Diviser les années entre 1871 et 2010 en tranches de 20 ans.\n", " year_map = pd.concat(pd.Series(\"YearBin\" + str(i+1), index=range(1871+i*20,1891+i*20)) for i in range(0, 7))\n", "\n", " yearbin_df = pd.DataFrame(index = df.index)\n", " yearbin_df[\"GarageYrBltBin\"] = df.GarageYrBlt.map(year_map)\n", " yearbin_df[\"GarageYrBltBin\"].fillna(\"NoGarage\", inplace=True)\n", "\n", " yearbin_df[\"YearBuiltBin\"] = df.YearBuilt.map(year_map)\n", " yearbin_df[\"YearRemodAddBin\"] = df.YearRemodAdd.map(year_map)\n", " \n", " df_onehot_encoder = onehot(df_onehot_encoder, yearbin_df, \"GarageYrBltBin\", None, None)\n", " df_onehot_encoder = onehot(df_onehot_encoder, yearbin_df, \"YearBuiltBin\", None, None)\n", " df_onehot_encoder = onehot(df_onehot_encoder, yearbin_df, \"YearRemodAddBin\", None, None)\n", "\n", " return df_onehot_encoder\n", "\n", "# Ajout des one-hot encoded caractéristiques catégorielles.\n", "df_onehot_encoder = munge_onehot(train_df)\n", "df_onehot_encoder = onehot(df_onehot_encoder, neighborhood_bin_train, \"NeighborhoodBin\", None, None)\n", "train_df_munged = train_df_munged.join(df_onehot_encoder)\n", "\n", "# Ces colonnes onehot sont absentes de la dataset de test, on les élimine donc de la dataset de training par peur \n", "# d'avoir un modèle overfit à cause d'elles.\n", "colonne_a_eliminer = [\n", " \"_Exterior1st_ImStucc\", \"_Exterior1st_Stone\",\n", " \"_Exterior2nd_Other\",\"_HouseStyle_2.5Fin\", \n", " \n", " \"_RoofMatl_Membran\", \"_RoofMatl_Metal\", \"_RoofMatl_Roll\",\n", " \"_Condition2_RRAe\", \"_Condition2_RRAn\", \"_Condition2_RRNn\",\n", " \"_Heating_Floor\", \"_Heating_OthW\",\n", "\n", " \"_Electrical_Mix\", \n", " \"_MiscFeature_TenC\",\n", " \"_GarageQual_Ex\", \"_PoolQC_Fa\"\n", " ]\n", "train_df_munged.drop(colonne_a_eliminer, axis=1, inplace=True)\n", "\n", "df_onehot_encoder = munge_onehot(test_df)\n", "df_onehot_encoder = onehot(df_onehot_encoder, neighborhood_bin_test, \"NeighborhoodBin\", None, None)\n", "test_df_munged = test_df_munged.join(df_onehot_encoder)\n", "\n", "# Cette colonne est absente dans la dataset de training. On a uniquement un exemple avec celle ci dans la dataset \n", "# de test, on choisit donc de l'éliminer.\n", "test_df_munged.drop([\"_MSSubClass_150\"], axis=1, inplace=True)\n", "\n", "# On élimine ces colonnes. Elles sont soit inutiles, soit elles mènent à l'overfitting de notre modèle.\n", "colonne_a_eliminer = [\n", " \"_Condition2_PosN\", # Deux uniquement sont différentes de zéro.\n", " \"_MSZoning_C (all)\",\n", " \"_MSSubClass_160\",\n", "]\n", "train_df_munged.drop(colonne_a_eliminer, axis=1, inplace=True)\n", "test_df_munged.drop(colonne_a_eliminer, axis=1, inplace=True)\n", "\n", "################################################################################\n", "\n", "# On prend le log parce que l'erreur est calculée entre le log de \"SalePrice\" et le log du prix qu'on a estimé.\n", "# On doit donc introduire la fonction exp() pour obtenir la vraie valeur de \"SalePrice\".\n", "\n", "label_df = pd.DataFrame(index = train_df_munged.index, columns=[\"SalePrice\"])\n", "label_df[\"SalePrice\"] = np.log(train_df[\"SalePrice\"])\n", "\n", "print(\"Training set size:\", train_df_munged.shape)\n", "print(\"Test set size:\", test_df_munged.shape)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Première méthode : sélectionner automatiquement les meilleures caractéristiques" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "scrolled": true }, "outputs": [], "source": [ "train_rania=train_df_munged\n", "train_rania['SalePrice']=label_df\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Définir une fonction pour génerer le score des variables de notre dataset , l'algorithme utilisé est xgboost pour le classement des meilleures caracteristiques " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/boumelha/.local/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n", " from numpy.core.umath_tests import inner1d\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Features sorted by their score:\n", "[(0.0699, 'TotalArea'), (0.0629, 'TotalArea1st2nd'), (0.0509, 'OverallQual'), (0.0419, 'GrLivArea'), (0.0379, 'LotArea'), (0.0359, 'OverallCond'), (0.0349, 'TotalBsmtSF'), (0.0279, 'YearBuilt'), (0.0279, 'BsmtFinSF1'), (0.0259, 'SimplOverallQual'), (0.025, 'GarageYrBlt'), (0.025, '1stFlrSF'), (0.021, 'GarageArea'), (0.02, 'Neighborhood'), (0.017, 'OpenPorchSF'), (0.016, 'Functional'), (0.015, 'YearsSinceRemodel'), (0.015, 'WoodDeckSF'), (0.015, 'SaleCondition'), (0.015, '2ndFlrSF'), (0.014, 'SimplOverallCond'), (0.014, 'BsmtFinType1'), (0.013, 'ScreenPorch'), (0.012, 'MSZoning'), (0.011, 'Age'), (0.01, 'YearRemodAdd'), (0.01, 'Exterior1st'), (0.009, '_SaleType_New'), (0.009, '_Exterior1st_BrkFace'), (0.009, 'NeighborhoodBin'), (0.009, 'LotFrontage'), (0.009, 'BsmtExposure'), (0.008, '_Condition1_Norm'), (0.008, 'YrSold'), (0.008, 'BsmtUnfSF'), (0.008, 'BsmtFullBath'), (0.008, 'BsmtFinSF2'), (0.007, 'Condition1'), (0.006, '_SaleCondition_Normal'), (0.006, '_LotConfig_CulDSac'), (0.006, '_BsmtExposure_Gd'), (0.006, 'HeatingQC'), (0.006, 'FullBath'), (0.005, '_Neighborhood_NAmes'), (0.005, 'SimplFunctional'), (0.005, 'LotConfig'), (0.005, 'KitchenAbvGr'), (0.005, 'Fence'), (0.005, 'CentralAir'), (0.005, 'BsmtCond'), (0.004, '_SaleCondition_Family'), (0.004, '_Neighborhood_OldTown'), (0.004, '_GarageYrBltBin_YearBin7'), (0.004, '_ExterQual_Gd'), (0.004, 'MoSold'), (0.004, 'HighSeason'), (0.004, 'GarageCars'), (0.004, 'FireplaceQu'), (0.003, '_SaleCondition_Abnorml'), (0.003, '_NeighborhoodBin_2'), (0.003, '_MSSubClass_30'), (0.003, '_Functional_Typ'), (0.003, '_Exterior1st_MetalSd'), (0.003, '_ExterCond_Fa'), (0.003, '_Condition1_Feedr'), (0.003, 'TotRmsAbvGrd'), (0.003, 'SeasonSold'), (0.003, 'IsPavedDrive'), (0.003, 'HalfBath'), (0.003, 'GarageFinish'), (0.003, 'Foundation'), (0.003, 'EnclosedPorch'), (0.002, '_YearBuiltBin_YearBin4'), (0.002, '_Neighborhood_BrkSide'), (0.002, '_MoSold_6'), (0.002, '_MoSold_5'), (0.002, '_KitchenQual_Gd'), (0.002, '_Heating_Grav'), (0.002, '_Foundation_BrkTil'), (0.002, '_Exterior2nd_MetalSd'), (0.002, '_Exterior1st_Wd Sdng'), (0.002, '_ExterQual_Fa'), (0.002, '_ExterQual_Ex'), (0.002, '_BsmtQual_Ex'), (0.002, 'TimeSinceSold'), (0.002, 'SimplBsmtFinType1'), (0.002, 'SaleCondition_PriceDown'), (0.002, 'Neighborhood_Good'), (0.002, 'MasVnrArea'), (0.002, 'HouseStyle'), (0.002, 'GarageQual'), (0.002, 'Fireplaces'), (0.002, 'Exterior2nd'), (0.001, '_YearRemodAddBin_YearBin6'), (0.001, '_YearRemodAddBin_YearBin5'), (0.001, '_YearRemodAddBin_YearBin4'), (0.001, '_YearBuiltBin_YearBin2'), (0.001, '_PavedDrive_N'), (0.001, '_Neighborhood_IDOTRR'), (0.001, '_MasVnrType_BrkFace'), (0.001, '_MSZoning_RM'), (0.001, '_MSSubClass_90'), (0.001, '_LotConfig_Inside'), (0.001, '_LandSlope_Gtl'), (0.001, '_KitchenQual_Ex'), (0.001, '_HouseStyle_2.5Unf'), (0.001, '_HeatingQC_Gd'), (0.001, '_HeatingQC_Ex'), (0.001, '_GarageYrBltBin_YearBin4'), (0.001, '_GarageType_CarPort'), (0.001, '_GarageCond_TA'), (0.001, '_Functional_Mod'), (0.001, '_Exterior1st_Plywood'), (0.001, '_ExterQual_TA'), (0.001, '_ExterCond_TA'), (0.001, '_Condition1_RRAe'), (0.001, '_Condition1_Artery'), (0.001, '_BsmtFinType1_Unf'), (0.001, '_BsmtFinType1_LwQ'), (0.001, '_BsmtCond_Fa'), (0.001, '_BldgType_Duplex'), (0.001, '_Alley_Pave'), (0.001, '_Alley_Grvl'), (0.001, 'SimplKitchenQual'), (0.001, 'SimplHeatingQC'), (0.001, 'SimplExterQual'), (0.001, 'SaleType'), (0.001, 'MasVnrType'), (0.001, 'KitchenQual'), (0.001, 'IsRegularLotShape'), (0.001, 'HasWoodDeck'), (0.001, 'HasEnclosedPorch'), (0.001, 'GarageCond'), (0.001, 'ExterQual'), (0.001, 'ExterCond'), (0.001, 'BsmtQual'), (0.001, 'BedroomAbvGr'), (0.0, '_YearRemodAddBin_YearBin7'), (0.0, '_YearBuiltBin_YearBin7'), (0.0, '_YearBuiltBin_YearBin6'), (0.0, '_YearBuiltBin_YearBin5'), (0.0, '_YearBuiltBin_YearBin3'), (0.0, '_YearBuiltBin_YearBin1'), (0.0, '_Street_Pave'), (0.0, '_Street_Grvl'), (0.0, '_SaleType_WD'), (0.0, '_SaleType_Oth'), (0.0, '_SaleType_ConLw'), (0.0, '_SaleType_ConLI'), (0.0, '_SaleType_ConLD'), (0.0, '_SaleType_Con'), (0.0, '_SaleType_CWD'), (0.0, '_SaleType_COD'), (0.0, '_SaleCondition_Partial'), (0.0, '_SaleCondition_Alloca'), (0.0, '_SaleCondition_AdjLand'), (0.0, '_RoofStyle_Shed'), (0.0, '_RoofStyle_Mansard'), (0.0, '_RoofStyle_Hip'), (0.0, '_RoofStyle_Gambrel'), (0.0, '_RoofStyle_Gable'), (0.0, '_RoofStyle_Flat'), (0.0, '_RoofMatl_WdShngl'), (0.0, '_RoofMatl_WdShake'), (0.0, '_RoofMatl_Tar&Grv'), (0.0, '_RoofMatl_CompShg'), (0.0, '_PoolQC_None'), (0.0, '_PoolQC_Gd'), (0.0, '_PoolQC_Ex'), (0.0, '_PavedDrive_Y'), (0.0, '_PavedDrive_P'), (0.0, '_Neighborhood_Veenker'), (0.0, '_Neighborhood_Timber'), (0.0, '_Neighborhood_StoneBr'), (0.0, '_Neighborhood_Somerst'), (0.0, '_Neighborhood_SawyerW'), (0.0, '_Neighborhood_Sawyer'), (0.0, '_Neighborhood_SWISU'), (0.0, '_Neighborhood_NridgHt'), (0.0, '_Neighborhood_NoRidge'), (0.0, '_Neighborhood_NWAmes'), (0.0, '_Neighborhood_NPkVill'), (0.0, '_Neighborhood_Mitchel'), (0.0, '_Neighborhood_MeadowV'), (0.0, '_Neighborhood_Gilbert'), (0.0, '_Neighborhood_Edwards'), (0.0, '_Neighborhood_Crawfor'), (0.0, '_Neighborhood_CollgCr'), (0.0, '_Neighborhood_ClearCr'), (0.0, '_Neighborhood_BrDale'), (0.0, '_Neighborhood_Blueste'), (0.0, '_Neighborhood_Blmngtn'), (0.0, '_NeighborhoodBin_4'), (0.0, '_NeighborhoodBin_3'), (0.0, '_NeighborhoodBin_1'), (0.0, '_NeighborhoodBin_0'), (0.0, '_MoSold_9'), (0.0, '_MoSold_8'), (0.0, '_MoSold_7'), (0.0, '_MoSold_4'), (0.0, '_MoSold_3'), (0.0, '_MoSold_2'), (0.0, '_MoSold_12'), (0.0, '_MoSold_11'), (0.0, '_MoSold_10'), (0.0, '_MoSold_1'), (0.0, '_MiscFeature_Shed'), (0.0, '_MiscFeature_Othr'), (0.0, '_MiscFeature_None'), (0.0, '_MiscFeature_Gar2'), (0.0, '_MasVnrType_Stone'), (0.0, '_MasVnrType_None'), (0.0, '_MasVnrType_BrkCmn'), (0.0, '_MSZoning_RL'), (0.0, '_MSZoning_RH'), (0.0, '_MSZoning_FV'), (0.0, '_MSSubClass_85'), (0.0, '_MSSubClass_80'), (0.0, '_MSSubClass_75'), (0.0, '_MSSubClass_70'), (0.0, '_MSSubClass_60'), (0.0, '_MSSubClass_50'), (0.0, '_MSSubClass_45'), (0.0, '_MSSubClass_40'), (0.0, '_MSSubClass_20'), (0.0, '_MSSubClass_190'), (0.0, '_MSSubClass_180'), (0.0, '_MSSubClass_120'), (0.0, '_LotShape_Reg'), (0.0, '_LotShape_IR3'), (0.0, '_LotShape_IR2'), (0.0, '_LotShape_IR1'), (0.0, '_LotConfig_FR3'), (0.0, '_LotConfig_FR2'), (0.0, '_LotConfig_Corner'), (0.0, '_LandSlope_Sev'), (0.0, '_LandSlope_Mod'), (0.0, '_LandContour_Lvl'), (0.0, '_LandContour_Low'), (0.0, '_LandContour_HLS'), (0.0, '_LandContour_Bnk'), (0.0, '_KitchenQual_TA'), (0.0, '_KitchenQual_Fa'), (0.0, '_HouseStyle_SLvl'), (0.0, '_HouseStyle_SFoyer'), (0.0, '_HouseStyle_2Story'), (0.0, '_HouseStyle_1Story'), (0.0, '_HouseStyle_1.5Unf'), (0.0, '_HouseStyle_1.5Fin'), (0.0, '_Heating_Wall'), (0.0, '_Heating_GasW'), (0.0, '_Heating_GasA'), (0.0, '_HeatingQC_TA'), (0.0, '_HeatingQC_Po'), (0.0, '_HeatingQC_Fa'), (0.0, '_GarageYrBltBin_YearBin6'), (0.0, '_GarageYrBltBin_YearBin5'), (0.0, '_GarageYrBltBin_YearBin3'), (0.0, '_GarageYrBltBin_YearBin2'), (0.0, '_GarageYrBltBin_NoGarage'), (0.0, '_GarageType_None'), (0.0, '_GarageType_Detchd'), (0.0, '_GarageType_BuiltIn'), (0.0, '_GarageType_Basment'), (0.0, '_GarageType_Attchd'), (0.0, '_GarageType_2Types'), (0.0, '_GarageQual_TA'), (0.0, '_GarageQual_Po'), (0.0, '_GarageQual_None'), (0.0, '_GarageQual_Gd'), (0.0, '_GarageQual_Fa'), (0.0, '_GarageFinish_Unf'), (0.0, '_GarageFinish_RFn'), (0.0, '_GarageFinish_None'), (0.0, '_GarageFinish_Fin'), (0.0, '_GarageCond_Po'), (0.0, '_GarageCond_None'), (0.0, '_GarageCond_Gd'), (0.0, '_GarageCond_Fa'), (0.0, '_GarageCond_Ex'), (0.0, '_Functional_Sev'), (0.0, '_Functional_Min2'), (0.0, '_Functional_Min1'), (0.0, '_Functional_Maj2'), (0.0, '_Functional_Maj1'), (0.0, '_Foundation_Wood'), (0.0, '_Foundation_Stone'), (0.0, '_Foundation_Slab'), (0.0, '_Foundation_PConc'), (0.0, '_Foundation_CBlock'), (0.0, '_FireplaceQu_TA'), (0.0, '_FireplaceQu_Po'), (0.0, '_FireplaceQu_None'), (0.0, '_FireplaceQu_Gd'), (0.0, '_FireplaceQu_Fa'), (0.0, '_FireplaceQu_Ex'), (0.0, '_Fence_None'), (0.0, '_Fence_MnWw'), (0.0, '_Fence_MnPrv'), (0.0, '_Fence_GdWo'), (0.0, '_Fence_GdPrv'), (0.0, '_Exterior2nd_Wd Shng'), (0.0, '_Exterior2nd_Wd Sdng'), (0.0, '_Exterior2nd_VinylSd'), (0.0, '_Exterior2nd_Stucco'), (0.0, '_Exterior2nd_Stone'), (0.0, '_Exterior2nd_Plywood'), (0.0, '_Exterior2nd_ImStucc'), (0.0, '_Exterior2nd_HdBoard'), (0.0, '_Exterior2nd_CmentBd'), (0.0, '_Exterior2nd_CBlock'), (0.0, '_Exterior2nd_BrkFace'), (0.0, '_Exterior2nd_Brk Cmn'), (0.0, '_Exterior2nd_AsphShn'), (0.0, '_Exterior2nd_AsbShng'), (0.0, '_Exterior1st_WdShing'), (0.0, '_Exterior1st_VinylSd'), (0.0, '_Exterior1st_Stucco'), (0.0, '_Exterior1st_HdBoard'), (0.0, '_Exterior1st_CemntBd'), (0.0, '_Exterior1st_CBlock'), (0.0, '_Exterior1st_BrkComm'), (0.0, '_Exterior1st_AsphShn'), (0.0, '_Exterior1st_AsbShng'), (0.0, '_ExterCond_Po'), (0.0, '_ExterCond_Gd'), (0.0, '_ExterCond_Ex'), (0.0, '_Electrical_SBrkr'), (0.0, '_Electrical_FuseP'), (0.0, '_Electrical_FuseF'), (0.0, '_Electrical_FuseA'), (0.0, '_Condition2_PosA'), (0.0, '_Condition2_Norm'), (0.0, '_Condition2_Feedr'), (0.0, '_Condition2_Artery'), (0.0, '_Condition1_RRNn'), (0.0, '_Condition1_RRNe'), (0.0, '_Condition1_RRAn'), (0.0, '_Condition1_PosN'), (0.0, '_Condition1_PosA'), (0.0, '_BsmtQual_TA'), (0.0, '_BsmtQual_None'), (0.0, '_BsmtQual_Gd'), (0.0, '_BsmtQual_Fa'), (0.0, '_BsmtFinType2_Unf'), (0.0, '_BsmtFinType2_Rec'), (0.0, '_BsmtFinType2_None'), (0.0, '_BsmtFinType2_LwQ'), (0.0, '_BsmtFinType2_GLQ'), (0.0, '_BsmtFinType2_BLQ'), (0.0, '_BsmtFinType2_ALQ'), (0.0, '_BsmtFinType1_Rec'), (0.0, '_BsmtFinType1_None'), (0.0, '_BsmtFinType1_GLQ'), (0.0, '_BsmtFinType1_BLQ'), (0.0, '_BsmtFinType1_ALQ'), (0.0, '_BsmtExposure_None'), (0.0, '_BsmtExposure_No'), (0.0, '_BsmtExposure_Mn'), (0.0, '_BsmtExposure_Av'), (0.0, '_BsmtCond_TA'), (0.0, '_BsmtCond_Po'), (0.0, '_BsmtCond_None'), (0.0, '_BsmtCond_Gd'), (0.0, '_BldgType_TwnhsE'), (0.0, '_BldgType_Twnhs'), (0.0, '_BldgType_2fmCon'), (0.0, '_BldgType_1Fam'), (0.0, '_Alley_None'), (0.0, 'VeryNewHouse'), (0.0, 'SimplPoolQC'), (0.0, 'SimplGarageQual'), (0.0, 'SimplGarageCond'), (0.0, 'SimplFireplaceQu'), (0.0, 'SimplExterCond'), (0.0, 'SimplBsmtQual'), (0.0, 'SimplBsmtFinType2'), (0.0, 'SimplBsmtCond'), (0.0, 'RoofStyle'), (0.0, 'Remodeled'), (0.0, 'RecentRemodel'), (0.0, 'PoolQC'), (0.0, 'PoolArea'), (0.0, 'NewerDwelling'), (0.0, 'MiscVal'), (0.0, 'MSSubClass'), (0.0, 'LowQualFinSF'), (0.0, 'IsLandSlopeGentle'), (0.0, 'IsLandLevel'), (0.0, 'IsGarageDetached'), (0.0, 'IsElectricalSBrkr'), (0.0, 'HasShed'), (0.0, 'HasScreenPorch'), (0.0, 'HasOpenPorch'), (0.0, 'HasMasVnr'), (0.0, 'Has3SsnPorch'), (0.0, 'Has2ndFloor'), (0.0, 'BsmtHalfBath'), (0.0, 'BsmtFinType2'), (0.0, 'BoughtOffPlan'), (0.0, 'BldgType'), (0.0, 'BadHeating'), (0.0, '3SsnPorch')]\n" ] } ], "source": [ "from sklearn.ensemble import RandomForestRegressor\n", "import xgboost as xgb\n", "\n", "def feature_importance(df, target_name):\n", " # split variable dependante et indep\n", " X = np.array(df.drop([target_name], 1))\n", " Y = np.array(df[target_name])\n", " names = list(df.columns)\n", " \n", " rf = xgb.XGBRegressor(colsample_bytree=0.4,\n", " gamma=0.045, \n", " learning_rate=0.07,\n", " max_depth=20,\n", " min_child_weight=1.5,\n", " n_estimators=300, \n", " reg_alpha=0.65,\n", " reg_lambda=0.45,\n", " subsample=0.95)\n", " rf.fit(X, Y)\n", " print \"Features sorted by their score:\"\n", " a = sorted(zip(map(lambda x: round(x, 4), rf.feature_importances_), names),\n", " reverse=True)\n", "\n", " print a\n", " \n", " \n", " return a\n", "\n", "\n", "feature_importance = feature_importance(train_rania,'SalePrice')\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0699, 0.0629, 0.0509, 0.0419, 0.0379, 0.0359, 0.0349, 0.0279, 0.0279, 0.0259, 0.025, 0.025, 0.021, 0.02, 0.017, 0.016, 0.015, 0.015, 0.015, 0.015, 0.014, 0.014, 0.013, 0.012, 0.011, 0.01, 0.01, 0.009, 0.009, 0.009, 0.009, 0.009, 0.008, 0.008, 0.008, 0.008, 0.008, 0.007, 0.006, 0.006, 0.006, 0.006, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ['TotalArea', 'TotalArea1st2nd', 'OverallQual', 'GrLivArea', 'LotArea', 'OverallCond', 'TotalBsmtSF', 'YearBuilt', 'BsmtFinSF1', 'SimplOverallQual', 'GarageYrBlt', '1stFlrSF', 'GarageArea', 'Neighborhood', 'OpenPorchSF', 'Functional', 'YearsSinceRemodel', 'WoodDeckSF', 'SaleCondition', '2ndFlrSF', 'SimplOverallCond', 'BsmtFinType1', 'ScreenPorch', 'MSZoning', 'Age', 'YearRemodAdd', 'Exterior1st', '_SaleType_New', '_Exterior1st_BrkFace', 'NeighborhoodBin', 'LotFrontage', 'BsmtExposure', '_Condition1_Norm', 'YrSold', 'BsmtUnfSF', 'BsmtFullBath', 'BsmtFinSF2', 'Condition1', '_SaleCondition_Normal', '_LotConfig_CulDSac', '_BsmtExposure_Gd', 'HeatingQC', 'FullBath', '_Neighborhood_NAmes', 'SimplFunctional', 'LotConfig', 'KitchenAbvGr', 'Fence', 'CentralAir', 'BsmtCond', '_SaleCondition_Family', '_Neighborhood_OldTown', '_GarageYrBltBin_YearBin7', '_ExterQual_Gd', 'MoSold', 'HighSeason', 'GarageCars', 'FireplaceQu', '_SaleCondition_Abnorml', '_NeighborhoodBin_2', '_MSSubClass_30', '_Functional_Typ', '_Exterior1st_MetalSd', '_ExterCond_Fa', '_Condition1_Feedr', 'TotRmsAbvGrd', 'SeasonSold', 'IsPavedDrive', 'HalfBath', 'GarageFinish', 'Foundation', 'EnclosedPorch', '_YearBuiltBin_YearBin4', '_Neighborhood_BrkSide', '_MoSold_6', '_MoSold_5', '_KitchenQual_Gd', '_Heating_Grav', '_Foundation_BrkTil', '_Exterior2nd_MetalSd', '_Exterior1st_Wd Sdng', '_ExterQual_Fa', '_ExterQual_Ex', '_BsmtQual_Ex', 'TimeSinceSold', 'SimplBsmtFinType1', 'SaleCondition_PriceDown', 'Neighborhood_Good', 'MasVnrArea', 'HouseStyle', 'GarageQual', 'Fireplaces', 'Exterior2nd', '_YearRemodAddBin_YearBin6', '_YearRemodAddBin_YearBin5', '_YearRemodAddBin_YearBin4', '_YearBuiltBin_YearBin2', '_PavedDrive_N', '_Neighborhood_IDOTRR', '_MasVnrType_BrkFace', '_MSZoning_RM', '_MSSubClass_90', '_LotConfig_Inside', '_LandSlope_Gtl', '_KitchenQual_Ex', '_HouseStyle_2.5Unf', '_HeatingQC_Gd', '_HeatingQC_Ex', '_GarageYrBltBin_YearBin4', '_GarageType_CarPort', '_GarageCond_TA', '_Functional_Mod', '_Exterior1st_Plywood', '_ExterQual_TA', '_ExterCond_TA', '_Condition1_RRAe', '_Condition1_Artery', '_BsmtFinType1_Unf', '_BsmtFinType1_LwQ', '_BsmtCond_Fa', '_BldgType_Duplex', '_Alley_Pave', '_Alley_Grvl', 'SimplKitchenQual', 'SimplHeatingQC', 'SimplExterQual', 'SaleType', 'MasVnrType', 'KitchenQual', 'IsRegularLotShape', 'HasWoodDeck', 'HasEnclosedPorch', 'GarageCond', 'ExterQual', 'ExterCond', 'BsmtQual', 'BedroomAbvGr', '_YearRemodAddBin_YearBin7', '_YearBuiltBin_YearBin7', '_YearBuiltBin_YearBin6', '_YearBuiltBin_YearBin5', '_YearBuiltBin_YearBin3', '_YearBuiltBin_YearBin1', '_Street_Pave', '_Street_Grvl', '_SaleType_WD', '_SaleType_Oth', '_SaleType_ConLw', '_SaleType_ConLI', '_SaleType_ConLD', '_SaleType_Con', '_SaleType_CWD', '_SaleType_COD', '_SaleCondition_Partial', '_SaleCondition_Alloca', '_SaleCondition_AdjLand', '_RoofStyle_Shed', '_RoofStyle_Mansard', '_RoofStyle_Hip', '_RoofStyle_Gambrel', '_RoofStyle_Gable', '_RoofStyle_Flat', '_RoofMatl_WdShngl', '_RoofMatl_WdShake', '_RoofMatl_Tar&Grv', '_RoofMatl_CompShg', '_PoolQC_None', '_PoolQC_Gd', '_PoolQC_Ex', '_PavedDrive_Y', '_PavedDrive_P', '_Neighborhood_Veenker', '_Neighborhood_Timber', '_Neighborhood_StoneBr', '_Neighborhood_Somerst', '_Neighborhood_SawyerW', '_Neighborhood_Sawyer', '_Neighborhood_SWISU', '_Neighborhood_NridgHt', '_Neighborhood_NoRidge', '_Neighborhood_NWAmes', '_Neighborhood_NPkVill', '_Neighborhood_Mitchel', '_Neighborhood_MeadowV', '_Neighborhood_Gilbert', '_Neighborhood_Edwards', '_Neighborhood_Crawfor', '_Neighborhood_CollgCr', '_Neighborhood_ClearCr', '_Neighborhood_BrDale', '_Neighborhood_Blueste', '_Neighborhood_Blmngtn', '_NeighborhoodBin_4', '_NeighborhoodBin_3', '_NeighborhoodBin_1', '_NeighborhoodBin_0', '_MoSold_9', '_MoSold_8', '_MoSold_7', '_MoSold_4', '_MoSold_3', '_MoSold_2', '_MoSold_12', '_MoSold_11', '_MoSold_10', '_MoSold_1', '_MiscFeature_Shed', '_MiscFeature_Othr', '_MiscFeature_None', '_MiscFeature_Gar2', '_MasVnrType_Stone', '_MasVnrType_None', '_MasVnrType_BrkCmn', '_MSZoning_RL', '_MSZoning_RH', '_MSZoning_FV', '_MSSubClass_85', '_MSSubClass_80', '_MSSubClass_75', '_MSSubClass_70', '_MSSubClass_60', '_MSSubClass_50', '_MSSubClass_45', '_MSSubClass_40', '_MSSubClass_20', '_MSSubClass_190', '_MSSubClass_180', '_MSSubClass_120', '_LotShape_Reg', '_LotShape_IR3', '_LotShape_IR2', '_LotShape_IR1', '_LotConfig_FR3', '_LotConfig_FR2', '_LotConfig_Corner', '_LandSlope_Sev', '_LandSlope_Mod', '_LandContour_Lvl', '_LandContour_Low', '_LandContour_HLS', '_LandContour_Bnk', '_KitchenQual_TA', '_KitchenQual_Fa', '_HouseStyle_SLvl', '_HouseStyle_SFoyer', '_HouseStyle_2Story', '_HouseStyle_1Story', '_HouseStyle_1.5Unf', '_HouseStyle_1.5Fin', '_Heating_Wall', '_Heating_GasW', '_Heating_GasA', '_HeatingQC_TA', '_HeatingQC_Po', '_HeatingQC_Fa', '_GarageYrBltBin_YearBin6', '_GarageYrBltBin_YearBin5', '_GarageYrBltBin_YearBin3', '_GarageYrBltBin_YearBin2', '_GarageYrBltBin_NoGarage', '_GarageType_None', '_GarageType_Detchd', '_GarageType_BuiltIn', '_GarageType_Basment', '_GarageType_Attchd', '_GarageType_2Types', '_GarageQual_TA', '_GarageQual_Po', '_GarageQual_None', '_GarageQual_Gd', '_GarageQual_Fa', '_GarageFinish_Unf', '_GarageFinish_RFn', '_GarageFinish_None', '_GarageFinish_Fin', '_GarageCond_Po', '_GarageCond_None', '_GarageCond_Gd', '_GarageCond_Fa', '_GarageCond_Ex', '_Functional_Sev', '_Functional_Min2', '_Functional_Min1', '_Functional_Maj2', '_Functional_Maj1', '_Foundation_Wood', '_Foundation_Stone', '_Foundation_Slab', '_Foundation_PConc', '_Foundation_CBlock', '_FireplaceQu_TA', '_FireplaceQu_Po', '_FireplaceQu_None', '_FireplaceQu_Gd', '_FireplaceQu_Fa', '_FireplaceQu_Ex', '_Fence_None', '_Fence_MnWw', '_Fence_MnPrv', '_Fence_GdWo', '_Fence_GdPrv', '_Exterior2nd_Wd Shng', '_Exterior2nd_Wd Sdng', '_Exterior2nd_VinylSd', '_Exterior2nd_Stucco', '_Exterior2nd_Stone', '_Exterior2nd_Plywood', '_Exterior2nd_ImStucc', '_Exterior2nd_HdBoard', '_Exterior2nd_CmentBd', '_Exterior2nd_CBlock', '_Exterior2nd_BrkFace', '_Exterior2nd_Brk Cmn', '_Exterior2nd_AsphShn', '_Exterior2nd_AsbShng', '_Exterior1st_WdShing', '_Exterior1st_VinylSd', '_Exterior1st_Stucco', '_Exterior1st_HdBoard', '_Exterior1st_CemntBd', '_Exterior1st_CBlock', '_Exterior1st_BrkComm', '_Exterior1st_AsphShn', '_Exterior1st_AsbShng', '_ExterCond_Po', '_ExterCond_Gd', '_ExterCond_Ex', '_Electrical_SBrkr', '_Electrical_FuseP', '_Electrical_FuseF', '_Electrical_FuseA', '_Condition2_PosA', '_Condition2_Norm', '_Condition2_Feedr', '_Condition2_Artery', '_Condition1_RRNn', '_Condition1_RRNe', '_Condition1_RRAn', '_Condition1_PosN', '_Condition1_PosA', '_BsmtQual_TA', '_BsmtQual_None', '_BsmtQual_Gd', '_BsmtQual_Fa', '_BsmtFinType2_Unf', '_BsmtFinType2_Rec', '_BsmtFinType2_None', '_BsmtFinType2_LwQ', '_BsmtFinType2_GLQ', '_BsmtFinType2_BLQ', '_BsmtFinType2_ALQ', '_BsmtFinType1_Rec', '_BsmtFinType1_None', '_BsmtFinType1_GLQ', '_BsmtFinType1_BLQ', '_BsmtFinType1_ALQ', '_BsmtExposure_None', '_BsmtExposure_No', '_BsmtExposure_Mn', '_BsmtExposure_Av', '_BsmtCond_TA', '_BsmtCond_Po', '_BsmtCond_None', '_BsmtCond_Gd', '_BldgType_TwnhsE', '_BldgType_Twnhs', '_BldgType_2fmCon', '_BldgType_1Fam', '_Alley_None', 'VeryNewHouse', 'SimplPoolQC', 'SimplGarageQual', 'SimplGarageCond', 'SimplFireplaceQu', 'SimplExterCond', 'SimplBsmtQual', 'SimplBsmtFinType2', 'SimplBsmtCond', 'RoofStyle', 'Remodeled', 'RecentRemodel', 'PoolQC', 'PoolArea', 'NewerDwelling', 'MiscVal', 'MSSubClass', 'LowQualFinSF', 'IsLandSlopeGentle', 'IsLandLevel', 'IsGarageDetached', 'IsElectricalSBrkr', 'HasShed', 'HasScreenPorch', 'HasOpenPorch', 'HasMasVnr', 'Has3SsnPorch', 'Has2ndFloor', 'BsmtHalfBath', 'BsmtFinType2', 'BoughtOffPlan', 'BldgType', 'BadHeating', '3SsnPorch']\n" ] } ], "source": [ "S = []\n", "l=[]\n", "for i in range(0, len(feature_importance)):\n", " S.append(feature_importance[i][0])\n", " l.append(feature_importance[i][1])\n", " \n", "print S , l" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "% matplotlib inline\n", "slices_hours = S\n", "activities = l\n", "colors = ['r', 'g']\n", "\n", "plt.pie(slices_hours, labels=activities, colors=colors, startangle=90, autopct='%.1f%%')\n", "plt.title('feature importance')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notre fonction revoit une liste des carateristiques et leurs score associé" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Définir une fonction pour ne garder dans la dataset que les variables qui expliquent à 95% notre variable cible SalePrice." ] }, { "cell_type": "code", "execution_count": 252, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "['TotalArea',\n", " 'TotalArea1st2nd',\n", " 'OverallQual',\n", " 'GrLivArea',\n", " 'LotArea',\n", " 'OverallCond',\n", " 'TotalBsmtSF',\n", " 'YearBuilt',\n", " 'BsmtFinSF1',\n", " 'SimplOverallQual',\n", " 'GarageYrBlt',\n", " '1stFlrSF',\n", " 'GarageArea',\n", " 'Neighborhood',\n", " 'OpenPorchSF',\n", " 'Functional',\n", " 'YearsSinceRemodel',\n", " 'WoodDeckSF',\n", " 'SaleCondition',\n", " '2ndFlrSF',\n", " 'SimplOverallCond',\n", " 'BsmtFinType1',\n", " 'ScreenPorch',\n", " 'MSZoning',\n", " 'Age',\n", " 'YearRemodAdd',\n", " 'Exterior1st',\n", " '_SaleType_New',\n", " '_Exterior1st_BrkFace',\n", " 'NeighborhoodBin',\n", " 'LotFrontage',\n", " 'BsmtExposure',\n", " '_Condition1_Norm',\n", " 'YrSold',\n", " 'BsmtUnfSF',\n", " 'BsmtFullBath',\n", " 'BsmtFinSF2',\n", " 'Condition1',\n", " '_SaleCondition_Normal',\n", " '_LotConfig_CulDSac',\n", " '_BsmtExposure_Gd',\n", " 'HeatingQC',\n", " 'FullBath',\n", " '_Neighborhood_NAmes',\n", " 'SimplFunctional',\n", " 'LotConfig',\n", " 'KitchenAbvGr',\n", " 'Fence',\n", " 'CentralAir',\n", " 'BsmtCond',\n", " '_SaleCondition_Family',\n", " '_Neighborhood_OldTown',\n", " '_GarageYrBltBin_YearBin7',\n", " '_ExterQual_Gd',\n", " 'MoSold',\n", " 'HighSeason',\n", " 'GarageCars',\n", " 'FireplaceQu',\n", " '_SaleCondition_Abnorml',\n", " '_NeighborhoodBin_2',\n", " '_MSSubClass_30',\n", " '_Functional_Typ',\n", " '_Exterior1st_MetalSd',\n", " '_ExterCond_Fa',\n", " '_Condition1_Feedr',\n", " 'TotRmsAbvGrd',\n", " 'SeasonSold']" ] }, "execution_count": 252, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_important_features(feature_importance):\n", " s,i=0,0 \n", " l=[]\n", " while s <= 0.9:\n", " s+=feature_importance[i][0]\n", " l.append(feature_importance[i][1])\n", " i+=1\n", " \n", " return l\n", "get_important_features(feature_importance)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Il s'avère que la méthode de feature selection ne donne pas le meilleur RMSE " ] }, { "cell_type": "code", "execution_count": 253, "metadata": { "scrolled": true }, "outputs": [], "source": [ "\n", "train_df_munged=train_df_munged[get_important_features(feature_importance)]\n", "test_df_munged=test_df_munged[get_important_features(feature_importance)]" ] }, { "cell_type": "code", "execution_count": 254, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1459" ] }, "execution_count": 254, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(test_df_munged)" ] }, { "cell_type": "code", "execution_count": 255, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1456" ] }, "execution_count": 255, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(train_df_munged)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## On a decidé de travailler avec le modèle extreme gradient boosting , et afin de pouvoir réduire l'overfitting, il est necessaire d'optimiser nos hyperparamètres, n_estimators et le learning rate." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('XGBoost score on training set: ', 0.0775006584943539)\n" ] } ], "source": [ "\n", "import xgboost as xgb\n", "\n", "regr = xgb.XGBRegressor(\n", " colsample_bytree=0.2,\n", " gamma=0.0,\n", " learning_rate=0.01,\n", " max_depth=4,\n", " min_child_weight=1.5,\n", " n_estimators=7200, \n", " reg_alpha=0.9,\n", " reg_lambda=0.6,\n", " subsample=0.2,\n", " seed=42,\n", " silent=1)\n", "\n", "regr.fit(train_df_munged, label_df)\n", "y_pred_x= regr.predict(train_df_munged)\n", "y_test = label_df\n", "print(\"XGBoost score on training set: \", rmse(y_test, y_pred_x))\n", "\n", "y_pred_xgb = regr.predict(test_df_munged)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Afin de réduire l'overfitting il est important d'utiliser une régularisation l1. \n", "On a d'abord trouvé notre alpha pour tuner notre modèle lasso avec la cross validation en utillisant regr.alpha_ avec le LassoCV , on a trouvé le meilleure alpha = 0.00045979040927269187 " ] }, { "cell_type": "code", "execution_count": 257, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Lasso score on training set: ', 0.10719957787361478)\n", "('XGBoost and lasso score on training set: ', 0.09166168987455008)\n" ] } ], "source": [ "\n", "from sklearn.linear_model import Lasso , ElasticNet , RidgeCV ,LassoCV\n", "\n", "\n", "\n", "alpha = 0.00045979040927269187\n", "#regr = ElasticNet(alpha=best_alpha, max_iter=5000)\n", "regr = Lasso(alpha=alpha, max_iter=50000)\n", "#regr = LassoCV(cv=5 , random_state = 0)\n", "# maintenant à l'aide de la fonction regr.alpha_ on trouve notre meilleure alpha\n", "# print regr.alpha_ \n", "regr.fit(train_df_munged, label_df)\n", "y_pred_l = regr.predict(train_df_munged)\n", "y_test = label_df\n", "print(\"Lasso score on training set: \", rmse(y_test, y_pred_l))\n", "\n", "y_pred_lasso = regr.predict(test_df_munged)\n", "\n", "y_pred = (y_pred_xgb + 2*y_pred_lasso) / 3\n", "\n", "y_pred_reg=(y_pred_l+y_pred_x)/2\n", "\n", "print(\"XGBoost and lasso score on training set: \", rmse(y_test, y_pred_reg))\n", "\n" ] }, { "cell_type": "code", "execution_count": 247, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([11.69363719, 11.99178533, 12.1155978 , ..., 12.04485023,\n", " 11.71367972, 12.27378401])" ] }, "execution_count": 247, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred" ] }, { "cell_type": "code", "execution_count": 248, "metadata": {}, "outputs": [], "source": [ "\n", "y_pred = np.exp(y_pred)\n", "\n", "pred_df = pd.DataFrame(y_pred, index=test_df[\"Id\"], columns=[\"SalePrice\"])\n", "pred_df.to_csv('submission_final.csv', header=True, index_label='Id')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Cette méthode ci-dessus nous a donné le meilleure classement kaggle (classée 730 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Une autre approche PCA : Réduction des dimensions avec analyse des composantes principales" ] }, { "cell_type": "code", "execution_count": 227, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1456, 81) (1459, 81)\n", "[0.17306682 0.05350351 0.04551891 0.04077671 0.03522671 0.03188554\n", " 0.02637321 0.02559108 0.02147338 0.01973191 0.01901887 0.01823768\n", " 0.01787471 0.01661857 0.01546179 0.01502202 0.01441686 0.01393313\n", " 0.01332003 0.01323807 0.01288978 0.01203568 0.01181044 0.01140744\n", " 0.01118718 0.01035713 0.01001575 0.0098776 0.0092907 0.00878535\n", " 0.008439 0.00842775 0.00813179 0.00794484 0.00776447 0.00769484\n", " 0.00697672 0.00689752 0.00650489 0.00635159 0.00591561 0.00582511\n", " 0.00570146 0.00563057 0.005454 0.00536632 0.00498093 0.00480348\n", " 0.00457275 0.00444541 0.00419026 0.00408842 0.00399742 0.00390671\n", " 0.00384323 0.00363738 0.00354214 0.00348336 0.00345371 0.00330227\n", " 0.00316736 0.00310801 0.00286455 0.00263689 0.00260906 0.00254589\n", " 0.00251879 0.00241836 0.00226767 0.00223015 0.00217991 0.00205414\n", " 0.00188234 0.00187696 0.00182646 0.00176497 0.00171506 0.00162185\n", " 0.00146983 0.00144504 0.00140049]\n" ] } ], "source": [ "from sklearn.decomposition import PCA\n", "\n", "pca = PCA(n_components=81)\n", "\n", "principalComponents_train = pca.fit_transform(train_df_munged.values)\n", "principalComponents_test = pca.fit_transform(test_df_munged.values)\n", "\n", "print principalComponents_train.shape , principalComponents_test.shape\n", "\n", "print pca.explained_variance_ratio_" ] }, { "cell_type": "code", "execution_count": 228, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...71727374757677787980
0-3.571408-4.217402-0.0968840.6752881.154890-1.069236-1.5587190.0131681.0204180.989119...-0.100967-0.041574-0.358336-0.0551750.0171220.207910-1.3608380.2563760.386902-1.276110
1-0.546354-3.3020501.2536711.575666-0.0995950.249438-3.340523-0.210844-0.295450-2.227293...0.5676250.068927-0.248843-0.436556-0.593624-0.1975270.3247731.0042370.7015080.540738
22.0662610.577370-0.162887-1.4645580.6653341.597267-2.6196410.3375101.969698-2.007115...0.299870-0.2282850.455916-0.4141090.2007680.584384-0.590418-0.1359590.208522-0.259273
33.2847820.9471400.266234-1.3251360.7891801.760537-2.4632031.0953700.293953-1.888923...-0.462022-0.036001-0.151523-0.825204-1.1610410.199083-0.0670010.082895-0.2827980.074648
43.4380480.519988-2.8185541.7266791.4769280.5097753.0658411.3246580.8634520.465918...0.347889-0.243664-0.2729380.949566-0.488547-0.1228120.1838120.0247560.0485870.609656
51.2814331.8129800.221018-1.8371431.4288821.687435-2.379585-0.9672661.941217-1.342395...0.466007-0.6725670.3980920.6032820.1908660.249073-0.523221-0.0558090.3465170.568942
60.902267-2.399136-2.115308-0.6932760.048562-0.987465-4.3942003.2194770.387779-0.711773...0.196744-0.0562280.0681100.738193-0.668812-0.840492-0.1233870.356062-0.1543480.514361
71.3758682.242442-0.115986-1.6923801.7648081.192684-2.148762-1.0951291.783972-1.414356...-0.1751760.1382910.477080-0.015531-0.3722210.753140-0.4569030.1477110.1936310.051897
81.696973-2.271006-1.3625711.2475660.2419220.081514-0.4678800.6471501.175437-2.704801...0.116171-0.4200310.863038-0.582007-0.364829-0.052150-0.487183-0.4440470.4646640.206419
9-2.952468-5.020262-1.7400461.2468801.5716590.155912-1.8101700.6460161.707347-1.224332...0.3894720.160206-0.719237-0.064693-0.045957-0.2917440.2407110.3734220.385224-0.281284
104.321691-0.757778-4.5167641.126278-0.0394611.0374701.4209221.0343251.486415-1.205210...0.0873470.851269-0.525856-1.1854150.126912-0.196575-0.178727-0.101474-0.2154960.971609
11-4.8250660.964478-5.167970-1.1944392.6656644.0980092.603604-1.046112-0.549774-0.758297...0.053454-0.0018910.053035-0.036076-0.4235480.3203880.013080-0.241740-0.128468-0.159114
12-4.9615681.224637-4.692107-1.5315972.5959434.6714301.970635-0.809619-1.046293-0.811617...0.2883280.029797-0.0759080.219617-0.4456190.161271-0.052330-0.137974-0.012336-0.029840
13-1.6115270.952107-3.159147-1.5477561.2720574.5046471.6311620.446884-0.555603-0.889731...0.612924-0.183100-0.694455-0.385986-0.239363-0.555254-0.1784170.056418-0.2295630.033947
14-2.5493370.381003-5.3692770.8123852.8142790.4952621.650796-0.5553430.408633-0.631893...-0.4891970.508454-0.6519480.267522-0.232565-0.722788-0.4345720.364437-0.076787-0.660350
158.5704373.8269422.491645-1.096795-0.222025-1.6783650.614884-1.4562940.092958-0.688970...-1.3482990.0148390.0329250.5083020.706810-0.135827-0.326246-0.436140-0.2958240.143156
165.9305861.7888951.0846931.3292541.584867-4.7239350.157357-2.093460-0.522564-0.366415...0.0827040.024983-0.848827-0.1242260.6389470.4941050.381577-0.0883540.0622830.479529
177.613512-0.3613671.2182151.161027-0.311483-1.0607290.0892690.515380-1.058064-2.805984...-0.2722540.5565750.3026310.0222300.335118-0.402222-0.486461-0.513862-0.317549-0.436709
186.924107-0.3929551.6598011.340487-0.712389-0.5691480.7102500.058276-1.022114-2.700836...-0.2482170.5911910.4917970.6899170.545323-0.1636020.365955-0.360923-0.535388-0.224825
1910.098874-1.6096193.7144821.318342-3.1996220.1786661.9101731.847858-1.087345-2.975739...-0.354729-0.0645320.4478530.5850640.0815820.166207-0.499759-0.057924-0.062749-0.227839
207.8894000.9024211.585077-0.532956-0.9309841.431634-0.6136870.810848-0.169543-2.690040...-0.022755-0.531255-0.074676-0.469575-0.4614100.0227040.1704030.187914-0.0565390.015032
215.8180771.133278-2.2861891.4148410.6433290.3711022.1044961.7509810.368637-2.876713...0.0391460.1330720.0017350.026567-0.2955980.556007-0.158974-0.360575-0.1946430.364726
223.1127980.7414240.0297490.8904711.768979-2.913522-2.928529-0.7357532.456838-2.772603...-0.190516-0.463093-0.108674-0.1072590.035557-0.307213-0.1851580.1473680.1348850.077623
233.7130591.212736-4.8151651.5557612.0105240.5473810.6956011.2597970.848258-2.753625...-0.332383-0.3874170.243933-0.131516-0.466681-0.506532-0.825775-0.174574-0.136241-0.056661
243.6889102.099528-1.280768-1.6568560.8117311.328394-1.3778261.6236491.459243-1.792369...0.3513830.4552460.396243-0.5063680.088617-0.1307020.3984010.069513-0.239858-0.283752
254.1253613.406827-0.377473-1.9871861.2389040.268964-1.8759820.0601852.210729-1.820533...-0.1066200.215100-0.017058-0.037351-0.331751-0.0298060.0987040.463819-0.056671-0.213203
267.2109061.6670883.119866-1.239791-0.1812041.350606-0.747845-0.2408060.127347-0.195709...0.7288890.039739-0.811232-0.2015480.6765780.116242-0.4745540.439685-0.450886-0.053746
275.1306300.7061300.9942560.3713231.014005-2.0888220.1339150.763981-0.237437-3.013127...0.2793940.280029-0.1894910.414837-0.3548230.4877980.8341790.496764-0.165724-0.585869
284.3039622.070120-1.0401111.9490732.104987-5.7764300.706366-1.5633320.367665-0.162681...0.355476-0.141818-0.593568-0.0829300.2418440.7820370.324128-0.2341070.291872-0.000866
295.256609-1.0850220.4797971.8035060.199565-1.4150350.7474112.2635050.470070-0.551530...0.2115730.201462-0.038096-0.192130-0.256893-0.003946-0.1095130.042094-0.422997-0.097007
..................................................................
1429-7.674789-0.746384-1.468366-1.576767-0.045576-2.9824452.285495-0.5538000.908401-1.094669...0.611812-0.6571430.723753-0.7445180.3471780.890671-0.0305710.7828640.3865190.273053
1430-2.6080580.8667490.466857-1.5546980.6740570.690918-0.451563-2.355508-1.0216260.063815...0.369646-0.4257380.585698-0.3950251.1299400.5832440.3261880.1754090.412119-0.065991
1431-12.2891747.1677195.4852309.2648411.911924-2.026046-0.6895775.2421080.7494701.980645...-0.221882-0.8865690.0605970.8372140.2490850.153147-0.3838380.2613050.4557360.368445
1432-7.8012446.3974131.0162016.697518-4.3395193.270763-1.042576-2.6798640.2490472.000653...-0.2042611.9303951.0079821.0091320.618974-0.177792-0.351494-0.160814-0.5536270.273899
1433-9.8895365.647711-0.2810875.820971-3.652283-0.461225-0.6925140.4189911.4544911.000592...-0.645730-0.547031-0.002244-0.5794130.2656590.662280-0.261823-0.5786320.0127580.219745
14347.549972-1.236786-1.0374202.991329-1.0874620.9561896.8905673.629163-1.1119174.000372...0.5982340.396919-0.138507-0.282681-0.329524-0.5929150.263645-0.559308-0.2669610.189954
14356.396506-1.824362-1.5346122.287754-1.2303902.5098715.9583563.902786-0.4956493.177548...0.6656610.1099630.181271-0.027954-1.064386-0.4360220.1732970.491972-0.092010-0.457244
14361.476664-3.7834271.3645501.448988-0.4683121.128394-0.657175-1.1090970.7522500.475294...-0.1571340.285330-0.470829-1.105181-0.007233-0.0630850.1415800.134747-0.1181520.111923
1437-2.1395560.1914930.9181380.8670751.2034522.0842850.258720-3.391694-2.1921481.107309...-0.6125510.068193-0.070276-0.565874-0.1403580.045493-0.0013700.395411-0.5948560.435343
14383.7162601.058527-0.3565420.9699231.202870-2.943756-1.422487-1.3459310.889342-0.560572...-0.1047360.2064870.0024690.5437450.3832300.2624750.135427-0.036920-0.4139560.135580
1439-1.289162-2.7726790.0573231.1784320.7098591.916798-1.048704-0.982104-1.367802-0.602290...-0.964134-0.8293010.750209-0.607912-0.543229-0.3314060.1625740.200570-0.0806030.104266
14400.349879-5.3263634.4864852.101952-2.1484300.9947281.446286-0.4427740.6108981.563486...0.2863840.627941-0.612390-0.320304-0.141101-0.168753-0.3245690.4021970.055756-0.409257
14414.137891-1.654350-2.5907442.157208-0.237197-2.119241-1.320260-0.5543411.7298361.667017...0.0355400.5767710.188060-1.154449-0.438129-1.1758090.349179-0.4561840.078855-0.260344
14428.425175-0.7649631.1959531.271985-2.225826-2.9195761.569535-1.651117-1.5964161.128666...-0.0829440.377969-0.410938-0.5807630.175259-0.073001-1.0167370.0089200.059395-0.118930
14438.729685-0.4624631.7026252.242895-1.170914-2.4812691.704481-0.250210-2.6072301.366801...-0.3051910.574087-0.282286-0.305941-0.0010690.238567-0.692579-0.416856-0.0140400.131480
1444-8.6654872.2685209.8965474.5618286.719017-0.5533880.0759781.4864622.032290-0.743899...-0.5964170.7651390.2857640.483399-0.136124-0.802959-0.7847550.135701-1.102130-0.333962
14452.669675-1.256503-1.7497430.9461150.5944072.9499970.4388731.301415-3.2882601.546020...0.0321860.8231490.339228-0.9062230.4478350.446572-0.1368510.8844340.1485640.797389
1446-2.9957471.844065-3.884022-1.5890292.0534994.2347891.373731-0.4388120.4974791.142762...-0.386708-0.237669-0.0663620.0886340.543522-0.4318330.759654-0.8048570.984945-0.296802
1447-1.677637-1.789262-1.8546490.5160051.232536-2.340343-1.6997020.069796-0.3417681.390096...-0.1598120.372550-0.3138820.2654380.293793-0.0126200.8215690.1593190.124801-0.161088
1448-1.675328-1.0816921.4508300.8484551.2574062.248908-0.316071-3.060447-1.555588-0.556073...0.446194-0.1900060.041251-0.5363620.271315-0.4724820.1743580.262349-0.196320-0.218851
1449-7.1735952.612959-8.6140756.626529-2.7740782.7975590.9310671.888091-0.3124771.400954...1.0527210.131534-0.1133430.3880100.359438-0.6120390.313565-0.062499-0.008249-0.654785
1450-5.6382111.974901-5.211407-0.5994622.6478604.0768961.952184-1.321766-0.1519741.461485...0.2963640.220726-0.175633-0.457835-0.301047-0.381445-0.1066290.1405270.222009-0.439559
1451-0.947384-4.4140060.9982301.193897-1.5920121.234450-1.274806-1.1872971.1748280.808084...-0.8965590.228073-0.522623-0.4393180.1137420.6274910.150909-0.762510-0.5825500.309468
1452-6.0351011.417855-4.462168-0.5251392.4579284.2683282.212083-2.029857-0.5661502.182272...0.9567900.477352-0.3237050.1007100.111878-0.578999-0.1426910.3394810.132928-0.765991
1453-7.6974805.820093-5.7417423.829420-2.3752913.657603-0.865277-0.324034-0.2364413.020406...1.0138250.036880-0.1809550.0442600.189504-0.3295420.2344410.280480-0.083097-0.512482
1454-7.6639945.944361-6.0539542.975641-2.6143902.661112-1.1601930.672375-0.9948493.067827...1.2004230.0152990.3512530.0141810.2497750.2534360.0761580.2526430.035329-0.498446
1455-5.5586531.804582-4.295045-0.5765122.3749834.3538051.854174-1.943181-0.0949011.529385...1.1894020.223900-0.094355-0.1379940.395592-0.539554-0.2201250.4726960.104663-0.649613
1456-1.076227-2.9524912.064628-0.169414-0.649924-1.313815-1.6553180.827224-1.1892350.247565...-0.600603-0.024148-0.821089-0.099006-0.180737-0.2829850.3929910.0212930.086039-0.106162
1457-3.5493932.269073-3.4609526.476886-4.5530171.464801-5.0361491.0601661.2789241.599953...-0.3198330.1882140.021533-0.3462340.3123050.409725-0.717844-0.019903-0.3989430.582320
14583.5125630.8947781.063317-1.1552030.5216242.729664-0.742897-0.847261-0.1748251.533367...0.0227660.446954-0.7098200.567854-1.018927-0.213307-0.5920560.371122-0.2835050.640815
\n", "

1459 rows × 81 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 -3.571408 -4.217402 -0.096884 0.675288 1.154890 -1.069236 -1.558719 \n", "1 -0.546354 -3.302050 1.253671 1.575666 -0.099595 0.249438 -3.340523 \n", "2 2.066261 0.577370 -0.162887 -1.464558 0.665334 1.597267 -2.619641 \n", "3 3.284782 0.947140 0.266234 -1.325136 0.789180 1.760537 -2.463203 \n", "4 3.438048 0.519988 -2.818554 1.726679 1.476928 0.509775 3.065841 \n", "5 1.281433 1.812980 0.221018 -1.837143 1.428882 1.687435 -2.379585 \n", "6 0.902267 -2.399136 -2.115308 -0.693276 0.048562 -0.987465 -4.394200 \n", "7 1.375868 2.242442 -0.115986 -1.692380 1.764808 1.192684 -2.148762 \n", "8 1.696973 -2.271006 -1.362571 1.247566 0.241922 0.081514 -0.467880 \n", "9 -2.952468 -5.020262 -1.740046 1.246880 1.571659 0.155912 -1.810170 \n", "10 4.321691 -0.757778 -4.516764 1.126278 -0.039461 1.037470 1.420922 \n", "11 -4.825066 0.964478 -5.167970 -1.194439 2.665664 4.098009 2.603604 \n", "12 -4.961568 1.224637 -4.692107 -1.531597 2.595943 4.671430 1.970635 \n", "13 -1.611527 0.952107 -3.159147 -1.547756 1.272057 4.504647 1.631162 \n", "14 -2.549337 0.381003 -5.369277 0.812385 2.814279 0.495262 1.650796 \n", "15 8.570437 3.826942 2.491645 -1.096795 -0.222025 -1.678365 0.614884 \n", "16 5.930586 1.788895 1.084693 1.329254 1.584867 -4.723935 0.157357 \n", "17 7.613512 -0.361367 1.218215 1.161027 -0.311483 -1.060729 0.089269 \n", "18 6.924107 -0.392955 1.659801 1.340487 -0.712389 -0.569148 0.710250 \n", "19 10.098874 -1.609619 3.714482 1.318342 -3.199622 0.178666 1.910173 \n", "20 7.889400 0.902421 1.585077 -0.532956 -0.930984 1.431634 -0.613687 \n", "21 5.818077 1.133278 -2.286189 1.414841 0.643329 0.371102 2.104496 \n", "22 3.112798 0.741424 0.029749 0.890471 1.768979 -2.913522 -2.928529 \n", "23 3.713059 1.212736 -4.815165 1.555761 2.010524 0.547381 0.695601 \n", "24 3.688910 2.099528 -1.280768 -1.656856 0.811731 1.328394 -1.377826 \n", "25 4.125361 3.406827 -0.377473 -1.987186 1.238904 0.268964 -1.875982 \n", "26 7.210906 1.667088 3.119866 -1.239791 -0.181204 1.350606 -0.747845 \n", "27 5.130630 0.706130 0.994256 0.371323 1.014005 -2.088822 0.133915 \n", "28 4.303962 2.070120 -1.040111 1.949073 2.104987 -5.776430 0.706366 \n", "29 5.256609 -1.085022 0.479797 1.803506 0.199565 -1.415035 0.747411 \n", "... ... ... ... ... ... ... ... \n", "1429 -7.674789 -0.746384 -1.468366 -1.576767 -0.045576 -2.982445 2.285495 \n", "1430 -2.608058 0.866749 0.466857 -1.554698 0.674057 0.690918 -0.451563 \n", "1431 -12.289174 7.167719 5.485230 9.264841 1.911924 -2.026046 -0.689577 \n", "1432 -7.801244 6.397413 1.016201 6.697518 -4.339519 3.270763 -1.042576 \n", "1433 -9.889536 5.647711 -0.281087 5.820971 -3.652283 -0.461225 -0.692514 \n", "1434 7.549972 -1.236786 -1.037420 2.991329 -1.087462 0.956189 6.890567 \n", "1435 6.396506 -1.824362 -1.534612 2.287754 -1.230390 2.509871 5.958356 \n", "1436 1.476664 -3.783427 1.364550 1.448988 -0.468312 1.128394 -0.657175 \n", "1437 -2.139556 0.191493 0.918138 0.867075 1.203452 2.084285 0.258720 \n", "1438 3.716260 1.058527 -0.356542 0.969923 1.202870 -2.943756 -1.422487 \n", "1439 -1.289162 -2.772679 0.057323 1.178432 0.709859 1.916798 -1.048704 \n", "1440 0.349879 -5.326363 4.486485 2.101952 -2.148430 0.994728 1.446286 \n", "1441 4.137891 -1.654350 -2.590744 2.157208 -0.237197 -2.119241 -1.320260 \n", "1442 8.425175 -0.764963 1.195953 1.271985 -2.225826 -2.919576 1.569535 \n", "1443 8.729685 -0.462463 1.702625 2.242895 -1.170914 -2.481269 1.704481 \n", "1444 -8.665487 2.268520 9.896547 4.561828 6.719017 -0.553388 0.075978 \n", "1445 2.669675 -1.256503 -1.749743 0.946115 0.594407 2.949997 0.438873 \n", "1446 -2.995747 1.844065 -3.884022 -1.589029 2.053499 4.234789 1.373731 \n", "1447 -1.677637 -1.789262 -1.854649 0.516005 1.232536 -2.340343 -1.699702 \n", "1448 -1.675328 -1.081692 1.450830 0.848455 1.257406 2.248908 -0.316071 \n", "1449 -7.173595 2.612959 -8.614075 6.626529 -2.774078 2.797559 0.931067 \n", "1450 -5.638211 1.974901 -5.211407 -0.599462 2.647860 4.076896 1.952184 \n", "1451 -0.947384 -4.414006 0.998230 1.193897 -1.592012 1.234450 -1.274806 \n", "1452 -6.035101 1.417855 -4.462168 -0.525139 2.457928 4.268328 2.212083 \n", "1453 -7.697480 5.820093 -5.741742 3.829420 -2.375291 3.657603 -0.865277 \n", "1454 -7.663994 5.944361 -6.053954 2.975641 -2.614390 2.661112 -1.160193 \n", "1455 -5.558653 1.804582 -4.295045 -0.576512 2.374983 4.353805 1.854174 \n", "1456 -1.076227 -2.952491 2.064628 -0.169414 -0.649924 -1.313815 -1.655318 \n", "1457 -3.549393 2.269073 -3.460952 6.476886 -4.553017 1.464801 -5.036149 \n", "1458 3.512563 0.894778 1.063317 -1.155203 0.521624 2.729664 -0.742897 \n", "\n", " 7 8 9 ... 71 72 73 \\\n", "0 0.013168 1.020418 0.989119 ... -0.100967 -0.041574 -0.358336 \n", "1 -0.210844 -0.295450 -2.227293 ... 0.567625 0.068927 -0.248843 \n", "2 0.337510 1.969698 -2.007115 ... 0.299870 -0.228285 0.455916 \n", "3 1.095370 0.293953 -1.888923 ... -0.462022 -0.036001 -0.151523 \n", "4 1.324658 0.863452 0.465918 ... 0.347889 -0.243664 -0.272938 \n", "5 -0.967266 1.941217 -1.342395 ... 0.466007 -0.672567 0.398092 \n", "6 3.219477 0.387779 -0.711773 ... 0.196744 -0.056228 0.068110 \n", "7 -1.095129 1.783972 -1.414356 ... -0.175176 0.138291 0.477080 \n", "8 0.647150 1.175437 -2.704801 ... 0.116171 -0.420031 0.863038 \n", "9 0.646016 1.707347 -1.224332 ... 0.389472 0.160206 -0.719237 \n", "10 1.034325 1.486415 -1.205210 ... 0.087347 0.851269 -0.525856 \n", "11 -1.046112 -0.549774 -0.758297 ... 0.053454 -0.001891 0.053035 \n", "12 -0.809619 -1.046293 -0.811617 ... 0.288328 0.029797 -0.075908 \n", "13 0.446884 -0.555603 -0.889731 ... 0.612924 -0.183100 -0.694455 \n", "14 -0.555343 0.408633 -0.631893 ... -0.489197 0.508454 -0.651948 \n", "15 -1.456294 0.092958 -0.688970 ... -1.348299 0.014839 0.032925 \n", "16 -2.093460 -0.522564 -0.366415 ... 0.082704 0.024983 -0.848827 \n", "17 0.515380 -1.058064 -2.805984 ... -0.272254 0.556575 0.302631 \n", "18 0.058276 -1.022114 -2.700836 ... -0.248217 0.591191 0.491797 \n", "19 1.847858 -1.087345 -2.975739 ... -0.354729 -0.064532 0.447853 \n", "20 0.810848 -0.169543 -2.690040 ... -0.022755 -0.531255 -0.074676 \n", "21 1.750981 0.368637 -2.876713 ... 0.039146 0.133072 0.001735 \n", "22 -0.735753 2.456838 -2.772603 ... -0.190516 -0.463093 -0.108674 \n", "23 1.259797 0.848258 -2.753625 ... -0.332383 -0.387417 0.243933 \n", "24 1.623649 1.459243 -1.792369 ... 0.351383 0.455246 0.396243 \n", "25 0.060185 2.210729 -1.820533 ... -0.106620 0.215100 -0.017058 \n", "26 -0.240806 0.127347 -0.195709 ... 0.728889 0.039739 -0.811232 \n", "27 0.763981 -0.237437 -3.013127 ... 0.279394 0.280029 -0.189491 \n", "28 -1.563332 0.367665 -0.162681 ... 0.355476 -0.141818 -0.593568 \n", "29 2.263505 0.470070 -0.551530 ... 0.211573 0.201462 -0.038096 \n", "... ... ... ... ... ... ... ... \n", "1429 -0.553800 0.908401 -1.094669 ... 0.611812 -0.657143 0.723753 \n", "1430 -2.355508 -1.021626 0.063815 ... 0.369646 -0.425738 0.585698 \n", "1431 5.242108 0.749470 1.980645 ... -0.221882 -0.886569 0.060597 \n", "1432 -2.679864 0.249047 2.000653 ... -0.204261 1.930395 1.007982 \n", "1433 0.418991 1.454491 1.000592 ... -0.645730 -0.547031 -0.002244 \n", "1434 3.629163 -1.111917 4.000372 ... 0.598234 0.396919 -0.138507 \n", "1435 3.902786 -0.495649 3.177548 ... 0.665661 0.109963 0.181271 \n", "1436 -1.109097 0.752250 0.475294 ... -0.157134 0.285330 -0.470829 \n", "1437 -3.391694 -2.192148 1.107309 ... -0.612551 0.068193 -0.070276 \n", "1438 -1.345931 0.889342 -0.560572 ... -0.104736 0.206487 0.002469 \n", "1439 -0.982104 -1.367802 -0.602290 ... -0.964134 -0.829301 0.750209 \n", "1440 -0.442774 0.610898 1.563486 ... 0.286384 0.627941 -0.612390 \n", "1441 -0.554341 1.729836 1.667017 ... 0.035540 0.576771 0.188060 \n", "1442 -1.651117 -1.596416 1.128666 ... -0.082944 0.377969 -0.410938 \n", "1443 -0.250210 -2.607230 1.366801 ... -0.305191 0.574087 -0.282286 \n", "1444 1.486462 2.032290 -0.743899 ... -0.596417 0.765139 0.285764 \n", "1445 1.301415 -3.288260 1.546020 ... 0.032186 0.823149 0.339228 \n", "1446 -0.438812 0.497479 1.142762 ... -0.386708 -0.237669 -0.066362 \n", "1447 0.069796 -0.341768 1.390096 ... -0.159812 0.372550 -0.313882 \n", "1448 -3.060447 -1.555588 -0.556073 ... 0.446194 -0.190006 0.041251 \n", "1449 1.888091 -0.312477 1.400954 ... 1.052721 0.131534 -0.113343 \n", "1450 -1.321766 -0.151974 1.461485 ... 0.296364 0.220726 -0.175633 \n", "1451 -1.187297 1.174828 0.808084 ... -0.896559 0.228073 -0.522623 \n", "1452 -2.029857 -0.566150 2.182272 ... 0.956790 0.477352 -0.323705 \n", "1453 -0.324034 -0.236441 3.020406 ... 1.013825 0.036880 -0.180955 \n", "1454 0.672375 -0.994849 3.067827 ... 1.200423 0.015299 0.351253 \n", "1455 -1.943181 -0.094901 1.529385 ... 1.189402 0.223900 -0.094355 \n", "1456 0.827224 -1.189235 0.247565 ... -0.600603 -0.024148 -0.821089 \n", "1457 1.060166 1.278924 1.599953 ... -0.319833 0.188214 0.021533 \n", "1458 -0.847261 -0.174825 1.533367 ... 0.022766 0.446954 -0.709820 \n", "\n", " 74 75 76 77 78 79 80 \n", "0 -0.055175 0.017122 0.207910 -1.360838 0.256376 0.386902 -1.276110 \n", "1 -0.436556 -0.593624 -0.197527 0.324773 1.004237 0.701508 0.540738 \n", "2 -0.414109 0.200768 0.584384 -0.590418 -0.135959 0.208522 -0.259273 \n", "3 -0.825204 -1.161041 0.199083 -0.067001 0.082895 -0.282798 0.074648 \n", "4 0.949566 -0.488547 -0.122812 0.183812 0.024756 0.048587 0.609656 \n", "5 0.603282 0.190866 0.249073 -0.523221 -0.055809 0.346517 0.568942 \n", "6 0.738193 -0.668812 -0.840492 -0.123387 0.356062 -0.154348 0.514361 \n", "7 -0.015531 -0.372221 0.753140 -0.456903 0.147711 0.193631 0.051897 \n", "8 -0.582007 -0.364829 -0.052150 -0.487183 -0.444047 0.464664 0.206419 \n", "9 -0.064693 -0.045957 -0.291744 0.240711 0.373422 0.385224 -0.281284 \n", "10 -1.185415 0.126912 -0.196575 -0.178727 -0.101474 -0.215496 0.971609 \n", "11 -0.036076 -0.423548 0.320388 0.013080 -0.241740 -0.128468 -0.159114 \n", "12 0.219617 -0.445619 0.161271 -0.052330 -0.137974 -0.012336 -0.029840 \n", "13 -0.385986 -0.239363 -0.555254 -0.178417 0.056418 -0.229563 0.033947 \n", "14 0.267522 -0.232565 -0.722788 -0.434572 0.364437 -0.076787 -0.660350 \n", "15 0.508302 0.706810 -0.135827 -0.326246 -0.436140 -0.295824 0.143156 \n", "16 -0.124226 0.638947 0.494105 0.381577 -0.088354 0.062283 0.479529 \n", "17 0.022230 0.335118 -0.402222 -0.486461 -0.513862 -0.317549 -0.436709 \n", "18 0.689917 0.545323 -0.163602 0.365955 -0.360923 -0.535388 -0.224825 \n", "19 0.585064 0.081582 0.166207 -0.499759 -0.057924 -0.062749 -0.227839 \n", "20 -0.469575 -0.461410 0.022704 0.170403 0.187914 -0.056539 0.015032 \n", "21 0.026567 -0.295598 0.556007 -0.158974 -0.360575 -0.194643 0.364726 \n", "22 -0.107259 0.035557 -0.307213 -0.185158 0.147368 0.134885 0.077623 \n", "23 -0.131516 -0.466681 -0.506532 -0.825775 -0.174574 -0.136241 -0.056661 \n", "24 -0.506368 0.088617 -0.130702 0.398401 0.069513 -0.239858 -0.283752 \n", "25 -0.037351 -0.331751 -0.029806 0.098704 0.463819 -0.056671 -0.213203 \n", "26 -0.201548 0.676578 0.116242 -0.474554 0.439685 -0.450886 -0.053746 \n", "27 0.414837 -0.354823 0.487798 0.834179 0.496764 -0.165724 -0.585869 \n", "28 -0.082930 0.241844 0.782037 0.324128 -0.234107 0.291872 -0.000866 \n", "29 -0.192130 -0.256893 -0.003946 -0.109513 0.042094 -0.422997 -0.097007 \n", "... ... ... ... ... ... ... ... \n", "1429 -0.744518 0.347178 0.890671 -0.030571 0.782864 0.386519 0.273053 \n", "1430 -0.395025 1.129940 0.583244 0.326188 0.175409 0.412119 -0.065991 \n", "1431 0.837214 0.249085 0.153147 -0.383838 0.261305 0.455736 0.368445 \n", "1432 1.009132 0.618974 -0.177792 -0.351494 -0.160814 -0.553627 0.273899 \n", "1433 -0.579413 0.265659 0.662280 -0.261823 -0.578632 0.012758 0.219745 \n", "1434 -0.282681 -0.329524 -0.592915 0.263645 -0.559308 -0.266961 0.189954 \n", "1435 -0.027954 -1.064386 -0.436022 0.173297 0.491972 -0.092010 -0.457244 \n", "1436 -1.105181 -0.007233 -0.063085 0.141580 0.134747 -0.118152 0.111923 \n", "1437 -0.565874 -0.140358 0.045493 -0.001370 0.395411 -0.594856 0.435343 \n", "1438 0.543745 0.383230 0.262475 0.135427 -0.036920 -0.413956 0.135580 \n", "1439 -0.607912 -0.543229 -0.331406 0.162574 0.200570 -0.080603 0.104266 \n", "1440 -0.320304 -0.141101 -0.168753 -0.324569 0.402197 0.055756 -0.409257 \n", "1441 -1.154449 -0.438129 -1.175809 0.349179 -0.456184 0.078855 -0.260344 \n", "1442 -0.580763 0.175259 -0.073001 -1.016737 0.008920 0.059395 -0.118930 \n", "1443 -0.305941 -0.001069 0.238567 -0.692579 -0.416856 -0.014040 0.131480 \n", "1444 0.483399 -0.136124 -0.802959 -0.784755 0.135701 -1.102130 -0.333962 \n", "1445 -0.906223 0.447835 0.446572 -0.136851 0.884434 0.148564 0.797389 \n", "1446 0.088634 0.543522 -0.431833 0.759654 -0.804857 0.984945 -0.296802 \n", "1447 0.265438 0.293793 -0.012620 0.821569 0.159319 0.124801 -0.161088 \n", "1448 -0.536362 0.271315 -0.472482 0.174358 0.262349 -0.196320 -0.218851 \n", "1449 0.388010 0.359438 -0.612039 0.313565 -0.062499 -0.008249 -0.654785 \n", "1450 -0.457835 -0.301047 -0.381445 -0.106629 0.140527 0.222009 -0.439559 \n", "1451 -0.439318 0.113742 0.627491 0.150909 -0.762510 -0.582550 0.309468 \n", "1452 0.100710 0.111878 -0.578999 -0.142691 0.339481 0.132928 -0.765991 \n", "1453 0.044260 0.189504 -0.329542 0.234441 0.280480 -0.083097 -0.512482 \n", "1454 0.014181 0.249775 0.253436 0.076158 0.252643 0.035329 -0.498446 \n", "1455 -0.137994 0.395592 -0.539554 -0.220125 0.472696 0.104663 -0.649613 \n", "1456 -0.099006 -0.180737 -0.282985 0.392991 0.021293 0.086039 -0.106162 \n", "1457 -0.346234 0.312305 0.409725 -0.717844 -0.019903 -0.398943 0.582320 \n", "1458 0.567854 -1.018927 -0.213307 -0.592056 0.371122 -0.283505 0.640815 \n", "\n", "[1459 rows x 81 columns]" ] }, "execution_count": 228, "metadata": {}, "output_type": "execute_result" } ], "source": [ "principalDf_train = pd.DataFrame(data = principalComponents_train\n", " , columns = range(0,list(principalComponents_train.shape)[1]))\n", "\n", "principalDf_test = pd.DataFrame(data = principalComponents_test\n", " , columns = range(0,list(principalComponents_test.shape)[1]))\n", "\n", "principalDf_test" ] }, { "cell_type": "code", "execution_count": 229, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('XGBoost score on training set: ', 0.0619922950867125)\n" ] } ], "source": [ "import xgboost as xgb\n", "\n", "regr = xgb.XGBRegressor(\n", " colsample_bytree=0.2,\n", " gamma=0.0,\n", " learning_rate=0.01,\n", " max_depth=4,\n", " min_child_weight=1.5,\n", " n_estimators=7200, \n", " reg_alpha=0.9,\n", " reg_lambda=0.6,\n", " subsample=0.2,\n", " seed=42,\n", " silent=1)\n", "\n", "regr.fit(principalDf_train, label_df)\n", "\n", "\n", "y_pred_x= regr.predict(principalDf_train)\n", "y_test = label_df\n", "print(\"XGBoost score on training set: \", rmse(y_test, y_pred_x))\n", "\n", "\n", "y_pred_xgb = regr.predict(principalDf_test)\n", "\n" ] }, { "cell_type": "code", "execution_count": 224, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Lasso score on training set: ', 0.10780966876123488)\n" ] } ], "source": [ "from sklearn.linear_model import Lasso , ElasticNet , RidgeCV ,LassoCV\n", "\n", "best_alpha = 0.00099\n", "alpha = 0.0016142533257845059\n", "#regr = ElasticNet(alpha=best_alpha, max_iter=5000)\n", "regr = Lasso(alpha=alpha, max_iter=50000)\n", "#regr = LassoCV(cv=5 , random_state = 0)\n", "regr.fit(principalComponents_train, label_df)\n", "\n", "y_pred_l = regr.predict(principalComponents_train)\n", "y_test = label_df\n", "print(\"Lasso score on training set: \", rmse(y_test, y_pred_l))\n", "\n", "y_pred_lasso = regr.predict(principalComponents_test)" ] }, { "cell_type": "code", "execution_count": 231, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('XGBoost and lasso score on training set: ', 0.08235373752883779)\n" ] } ], "source": [ "y_pred = (y_pred_xgb + y_pred_lasso) / 2\n", "\n", "y_pred_reg=(y_pred_l+y_pred_x)/2\n", "\n", "print(\"XGBoost and lasso score on training set: \", rmse(y_test, y_pred_reg))\n", "\n", "y_pred = np.exp(y_pred)\n", "\n", "pred_df = pd.DataFrame(y_pred, index=test_df[\"Id\"], columns=[\"SalePrice\"])\n", "pred_df.to_csv('submission_final_pca.csv', header=True, index_label='Id')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il parait que la réduction des dimensions avec ACP ne donne pas un score intéressant au niveau des données test. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15rc1" } }, "nbformat": 4, "nbformat_minor": 2 }