这个错误是因为在第26行代码中,data被转换成了numpy数组,而在第41行代码中又传入了DataFrame类型的数据。建议将第25行代码修改为:
data = data.iloc[:-1, :]
这样可以直接对DataFrame类型的数据进行切片操作,不需要转换成numpy数组。然后在第41行代码中传入data即可:
res = minimize(objective_function, [0.1]*6 + [1000], args=(data,), method='Nelder-Mead')
此外,在第57行代码中,optimized_weights应该重复6次而不是11次,因为只有6个特征。建议将第57行代码修改为:
optimized_weights=np.repeat(optimized_weights, N+1).reshape((6,N+1))