{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nimport os\nprint(os.listdir(\"../input\"))\n\nimport warnings\nwarnings.filterwarnings('ignore')\n\n# Any results you write to the current directory are saved as output.","execution_count":24,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"dc404ac02768df33f43f709b0b2c7489e4c2a309"},"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\nfrom sklearn.model_selection import train_test_split\nimport lightgbm as lgb\n\nimport gc","execution_count":25,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"collapsed":true},"cell_type":"code","source":"train = pd.read_csv('../input/train.csv')\ntest = pd.read_csv('../input/test.csv')","execution_count":26,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"e230dafa81e2f42f9692cba1f0be99156e0a5047"},"cell_type":"code","source":"category_cols = ['region', 'city', 'parent_category_name', 'category_name',\\\n                 'param_1', 'param_2', 'param_3', 'user_type']\nnumerical_cols = ['price', 'item_seq_number']","execution_count":27,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"3cfae3827e4794a9c7f62681292343dd64b14f14"},"cell_type":"code","source":"train_data = train.loc[:, train.columns.isin(category_cols + numerical_cols)]\ntest_data = test.loc[:, test.columns.isin(category_cols + numerical_cols)]","execution_count":28,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"b2729a53a8927e268e3fca0cb3b61361ef6eb8f4"},"cell_type":"code","source":"train_y = train['deal_probability']","execution_count":29,"outputs":[]},{"metadata":{"_uuid":"c0150869fe4e7a239dd1748651d581b49cac3596"},"cell_type":"markdown","source":"### Encoding categorical data"},{"metadata":{"trusted":true,"_uuid":"b14ca1ba662f73be06f6c5ce7019ada3054f9edc"},"cell_type":"code","source":"train_data.isnull().sum()","execution_count":30,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c9af7348e22622b72e6db6ba9ac0719da540319d"},"cell_type":"code","source":"test_data.isnull().sum()","execution_count":31,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"45f278e3acb71d6836e4d029f6fb1519a887d2dd","collapsed":true},"cell_type":"code","source":"train_data['param_1'].fillna(value='missing', inplace=True)\ntrain_data['param_2'].fillna(value='missing', inplace=True)\ntrain_data['param_3'].fillna(value='missing', inplace=True)\ntest_data['param_1'].fillna(value='missing', inplace=True)\ntest_data['param_2'].fillna(value='missing', inplace=True)\ntest_data['param_3'].fillna(value='missing', inplace=True)","execution_count":32,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"1f9f2c113f217733f58dcee2649b438847a4f77b"},"cell_type":"code","source":"data_df = pd.concat([train_data, test_data])\n\nfor col in category_cols:\n    train_data_index = train_data.shape[0]\n    le_col_data = LabelEncoder().fit_transform(data_df[col])\n    train_data[col+'_le'] = le_col_data[:train_data_index]\n    test_data[col+'_le'] = le_col_data[train_data_index:]","execution_count":33,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"534ebe65ab8924c2ded71692b5ed159bafb3b2bd"},"cell_type":"code","source":"del data_df\ngc.collect()","execution_count":34,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"56d581dc79816ab2b22709ac0e26449b50a19928"},"cell_type":"code","source":"train_data.drop(category_cols, axis=1, inplace=True)\ntest_data.drop(category_cols, axis=1, inplace=True)","execution_count":35,"outputs":[]},{"metadata":{"_uuid":"e9b1f196f742ae859afc31950ba1ff24f27678f6"},"cell_type":"markdown","source":"### Log transform numerical cols"},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"2765590a4dcb5e0f18413cd8738bd715df36e6c7"},"cell_type":"code","source":"train_data['price'].fillna(0, inplace=True)\ntest_data['price'].fillna(0, inplace=True)\ntrain_data['price'] = np.log1p(train_data['price'])\ntest_data['price'] = np.log1p(test_data['price'])\ntrain_data['item_seq_number'] = np.log1p(train_data['item_seq_number'])\ntest_data['item_seq_number'] = np.log1p(test_data['item_seq_number'])","execution_count":36,"outputs":[]},{"metadata":{"_uuid":"8dd15830f2f68a79f3ad0ea959729b0f220cf4db"},"cell_type":"markdown","source":"> ### Train Validation split"},{"metadata":{"trusted":true,"_uuid":"418f235fe39cbd2c2ede148166aea3f8f690b090","collapsed":true},"cell_type":"code","source":"X_train, X_valid, y_train, y_valid = train_test_split(train_data, train_y, test_size=0.3)","execution_count":37,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b8cf78fd51be1b80381206b8eefc22e1c1147314"},"cell_type":"code","source":"print(X_train.shape)\nprint(X_valid.shape)\nprint(y_train.shape)\nprint(y_valid.shape)","execution_count":38,"outputs":[]},{"metadata":{"_uuid":"7821a4884d21f08c435cc9cc99982bbfbece8358"},"cell_type":"markdown","source":"### Baseline lightGBM model"},{"metadata":{"trusted":true,"_uuid":"ea2b246d4b45d1814edce2e08cfda6dfe6d1833d"},"cell_type":"code","source":"params = {\n    'objective': 'regression',\n    'metric': 'rmse',\n    'num_iterations': 1000,\n    'learning_rate': 0.07,\n    'num_leaves': 50,\n    'feature_fraction': 0.6,\n    'lambda_l1': 0.05,\n    'min_gain_to_split': 0.009,\n    'bagging_fraction': 0.9\n}\n\nlgb_categorical_features = ['region_le', 'city_le', 'parent_category_name_le', \n                            'category_name_le', 'param_1_le', 'param_2_le', \n                            'param_3_le', 'user_type_le']\n\nlgb_train_x = lgb.Dataset(X_train, label = y_train,  categorical_feature=lgb_categorical_features)\nlgb_val_x = lgb.Dataset(X_valid, label=y_valid, categorical_feature=lgb_categorical_features)\neval_result = {}\nlgb_model = lgb.train(params, lgb_train_x, valid_sets=[lgb_val_x], verbose_eval=50, evals_result=eval_result)","execution_count":39,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"e3bb16c79235c90e3aace7bdbb7857f29c086e6b"},"cell_type":"code","source":"prediction = lgb_model.predict(test_data, num_iteration = lgb_model.best_iteration)","execution_count":40,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"e71bc28060303f5d6e0c7a44f3624381b9d2925f"},"cell_type":"code","source":"prediction[prediction < 0] = 0\nprediction[prediction > 1] = 1\nsubmission = pd.DataFrame({'item_id': test['item_id'], 'deal_probability': prediction})\nsubmission[['item_id', 'deal_probability']].to_csv('simple_baseline_lgbm_gridtune.csv', index=False)","execution_count":41,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"5ca781c671701b10bbcbd695f91c8a803500b8c9"},"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.5","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}