gpt4 book ai didi

python - scikit-learn 中聚类超参数评估的网格搜索

转载 作者:IT老高 更新时间:2023-10-28 20:35:17 24 4
gpt4 key购买 nike

我正在对大约 100 条记录(未标记)的样本进行聚类,并尝试使用 grid_search 来评估具有各种超参数的聚类算法。我正在使用 silhouette_score 进行评分,效果很好。

我的问题是我不需要使用 GridSearchCV/RandomizedSearchCV 的交叉验证方面,但是我找不到简单的 GridSearch/RandomizedSearch。我可以自己编写,但 ParameterSamplerParameterGrid 对象非常有用。

我的下一步将是继承 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)

最佳答案

clusteval 库将帮助您评估数据并找到最佳聚类数。该库包含五种可用于评估聚类的方法:silhouettedbindexderivativedbscan 和 < em>hdbscan.

pip install clusteval

根据您的数据,可以选择评估方法。

# Import library
from clusteval import clusteval

# Set parameters, as an example dbscan
ce = clusteval(method='dbscan')

# Fit to find optimal number of clusters using dbscan
results= ce.fit(X)

# Make plot of the cluster evaluation
ce.plot()

# Make scatter plot. Note that the first two coordinates are used for plotting.
ce.scatter(X)

# results is a dict with various output statistics. One of them are the labels.
cluster_labels = results['labx']

关于python - scikit-learn 中聚类超参数评估的网格搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34611038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com