VBGMM では,クラスタ数を指定せずにクラスタリングを行う
【サイト内の関連ページ】
【関連する外部ページ】
Python の公式ページ: https://www.python.org/
Windows では,コマンドプロン プトを管理者として実行し, 次のコマンドを実行する.
python -m pip install -U pip setuptools numpy pandas matplotlib seaborn scikit-learn scikit-learn-intelex
端末で,次のコマンドを実行
sudo apt -y update sudo apt -y install python3-numpy python3-pandas python3-seaborn python3-matplotlib python3-sklearn
import pandas as pd import seaborn as sns sns.set() iris = sns.load_dataset('iris')
print(iris.head())
配列(アレイ)の形: サイズは 150 ×5.次元数は 2. 最後の列は,iris.target は花の種類のデータである
print(iris.shape) print(iris.ndim)
print( iris.iloc[:,0:4] )
# 主成分分析 def prin(A, n): pca = sklearn.decomposition.PCA(n_components=n) return pca.fit_transform(A) # 主成分分析で2つの成分を得る def prin2(A): return prin(A, 2) # M の最初の2列を,b で色を付けてプロット.b はラベル def scatter_label_plot(M, b, alpha): a12 = pd.DataFrame( M[:,0:2], columns=['a1', 'a2'] ) f = pd.factorize(b) a12['target'] = f[0] g = sns.scatterplot(x='a1', y='a2', hue='target', data=a12, palette=sns.color_palette("hls", np.max(f[0]) + 1), legend="full", alpha=alpha) # lenend を書き換え labels=f[1] for i, label in enumerate(labels): g.legend_.get_texts()[i].set_text(label) plt.show() # 主成分分析プロット def pcaplot(A, b, alpha): scatter_label_plot(prin2(A), b, alpha)
import numpy as np from sklearn.mixture import BayesianGaussianMixture bgmm = BayesianGaussianMixture(n_components=10, verbose=1).fit(iris.iloc[:,0:4]) X = iris.iloc[:,0:4].values c = bgmm.predict(X) print(c)
乱数を使っているので、実行するたびに違った値になる
pcaplot(X, c, 1)
pcaplot(X, iris.iloc[:,4], 1)