{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":67356,"databundleVersionId":8006601,"sourceType":"competition"},{"sourceId":8084868,"sourceType":"datasetVersion","datasetId":4772411},{"sourceId":8464709,"sourceType":"datasetVersion","datasetId":5046404},{"sourceId":180724016,"sourceType":"kernelVersion"},{"sourceId":180724126,"sourceType":"kernelVersion"},{"sourceId":180724247,"sourceType":"kernelVersion"},{"sourceId":173763890,"sourceType":"kernelVersion"}],"dockerImageVersionId":30698,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"from IPython.display import HTML\nimport time\n\nhandle = display(HTML(\"\"\"<marquee>👌</marquee>\"\"\"), display_id='html_marquee1')\ntime.sleep(2)\nhandle = display(HTML(\"\"\"<marquee>Note: Due to memory limitations, data separation and regression calculations were done in several notebooks.</marquee>\"\"\"), display_id='html_marquee1', update=True)","metadata":{"_kg_hide-input":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"color:lightgray;background-color:navy;padding:1.2%;border-radius:12px 12px;font-size:1em;text-align:center\">BELKA 3⚕️Protein HSA⚕️XGB & LGBM⚕️For All [binds=1]</div>","metadata":{}},{"cell_type":"code","source":"!pip install datatable","metadata":{"_kg_hide-input":true,"_kg_hide-output":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\nimport random\nimport numpy as np \nimport pandas as pd\nimport datatable as dt \n\nfrom xgboost import XGBClassifier\nfrom lightgbm import LGBMClassifier\nfrom sklearn.metrics import average_precision_score\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.calibration import CalibratedClassifierCV\n\nimport matplotlib.pyplot as plt\n%matplotlib inline\n!ls ../input/*","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>\n\n# <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:cyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:navy;overflow:hidden;font-size:70%;letter-spacing:0.5px;margin:0\"><b> </b>XGBClassifier & LGBMClassifier⚕️For All [binds=1]</p></div>\n\n### <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:pink;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:darkred;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b>trainset [binds=0]</p></div>","metadata":{}},{"cell_type":"code","source":"%%time\nfrag0 = dt.fread('../input/belka-frag-1/frag_train_3.csv').to_pandas().iloc[:300000] \nfrag0.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Duplicates in frag0:',  frag0.duplicated().sum())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"frag0.drop_duplicates(inplace=True)\nfrag0.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:pink;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:darkred;overflow:hidden;font-size:85%;letter-spacing:0.5px;margin:0\"><b> </b>trainset [binds=1]</p></div>","metadata":{}},{"cell_type":"code","source":"%%time\nfrag1 = dt.fread('../input/frag-binds1/frag_train_3.csv').to_pandas()\nfrag1.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('Duplicates in frag1:',  frag1.duplicated().sum())","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"frag1.drop_duplicates(inplace=True)\nfrag1.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\nX = pd.concat([frag0, frag1], ignore_index=True).astype(int)\ny = X.pop('binds')\n\nX.shape, y.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del frag0, frag1\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.gca().set_facecolor('lightyellow')\ny.value_counts(normalize=True).plot(kind='barh', figsize=(12,1.2), color=['pink','lightblue'])\n\npd.DataFrame(data= {'Number': y.value_counts(), \n                    'Percent': y.value_counts(normalize=True)})","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>","metadata":{}},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, shuffle=True, random_state=420)\nX_train.shape, X_test.shape, y_train.shape, y_test.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del X, y\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### XGBoost Classifier.","metadata":{}},{"cell_type":"code","source":"%%time\nmodel1 = XGBClassifier(n_estimators=500, random_state=424)\nmodel1.fit(X_train, y_train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### LightGBM Classifier.\n\n> __init__(boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=100, subsample_for_bin=200000, objective=None, class_weight=None, min_split_gain=0.0, min_child_weight=0.001, min_child_samples=20, subsample=1.0, subsample_freq=0, colsample_bytree=1.0, reg_alpha=0.0, reg_lambda=0.0, random_state=None, n_jobs=None, importance_type='split', **kwargs","metadata":{}},{"cell_type":"code","source":"%%time\nmodel2 = LGBMClassifier(n_estimators=5500, random_state=425, verbose=-1)\nmodel2.fit(X_train, y_train)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del X_train, y_train\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>\n\n# <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:cyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:navy;overflow:hidden;font-size:70%;letter-spacing:0.5px;margin:0\"><b> </b>⚕️Prediction</p></div>","metadata":{}},{"cell_type":"code","source":"%%time\npredict_test = (model1.predict_proba(X_test)[:, 1] * 0.50) + (model2.predict_proba(X_test)[:, 1] * 0.50)\nscore = average_precision_score(y_test, predict_test) \nscore","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del X_test, y_test\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\nindx = np.array([])\npred = np.array([])\n\nfor XX in pd.read_csv('../input/frag-binds1/frag_test_3.csv', chunksize=100000):\n    \n    idx = XX.pop('id')\n    indx = np.concatenate((indx, idx), axis=0)\n    \n    pr = (model1.predict_proba(XX.astype(int))[:, 1] * 0.50) + (model2.predict_proba(XX.astype(int))[:, 1] * 0.50) \n    pred = np.concatenate((pred, pr), axis=0)  \n    \n# pred = np.clip(pred, 0.0, 1.0)\ndel model1, model2\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10, 4))\nplt.hist(pred, bins=50)\n\nplt.gca().set_facecolor('lightyellow')\nplt.suptitle('Prediction Histogram', y=0.96, fontsize=16, c='darkred')\n\nround(min(pred), 3), round(max(pred), 3)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction = pd.DataFrame(data=indx, columns=['id'])\nprediction['binds']= pred.copy()    \nprediction","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction.to_csv('pred3.csv', index=False)\n!ls","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred3 = prediction.copy()\n\ndel prediction, pred, indx\ngc.collect()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>\n\n# <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:cyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:navy;overflow:hidden;font-size:70%;letter-spacing:0.5px;margin:0\"><b> </b>⚕️Competition Submission</p></div>","metadata":{}},{"cell_type":"code","source":"# protein_name ='sEH'\npred1a = pd.read_csv('../input/1a-belka-protein-seh-xgb-lgbm/pred1a.csv')\npred1a.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# protein_name ='sEH'\npred1b = pd.read_csv('../input/1b-belka-protein-seh-xgb-lgbm/pred1b.csv')\npred1b.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# protein_name ='BRD4'\npred2 = pd.read_csv('../input/2-belka-protein-brd4-xgb-lgbm/pred2.csv')\npred2.shape","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred1a = pred1a.sort_values(by=['id'])\npred1b = pred1b.sort_values(by=['id'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred1 = pred1a.copy()\npred1['binds'] = (pred1a['binds'].values + pred1b['binds'].values) / 2\npred1","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = pd.concat([pred1, pred2, pred3], ignore_index=True)\npred","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10, 4))\nplt.hist(pred['binds'], bins=50)\n\nplt.gca().set_facecolor('lightyellow')\nplt.suptitle('Prediction Histogram', y=0.96, fontsize=16, c='darkred')\n\nround(pred['binds'].min(), 3), round(pred['binds'].max(), 3)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_xgb_lgbm = pred.sort_values(by=['id'])\nsub_xgb_lgbm.to_csv('sub_xgb_lgbm.csv', index=False)\n\n# Public Score: 0.359\n!ls","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>\n\n# <div style=\"color:yellow;display:inline-block;border-radius:5px;background-color:cyan;font-block:Nexa;overflow:hidden\"><p style=\"padding:15px;color:navy;overflow:hidden;font-size:70%;letter-spacing:0.5px;margin:0\"><b> </b>⚕️Ensembling with KNN</p></div>","metadata":{}},{"cell_type":"code","source":"sub_p6_knn = pd.read_csv('../input/p-6-6-belka-competition-submission-knn/submission.csv')\n\nsubmission = pd.read_csv('../input/leash-BELKA/sample_submission.csv')\nsubmission['binds'] = (sub_xgb_lgbm['binds'].values* 0.60) + (sub_p6_knn['binds'].values* 0.40)\n\nsubmission.to_csv('submission.csv', index=False)\n#Public Score: 0.380\n!ls","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10, 4))\nplt.hist(submission['binds'], bins=50)\n\nplt.gca().set_facecolor('lightyellow')\nplt.suptitle('Ensembling Histogram', y=0.96, fontsize=16, c='darkred')\n\nround(submission['binds'].min(), 3), round(submission['binds'].max(), 3)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<p style=\"border-bottom: 25px solid lightcyan\"></p>\n<p style=\"border-bottom: 5px solid navy\"></p>","metadata":{}}]}