首页 > 解决方案 > 对数据使用 DBSCAN 算法

问题描述

我试图DBSCAN在一个小数据帧上应用该算法,以便在之后进行异常值预测。所有列都有数值,但即使我没有空值,我也会不断收到相同的错误。

这是我调用算法的代码:

    db = DBSCAN(eps=0.09, min_samples=10).fit(dfc)
    m = loop.LocalOutlierProbability(dfc).fit()
    scores_noclust = m.local_outlier_probabilities
    m_clust = loop.LocalOutlierProbability(dfc, 
    cluster_labels=list(db.labels_)).fit()
    scores_clust = m_clust.local_outlier_probabilities
    print(list(scores_clust))

我收到此错误:

输入类型不支持 ufunc 'isnan',并且根据转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型

我不明白为什么,因为我没有空值。

标签: pythonoutliersdbscan

解决方案


根据您的评论,您似乎有一列包含需要转换为整数的对象。

dfc['Idade'] = pd.to_numeric(dfc['Idade']).astype(int)

仅仅做演员是不够的,它只是返回一个新的系列,但它不会修改旧的系列,你必须明确地这样做。


推荐阅读