{"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)\nimport os\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.metrics import roc_curve, auc\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nprint(os.listdir(\"../input\"))","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train=pd.read_csv(\"../input/training.csv\")\ntest=pd.read_csv(\"../input/test.csv\")\n\nprint(\"train.shape:{} test.shape:{}\".format(train.shape, test.shape))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Missing values in train: \", train.isnull().sum().sum())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Missing values in test: \", train.isnull().sum().sum())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"uncommon_features = []\nfor i in train.columns:\n    if i not in test.columns:\n        uncommon_features.append(i)\n        \nprint(\"Extra features in train: \", uncommon_features)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def add_features(data):\n    df = data.copy()\n    df['NEW_FD_SUMP'] = df['FlightDistance'] / (df['p0_p'] + df['p1_p'] + df['p2_p'])\n    df['NEW5_lt'] = df['LifeTime'] * (df['p0_IP'] + df['p1_IP'] + df['p2_IP']) / 3\n    df['p_track_Chi2Dof_MAX'] = df.loc[:, ['p0_track_Chi2Dof', 'p1_track_Chi2Dof', 'p2_track_Chi2Dof']].max(axis=1)\n    df['flight_dist_sig2'] = (df['FlightDistance'] / df['FlightDistanceError']) ** 2\n    df['flight_dist_sig'] = df['FlightDistance'] / df['FlightDistanceError']\n    df['NEW_IP_dira'] = df['IP'] * df['dira']\n    df['p0p2_ip_ratio'] = df['IP'] / df['IP_p0p2']\n    df['p1p2_ip_ratio'] = df['IP'] / df['IP_p1p2']\n    df['DCA_MAX'] = df.loc[:, ['DOCAone', 'DOCAtwo', 'DOCAthree']].max(axis=1)\n    df['iso_bdt_min'] = df.loc[:, ['p0_IsoBDT', 'p1_IsoBDT', 'p2_IsoBDT']].min(axis=1)\n    df['iso_min'] = df.loc[:, ['isolationa', 'isolationb', 'isolationc','isolationd', 'isolatione', 'isolationf']].min(axis=1)\n    df['NEW_iso_abc'] = df['isolationa'] * df['isolationb'] * df['isolationc']\n    df['NEW_iso_def'] = df['isolationd'] * df['isolatione'] * df['isolationf']\n    df['NEW_pN_IP'] = df['p0_IP'] + df['p1_IP'] + df['p2_IP']\n    df['NEW_pN_p']  = df['p0_p'] + df['p1_p'] + df['p2_p']\n    df['NEW_IP_pNpN'] = df['IP_p0p2'] * df['IP_p1p2']\n    df['NEW_pN_IPSig'] = df['p0_IPSig'] + df['p1_IPSig'] + df['p2_IPSig']\n    df['NEW_FD_LT'] = df['FlightDistance'] / df['LifeTime']\n    return df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_added = add_features(train)\ntest_added = add_features(test)\nprint(\"Total Number of Features: \", train_added.shape[1])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Eliminate features\")\nfilter_out = ['id', 'min_ANNmuon', 'production', 'mass', 'signal',\n              'SPDhits','CDF1', 'CDF2', 'CDF3',\n              'isolationb', 'isolationc','p0_pt', 'p1_pt', 'p2_pt',\n              'p0_p', 'p1_p', 'p2_p', 'p0_eta', 'p1_eta', 'p2_eta',\n              'isolationa', 'isolationb', 'isolationc', 'isolationd', 'isolatione', 'isolationf',\n              'p0_IsoBDT', 'p1_IsoBDT', 'p2_IsoBDT',\n              'p0_IP', 'p1_IP', 'p2_IP',\n              'IP_p0p2', 'IP_p1p2',\n              'p0_track_Chi2Dof', 'p1_track_Chi2Dof', 'p2_track_Chi2Dof',\n              'p0_IPSig', 'p1_IPSig', 'p2_IPSig',\n              'DOCAone', 'DOCAtwo', 'DOCAthree']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"features = list(f for f in train_added.columns if f not in filter_out)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"scaler = StandardScaler()\nX_train = scaler.fit_transform(train_added[features])\nX_test = scaler.fit_transform(test_added[features])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train = train['signal']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Shape of Training data: \", X_train.shape, \"\\nShape of Testing data: \", X_test.shape, \n      \"\\nShape of Training Labels: \", y_train.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pca = PCA().fit(X_train)\nX_train_pca = pca.transform(X_train)\nX_test_pca = pca.transform(X_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def pca_summary(pca, standardized_data, out=True):\n    names = [\"PC\"+str(i) for i in range(1, len(pca.explained_variance_ratio_)+1)]\n    a = list(np.std(pca.transform(standardized_data), axis=0))\n    b = list(pca.explained_variance_ratio_)\n    c = [np.sum(pca.explained_variance_ratio_[:i]) for i in range(1, len(pca.explained_variance_ratio_)+1)]\n    columns = pd.MultiIndex.from_tuples([(\"sdev\", \"Standard deviation\"), \n                                         (\"varprop\", \"Proportion of Variance\"), \n                                         (\"cumprop\", \"Cumulative Proportion\")])\n    summary = pd.DataFrame(list(zip(a, b, c)), index=names, columns=columns)\n    \n    if out:\n        print(\"Importance of components:\")\n        display(summary)\n    return summary","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"summary = pca_summary(pca, X_train_pca)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def screeplot(pca, standardized_values):\n    y = np.std(pca.transform(standardized_values), axis=0)**2\n    x = np.arange(len(y)) + 1\n    plt.plot(x, y, \"o-\")\n    plt.xticks(x, [\"Comp.\"+str(i) for i in x], rotation=60)\n    plt.ylabel(\"Variance\")\n    plt.show()\n\nscreeplot(pca, X_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train_pca_df = pd.DataFrame(X_train_pca[:,0:15])\nX_train_pca_df.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_test_pca_df = pd.DataFrame(X_test_pca[:,0:15])\nX_test_pca_df.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.layers import Dense, Dropout\nfrom keras.utils import to_categorical\nfrom keras.datasets import mnist\nfrom keras.utils.vis_utils import model_to_dot\nfrom IPython.display import SVG\nfrom keras.utils import np_utils","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train_pca_df.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train_nn = y_train.values.reshape(1, -1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\nmodel.add(Dense(128, input_dim=15, kernel_initializer='uniform', activation='relu'))\nmodel.add(Dense(64, kernel_initializer='uniform', activation='relu'))\nmodel.add(Dense(32, kernel_initializer='uniform', activation='elu'))\nmodel.add(Dense(16, kernel_initializer='uniform', activation='relu'))\nmodel.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))\n# Compile model\nmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\nprint(model.summary())\n# Fit model\nmodel.fit(X_train_pca_df, y_train_nn.T, epochs=10, batch_size=32)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"preds_nn = model.predict(X_test_pca_df)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub_nn = pd.DataFrame({\"id\": test['id'].values,\"prediction\": preds_nn.reshape(-1)})\nsub_nn.to_csv(\"submit_nn.csv\", index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}