{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom sklearn.impute import SimpleImputer\nfrom sklearn import preprocessing\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.preprocessing import LabelEncoder\nimport seaborn as sns\nimport warnings\nwarnings.filterwarnings('ignore')\n%matplotlib inline\n\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data = pd.read_csv('/kaggle/input/house-prices-advanced-regression-techniques/train.csv')\nData.head(5)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***# Here We Know That Data Has Nulls in Many columns and It Has A String Columns***","metadata":{}},{"cell_type":"code","source":"Data.info()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data.describe()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***# Here we found That there Are Columns have A litte or nothing Relation With SalePrice (Output)***","metadata":{}},{"cell_type":"code","source":"fig, ax = plt.subplots(figsize=(25, 25))\nsns.heatmap(Data.corr(), annot = True,cmap= 'coolwarm')#, fmt='.6g'","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***# We Remove  Columns That Not Benefit And Select A Strong Columns that Make Relation With  SalePrice (Output)***","metadata":{}},{"cell_type":"code","source":"print('Data Shape = ',Data.shape)\nencode_columns = list(Data.select_dtypes(exclude ='object').columns)\nData_coorr=[]\nfor i in encode_columns:\n    if((Data[i].corr(Data['SalePrice']) <= 0.15) and (Data[i].corr(Data['SalePrice'])>= -0.15)):\n        Data.drop(i, axis=1, inplace=True)\n        print(i)\n    elif((Data[i].corr(Data['SalePrice']) >= 0.3) or (Data[i].corr(Data['SalePrice'])<= -0.3)):\n         Data_coorr.append([Data['SalePrice'].corr(Data[i]),i])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data_coorr= np.reshape(Data_coorr,(len(Data_coorr),len(Data_coorr[0])))\nData_coorr = pd.DataFrame(Data_coorr)\nData_coorr=Data_coorr.set_index(Data_coorr[0])\nData_coorr=Data_coorr.iloc[:, 1]\n\nData_coorr=Data_coorr.sort_index(ascending=False)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"encodde_columns = list(Data.select_dtypes(exclude ='object').columns)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***# Remove Outliers Rows From Columns That Has A Strong Realtion With Output  As It Will Make Miss Leading***","metadata":{}},{"cell_type":"code","source":"Data_corr=Data_coorr[:8]\nfor i in  Data_corr:\n    if i =='SalePrice' or i=='Id':\n        continue\n    Q1=Data[i].quantile(0.25)\n    Q3=Data[i].quantile(0.75)    \n    IQR = Q3 - Q1\n    lowqe_bound=Q1 - 1.5 * IQR\n    upper_bound=Q3 + 1.5 * IQR\n    print(lowqe_bound)\n    price_df=Data[i]\n    Data[i] = Data[i][~((Data[i] < lowqe_bound) |(Data[i] > upper_bound))]\n    print('********')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Get The Relation Graphs ***","metadata":{}},{"cell_type":"code","source":"for i in Data_coorr[:10]:\n    var = i\n    data = pd.concat([Data['SalePrice'], Data[var]], axis=1)\n    data.plot.scatter(x=var, y='SalePrice', ylim=(0,800000));","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### We Found That The Denity of {'SalePrice','GarageCars','GarageArea','TotalBsmtSF','1stFlrSF','FullBath','YearBuilt'} Have A BAD Density \nWe Can Solve Some Of Them like (SalePrice) By Log AS It postive Skewed But I didn't As I Remove A Outliers Data So\n\ndidn't Make Large Change in Data Set As we have (sample_submission & Test Data) we Want To fit and Predict it ","metadata":{}},{"cell_type":"code","source":"from scipy.stats import norm\nfrom scipy import stats\nfor i in Data_coorr[:10]:\n    sns.distplot(Data[i], fit=norm);\n    fig = plt.figure()\n    ","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"encode_columns = list(Data.columns)\n\nData = pd.DataFrame(Data)\nfig, ax = plt.subplots(figsize=(25, 25))\nsns.heatmap(Data[encode_columns].corr(), annot = True, fmt='.6g',cmap= 'coolwarm')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Choice large Than 0.15 % Null Columns And Drop Them And Also The Have Not Strong Relation  \n","metadata":{}},{"cell_type":"code","source":"Nulls = Data.isnull().sum().sort_values(ascending=False)\npercent = (Data.isnull().sum()/Data.isnull().count()).sort_values(ascending=False)\nmissing_data = pd.concat([Nulls, percent], axis=1, keys=['Nulls', 'Percent'])\nprint(missing_data[:40])\nmissing_data=missing_data[missing_data['Nulls']>=100]\nprint(missing_data)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data = Data.drop((missing_data).index,1)\n\nNul=Data.isnull().sum().sort_values(ascending=False)\nprint(Nul[:20])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Doing LabelEncoder To Solve String Columns And Convert Them To Int Columns","metadata":{}},{"cell_type":"code","source":"def label_encode_columns(df, columns):\n    encoders = {}\n    for col in columns:\n        le = LabelEncoder().fit(df[col])\n        df[col] = le.transform(df[col])\n        encoders[col] = le\n    return df, encoders\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"encode_columns = list(Data.select_dtypes(['object']).columns)\nNew_Data, encoders = label_encode_columns(df=Data, columns=encode_columns)\n\n\nprint('Updates dataframe is : \\n' ,New_Data )\n \ncol=list(New_Data.columns)\nprint(col)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Nul=New_Data.isnull().sum().sort_values(ascending=False)\nprint(Nul[:20])\nprint(New_Data.shape)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***#Fill Null Values by Simple Imputer***","metadata":{}},{"cell_type":"code","source":"imp = SimpleImputer(missing_values=np.NAN, strategy='mean')\nimp = imp.fit(New_Data)\nNew_Data = imp.transform(New_Data)\nNew_Data= np.reshape(New_Data,(len(New_Data),len(New_Data[0])))\nNew_Data = pd.DataFrame(New_Data)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"New_Data.info()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## You can Doing Standard Scaler But I didn't As The (sample_submission & Test Data) IS Similar To Traning ","metadata":{}},{"cell_type":"code","source":"\nX=New_Data.iloc[:,:-1]\ny=New_Data.iloc[:,-1]\n#sc_X = StandardScaler()\n#X = sc_X.fit_transform(X)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Read Test Data***","metadata":{}},{"cell_type":"code","source":"col.remove('SalePrice')\nTest_Data = pd.read_csv('/kaggle/input/house-prices-advanced-regression-techniques/test.csv')\nTest_Data=Test_Data[col]\nprint(Test_Data.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Nuls = Test_Data.isnull().sum().sort_values(ascending=False)\nprint(Nuls[:20])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"encodee_columns = list(Test_Data.select_dtypes(['object']).columns)\nTest_Data, encoderss = label_encode_columns(df=Test_Data, columns=encodee_columns)\n\nimp = SimpleImputer(missing_values=np.NAN, strategy='mean')\nimp = imp.fit(Test_Data)\n\n\nTest_Data = imp.transform(Test_Data)\nTest_Data= np.reshape(Test_Data,(len(Test_Data),len(Test_Data[0])))\n\nTest_Data = pd.DataFrame(Test_Data)\n\nNuls = Test_Data.isnull().sum().sort_values(ascending=False)\nprint(Nuls[:20])\n#sc_X = StandardScaler()\n#X_Test = sc_X.fit_transform(Test_Data)\nX_Test=Test_Data\nprint(X_Test)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"***Read sample_submission Data***","metadata":{}},{"cell_type":"code","source":"Test_Data = pd.read_csv('/kaggle/input/house-prices-advanced-regression-techniques/sample_submission.csv',skiprows= 0)\nprint(Test_Data)\nVD=Test_Data.iloc[:,1]\n\nprint(VD.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## I Use GridSearchCV To Select Best parameter And Best Score And The Best is \nModel  RandomForestRegressor\n\nCV =  10\n\nBest Score is : 0.8639784123465895\n\nBest Parameters are : {'max_depth': 15, 'n_estimators': 100}\n\nMean_squared_error =  4538928392.243967\n\npredict first 5 Values from sample_submission :[123457.88560593 157550.49796523 184905.85546665 183646.63040292\n 197833.35157943]\n ","metadata":{}},{"cell_type":"code","source":"from sklearn.linear_model import LinearRegression\nfrom sklearn.svm import SVR\nfrom sklearn.tree import DecisionTreeRegressor\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.linear_model import Ridge\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.metrics import mean_squared_error \nfrom sklearn.metrics import accuracy_score\n\nparams=[{'fit_intercept':(True,False)},\n            {'min_samples_split':[6,8,12],\n             'max_depth':[5,10,20]},\n             {'n_estimators':[50,150,100],\n             'max_depth':[5,10,15]},\n             {'alpha': [0.1,700,10,500,200]}]\n#kernel{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’\nLR = LinearRegression(copy_X=True)\nDTR = DecisionTreeRegressor()\nRFR = RandomForestRegressor()\nRM = Ridge()\n\nmodels=[LR,DTR,RFR,RM]\n\nfor model,param in zip(models,params):\n    print('Model is ',model)\n    for i in range (3,11):\n        GridSearchModel = GridSearchCV(model,param, cv = i,return_train_score=True, n_jobs=-1)\n        GridSearchModel.fit(X, y)\n        VD_predict=GridSearchModel.predict(X_Test)\n\n        MSEValue = mean_squared_error(VD, VD_predict, multioutput='uniform_average') \n        \n        sorted(GridSearchModel.cv_results_.keys())\n        #accuracy = accuracy_score(ViD, CVS_prediction, normalize=False)\n        #GridSearchResults = pd.DataFrame(GridSearchModel.cv_results_)[['mean_test_score', 'std_test_score', 'params' , 'rank_test_score' , 'mean_fit_time']]\n        print('CV = ',i)\n# Showing Results\n        #print('All Results are :\\n', GridSearchResults )\n        print('Best Score is :', GridSearchModel.best_score_)\n        print('Best Parameters are :', GridSearchModel.best_params_)\n        print('Mean_squared_error = ',MSEValue)\n        print(VD_predict[:5])\n        #print('Best Estimator is :', GridSearchModel.best_estimator_)\n        print('---------------------------')\n    print('\\t\\t**********************************************************')\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# We Can Also Use cross_val_score ","metadata":{}},{"cell_type":"code","source":"'''\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.svm import SVR\nfrom sklearn.tree import DecisionTreeRegressor\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.metrics import mean_squared_error \n\n\n\nLR = LinearRegression()\nSV = SVR(gamma = 'auto')\nDTR = DecisionTreeRegressor()\nRFR = RandomForestRegressor(n_estimators = 100)\n\n\nmodels = [LR , SV , DTR , RFR]\n\nfor m in models:\n    for n in range(2,11):\n        ViD=VD\n        CVS=cross_val_score(m, X, y, cv=n,n_jobs=-1)   \n        print('Score of model ' ,m ,' = ',m.score(X, y))\n        print('result of model : ' , m ,' for cv value ',n,' is ' ,np.mean(CVS) )\n        print('-----------------------------------')\n    \n    print('=====================================')\n    print('=====================================')\n    \n'''","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"DTR = DecisionTreeRegressor(random_state=True)\nDTR.fit(X,y)\nprint('DecisionTreeRegressor')\nprint('score = ',DTR.score(X,y))\nVD_predict2=DTR.predict(X_Test)\nMSEValue = mean_squared_error(VD, VD_predict2, multioutput='uniform_average')\nprint('Mean_squared_error = ',MSEValue)","metadata":{"execution":{"iopub.status.busy":"2022-07-21T19:15:09.046756Z","iopub.execute_input":"2022-07-21T19:15:09.047693Z","iopub.status.idle":"2022-07-21T19:15:09.131693Z","shell.execute_reply.started":"2022-07-21T19:15:09.047586Z","shell.execute_reply":"2022-07-21T19:15:09.130383Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Test_Data = pd.read_csv(r'../input/house-prices-advanced-regression-techniques/sample_submission.csv',skiprows= 0)\nsub = {'Id': Test_Data.Id, 'SalePrice': VD_predict2}\nbasic_sub = pd.DataFrame(data=sub)\nbasic_sub.to_csv(\"submission.csv\", index=False)","metadata":{},"execution_count":null,"outputs":[]}]}