我继承了大约一年前编写的一些代码,所以我猜当时它使用的是numpy 1.13(现在是 v1.15.2)、scipy 1.00rc(现在是 v1.1.0)和sklearn 0.19(现在是 v.0.20。 0)。
它实现了Fisher 的 LDA以将n维空间减少到 1…<em>n-1 维空间,从而产生一个 numpy 复数数组作为其结果(由于浮点不精确)。然后该数组被愉快地挑选并馈入sklearn.cluster.MeanShift
其中立即引发异常:
File "/…/lib/python3.6/site-packages/sklearn/cluster/mean_shift_.py", line 416, in fit
X = check_array(X)
File "/…/lib/python3.6/site-packages/sklearn/utils/validation.py", line 531, in check_array
_ensure_no_complex_data(array)
File "/…/lib/python3.6/site-packages/sklearn/utils/validation.py", line 354, in _ensure_no_complex_data
"{}\n".format(array))
ValueError: Complex data not supported
我仍在学习这里发生的数学细节,但令我感到奇怪的是,这段代码被宣布为“可运行”。
我在这里错过了什么吗?是版本变化带来了这种回归,还是存在更根本的代码缺陷?我将如何解决这个问题?