使用distance.squareform时进行向量矩阵转换以及出现“The matrix argument must be square“报错的解决方案

在计算相似性问题时,没两个样本之间计算距离,可以产生一个nn的相似性矩阵,其中共有n(n-1)/2个不重复的相似性。因此为了便于储存,我们通常将其储存成为向量形式,节省储存空间和读取速度。
我这里使用了4103个样本,于是计算得到了8415253维的向量,在读取后,我需要重新获取完整的相似性矩阵,从而进行谱聚类。于是我使用pd.read_csv读取相似性向量,获得一个8415253*1的Dataframe格式的变量。
在这里插入图片描述使用distance.squareform()函数进行矩阵变换时,却出现了报错

Haar_simi1 = distance.squareform(Haar_simi_) 

“The matrix argument must be square”
在这里插入图片描述
我重新计算了向量长度,发现并没有问题,那么是数据格式的问题吗?
我使用np.array将其转换成1维数组,却依旧报错。
在这里插入图片描述
我尝试了很多种方法,最终发现,该函数支持serie格式的数据,于是我将其转换成了Series类型,终于实现了成功的矩阵变换,转换成了4103*4103的相似性矩阵
在这里插入图片描述在这里插入图片描述
将一维Dataframe转换成Series可以使用pd.Series()进行,或者也可以直接进行如下这样一个乘1的运算来获得。

Haar_simi_ = Haar_simi_.iloc[:,0]*1
这个错误提示“Invalid datatype. Options argument must be created with OPTIMOPTIONS”通常出现使用MATLAB的优化工具箱中的函数。这个错误表明传递给该函数的选项参数(Options argument)不是通过`optimoptions`函数创建的。`optimoptions`是用于创建和修改各种优化函数选项结构体的函数,它是MATLAB优化工具箱中用于自定义函数行为的重要工具。 例如,当你使用`fmincon`、`fminunc`、`lsqnonlin`等优化函数,你可以通过`optimoptions`来设置优化算法、容忍度、显示选项等参数。如果直接传递了未经`optimoptions`创建的选项字典或者其他数据类型,就会出现上述错误。 解决这个问题的方法是确保你创建了正确的选项结构体。下面是一个使用`optimoptions`的基本示例: ```matlab % 假设我们要使用fmincon函数进行优化 % 首先,创建一个默认的选项结构体 options = optimoptions('fmincon'); % 然后,可以修改一些选项,例如算法类型 options.Algorithm = 'sqp'; % 现在,我们可以将修改后的options结构体作为参数传递给fmincon函数 [x, fval] = fmincon(@myfun, x0, A, b, Aeq, beq, lb, ub, nonlcon, options); ``` 在上述代码中,`@myfun`是你定义的优化目标函数,`x0`是优化变量的初始值,其余参数是线性不等式和等式约束、变量的下界和上界以及非线性约束函数。`optimoptions('fmincon')`创建了一个针对`fmincon`函数的默认选项结构体,然后我们修改了算法类型为`sqp`。最后,我们将这个配置好的`options`结构体传递给`fmincon`函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

feiGeorge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值