私は約100レコードのサンプルをクラスタリングしています(ラベルなし)。そしてgrid_searchを使用して様々なハイパーパラメータでクラスタリングアルゴリズムを評価しようとしています。私はsilhouette_score
を使って得点しています。これはうまくいきます。ここscikit-learnでのクラスタリングのハイパーパラメータ評価のためのグリッド検索
私の問題は、私はGridSearchCV
/RandomizedSearchCV
の相互検証の側面を使用する必要はありませんが、私はシンプルGridSearch
/RandomizedSearch
を見つけることができないということです。私は自分で書くことができますが、ParameterSampler
とParameterGrid
のオブジェクトは非常に便利です。
私の次のステップは、cv
パラメータに何かを渡すことによって、たとえば、これを行うための簡単な方法があるBaseSearchCV
のサブクラスを作成し、自分の_fit()
メソッドを実装することで、それは尋ねる価値があったと思ったのだろうか?
def silhouette_score(estimator, X):
clusters = estimator.fit_predict(X)
score = metrics.silhouette_score(distance_matrix, clusters, metric='precomputed')
return score
ca = KMeans()
param_grid = {"n_clusters": range(2, 11)}
# run randomized search
search = GridSearchCV(
ca,
param_distributions=param_dist,
n_iter=n_iter_search,
scoring=silhouette_score,
cv= # can I pass something here to only use a single fold?
)
search.fit(distance_matrix)
テスト部分でも、電車のすべての例のインデックスと1倍のために一つだけのカップルを必要とし、中*管理されていない*データマイニング。 k-meansの10回の実行を計算し、最高のものを使用してください。 –
明らかに、クロスバリデーションはしませんが、シルエットスコアなどの適切なスコアメトリックが与えられているグリッド検索はなぜですか? –
また、kmeansは単なる例です。私はいくつかの異なるアルゴリズムとそれらのハイパーパラメータをテストしたいと思います。 –