【发布时间】:2019-02-17 19:06:56
【问题描述】:
import numpy as np
import pandas as pd
from scipy.stats.stats import pearsonr
from cvxpy import Variable, Problem, Maximize
X = np.random.rand(1000, 4)
Y = np.random.rand(1000, 4)
weights = Variable(4,)
constraints = []
def get_correlation(a):
return pearsonr(X * a, Y *a)
obj = Maximize(get_correlation(weights))
problem = Problem(obj, constraints)
problem.solve()
我正在尝试使用 cvxpy 来查找向量权重的值,以执行两个矩阵的线性变换。目标函数是两个变换矩阵之间的皮尔逊相关性的最大化。
我不明白为什么会出现以下错误。
4 def get_correlation(a):
----> 5 return pearsonr(X * a, Y *a)
6
7 obj = Maximize(get_correlation(weights))
~/Python/global/lib/python3.6/site-packages/scipy/stats/stats.py in pearsonr(x, y)
3030 x = np.asarray(x)
3031 y = np.asarray(y)
-> 3032 n = len(x)
3033 mx = x.mean()
3034 my = y.mean()
TypeError: len() of unsized object
【问题讨论】:
-
对,你的问题是......?
-
我不明白为什么我在求解程序时得到 `len() of unsized object'
标签: python convex-optimization cvxpy