我有这个分类/回归任务,但最有趣的是每个记录的特征数量是不同的。特征已经被提取和准备,因此数据的上下文是未知的,特征的值在-10到10之间波动。有超过200个特征的记录,同样也有特征数量低于20的记录。你知道吗
数据帧df
有两列:ID
和ATTRIBUTES
,输出如下所示:
ID ATTRIBUTES
0 1 1.1 2.1 3.3 4.4 5.5 6.6 ... 99.9 100.0 101.1 102.2
1 2 1.1 2.1 3.3 4.4 5.5 6.6 ... 45.0 46.0 47.0 49.0
2 3 1.1 2.1 3.3 4.4 5.5 6.6 ... 9.0 10.0 11.0 12.0
3 4 1.1 2.1 3.3 4.4 5.5 6.6 ... 70.0 71.0 72.0 73.0
4 5 1.1 2.1 3.3 4.4 5.5 6.6 ... 131.0 132.0 134.0 135.0
我已将列ATTRIBUTES
拆分为单独的列:
df['ATTRIBUTES'].str.split(' ', expand=True).astype(float)
现在df
看起来是这样的:
0 1 2 3 4 5 6 7 8 9 ... 131 132 133 134 135
0 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN
1 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN
2 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN
3 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN
4 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... 131.0 132.0 133.0 134.0 135.0
假设record1有102个功能,rec2-49,rec3-12,rec4-73,rec5-135。在分割操作之后,用NaN
值填充rec1, rec2, rec3, rec4
记录以填充数据帧。你知道吗
在谷歌搜索之后,我想到了以下想法:
对于分类,我选择了RandomForest。你知道吗
基线性能约为0.4117,同时验证10%的训练集(使用train_test_split)。你知道吗
尽管我试了这么多:
基线性能没有提高超过0.4… 所以我的问题是-一个人应该如何处理特定记录缺少特征的问题?你知道吗
数据插补可能在
你得到糟糕结果的原因——至少就数据完整性而言——是因为你确实用插补扭曲了数据中的数据方差,实际上你掩盖了隐藏在原始数据中的任何潜在问题特定的元信息。分类问题的结果在很大程度上取决于数据的质量和模型的“正确性”。你知道吗
我会开始尝试几种不同的方法来处理这种数据问题。无论如何,这些都不是前进的唯一方法,哪种方法最适合您取决于您的问题和数据的具体情况。你知道吗
查看是否可以聚合某些“missing”或“extra”属性。是不是每个数据点都有固定数量的特性,然后可以通过某种方式聚合“可选”特性?
看看你是否能以这样一种方式来分段你的数据——在每一段中——你拥有相同数量的特征的数据点。然后尝试在这些片段中匹配分类器。
检查特征量和数据点类之间是否存在某种模式。
从数据集中删除所有具有
NaN
值的功能。我希望这有点帮助!你知道吗
相关问题 更多 >
编程相关推荐