我的数据集非常有限,其中包含缺少值的各种列。我不能修剪缺少值的行,因为它将大大减小大小。有人可以建议这样做的标准程序吗?
答案 0 :(得分:1)
要填充缺少的值,可以执行下列操作之一: 1)使用可用值计算特征的均值,然后用均值填充缺失值。如果值是离散的(分类的),则使用最频繁的值(模式)来填充缺失的值。 2)找出与缺少值的示例最相似的示例,因为这些示例具有特定功能的值。然后使用您感兴趣的特征的均值/众数来填充缺失值。
答案 1 :(得分:0)
您所描述的称为imputation,并且有许多有趣的方法可以处理这种情况。对于数字变量,您可以使用特征的均值或众数填充缺失值。对于分类变量,您可以将缺失值本身设置为一个类别,或者简单地将其替换为最常见的类别。确实没有一种正确的方法。有时人们会使用数据不丢失的案例来尝试预测丢失案例的值!
特别是在Python中,Scikit-learn有一些不错的方法旨在帮助解决here和here。
值得一提的是,这些方法的范围从非常简单到非常复杂,您都必须确定哪种方法最适合您的情况。在复杂度更高的一端,您可以通过多种方法来构建“数据丢失”过程的统计模型,然后在这种“最可能”模型的情况下找到丢失数据的“最可能”基础值。 This可能会给您带来味道。我认为这通常太矫kill过正了!
答案 2 :(得分:0)
如果只需要占位符,有几种处理方法。我更喜欢 来自收藏模块的defaultdict。
from collections import defaultdict
dict = {1:'one',2:'two',3:'three',4:'four'}
dict2=defaultdict(int)
# defaultdict(<class 'int'>, {})
dict2.update(dict)
# defaultdict(<class 'int'>, {1: 'one', 2: 'two', 3: 'three', 4: 'four'})
dict[5]
# 0
dict2
# defaultdict(<class 'int'>, {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 0})
否则,您可以使用构造函数或任何其他占位符。