{"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":"# TPS July 2022","metadata":{}},{"cell_type":"markdown","source":"**If you like my work, please, leave an upvote: it will be really appreciated and it will motivate me in offering more content to the Kaggle community ! :)**","metadata":{}},{"cell_type":"markdown","source":"**Libraries**","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport seaborn as sns\nsns.set_style('darkgrid')\nimport matplotlib.pyplot as plt\nfrom sklearn.cluster import KMeans\nfrom matplotlib.ticker import MaxNLocator\nfrom matplotlib.colors import ListedColormap\nfrom cycler import cycler\nfrom IPython.display import display\nimport datetime\n\nfrom sklearn.decomposition import PCA\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.feature_selection import mutual_info_classif\nfrom sklearn.mixture import GaussianMixture, BayesianGaussianMixture\nfrom sklearn.preprocessing import StandardScaler, RobustScaler, PowerTransformer","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:55.466562Z","iopub.execute_input":"2022-07-05T15:29:55.466976Z","iopub.status.idle":"2022-07-05T15:29:55.475560Z","shell.execute_reply.started":"2022-07-05T15:29:55.466942Z","shell.execute_reply":"2022-07-05T15:29:55.474525Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Let's start by reading the data and looking at the first few rows:**","metadata":{}},{"cell_type":"code","source":"df = pd.read_csv(\"../input/tabular-playground-series-jul-2022/data.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:55.495539Z","iopub.execute_input":"2022-07-05T15:29:55.496249Z","iopub.status.idle":"2022-07-05T15:29:56.355237Z","shell.execute_reply.started":"2022-07-05T15:29:55.496214Z","shell.execute_reply":"2022-07-05T15:29:56.354336Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.shape","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.356832Z","iopub.execute_input":"2022-07-05T15:29:56.357347Z","iopub.status.idle":"2022-07-05T15:29:56.362442Z","shell.execute_reply.started":"2022-07-05T15:29:56.357292Z","shell.execute_reply":"2022-07-05T15:29:56.361617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.363758Z","iopub.execute_input":"2022-07-05T15:29:56.364161Z","iopub.status.idle":"2022-07-05T15:29:56.396475Z","shell.execute_reply.started":"2022-07-05T15:29:56.364131Z","shell.execute_reply":"2022-07-05T15:29:56.395591Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.info()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.398615Z","iopub.execute_input":"2022-07-05T15:29:56.399543Z","iopub.status.idle":"2022-07-05T15:29:56.420935Z","shell.execute_reply.started":"2022-07-05T15:29:56.399508Z","shell.execute_reply":"2022-07-05T15:29:56.420116Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = df.drop(columns = \"id\")\ncols = list(df.columns)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.422181Z","iopub.execute_input":"2022-07-05T15:29:56.423192Z","iopub.status.idle":"2022-07-05T15:29:56.434542Z","shell.execute_reply.started":"2022-07-05T15:29:56.423158Z","shell.execute_reply":"2022-07-05T15:29:56.433368Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"int_cols = [i for i in df.columns if df[i].dtype == int]\nfloat_cols = [i for i in df.columns if df[i].dtype == float]","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.435888Z","iopub.execute_input":"2022-07-05T15:29:56.437025Z","iopub.status.idle":"2022-07-05T15:29:56.449440Z","shell.execute_reply.started":"2022-07-05T15:29:56.436989Z","shell.execute_reply":"2022-07-05T15:29:56.448244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import missingno as msno\n%matplotlib inline\nmsno.matrix(df.sample(250))","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:56.450854Z","iopub.execute_input":"2022-07-05T15:29:56.451793Z","iopub.status.idle":"2022-07-05T15:29:57.145861Z","shell.execute_reply.started":"2022-07-05T15:29:56.451760Z","shell.execute_reply":"2022-07-05T15:29:57.144614Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:57.147271Z","iopub.execute_input":"2022-07-05T15:29:57.147596Z","iopub.status.idle":"2022-07-05T15:29:57.362192Z","shell.execute_reply.started":"2022-07-05T15:29:57.147567Z","shell.execute_reply":"2022-07-05T15:29:57.360826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"corr=df.corr()\nplt.figure(figsize=(14,10))\nsns.heatmap(corr, annot=True, cmap='YlGnBu');","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:29:57.364077Z","iopub.execute_input":"2022-07-05T15:29:57.364555Z","iopub.status.idle":"2022-07-05T15:30:01.322029Z","shell.execute_reply.started":"2022-07-05T15:29:57.364510Z","shell.execute_reply":"2022-07-05T15:30:01.320935Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"float_features = [f for f in df.columns if df[f].dtype == 'float64']\n\n# Training histograms\nfig, axs = plt.subplots(4, 4, figsize=(16, 16))\nfor f, ax in zip(float_features, axs.ravel()):\n    ax.hist(df[f], density=True, bins=100)\n    ax.set_title(f'Train {f}, std={df[f].std():.1f}')\nplt.suptitle('Histograms of the float features', y=0.93, fontsize=20)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:30:01.326795Z","iopub.execute_input":"2022-07-05T15:30:01.327303Z","iopub.status.idle":"2022-07-05T15:30:06.972413Z","shell.execute_reply.started":"2022-07-05T15:30:01.327257Z","shell.execute_reply":"2022-07-05T15:30:06.971263Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_scaled = RobustScaler().fit(df).transform(df)\nX_scaled = PowerTransformer().fit(X_scaled).transform(X_scaled)\n\nX_scaled = pd.DataFrame(X_scaled, columns = cols)","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:30:06.973659Z","iopub.execute_input":"2022-07-05T15:30:06.973973Z","iopub.status.idle":"2022-07-05T15:30:11.342938Z","shell.execute_reply.started":"2022-07-05T15:30:06.973944Z","shell.execute_reply":"2022-07-05T15:30:11.342080Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ALGORITHM = GaussianMixture","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:30:11.344601Z","iopub.execute_input":"2022-07-05T15:30:11.345216Z","iopub.status.idle":"2022-07-05T15:30:11.351279Z","shell.execute_reply.started":"2022-07-05T15:30:11.345171Z","shell.execute_reply":"2022-07-05T15:30:11.349631Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"additional_hyperparams = dict(\n                                    \n                                random_state = 1\n                             \n                             )","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:30:11.352995Z","iopub.execute_input":"2022-07-05T15:30:11.353787Z","iopub.status.idle":"2022-07-05T15:30:11.365076Z","shell.execute_reply.started":"2022-07-05T15:30:11.353741Z","shell.execute_reply":"2022-07-05T15:30:11.364019Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pca = PCA(random_state = 10, whiten = True)\nX_pca = pca.fit_transform(X_scaled)\nPCA_df = pd.DataFrame({\"PCA_1\" : X_pca[:,0], \"PCA_2\" : X_pca[:,1]})\n\ngmm = ALGORITHM(n_components = 2, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\n\ngmm = ALGORITHM(n_components=3, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\n\ngmm = ALGORITHM(n_components=4, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\n\ngmm = ALGORITHM(n_components=5, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\n\ngmm = ALGORITHM(n_components=6, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\n\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\ngmm = ALGORITHM(n_components=7, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\n\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:30:11.366597Z","iopub.execute_input":"2022-07-05T15:30:11.367288Z","iopub.status.idle":"2022-07-05T15:31:12.168338Z","shell.execute_reply.started":"2022-07-05T15:30:11.367253Z","shell.execute_reply":"2022-07-05T15:31:12.166992Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preds_1 = preds","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:31:12.169883Z","iopub.execute_input":"2022-07-05T15:31:12.170592Z","iopub.status.idle":"2022-07-05T15:31:12.176243Z","shell.execute_reply.started":"2022-07-05T15:31:12.170549Z","shell.execute_reply":"2022-07-05T15:31:12.175008Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gmm = ALGORITHM(n_components=8, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\n\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\ngmm = ALGORITHM(n_components=9, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\n\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})\ngmm = ALGORITHM(n_components=10, **additional_hyperparams)\npreds = gmm.fit_predict(X_scaled)\n\npca = PCA(n_components=2)\nreduced_data = pca.fit_transform(X_scaled)\ndf = pd.DataFrame({\"x\" : reduced_data[:,0], \"y\" : reduced_data[:,1], \"clusters\" : preds})","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:31:12.178064Z","iopub.execute_input":"2022-07-05T15:31:12.179176Z","iopub.status.idle":"2022-07-05T15:32:27.643705Z","shell.execute_reply.started":"2022-07-05T15:31:12.179127Z","shell.execute_reply":"2022-07-05T15:32:27.642381Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# submission","metadata":{}},{"cell_type":"code","source":"submission = pd.read_csv(\"../input/tabular-playground-series-jul-2022/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:32:27.645221Z","iopub.execute_input":"2022-07-05T15:32:27.645985Z","iopub.status.idle":"2022-07-05T15:32:27.702209Z","shell.execute_reply.started":"2022-07-05T15:32:27.645939Z","shell.execute_reply":"2022-07-05T15:32:27.700797Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission[\"Predicted\"] = preds_1\nsubmission.to_csv(\"submission.csv\", index=False)\nsubmission","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:32:27.703923Z","iopub.execute_input":"2022-07-05T15:32:27.704625Z","iopub.status.idle":"2022-07-05T15:32:27.888099Z","shell.execute_reply.started":"2022-07-05T15:32:27.704582Z","shell.execute_reply":"2022-07-05T15:32:27.886877Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Thank you for reading!","metadata":{}},{"cell_type":"markdown","source":"# Please let me know if you have any questions and I look forward to any suggestions 🙂","metadata":{}}]}