{"cells":[{"metadata":{"_uuid":"880e45d84afee23abcdda1d468f038a93c968033","trusted":false},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport tensorflow as tf\nfrom tensorflow.keras.callbacks import TensorBoard\nfrom time import time\nimport matplotlib\nfrom math import floor, ceil","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"31650d4634aab779b9ce3b5b5d92a7a276993c05","trusted":false},"cell_type":"code","source":"#Read train and test csv\ntrain = pd.read_csv(\"../input/train/train.csv\") \ntest = pd.read_csv(\"../input/test/test.csv\") ","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"959f2e1fb406915035944bf34ec36f8c951437ea"},"cell_type":"code","source":"train.plot.scatter(x='Age', y='AdoptionSpeed')\ntrain.plot.scatter(x='Breed1', y='AdoptionSpeed')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8419287f4dee5e92ca478eea2000e2dad1ce58ba","trusted":false},"cell_type":"code","source":"print(train.columns.values.tolist())","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"9fa861cf56939ac57087ff6669327e137025673c","trusted":false},"cell_type":"code","source":"x=(train[['Type', 'Age', 'Breed1', 'Breed2','Gender','Color1','Color2','Color3','MaturitySize','FurLength','Vaccinated','Dewormed','Sterilized','Health','Quantity','Fee']])\ny=(train[['AdoptionSpeed']])\ntestx=(test[['Type', 'Age', 'Breed1', 'Breed2','Gender','Color1','Color2','Color3','MaturitySize','FurLength','Vaccinated','Dewormed','Sterilized','Health','Quantity','Fee']])","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b8dc7be906b839491a0df905cadcdec91e682068","trusted":false},"cell_type":"code","source":"train_x,dev_x=x[200:],x[:200] \ntrain_y,dev_y=y[200:],y[:200]\n","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a7af713f26caed9ebd9e7f7d9d1dc9b5e66f1f0b","trusted":false},"cell_type":"code","source":"#Data shape\nprint(train_x.shape,train_y.shape,dev_x.shape,dev_y.shape)\nprint(train['Age'].max())","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"40d3159de5aaea0c8bb050f0b384e505969d4fae"},"cell_type":"code","source":"from sklearn.tree import DecisionTreeRegressor\nfrom sklearn.metrics import accuracy_score\n\ntree_model=DecisionTreeRegressor(random_state=1)\ntree_model.fit(train_x,train_y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"a9772a7e1853ef4cd686ad5f4ccab1f760bfe93c"},"cell_type":"code","source":"\n\nprint(\"Making predictions for the following 5 pets:\")\nprint(dev_x.head())\nprint(\"The predictions are\")\npred=tree_model.predict(dev_x)\npred1=[ceil(item) for item in pred ]\nprint(pred1[:5])\nflat_y = [item for sublist in dev_y.astype(float).values for item in sublist]\nprint(flat_y[:5])\nprint(\"Dev accuracy:\",accuracy_score(pred1,dev_y))\npred1=tree_model.predict(dev_x)\ntpred1=tree_model.predict(train_x)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"6d0bf1a445dc560b204939a464644b7987729fee"},"cell_type":"code","source":"from sklearn.ensemble import RandomForestRegressor\n\n\nforest_model = RandomForestRegressor(random_state=1)\nforest_model.fit(train_x, train_y)\nmelb_preds = forest_model.predict(dev_x)\npred2=[ceil(item) for item in melb_preds ]\nprint(pred2[:5])\nprint(flat_y[:5])\nprint(accuracy_score(flat_y, pred2))\npred2 = forest_model.predict(dev_x)\ntpred2=forest_model.predict(train_x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"4ad77804d91b642057cd1cb84863288c07b81c3e"},"cell_type":"code","source":"from xgboost import XGBRegressor\n\nmy_model = XGBRegressor()\n# Add silent=True to avoid printing out updates with each cycle\nmy_model.fit(train_x, train_y, verbose=False)\n\n# make predictions\npreds = my_model.predict(dev_x)\npreds=[ceil(item) for item in preds ]\nprint(preds[:5])\nprint(flat_y[:5])\nprint(accuracy_score(flat_y, preds))\n\n\n\n\nmy_model = XGBRegressor(n_estimators=1000, learning_rate=0.05)\nmy_model.fit(train_x, train_y, #early_stopping_rounds=2000, \n             eval_set=[(dev_x, dev_y)], verbose=False)\n\n\n\npreds = my_model.predict(dev_x)\npred3=[ceil(item) for item in preds ]\nprint(pred3[:5])\nprint(flat_y[:5])\nprint(accuracy_score(flat_y, pred3))\n\npred3 = my_model.predict(dev_x)\ntpred3=my_model.predict(train_x)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"ced508e9e62724b46913ccd81be53d81eafc1f83","trusted":false},"cell_type":"code","source":"#train_x['Pred1']=tpred1\n#train_x['Pred2']=tpred2\n#train_x['Pred3']=tpred3\n#dev_x['Pred1']=pred1\n#dev_x['Pred2']=pred2\n#dev_x['Pred3']=pred3\n#print(train_x)\n#Pandas to numpy\ntrain_x=train_x.values\ntrain_y=train_y.values\n\n#dev_x=dev_x.values\n#dev_y=dev_y.values\n#Transform targets [0,3,...,4] to [[1,0,0,0,0],[0,0,0,1,0],...,[0,0,0,0,1]]\ntrain_y = tf.keras.utils.to_categorical(train_y, 5)\ndev_y = tf.keras.utils.to_categorical(dev_y, 5)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"6e21f6935530e90e94c86a9c2a22af9b1c9ca985","trusted":false},"cell_type":"code","source":"#Create the model\nmodel = tf.keras.Sequential()\n                                                     \nmodel.add(tf.keras.layers.BatchNormalization(input_shape=(16,))) #BachNorm\nmodel.add(tf.keras.layers.Activation(\"relu\"))   #Relu Activation\n\nmodel.add(tf.keras.layers.Dense(1024))\nmodel.add(tf.keras.layers.BatchNormalization()) #BachNorm\nmodel.add(tf.keras.layers.Activation(\"relu\")) #Relu Activation\n\nmodel.add(tf.keras.layers.Dense(512)) \nmodel.add(tf.keras.layers.BatchNormalization()) #BachNorm\nmodel.add(tf.keras.layers.Activation(\"relu\")) #Relu Activation\n\nmodel.add(tf.keras.layers.Dense(256)) \nmodel.add(tf.keras.layers.Dropout(0.5)) #Dropout\n \nmodel.add(tf.keras.layers.Dense(128,activation='relu')) #Dense Layer with relu activation\nmodel.add(tf.keras.layers.Dense(5, activation='softmax')) #Dense Layer with softmax activation so it can predict one of the 5 Labels\n\nmodel.compile(loss=tf.keras.losses.categorical_crossentropy,\n              optimizer=tf.keras.optimizers.Adadelta(),\n              metrics=['accuracy'])\nprint(model.summary())","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"570afa6e4cc38695c6574fe74ba86946f566e674","trusted":false},"cell_type":"code","source":"#Train the model\ntensorboard = TensorBoard(log_dir=\"logs/{}\".format(time()))\nbestEpoch=tf.keras.callbacks.ModelCheckpoint(\"logs/checkpoint\", monitor='val_acc', verbose=0, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n\nmodel.fit(train_x, train_y,\n          batch_size=1000,\n          epochs=100,\n          verbose=1,\n          validation_data=(dev_x, dev_y),\n          callbacks=[tensorboard,bestEpoch])","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1429793b295d796742eb471b417d80011d3bfbd2","trusted":false},"cell_type":"code","source":"#Predict on the test set\nmodel=tf.keras.models.load_model(\n    \"logs/checkpoint\",\n    custom_objects=None,\n    compile=True\n)\nprediction=model.predict(testx)\nyy=(test[['PetID']])\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"9568b28d5dff1aa654ba99c7687814a86a1f2ef2"},"cell_type":"code","source":"pred=model.predict(dev_x)\nprint(pred.argmax(axis=1)[:5])\nprint(\"Dev accuracy:\",accuracy_score(pred.argmax(axis=1),flat_y))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"29cd9d5e5ba0b50028e305c6dd789c395cb03acd","trusted":false},"cell_type":"code","source":"#Save results\nfinal=pd.DataFrame(np.array(prediction.argmax(axis=1)),columns=['AdoptionSpeed'])\nfinal['PetID']=yy\nfinal=final[['PetID','AdoptionSpeed']]\nfinal.to_csv(\"submission.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"6f4d0986104e12293656ce31a4819f0377e46e91","trusted":false},"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}