【发布时间】:2019-04-18 12:02:42
【问题描述】:
我正在尝试将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',输入可以 不会根据强制转换安全地强制转换为任何支持的类型 规则“安全”
我不明白为什么,因为我没有空值。
【问题讨论】:
-
nan,而不是null。您显然没有将数字传递到某个地方。 -
是的,我有一列仍然是一个对象,但不知何故,当我制作 pd.to_numeric(dfc['Idade']).astype(int) 什么也没发生,它没有给出错误但是该列保持为对象
-
你保存结果了吗? dfc['Idade'] = pd.to_numeric(dfc['Idade']).astype(int) ?
-
dfc['Idade'].astype(int) dfc.dtypes
-
这还不够。 astype 只返回一个新系列,它不会修改当前系列。