{"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":"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 sklearn.decomposition import PCA\nfrom sklearn.mixture import GaussianMixture, BayesianGaussianMixture\nfrom sklearn.preprocessing import StandardScaler, RobustScaler, PowerTransformer","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-05T14:15:45.990458Z","iopub.execute_input":"2022-07-05T14:15:45.991402Z","iopub.status.idle":"2022-07-05T14:15:45.999217Z","shell.execute_reply.started":"2022-07-05T14:15:45.991359Z","shell.execute_reply":"2022-07-05T14:15:45.998018Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv(\"../input/tabular-playground-series-jul-2022/data.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-05T14:15:46.004386Z","iopub.execute_input":"2022-07-05T14:15:46.004924Z","iopub.status.idle":"2022-07-05T14:15:46.967127Z","shell.execute_reply.started":"2022-07-05T14:15:46.004877Z","shell.execute_reply":"2022-07-05T14:15:46.966050Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission=df[['id']]\n\ndf = df.drop(columns = \"id\")\ncols = list(df.columns)\nint_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-05T14:15:46.969263Z","iopub.execute_input":"2022-07-05T14:15:46.969619Z","iopub.status.idle":"2022-07-05T14:15:46.990423Z","shell.execute_reply.started":"2022-07-05T14:15:46.969584Z","shell.execute_reply":"2022-07-05T14:15:46.989505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X=df[float_cols]\n\nYH=X@np.linalg.pinv(X.T@X)\nYH","metadata":{"execution":{"iopub.status.busy":"2022-07-05T14:15:46.992007Z","iopub.execute_input":"2022-07-05T14:15:46.992428Z","iopub.status.idle":"2022-07-05T14:15:47.138501Z","shell.execute_reply.started":"2022-07-05T14:15:46.992389Z","shell.execute_reply":"2022-07-05T14:15:47.137153Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.cluster import SpectralCoclustering,SpectralBiclustering\n\nspco=SpectralBiclustering(n_clusters=(7,3))\nspco.fit(df)\nprint(spco.row_labels_ )\nprint(spco.column_labels_ )\nspeco=pd.DataFrame(df.columns)\nspeco['spebi']=spco.column_labels_\nspeco","metadata":{"execution":{"iopub.status.busy":"2022-07-05T14:15:47.141766Z","iopub.execute_input":"2022-07-05T14:15:47.142987Z","iopub.status.idle":"2022-07-05T14:15:59.056195Z","shell.execute_reply.started":"2022-07-05T14:15:47.142927Z","shell.execute_reply":"2022-07-05T14:15:59.055158Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\ndf=df[['f_09','f_12','f_13']]\nX_scaled = RobustScaler().fit(df).transform(df)\n#X_scaled = PowerTransformer().fit(X_scaled).transform(X_scaled)\nfrom sklearn import preprocessing\nfrom sklearn import metrics\nnummercl=7\nfrom sklearn.cluster import KMeans,MeanShift,SpectralClustering\nfrom sklearn.mixture import GaussianMixture,BayesianGaussianMixture\nfrom sklearn.decomposition import PCA,TruncatedSVD,NMF,FastICA,FactorAnalysis\nfrom sklearn.cluster import SpectralCoclustering,SpectralBiclustering\nfrom sklearn.manifold import LocallyLinearEmbedding,TSNE\nscalers=[preprocessing.PowerTransformer(),\n         preprocessing.StandardScaler(),\n        preprocessing.Normalizer(),\n        preprocessing.RobustScaler(),\n        preprocessing.QuantileTransformer(output_distribution='normal')\n        ]\nautoclust = [BayesianGaussianMixture(n_components=nummercl),\n             ####SpectralCoclustering(n_clusters=nummercl), does not work\n            #MeanShift(n_jobs=-1),\n            #SpectralClustering(n_clusters=nummercl,n_jobs=-1),\n            GaussianMixture(n_components=nummercl, covariance_type = 'full', n_init=3, random_state=3),\n            KMeans(n_clusters=nummercl, random_state=0), \n            ]\nscores=[]\nfor sca in scalers:\n    X_scaled= sca.fit_transform(df.sample(9000) )\n    X_scaled=preprocessing.PowerTransformer().fit_transform(X_scaled)\n    #X_scaled=preprocessing.PowerTransformer().fit_transform(X_scaled)\n\n    X_scaled = pd.DataFrame(X_scaled, columns = df.columns)\n    X_pca = TSNE(init=\"pca\", random_state=0, learning_rate=\"auto\").fit_transform(X_scaled)\n    PCA_df = pd.DataFrame({\"PCA_1\" : X_pca[:,0], \"PCA_2\" : X_pca[:,1]})\n            \n    for gmm in autoclust:\n        preds = gmm.fit_predict(X_pca)#X_scaled)\n        PCA_df['classi']=preds\n        f,ax = plt.subplots(figsize=(5, 5))\n        sns.scatterplot(data = PCA_df, x = \"PCA_1\", y = \"PCA_2\", hue=\"classi\", s=3, palette=sns.color_palette(\"rocket\", PCA_df[\"classi\"].nunique()));\n        plt.show()\n        shs=metrics.silhouette_score(X_scaled, preds, metric='euclidean')\n        chs=metrics.calinski_harabasz_score(X_scaled, preds)\n        dbs=metrics.davies_bouldin_score(X_scaled, preds)\n        \n        submission['Predicted'] =0\n        if len(df)==len(X_scaled):\n            submission['Predicted']=preds\n            submission.to_csv(str(gmm)+str(sca)+'submission.csv', index=False)\n            submission\n        else:\n            if len(scores)==0:\n                mpreds=preds\n                scores.append([sca,gmm,shs,chs,dbs,1])\n            \n            else:\n                for mtrc in [  metrics.v_measure_score]:\n                    scores.append([sca,gmm,shs,chs,dbs,mtrc(mpreds, preds)])\n                    \n        print(pd.DataFrame(scores))\n        ","metadata":{"execution":{"iopub.status.busy":"2022-07-05T15:01:09.678719Z","iopub.execute_input":"2022-07-05T15:01:09.679232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}