import sys
import wordbatch
import threading
import pandas as pd
from sklearn.metrics import roc_auc_score
import time
import numpy as np
import gc
from contextlib import contextmanager
import numpy as np
import pandas as pd
import os
from sklearn.linear_model import LogisticRegression
from scipy.special import expit, logit
import lightgbm as lgb
import pandas as pd
from sklearn.metrics import mean_squared_error

df=pd.read_csv("../input/train.csv",nrows=50000000)
del df['attributed_time']
df['hour'] = pd.to_datetime(df.click_time).dt.hour.astype('uint8')
df['day'] = pd.to_datetime(df.click_time).dt.day.astype('uint8')
del df['click_time']
print("here")
Y_train=df['is_attributed'].values
del df['is_attributed']
X_train=df.values
df2=pd.read_csv('../input/test.csv')
df2['hour'] = pd.to_datetime(df2.click_time).dt.hour.astype('uint8')
df2['day'] = pd.to_datetime(df2.click_time).dt.day.astype('uint8')
df_sub = pd.DataFrame()
df_sub['click_id']=df2['click_id'].astype('int')
del df2['click_id']
del df2['click_time']
X_test=df2.values
lgb_train = lgb.Dataset(X_train, Y_train)
#categorical_features = c("app", "device", "os", "channel", "hour")
params={    
        'boosting_type': 'gbdt',
        'objective': 'binary',
        'metric':'auc',
        'learning_rate': 0.05,
    #'is_unbalance': 'true', # replaced with scale_pos_weight argument
    'num_leaves': 7,  # we should let it be smaller than 2^(max_depth)
    'max_depth': 3,  # -1 means no limit
    'min_child_samples': 100,  # Minimum number of data need in a child(min_data_in_leaf)
    'max_bin': 100,  # Number of bucketed bin for feature values
    'subsample': 0.7,  # Subsample ratio of the training instance.
    'subsample_freq': 1,  # frequence of subsample, <=0 means no enable
    'colsample_bytree': 0.7,  # Subsample ratio of columns when constructing each tree.
    'min_child_weight': 0,  # Minimum sum of instance weight(hessian) needed in a child(leaf)
    'scale_pos_weight':99 
        }
print('Start training...')
# train
gbm = lgb.train(params, lgb_train ,verbose_eval=10)
print('Start predicting...')
# predict
y_pred = gbm.predict(X_test , num_iteration=gbm.best_iteration)
print('predicted')
df_sub['is_attributed']=y_pred
df_sub.to_csv("my_file2.csv", index=False,float_format='%.10f')