{"cells":[{"cell_type":"markdown","metadata":{},"source":"# Baseline model - Logistic Regression"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"!pip install rdkit\n!pip show rdkit"},{"cell_type":"code","execution_count":2,"metadata":{},"outputs":[],"source":"import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import log_loss\nfrom rdkit import Chem\nfrom rdkit.Chem import AllChem"},{"cell_type":"markdown","metadata":{},"source":"The initial training will be on csv data only"},{"cell_type":"code","execution_count":3,"metadata":{},"outputs":[],"source":"input_path = \"/kaggle/input/leash-BELKA\"\n\ntrain_df = pd.read_csv(f\"{input_path}/train.csv\")\ntest_df = pd.read_csv(f\"{input_path}/test.csv\")"},{"cell_type":"markdown","metadata":{},"source":"## Function to compute molecular fingerprints\n"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"def get_molecular_fingerprint(smiles):\n    mol = Chem.MolFromSmiles(smiles)\n    return AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=2048)"},{"cell_type":"markdown","metadata":{},"source":"# Apply function to dataset"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"train_df['fingerprint'] = train_df['molecule_smiles'].apply(get_molecular_fingerprint)\ntest_df['fingerprint'] = test_df['molecule_smiles'].apply(get_molecular_fingerprint)"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"X_train = np.array(list(train_df['fingerprint']))\ny_train = train_df['binds'].values\nX_test = np.array(list(test_df['fingerprint']))"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"model = LogisticRegression(max_iter=1000)\nmodel.fit(X_train, y_train)"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"test_df['binds'] = model.predict_proba(X_test)[:, 1]"},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"test_df[['id', 'binds']].to_csv('sample_submission.csv', index=False)"}],"metadata":{"kernelspec":{"display_name":"vBELKA-3.11.3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.11.3"}},"nbformat":4,"nbformat_minor":2}