MATLAB中的数据丢失

缺少数据的工作是数据预处理的共同任务。虽然有时缺失值的数据表示一个有意义的活动,他们往往代表了不可靠的或不可用的数据点。在这两种情况下,MATLAB®具有处理缺失数据很多选择。

创建和组织数据缺失

缺失值取MATLAB的形式取决于数据类型。例如,数值数据类型,例如采用为NaN(非数字)来表示缺失值。

X = [NaN的1 2 3 4];

您也可以使用失踪值表示缺少数字数据或其它类型的数据,如约会时间明确的。MATLAB自动转换失踪值数据的原始类型。

xDouble = [缺失1 2 3 4]
xDouble =1×5为NaN 1 2 3 4
xDatetime = [丢失的日期时间(2014,1:4,1)]
xDatetime =1×5日期时间的NaT 01-JAN-2014 01月2014 01-MAR-2014 01-APR-2014
xString = [缺“一个”“B”“C”“d”]
xString =1×5串<缺失>的 “a” “b” 的 “C”, “d”
xCategorical = [丢失分类({'CAT1''CAT2''CAT3''CAT4'})]
xCategorical =1×5类别<未定义> CAT1 CAT2 CAT3 CAT4

数据集可能包含的值,你要视为丢失的数据,但不是在MATLAB如MATLAB标准缺失值为NaN。您可以使用standardizeMissing功能,这些值转换成该数据类型的标准缺失值。例如,治疗4作为失踪除了价值为NaN

xStandard = standardizeMissing(xDouble,[4的NaN])
xStandard =1×5为NaN 1 2 3的NaN

假设你想保留缺失值作为你的数据集的一部分,但是从数据的其余部分隔离他们。几个MATLAB功能使您能够控制进一步处理之前遗漏值的位置。例如,使用'MissingPlacement'与选项分类功能举动为NaNS到数据的末端。

xSort =排序(xStandard,'MissingPlacement''持续'
xSort =1×51 2 3楠楠

查找,替换,并忽略数据丢失

即使你不明确创建MATLAB缺失值,就可以导入现有的数据或数据计算时出现。如果你不知道你的数据缺失值,后续计算或分析可能会产生误导。

例如,如果你在不知不觉中绘制一个包含矢量为NaN值时,为NaN不会出现,因为情节函数忽略它和正常打印其余各点。

nanData = [1:9的NaN];图(1:10,nanData)

但是,如果计算平均数据,其结果是为NaN。在这种情况下,它更有助于提前知道数据包含为NaN,然后选择忽略或计算平均值之前将其删除。

meanData =平均值(nanData)
meanData = NaN的

找到一种方法为NaNS IN数据是通过使用isnan函数,该函数返回一个逻辑阵列指示任何位置为NaN值。

TF = isnan(nanData)
TF =1×10的逻辑阵列0 0 0 0 0 0 0 0 0 1

同样的,不见了函数返回多种数据类型的数据的缺失值的位置。

TFdouble = ISMISSING(xDouble)
TFdouble =1×5阵列的逻辑1 0 0 0 0
TFdatetime = ISMISSING(xDatetime)
TFdatetime =1×5阵列的逻辑1 0 0 0 0

假设您正在使用与多种数据类型的变量由一个表或时间表工作。你可以找到所有失踪的值与一个调用不见了,无论其类型。

xTable =表(xDouble 'xDatetime',xString 'xCategorical')
xTable =5×4表VAR1 VAR2 VAR3 VAR4 ____ ___________ _________ ___________的NaN的NaT <缺失> <未定义> 1 01-JAN-2014 “一” CAT1 2 01-FEB-2014 “b” 的CAT2 3 01-MAR-2014 “C” CAT3 4 01-APR-2014 “d” CAT4
TF = ISMISSING(xTable)
TF =5x4的逻辑阵列1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

缺失值可以表示用于处理或分析无用数据。采用fillmissing与其他值,或使用替代缺失值rmmissing完全取消缺失值。

弹力丰盈= fillmissing(xStandard,'不变',0)
弹力丰盈=1×50 1 2 3 0
xRemove = rmmissing(xStandard)
xRemove =1×31 2 3

许多MATLAB函数,可以忽略缺失值,而不必明确定位,填充,或者先删除它们。例如,如果你计算含有矢量的总和为NaN值,其结果是为NaN。但是,您可以直接忽略为NaN通过使用S在总和'omitnan'与选项功能。

sumNan =总和(xDouble)
sumNan = NaN的
sumOmitnan =总和(xDouble,'omitnan'
sumOmitnan = 10

也可以看看

|||

相关话题