{"cells":[{"metadata":{"trusted":true,"_uuid":"7193952a4c756eba0de72f676495f0a52cbe16ef"},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport math\n\nimport xgboost as xgb\nfrom xgboost import XGBClassifier\n\nfrom sklearn import preprocessing\nfrom sklearn.model_selection import KFold\nfrom sklearn.metrics import accuracy_score","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"39aeb5aee7ff445b9dc1b656821c56cb4ecaa128"},"cell_type":"code","source":"df_train = pd.read_csv('../input/train.csv')\ndf_test = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"341d74f21d39e99a2985db0efa381e97cb957b57"},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"e4b5da4c49dd2b9048a0a1bc3530f950b54c0df0"},"cell_type":"code","source":"len(df_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"ba6703a9f9afaa039d9582acd6d9649d6b1e92cd"},"cell_type":"code","source":"labels = df_train['diabetes']","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"95dd3f0b0c5a84982f1be1f2040ead6fe354100f"},"cell_type":"code","source":"df_train.drop(columns=['p_id', 'diabetes'], axis=1, inplace=True)\ndf_test.drop(columns=['p_id'], axis=1, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"ccfcc32704244020725da55244c2294bfdc44491"},"cell_type":"code","source":"min_max_scaler = preprocessing.MinMaxScaler()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"a07954a92aef0a526efe53c74e48de82e9f4099f"},"cell_type":"code","source":"#Scaling The Training Data\nscaler = min_max_scaler.fit(df_train)\nX_train_scaled = min_max_scaler.transform(df_train)\ntrain = pd.DataFrame(X_train_scaled, columns=df_train.columns)\n#Scaling The Testing Data\nX_test_scaled = min_max_scaler.transform(df_test)\ntest = pd.DataFrame(X_test_scaled, columns=df_train.columns)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"b8d4c471dab8dfece3ce3c80bc56b833d93eb232"},"cell_type":"code","source":"def xgb_CV(X, y, X_test, folds, params):\n    \n    prediction = np.zeros(len(X_test))\n    scores = []\n    \n    for fold_n, (train_index, valid_index) in enumerate(folds.split(X)):\n        X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]\n        y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]\n        \n        train_data = xgb.DMatrix(data=X_train, label=y_train, feature_names=X.columns)\n        valid_data = xgb.DMatrix(data=X_valid, label=y_valid, feature_names=X.columns)\n        watchlist = [(train_data, 'train'), (valid_data, 'valid_data')]\n        \n        model = xgb.train(dtrain=train_data, num_boost_round=20000, evals=watchlist, \\\n                          early_stopping_rounds=200, verbose_eval=150, params=params)\n        \n        y_pred_valid = model.predict(xgb.DMatrix(X_valid, feature_names=X.columns), ntree_limit=model.best_ntree_limit)\n        \n        y_pred = model.predict(xgb.DMatrix(X_test, feature_names=X.columns), ntree_limit=model.best_ntree_limit)\n        \n        scores.append(accuracy_score(y_valid, y_pred_valid))\n        \n        prediction += y_pred\n        \n    print('CV mean score: {0:.4f}, std: {1:.4f}.'.format(np.mean(scores), np.std(scores)))\n        \n    prediction /= n_fold\n    \n    return prediction","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"3e2d0e2f32ff81543c604c9d37438276a06042c9"},"cell_type":"code","source":"params = {'eta': 0.01,\n              'max_depth': 4,\n              'subsample': 0.05,\n              'colsample_bytree': 0.05,\n              'min_child_weight' : 1,\n              'objective': 'binary:hinge',\n              'eval_metric': 'error',\n              'silent': True,\n              'nthread': 4}\n\nn_fold = 10\n\nfolds = KFold(n_splits=n_fold, shuffle=True, random_state=11)\n\npredictions = xgb_CV(train, labels, test, folds, params)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"35ef929a88f21cea3eddef20751f216dd9e418e2"},"cell_type":"code","source":"preds = np.where(predictions > 0.5, 1, 0)\n\npreds","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"200eb1fdf3f64f18b0a6587a56378060a8efcc91"},"cell_type":"code","source":"df_submission = pd.read_csv('../input/sample_submission.csv')\ndf_submission['diabetes'] = preds\ndf_submission.to_csv('my_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}