1. 程式人生 > >資料集中空值替換成對應特徵的平均值

資料集中空值替換成對應特徵的平均值

如果資料集中缺失資料,將其替換成所屬特徵的平均值。
假如檔案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. ]]