fitメソッド
Coddyの「機械学習入門」コースのレッスン 10/19。
チャレンジ
難しいfit メソッドと find_cluster_centroid を実装してください。find_cluster_centroid は、与えられた点のリスト(クラスター)の重心(セントロイド)を見つけます。重心の見つけ方についての指示は前のレッスンにあります。fit を実装するには、以下の手順に従ってください:
- セントロイドの初期化:まず、データセットから初期セントロイドとして
k個の点を選択します。テストケースに合格するために、3番目、5番目、7番目、9番目、…の点を初期セントロイドとして選択してください(k個の点によります)。 - クラスターの割り当て:データセット内の各点について、最も近いセントロイドを(ユークリッド距離などの距離測定法を使用して)見つけ、その点をそのクラスターに割り当てます。
- セントロイドの更新:すべての点がクラスターに割り当てられたら、各クラスター内のすべての点の平均をとることにより、セントロイドを再計算します。
- ステップ2と3の繰り返し:セントロイドが大きく変化しなくなるまで、上記の手順を繰り返します。新しいセントロイドと前のセントロイドの間の距離が
0.01未満になったら、停止します。
テストケースに合格する方法:
- セントロイドを
self.centroids変数に保存してください。 - 新しいセントロイドを見つけた際、新しいセントロイドと前のセントロイドの間の合計距離が
0.01未満であれば、前のセントロイドを保持してください。 - セントロイドの順序は重要です。常にセントロイドを最初から最後まで順番に反復処理してください。
- テストケースは
self.centroidsを出力し、それらが正しいかどうかを検証します。
自分で試してみよう
def euclidian_distance(point_a, point_b):
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
class KMeans:
def __init__(self, k):
self.k = k
def find_cluster_centroid(self, cluster_points):
# ここにコードを記述してください
def fit(self, X_train):
# ここにコードを記述してください
self.centroids = ...
def predict(self, X_test):
pass機械学習入門のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ
