{"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":"code","source":"# Importing libraries\nimport numpy as np\nimport pandas as pd\nimport datetime\nimport matplotlib\nimport matplotlib.pyplot as plt\nfrom matplotlib import colors\nimport seaborn as sns\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.preprocessing import MinMaxScaler, StandardScaler, MaxAbsScaler, RobustScaler, PowerTransformer, QuantileTransformer\nfrom sklearn.decomposition import PCA\nfrom sklearn.mixture import BayesianGaussianMixture\nfrom yellowbrick.cluster import KElbowVisualizer\nfrom sklearn.metrics import silhouette_score\nfrom sklearn.cluster import KMeans\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\nfrom matplotlib.colors import ListedColormap\nfrom sklearn import metrics\nimport warnings\nimport sys\nfrom sklearn.manifold import TSNE\nif not sys.warnoptions:\n    warnings.simplefilter(\"ignore\")\nnp.random.seed(42)","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2022-07-08T11:06:05.478994Z","iopub.status.idle":"2022-07-08T11:06:05.480625Z","shell.execute_reply.started":"2022-07-08T11:06:05.480334Z","shell.execute_reply":"2022-07-08T11:06:05.480362Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Reading a dataset","metadata":{}},{"cell_type":"code","source":"df=pd.read_csv(\"../input/tabular-playground-series-jul-2022/data.csv\")\ndf=df.drop(\"id\",axis=1)\nss=pd.read_csv(\"../input/tabular-playground-series-jul-2022/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:09:45.827559Z","iopub.execute_input":"2022-07-08T11:09:45.827958Z","iopub.status.idle":"2022-07-08T11:09:46.534038Z","shell.execute_reply.started":"2022-07-08T11:09:45.827926Z","shell.execute_reply":"2022-07-08T11:09:46.532998Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Standardizing the data","metadata":{}},{"cell_type":"code","source":"cols = df.columns\nrb_scaler=RobustScaler()\nX=rb_scaler.fit_transform(df)\n\npower_transformer = PowerTransformer().fit(X)\nX = power_transformer.transform(X)\nX = pd.DataFrame(X, columns = cols)","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:09:47.887036Z","iopub.execute_input":"2022-07-08T11:09:47.887441Z","iopub.status.idle":"2022-07-08T11:09:51.926775Z","shell.execute_reply.started":"2022-07-08T11:09:47.887412Z","shell.execute_reply":"2022-07-08T11:09:51.925537Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualizing the data using TSNE","metadata":{}},{"cell_type":"code","source":"\ntsne = TSNE(n_components=3,random_state=1) \nTSNE_ds = pd.DataFrame(tsne.fit_transform(df), columns=([\"col1\",\"col2\", \"col3\"]))\nTSNE_ds.describe().T","metadata":{"execution":{"iopub.status.busy":"2022-07-08T10:44:13.613076Z","iopub.execute_input":"2022-07-08T10:44:13.613501Z","iopub.status.idle":"2022-07-08T11:06:05.475297Z","shell.execute_reply.started":"2022-07-08T10:44:13.613466Z","shell.execute_reply":"2022-07-08T11:06:05.473216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n#To plot \nx =TSNE_ds[\"col1\"]\ny =TSNE_ds[\"col2\"]\nz =TSNE_ds[\"col3\"]\nfig = plt.figure(figsize=(10,8))\nax = fig.add_subplot(111, projection=\"3d\")\nax.scatter(x,y,z, c=\"maroon\", marker=\"o\" )\nax.set_title(\"A 3D Projection Of Data In The Reduced Dimension\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:06:05.476479Z","iopub.status.idle":"2022-07-08T11:06:05.477598Z","shell.execute_reply.started":"2022-07-08T11:06:05.477302Z","shell.execute_reply":"2022-07-08T11:06:05.477337Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Determining the optimal number of K for KMeans","metadata":{}},{"cell_type":"code","source":"Elbow_M = KElbowVisualizer(KMeans(random_state=23), k=(4,12))\nElbow_M.fit(X)\nElbow_M.show()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Applying a model","metadata":{}},{"cell_type":"code","source":"BGM = BayesianGaussianMixture(n_components=7,covariance_type='full',random_state=1)\n# fit model and predict clusters\npreds = BGM.fit_predict(X)\nTSNE_ds[\"Clusters\"] = preds\n#Adding the Clusters feature to the orignal dataframe.\ndf[\"Clusters\"]= preds","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:10:02.336994Z","iopub.execute_input":"2022-07-08T11:10:02.337434Z","iopub.status.idle":"2022-07-08T11:10:55.369299Z","shell.execute_reply.started":"2022-07-08T11:10:02.337395Z","shell.execute_reply":"2022-07-08T11:10:55.368024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Making the submission dataset","metadata":{}},{"cell_type":"code","source":"ss.Predicted=pd.DataFrame(preds)","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:10:55.371078Z","iopub.execute_input":"2022-07-08T11:10:55.372013Z","iopub.status.idle":"2022-07-08T11:10:55.379533Z","shell.execute_reply.started":"2022-07-08T11:10:55.371961Z","shell.execute_reply":"2022-07-08T11:10:55.37839Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ss.to_csv(\"submission.csv\",index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-08T11:10:55.381728Z","iopub.execute_input":"2022-07-08T11:10:55.382577Z","iopub.status.idle":"2022-07-08T11:10:55.492027Z","shell.execute_reply.started":"2022-07-08T11:10:55.382526Z","shell.execute_reply":"2022-07-08T11:10:55.491114Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Hope you learned something from this notebook! Keep learning.","metadata":{},"execution_count":null,"outputs":[]}]}