问题描述
我正在尝试使用 Scikit-Learn 的 gridsearchcv 调整 HDSBCAN 模型。我想用纯度作为我的得分手,所以我这样定义:
from sklearn.metrics import make_scorer
def cluster_purity(y_true,y_pred):
# compute contingency matrix (also called confusion matrix)
contingency_matrix = metrics.cluster.contingency_matrix(y_true,y_pred)
# return purity
return np.sum(np.amax(contingency_matrix,axis=0)) / np.sum(contingency_matrix)
purity_score = make_scorer(cluster_purity,greater_is_better=True)
def HDBSCAN_test(param_grid,n_jobs):
estimator = hdbscan.HDBSCAN()
cv = None
regressor = gridsearchcv(estimator=estimator,cv=cv,scoring=purity_score,param_grid=param_grid,n_jobs=n_jobs,error_score=0.0,verbose=3)
regressor.fit(X_train,y_train)
print("Best Estimator learned through GridSearch")
print(regressor.best_estimator_)
return cv,regressor.best_estimator_
然后我这样称呼它:
param_grid={'min_cluster_size': [1000,2000,5000,8000]}
n_jobs=-1
cv,best_est=HDBSCAN_test(param_grid,n_jobs)
但是我收到了这个错误:
AttributeError: 'HDBSCAN' object has no attribute 'predict'
这是有道理的,因为确实 HDBSCAN 没有 predict
。它有 predict
、fit_predict
和 generate_prediction_data
(参见 link)
我曾尝试将行 regressor.fit(X_train,y_train)
更改为 regressor.fit_predict(X_train)
但这次我收到此错误:AttributeError: 'gridsearchcv' object has no attribute 'fit_predict'
我该如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)