scipy的cdist与Sympy符号

时间:2016-07-23 02:42:50

标签: python optimization scipy sympy

我今天意识到,矢量中的同意矩阵符号(对于协方差矩阵中的多个部分元素导数)在优化。最小化过程中与scipy的cdist不兼容,因为它假设在进行函数调用时实际使用数字(足够公平)。

它首先遇到的问题是表达式无法转换为浮点数,因为它包含符号符号

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 个答案:

答案 0 :(得分:1)

正如您所发现的,scipy.distance.cdist不处理任意对象。你需要自己实现欧几里德规范。

答案 1 :(得分:1)

你可以通过首先将它转换为显式矩阵对象,然后使用norm方法来获得SymPy矩阵表达式的范数。

{{1}}