my_kmeans

my_kmeans.elbow(X, ax, k_min=1, k_max=10, random_state=42)[source]

エルボー法の結果を可視化する。

Parameters
  • X ({array-like, sparse matrix} of shape (n_samples, n_features)) – Training instances to cluster.

  • ax (matplotlib.axes.Axes) – プロットを行なう Axes オブジェクト。これを更新する。

  • k_min (int, default 1) – エルボー法を行なう、最小のクラスタ数。

  • k_max (int, default 10) – エルボー法を行なう、最大のクラスタ数。

  • random_state (int, RandomState instance, default 42) – Determines random number generation for centroid initialization. Use an int to make the randomness deterministic.

my_kmeans.new_euclidean_distances(X, Y=None, Y_norm_squared=None, squared=False)[source]

k-means で用いる独自の距離関数。

n_features が 3 以上で、X[:, :2] が coord_ra と coord_dec であるような入力 X を想定しており(Y についても同様)、coord_ra と coord_dec の 2 次元空間の ユークリッド距離(ルートを取ったもの)と、それ以外の特徴量の空間のユークリッド距離 (ルートを取ったもの)の和の距離行列を返す。 squared == True ならば、その 2 乗を取った距離行列を返す。

Parameters
  • X ({array-like, sparse matrix}, shape (n_samples_1, n_features)) – n_features は 3 以上で、X[:, :2] が coord_ra と coord_dec。

  • Y ({array-like, sparse matrix}, shape (n_samples_2, n_features),) – default None n_features は 3 以上で、Y[:, :2] が coord_ra と coord_dec。

  • Y_norm_squared (array-like, shape (n_samples_2, ), default None) – 元のユークリッド距離関数(sklearn.metrics.pairwise.euclidean_distances)の 入力を保証するためのパラメータ。本関数では使用できないため、以下のコードには 現れていない。

  • squared (boolean, default False) – Return squared distances.

Returns

distances – X と Y の距離行列。Y == None ならば、X と X 自身の距離行列。

Return type

{array, sparse matrix}, shape (n_samples_1, n_samples_2)

Examples

>>> from sklearn.cluster import _kmeans
>>> from pkg import my_kmeans as mk
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> import numpy as np
>>> X = np.array([[0, 0, 0], [1, 1, 0], [2, 1, 0],
                  [0, 0, 1], [1, 1, 1], [1, 2, 1]])
>>> # monkey-patch による上書き
>>> _kmeans.euclidean_distances = mk.new_euclidean_distances
>>> km = _kmeans.KMeans(n_clusters=2, random_state=42)
>>> km.fit(X)
>>> # monkey-patch による変更を元に戻す
>>> _kmeans.euclidean_distances = euclidean_distances
>>> km = _kmeans.KMeans(n_clusters=2, random_state=42)
>>> km.fit(X)