{"cells":[{"metadata":{"trusted":true,"_uuid":"afe3ac00a4494bd013cbb9aa313971ab7bfe9d1d"},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n%matplotlib inline\nimport seaborn as sns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"61feb78761ced2ff00fadeb346e36bb81dad251f"},"cell_type":"code","source":"df = pd.read_csv(\"../input/train.csv\", index_col=0)\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c56419766b32700664bd35c25de663855d6689b4"},"cell_type":"code","source":"df.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"17d4140071e5daf064de597af2016a6f8d242528"},"cell_type":"code","source":"df.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5309b57a19d17ea6914e7b1526dcb82cf85138f2"},"cell_type":"code","source":"def processing(dataset):\n    \n    #Extracing Car brand (to be converted into dummies later) and removing typos \n    a = dataset.CarName.str.extract(\"(\\w+)[ -]*\")\n    a[0] = a[0].replace(\"toyouta\", \"toyota\")\n    a[0] = a[0].replace(\"vokswagen\",\"volkswagen\")\n    a[0] = a[0].replace(\"vw\",\"volkswagen\")\n    a[0] = a[0].replace(\"maxda\",\"mazda\")\n    a[0] = a[0].replace(\"porcshce\",\"porsche\")\n    \n    dataset.CarName = a[0].str.lower()\n    \n    #processing typos in data (hopefully correct)\n    dataset.drivewheel = dataset.drivewheel.replace(\"4wd\", \"fwd\")\n    \n    #replacing text numbers into integers (helpful in Linear regression??)\n    dic = {'one': 1,\n 'two': 2,\n 'three': 3,\n 'four': 4,\n 'five': 5,\n 'six': 6,\n 'seven': 7,\n 'eight': 8,\n 'nine': 9,\n 'zero': 0,\n 'ten': 10,\n 'eleven':11,\n      'twelve':12,\n      'thirteen':13}\n    dataset.doornumber = dataset.doornumber.replace(dic).astype(\"float\")\n    dataset.cylindernumber = dataset.cylindernumber.replace(dic).astype(\"float\")\n\n\n    # dataset.groupby(\"fuelsystem\")['price'].agg({\"means\":'mean',\"medians\":\"median\",\"sizes\":\"size\"}).sort_values(\"means\")\n    #could I treat 2bbl and 1bbl as same?\n    \n    #Ceating dummies for categorical variables\n    def dummifier(df, col):    \n        title_dummies = pd.get_dummies(df[col], prefix=col)\n        df = pd.concat([df, title_dummies], axis=1)\n        \n        df.drop([col], axis=1, inplace=True)\n        return df\n    \n    \n    columns_to_dummify = [\"CarName\", \"fueltype\", \"aspiration\", \"carbody\", \"drivewheel\", \"enginelocation\", \"enginetype\", \"fuelsystem\"]\n    for i in columns_to_dummify:\n        dataset = dummifier(dataset, i)\n        print(\"{} dummified\".format(i))\n    return dataset","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"67a6a974838579a928fc130da026d08735ce5e78"},"cell_type":"code","source":"combined = processing(df)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a543a8f6746c25374ca3b3262a2afc0bc07e0cb8"},"cell_type":"code","source":"combined.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e53e27e85c68a87fb943e19aaa0fb89b695ac11e"},"cell_type":"code","source":"test = pd.read_csv(\"../input/test.csv\", index_col=0)\ntest.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"aba6a6eba64ffc87c6bba76aefd6836193b66e60"},"cell_type":"code","source":"combined_test = processing(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"264f326bead34099f3a3771d7492a7ea447c9270"},"cell_type":"code","source":"#finding mutually exclusive columns and drop them from both datasets \n[i for i in combined.columns if i not in combined_test.columns], [i for i in combined_test.columns if i not in combined.columns]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"963f9574bf18ae814639b110242d28a8ff6c5e29"},"cell_type":"code","source":"#saving price column to be used train_test_split later\ny = combined.price","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ea47cfdb893403c584b5fd55edc98c4a12b6d673"},"cell_type":"code","source":"#dropping mutually exclusive columns from dummified versions of training and testing datasets\ndef dont_know_what_to_name(dataset, cols):\n    return dataset.drop(columns=cols)\ncombined = dont_know_what_to_name(combined, [i for i in combined.columns if i not in combined_test.columns])\ncombined_test = dont_know_what_to_name(combined_test, [i for i in combined_test.columns if i not in combined.columns])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"40c4d4d7f83c2d3be73e398170f9e363035775ef"},"cell_type":"code","source":"#checking if still any columns are left. Should return ([], [])\n[i for i in combined.columns if i not in combined_test.columns], [i for i in combined_test.columns if i not in combined.columns]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"54e17690e9171473b11f8b394c0f86bd57270863"},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(combined, y, test_size=0.3)\n\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.metrics import mean_squared_error\nfrom math import sqrt\n\nclf = LinearRegression()\nclf.fit(X_train, y_train)\npred = clf.predict(X_test)\nprint(sqrt(mean_squared_error(pred, y_test)))","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true,"_uuid":"a5a3a33480e35654922217d3b9532cd5b2b098d2"},"cell_type":"code","source":"final_pred = clf.predict(combined_test)\ncombined_test[\"price\"] = final_pred\ncombined_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8b3c0cfa924060bbbf334b12af3b1e363c9c1b38"},"cell_type":"code","source":"# combined_test[[\"car_ID\", \"price\"]].to_csv(\"submission.csv\", index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}