前提・実現したいこと
現在2種類のタイプの機器があり
上と下でグループ分けをしてそれぞれで単回帰分析をしたいのですが
まずクラスタリングでそれぞれの機器にグループ分けをしたいのですが
kmeansだときれいに分けることができません
グループ分けするよい手法があれば教えてください
発生している問題・エラーメッセージ
該当のソースコード
python
1import pandas as pd 2 3url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSA9NhTNG6rcb1BAdVzC2RYgPPCCd0ryo1YconlDj7TK15IAO8rIi3uY9FzRCkXsj48BO4hWtceriKq/pub?gid=0&single=true&output=csv" 4 5df = pd.read_csv(url) 6 7sns.scatterplot(x='ta', y='m', data=df)
試したこと
KMeans
python
1df1 = df.copy() 2 3from sklearn.cluster import KMeans 4 5kmeans = KMeans(n_clusters=2, random_state=0) 6 7clusters = kmeans.fit(df1) 8df1['cluster'] = clusters.labels_ 9 10sns.scatterplot(x='ta', y='m', hue='cluster', data=df1)
GaussianMixture
python
1df2 = df.copy() 2 3from sklearn.mixture import GaussianMixture 4 5model = GaussianMixture(n_components=2) 6model.fit(df2) 7df2['cluster'] = model.predict(df2) 8 9sns.scatterplot(x='ta', y='m', hue='cluster', data=df2)
SpectralClustering
python
1df3 = df.copy() 2 3from sklearn import cluster 4 5spectral = cluster.SpectralClustering(n_clusters=2, eigen_solver='arpack', affinity='nearest_neighbors') 6 7clusters = spectral.fit(df3) 8 9df3['cluster'] = clusters.labels_ 10 11sns.scatterplot(x='ta', y='m', hue='cluster', data=df3)
LinearRegression
python
1df4 = df.copy() 2 3from sklearn.linear_model import LinearRegression 4 5lr = LinearRegression() 6lr.fit(df4['ta'].values.reshape(-1, 1), df4['m'].values.reshape(-1, 1)) 7pred_y = lr.predict(df4['ta'].values.reshape(-1, 1)).reshape(-1) 8df4['cluster'] = (df4['m'] < pred_y).astype(int) 9 10for name, dfg in df4.groupby('cluster'): 11 lr.fit(dfg['ta'].values.reshape(-1, 1), dfg['m'].values.reshape(-1, 1)) 12 print(name, lr.coef_, lr.intercept_) 13 14sns.scatterplot(x='ta', y='m', hue='cluster', data=df4)
補足情報(FW/ツールのバージョンなど)
Python3.8
pandas
回答2件
あなたの回答
tips
プレビュー