以前の記事はスペクトラルクラスタリングについて説明しました。スペクトラルクラスタリングとは、クラスタリングの機械学習の方法のうち、教師なし学習に分類されます。スペクトラルクラスタリングの詳細はこちらです。
今回の記事はスペクトラルクラスタリングのパラメータ設定を説明します。
Scikit-learnのライブラリのパラメータを説明していきます。
class sklearn.cluster.SpectralClustering(n_clusters=8, eigen_solver=None, random_state=None, n_init=10, gamma=1.0, affinity=’rbf’, n_neighbors=10, eigen_tol=0.0, assign_labels=’kmeans’, degree=3, coef0=1, kernel_params=None, n_jobs=None)
先ず、スペクトラルクラスタリングの例を作成します。
from sklearn import datasets
# データ作成
X,z = datasets.make_blobs(n_samples=5000,
n_features=2,
centers=15,
cluster_std=1.2,
center_box=(-10.0, 10.0),
shuffle=True,
random_state=111
)
# データの整形
sc=preprocessing.StandardScaler()
sc.fit(X)
X_norm=sc.transform(X)
start = time.time()
# SpectralClustering
# sp_cls=cluster.SpectralClustering(n_clusters=2, affinity=”nearest_neighbors”)
sp_cls = cluster.SpectralClustering(n_clusters=2,
eigen_solver=None,
random_state=None,
n_init=10,
gamma=1.0,
affinity=’nearest_neighbors’,
n_neighbors=10,
eigen_tol=0.0,
assign_labels=’kmeans’,
degree=3,
coef0=1,
kernel_params=None,
n_jobs=-1
)
cls=sp_cls.fit(X_norm)
end = time.time()
# 図作成
x=X_norm[:,0]
y=X_norm[:,1]
plt.figure(figsize=(7,7))
plt.scatter(x,y, c=z)
plt.scatter(x,y, c=cls.labels_)
plt.text(.99, .01, (‘%.2fs’ % (end – start)).lstrip(‘0’),
transform=plt.gca().transAxes, size=15,
horizontalalignment=’right’)
plt.show
n_clusters : integer, optional
クラスタの数のパラメータ
eigen_solver : {None, ‘arpack’, ‘lobpcg’, or ‘amg’}
固有値分解の方法を指定しています。AMGを利用する場合はpyamgのライブラリが必要です。AMGを利用すれば、処理時間は早くなります。
random_state : int, RandomState instance or None (default)
random_stateは乱数種の設定になります。 同じ結果を再現する場合に指定します。
n_init : int, optional, default: 10
k-meansアルゴリズムを利用した重心の初期設定になります。 最終結果は、n_init回数連続実行したうちの最良の回数での結果になります。回数が多いほど時間がかかります。
gamma : float, default=1.0
rbf, poly, sigmoid, laplacian chi2 のgammaのKernel coefficient設定ことができます。. affinity=’nearest_neighbors’には利用できません。
affinity : string, array-like or callable, default ‘rbf’
‘nearest_neighbors’、 ‘precomputed’、 ‘rbf’、またはsklearn.metrics.pairwise_kernelsでサポートされているカーネル関数を設定します。類似性スコアを計算するのに用います。
n_neighbors : integer
最近傍法を使用して類似性行列を構築するときに使用する隣接の数。 affinity = ‘rbf’では無効です。
n_neighbors : integer
最近傍法を使用して類似性行列を構築するときに使用する隣接の数。 affinity = ‘rbf’では無効です。
assign_labels : {‘kmeans’, ‘discretize’}, default: ‘kmeans’
埋め込みスペースにラベルを割り当てるために使用する戦略です。 ラプラシアン埋め込み後にラベルを割り当てるには2つの方法があります。 k-meansが適用可能であり、一般的な選択です。 しかし、それは初期化にも敏感です。 離散化は、ランダム初期化による影響を受けにくいもう1つの方法です。
assign_labels : {‘kmeans’, ‘discretize’}, default: ‘kmeans’
埋め込みスペースにラベルを割り当てるために使用する戦略です。 ラプラシアン埋め込み後にラベルを割り当てるには2つの方法があります。 k-meansが適用可能であり、一般的な選択です。 しかし、それは初期化にも敏感です。 離散化は、ランダム初期化による影響を受けにくいもう1つの方法です。
coef0 : float, default=1
polynomial およびsigmoidのZero coefficient のカーネル係数です。 他のカーネルでは無効です。
coef0 : float, default=1
polynomial およびsigmoidのZero coefficient のカーネル係数です。 他のカーネルでは無効です。