缺少数据和属性选择

时间:2012-04-20 04:55:45

标签: r statistics data-mining

我的数据是1,785,000条记录,共有271项功能。我正在尝试减少用于构建模型的功能数量。

Q1。在探索数据的同时,我发现一些功能几乎都是缺失的数据,比如只有25个记录对这个功能有价值,而其他记录缺少值,所以我认为这个信息不够充分,最好是去除这些功能,我是对?如果我是对的,我能做到什么程度,我的意思是如果每个功能的90%,80%等等都缺少值,那么当我可以决定摆脱这些功能时? (考虑到它是因变量是N / Y,只有整个数据的%1.157属于Y)。

Q2。对于数据集中的每个个体,列出了64个trait_type,其中每个可以取值[1或3或5]中的一个。我的问题是:如果某些特征类型只占用所有记录的值[5]或缺少数据,它是否有任何值或者我们可以消除该特征?

Q3。如果选择删除这些功能,如何从R?

中的data.frame中删除列

谢谢

更新 我正在尝试使用caret包来进行变量选择。 我申请了这个:

ctrl<- rfeControl(functions = lmFuncs, method="cv", verbose = FALSE, returnResamp= 
"final")

lmprofile<- rfe(x,y, sizes = subsets, rfeControl = ctrl)

其中x是具有270个因变量的data.frame,y是具有值Y / N的自变量的因子。我收到了这个错误:

Error in { : 
  task 1 failed - "contrasts can be applied only to factors with 2 or more levels"
enter code here
In addition: There were 11 warnings (use warnings() to see them)

有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

仅仅因为缺少一列中的大部分数据并不意味着该列不具有预测性,它与该列中具有许多相同值的情况相同。

当然有一个截止点,如果该列只能帮助您区分少数情况(很多),那么它可以被删除,只会影响整体模型强度。

为了帮助您决定是否保留该列,您可以使用它构建一个单变量模型 - 其中数据集只包含该列和因变量,并查看该模型的强度。如果它不比随机好多了,那么删除列可能是安全的。