{"cells":[{"metadata":{"trusted":true,"_uuid":"dab093887df21df85f98928c6261d7427e473dce","_kg_hide-output":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nfrom sklearn.metrics import confusion_matrix\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.naive_bayes import GaussianNB\n\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6d3b1d6347f4bd6beb2580357693b88a650cbc30"},"cell_type":"code","source":"train = pd.read_csv(\"../input/train.csv\")\ntest = pd.read_csv(\"../input/test.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9a943efb3a92e499f2f1db77c3b4f284427a18fa"},"cell_type":"code","source":"X = train.drop(['Id', 'Cover_Type'], axis=1)\ny = train['Cover_Type']\nX.head(), y.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"924d5168431caf4b947c67326d77d10c20b379aa"},"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"82b7e7a78f7adcdb459214b8afd11f9d0a32fe88"},"cell_type":"code","source":"from sklearn.metrics import classification_report,accuracy_score","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0fd3edf1050f5723a071d80c63802e883a93c961"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7d7f4e7b556c0448c997b7cd6b7e3a7e8429af22"},"cell_type":"code","source":"\n\n\ndef add_features(data):\n    #data['Euclidean_Distance_To_Hydrology_'] = (data['Horizontal_Distance_To_Hydrology']**2 + data['Vertical_Distance_To_Hydrology']**2)**0.5\n    #data['Mean_Distance_To_Amenities_'] = (data['Horizontal_Distance_To_Fire_Points'] + data['Horizontal_Distance_To_Hydrology'] + data['Horizontal_Distance_To_Roadways']) / 3.0\n    #data['Elevation_Minus_Vertical_Distance_To_Hydrology_'] = data['Elevation'] - data['Vertical_Distance_To_Hydrology']\n    \n    data['HF1'] = data['Horizontal_Distance_To_Hydrology']+data['Horizontal_Distance_To_Fire_Points']\n    data['HF2'] = abs(data['Horizontal_Distance_To_Hydrology']-data['Horizontal_Distance_To_Fire_Points'])\n    data['HR1'] = abs(data['Horizontal_Distance_To_Hydrology']+data['Horizontal_Distance_To_Roadways'])\n    data['HR2'] = abs(data['Horizontal_Distance_To_Hydrology']-data['Horizontal_Distance_To_Roadways'])\n    data['FR1'] = abs(data['Horizontal_Distance_To_Fire_Points']+data['Horizontal_Distance_To_Roadways'])\n    data['FR2'] = abs(data['Horizontal_Distance_To_Fire_Points']-data['Horizontal_Distance_To_Roadways'])\n\n    # Pythagoras theorem\n    data['slope_hyd'] = (data['Horizontal_Distance_To_Hydrology']**2+data['Vertical_Distance_To_Hydrology']**2)**0.5\n    data.slope_hyd=data.slope_hyd.map(lambda x: 0 if np.isinf(x) else x)\n\n    # Means\n    data['Mean_Amenities']=(data.Horizontal_Distance_To_Fire_Points + data.Horizontal_Distance_To_Hydrology + data.Horizontal_Distance_To_Roadways) / 3  \n    data['Mean_Fire_Hyd']=(data.Horizontal_Distance_To_Fire_Points + data.Horizontal_Distance_To_Hydrology) / 2 \n    \n    #soil\n    soil_types = ['Soil_Type1', 'Soil_Type2', 'Soil_Type3', 'Soil_Type4', 'Soil_Type5', 'Soil_Type6', 'Soil_Type7', 'Soil_Type8', 'Soil_Type9', \\\n                  'Soil_Type10', 'Soil_Type11', 'Soil_Type12', 'Soil_Type13', 'Soil_Type14', 'Soil_Type15', 'Soil_Type16', 'Soil_Type17', \\\n                  'Soil_Type18', 'Soil_Type19', 'Soil_Type20', 'Soil_Type21', 'Soil_Type22', 'Soil_Type23', 'Soil_Type24', 'Soil_Type25', \\\n                  'Soil_Type26', 'Soil_Type27', 'Soil_Type28', 'Soil_Type29', 'Soil_Type30', 'Soil_Type31', 'Soil_Type32', 'Soil_Type33', \\\n                  'Soil_Type34', 'Soil_Type35', 'Soil_Type36', 'Soil_Type37', 'Soil_Type38', 'Soil_Type39', 'Soil_Type40']\n    data[soil_types] = data[soil_types].multiply([i for i in range(1, 41)], axis=1)\n    data['soil_type'] = data[soil_types].sum(axis=1)\n    \n    #wilderness\n    data[['Wilderness_Area1', 'Wilderness_Area2', 'Wilderness_Area3', 'Wilderness_Area4']] = data[['Wilderness_Area1', 'Wilderness_Area2', 'Wilderness_Area3', 'Wilderness_Area4']].multiply([1, 2, 3, 4], axis=1)\n    data['Wilderness_Area'] = data[['Wilderness_Area1', 'Wilderness_Area2', 'Wilderness_Area3', 'Wilderness_Area4']].sum(axis=1)\n    \n    \n    #data = data.drop(['Soil_Type9', 'Soil_Type8', 'Soil_Type37', 'Soil_Type36', 'Soil_Type35', 'Soil_Type34', 'Soil_Type25', 'Soil_Type26', 'Soil_Type27', 'Soil_Type28', 'Soil_Type21', 'Soil_Type18', 'Soil_Type19', 'Soil_Type15', 'Soil_Type14', 'Soil_Type16' ], axis=1)\n    return data\n\ntrain = add_features(X)\ntest = add_features(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4dd8092fa94370c367df63e622b63ee25ae03375"},"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(train, y, test_size=0.4, random_state=10)\nX_train.head(), y_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"818451cfe861f95b8364092d31f3fc9422915477"},"cell_type":"code","source":"#tuned_parameters = [{ 'max_depth': list([10,20,40,50]), 'n_estimators':list([200,300,400,500,600])}]\nfrom scipy.stats import uniform\nfrom scipy.stats import norm\nn_estimators = np.random.uniform(500, 1000, 5).astype(int)\nmax_features = np.random.normal(30, 80, 5).astype(int)\n \n# Check max_features>0 & max_features<=total number of features\nmax_features[max_features <= 0] = 1\nmax_features[max_features > X.shape[1]] = X.shape[1]\n \n\nhyperparameters = {'n_estimators': list(n_estimators),\n                   'max_features': list(max_features)}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"49f65c40bec570c0bf06800f2ee7458e73f85c34"},"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import RandomizedSearchCV\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"052a36bd213e096d60365621cbeb5db219ec58e5"},"cell_type":"code","source":"\n#exe=ExtraTreesClassifier()\n#pipeline=Pipeline(exe,clf)\n#print(clf)\nclf=RandomForestClassifier(n_estimators=938,max_features=38)\n#clf = ExtraTreesClassifier(criterion='gini',max_depth=60, n_estimators=700)\n\nclf.fit(train, y)\n#print(\"as\")\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"dd4e9d109af4f4a38781ecce23fb2427b9b515ae"},"cell_type":"code","source":"y_pred = clf.predict(X_test)\nn_correct = (y_pred == y_test).sum()\nn_total = (y_pred == y_test).count()\nprint('Accuracy:', n_correct/n_total)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c3254640231361d26593270a3703e9ff8642cf29"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"af2b79f681920aac7c3392ca331549f9a4664e32"},"cell_type":"code","source":"\nprediction_classes = pd.Series(clf.predict(test.drop('Id', axis=1))).rename('Cover_Type')\npredictions = pd.concat([test['Id'], prediction_classes], axis=1).reset_index().drop('index', axis=1)\npredictions.to_csv('submission.csv', index=False)\npredictions.head()","execution_count":null,"outputs":[]},{"metadata":{"collapsed":true,"trusted":false,"_uuid":"07f8cf19404c565e8002a0d20203b5de75eef06e"},"cell_type":"code","source":"","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}