我正在构建一个自动清理过程,从数据集中清除空值。我发现很少有像模式、中位数、平均值这样的函数可以用来填充给定数据中的NaN值。但我应该选哪一个呢?如果数据是绝对的,它必须是模式或中位数,而对于连续的,它必须是平均或中位数。因此,为了定义数据是绝对的还是连续的,我决定建立一个机器学习分类模型。
我做了几个特征比如,
1)数据的标准差
2)数据中唯一值的数目
3)数据行总数
4)唯一行数之比
5)数据的最小值
6)数据的最大值
7)中位数和75百分位数之间的数据数
8)中位数和25百分位数之间的数据数
9)第75百分位数与上部晶须之间的数据
10)第25百分位数和较低晶须之间的数据数
11)上部晶须以上的数据数
12)较低晶须以下的数据数
首先,在这12个特征和大约55个训练数据的基础上,我使用的logistic回归模型对标准化的进行了标记1(连续)和0(分类)的预测。
有趣的是它起作用了!!
但是,我做得对吗?预测数据性质是一种正确的方法吗?如果我能进一步改进的话,请告诉我。
发布于 2018-01-29 18:25:43
数据分析看起来很棒。对于这部分
但我应该选哪一个呢?
就我所测试的结果而言,小气永远是赢家。对于每个数据集,我尝试测试所有的情况,并比较准确性。
有一个更好的方法,但有点费时。如果你想推进这个系统,这会有帮助的。
对于每一列丢失的数据,找出它最近的邻居并用这个值替换它。假设有N个列(不包括目标),所以对于每一列,将其视为因变量,N-1列的其余列为独立列。并找到它最近的邻居,然后它的输出(因变量)是缺失属性的期望值。
发布于 2018-01-31 09:02:01
但我应该选哪一个呢?如果数据是绝对的,它必须是模式或中位数,而对于连续的,它必须是平均或中位数。
通常用于分类数据模式。为了持续的-平均。但我最近看到一篇文章,其中几何平均值被用于范畴值。如果您构建了一个使用nan列的模型,您可以包括具有平均替换、中间替换和布尔列'index is nan‘的列。但在这种情况下,最好不要使用线性模型--你可以面对相关。
此外,还有许多其他的方法来替代nan。例如,老鼠算法。
关于你使用的功能。它们是可以的,但是我想建议添加更多与发行相关的特性,例如:
所有这些项目都可以基于正常数据+转换数据(log,exp)获得。
我解释说:你可以有一个列,里面有许多类别。用旧的方法,它可能看起来像数值列,但它并不是数值的。分布匹配算法在此可能会有所帮助。
此外,您还可以使用不同的规范化。也许来自sklearn的RobustScaler可以很好地工作(如果类别的级别与“超过”的值非常相似的话,这可能会有所帮助)。
最后一个建议是:您可以使用随机森林模型来获取重要的列。这个列表可能为特征工程/生成提供一些指导。
而且,当然,看看错误分类矩阵和哪些特征错误发生也是一件好事!
https://stackoverflow.com/questions/48458086
复制相似问题