{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Setup and Imports","metadata":{}},{"cell_type":"code","source":"from IPython.display import clear_output\nfrom IPython.core.interactiveshell import InteractiveShell\nInteractiveShell.ast_node_interactivity = 'all'\n\nRS = 335566\n\nimport os\nfrom pathlib import Path\nimport datetime, time\nimport pickle\n\nimport pandas as pd\npd.options.display.max_columns = None\npd.options.display.max_colwidth = 999\npd.options.display.max_rows = 999\n\nimport numpy as np\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nfrom sklearn.cluster import KMeans\nfrom sklearn.mixture import GaussianMixture, BayesianGaussianMixture\nfrom sklearn.metrics import calinski_harabasz_score, davies_bouldin_score, silhouette_score\n\nfrom umap import UMAP\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler, Normalizer\n\nRS = 335577\ndata_dir = '/kaggle/input/tabular-playground-series-jul-2022/'\n# data_dir = 'data/'\n\ndf_data = pd.read_csv(f'{data_dir}data.csv', index_col='id')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-19T20:05:30.664452Z","iopub.execute_input":"2022-07-19T20:05:30.664934Z","iopub.status.idle":"2022-07-19T20:05:31.775325Z","shell.execute_reply.started":"2022-07-19T20:05:30.664900Z","shell.execute_reply":"2022-07-19T20:05:31.773951Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"all_results = []\ndef add_result(features, desc, model_name, score_subset, score_all,):\n    all_results.append({\n        'Features': features,\n        'Description': desc,\n        'Model Name': model_name,\n        'CH Score on subset': int(score_subset),\n        'CH Score on all': int(score_all),\n    })","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:31.777775Z","iopub.execute_input":"2022-07-19T20:05:31.778267Z","iopub.status.idle":"2022-07-19T20:05:31.786170Z","shell.execute_reply.started":"2022-07-19T20:05:31.778236Z","shell.execute_reply":"2022-07-19T20:05:31.784367Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"top_7_features = ['f_09','f_10','f_12','f_13','f_08','f_07','f_11','f_27']\n\nmodel = KMeans(random_state = RS, n_clusters = 7)\nlbls = model.fit_predict(df_data[top_7_features])\ns1 = calinski_harabasz_score(df_data[top_7_features], lbls)\ns2 = calinski_harabasz_score(df_data, lbls)\nadd_result(top_7_features, 'Best 7 features from Sequential Selection', model.__class__.__name__, s1, s2)\n\npd.DataFrame(index=df_data.index, data=lbls, columns=['Predicted']).to_csv('top_7_features.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:31.788313Z","iopub.execute_input":"2022-07-19T20:05:31.788770Z","iopub.status.idle":"2022-07-19T20:05:35.614139Z","shell.execute_reply.started":"2022-07-19T20:05:31.788735Z","shell.execute_reply":"2022-07-19T20:05:35.612436Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"top_14_features = sorted(['f_09' ,'f_10' ,'f_12' ,'f_13' ,'f_08' ,'f_07' ,'f_11' ,'f_27' ,'f_26' ,'f_22' ,'f_25' ,'f_05' ,'f_18' ,'f_14'])\n\nmodel = KMeans(random_state = RS, n_clusters = 7)\nlbls = model.fit_predict(df_data[top_14_features])\ns1 = calinski_harabasz_score(df_data[top_14_features], lbls)\ns2 = calinski_harabasz_score(df_data, lbls)\nadd_result(top_14_features, 'Best 14 features from Sequential Selection', model.__class__.__name__, s1, s2)\npd.DataFrame(index=df_data.index, data=lbls, columns=['Predicted']).to_csv('top_14_features.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:35.620097Z","iopub.execute_input":"2022-07-19T20:05:35.620547Z","iopub.status.idle":"2022-07-19T20:05:39.665868Z","shell.execute_reply.started":"2022-07-19T20:05:35.620513Z","shell.execute_reply":"2022-07-19T20:05:39.664463Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"top_cat_and_cont_features = ['f_07', 'f_08', 'f_09', 'f_10', 'f_11', 'f_12', 'f_13', 'f_22', 'f_23', 'f_24', 'f_25', 'f_26', 'f_27', 'f_28']\n\nmodel = KMeans(random_state = RS, n_clusters = 7)\nlbls = model.fit_predict(df_data[top_cat_and_cont_features])\ns1 = calinski_harabasz_score(df_data[top_cat_and_cont_features], lbls)\ns2 = calinski_harabasz_score(df_data, lbls)\nadd_result(top_cat_and_cont_features, 'Best 14 features from discussions and shared notebooks', model.__class__.__name__, s1, s2)\npd.DataFrame(index=df_data.index, data=lbls, columns=['Predicted']).to_csv('top_cat_and_cont_features.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:39.667521Z","iopub.execute_input":"2022-07-19T20:05:39.667919Z","iopub.status.idle":"2022-07-19T20:05:43.876517Z","shell.execute_reply.started":"2022-07-19T20:05:39.667885Z","shell.execute_reply":"2022-07-19T20:05:43.875199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_results = pd.DataFrame(all_results)\ndf_results['public LB'] = [0.23473, 0.23607, 0.23794]\ndf_results","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:43.877933Z","iopub.execute_input":"2022-07-19T20:05:43.878240Z","iopub.status.idle":"2022-07-19T20:05:43.898935Z","shell.execute_reply.started":"2022-07-19T20:05:43.878210Z","shell.execute_reply":"2022-07-19T20:05:43.897739Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!tree /kaggle","metadata":{"execution":{"iopub.status.busy":"2022-07-19T20:05:43.900910Z","iopub.execute_input":"2022-07-19T20:05:43.901486Z","iopub.status.idle":"2022-07-19T20:05:44.685446Z","shell.execute_reply.started":"2022-07-19T20:05:43.901454Z","shell.execute_reply":"2022-07-19T20:05:44.683926Z"},"trusted":true},"execution_count":null,"outputs":[]}]}