我今天意识到,矢量中的sympy矩阵符号(对于协方差矩阵中的多个部分元素导数)在优化.minimize过程中与scipy的cdist不兼容,因为它假定在进行函数调用时实际使用数字(公平)足够) .
它首先遇到的问题是表达式无法转换为float,因为它包含sympy符号
TypeError: can't convert expression to a float
接下来是一个很长的重复列表:
During handling of the above exception, another exception occurred:
SystemError: <built-in function hasattr> returned a result with an error set
是否存在通过sympy符号利用cdist和替换的内置方式,或者这是实现可以处理符号的cdist的自定义实现的唯一选择?这并不重要,但我正在使用的cdist方法是欧几里得平方 .
谢谢 .
2 回答
正如您所发现的,scipy.distance.cdist不处理任意对象 . 你需要自己实现欧几里德规范 .
您可以通过首先将其转换为显式矩阵对象,然后使用norm方法来获得SymPy矩阵表达式的范数 .