数据集中空值替换成对应特征的平均值

如果数据集中缺失数据,将其替换成所属特征的平均值。
假如文件forTest.txt中以下数据集:

2,2,2,NaN,2
3,3,NaN,3,3
4,NaN,4,4,4

 加载和替换函数:

from numpy import *
def replaceNanWithMean(filename):
    dataMat=loadDataSet(filename,',')
    numFeat=shape(dataMat)[1]
    for i in range(numFeat):
        meanVal=mean(dataMat[nonzero(~isnan(dataMat[:,i].A))[0],i])
        dataMat[nonzero(isnan(dataMat[:,i].A))[0],i]=meanVal
    return dataMat
def loadDataSet(filename,delim='\t'):
    f=open(filename)
    stringArr=[line.strip().split(delim) for line in f.readlines()]
    dataArr=[list(map(float,line)) for line in stringArr]
    return mat(dataArr)
dataMat=replaceNanWithMean('forTest.txt')
print(dataMat)

 输出:

[[2.  2.  2.  3.5 2. ]
 [3.  3.  3.  3.  3. ]
 [4.  2.5 4.  4.  4. ]]

 

转载于:https://www.cnblogs.com/zhhy236400/p/9996441.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值