背景安装了新版本的matlab2021,在前面的代码中处理数据时发生错误,提示应该使用isNAN函数进行nan比较
方案修改前,尝试利用relieff计算特征的分数,但relieff的计算有负数和not a number (所谓的NaN ),需要处理这种情况。
示例number=size (trainx _ data,1 ); %样本数[~~,weight]=relieff(trainx_data,TrainY_data,sampleNumber,’ method ‘,’ classification ‘ ); weight(weight0)=0; %权重小于0的设为0weight(weight==Nan )=0; 将nan作为0替换为isnan函数后
示例number=size (trainx _ data,1 ); %样本数[~~,weight]=relieff(trainx_data,TrainY_data,sampleNumber,’ method ‘,’ classification ‘ ); weight(weight0)=0; %权重小于0的设为0weight(Isnan ) weight ) )=0; 将%nan作为0补充isnan(a )和A==NaN实际上是相同的意思,返回逻辑数组。 如果a的要素为NaN ),则在对应的位置返回逻辑1 )真),否则返回逻辑0 )假)。
样品
isNaN(5naninf-INF-10 ) ) ans=15 logical数组0(10 )常见使用场景也像我开始的一样,对数据中的异常数据nan进行限制、消除、其他填充(最小值填充)