Я группирую образец из примерно 100 записей (немаркированных) и пытаюсь использовать grid_search для оценки алгоритма кластеризации с различными гиперпараметрами. Я забиваю с помощью silhouette_score
, который отлично работает.
Моя проблема заключается в том, что мне не нужно использовать аспект кросс-валидации GridSearchCV
/RandomizedSearchCV
, но я не могу найти простой GridSearch
/RandomizedSearch
. Я могу написать свои собственные, но объекты ParameterSampler
и ParameterGrid
очень полезны.
Мой следующий шаг будет заключаться в подклассе BaseSearchCV
и реализовать мой собственный метод _fit()
, но подумал, что стоит спросить, есть ли более простой способ сделать это, например, передав что-то параметру cv
?
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)