我是机器学习的初学者,我的意思是我应该对列进行编码(分类),并在列上使用简单的标签编码,然后使用最频繁的值或其他方式来赋值NAN值。因为编码需要将我的数据帧转换为数组,然后进行插补,则需要再次将数组转换为数据帧,而所有这些都在一个列中。还有更多这样的列。
例如,我有此变量“ BsmtQual”
BsmtQual:评估地下室的高度并具有以下类别数
Ex Excellent (100+ inches)
Gd Good (90-99 inches)
TA Typical (80-89 inches)
Fa Fair (70-79 inches)
Po Poor (<70 inches
NA No Basement
“ BsmtQual” 81中的2919个值中的是NAN值。
答案 0 :(得分:1)
对于将来遇到的不涉及编码的问题,您应该在https://datascience.stackexchange.com/上发布。
这取决于几件事。首先,此变量在您的运动中有多重要?假设您正在执行分类,则可以尝试删除所有不带NaN值的行,运行一些模型,然后删除变量并再次运行相同的模型。如果您尚未发现准确性下降,则可以考虑完全删除该变量。
如果您确实发现准确性下降或由于无人看管的问题而无法判断影响,则可以尝试其他几种方法。如果您只想快速解决问题,并且NaN或类别不太多,则可以使用最常用的值进行估算。如果满足上述条件,这不会引起太多问题。
如果您想更加精确,则可以考虑使用其他变量来预测分类变量的类别(显然,只有在分类变量与某些其他变量相关联的情况下,此方法才有效)。您可以为此使用多种算法,包括分类器或聚类。这全都取决于分类变量的分布以及要投入多少精力来解决问题。
(我也只是在学习,但是我认为这是您的大多数选择)
答案 1 :(得分:0)
“…或其他方法。”
示例:
Ex Excellent (100+ inches) 5 / 5 = 1.0
Gd Good (90-99 inches) 4 / 5 = 0.8
TA Typical (80-89 inches) 3 / 5 = 0.6
Fa Fair (70-79 inches) 2 / 5 = 0.4
Po Poor (<70 inches 1 / 5 = 0.2
NA No Basement 0 / 5 = 0.0
但是,标签的精确度较低(如果与实际测量结果相结合,则会影响准确性)。
可以通过在类别范围内缩放值来解决(例如在0
-69
上缩放0.0
-0.2
英寸),也可以通过每个类别的近似值来解决(线性精度更高)。例如,如果最高值为200英寸:
Ex Excellent (100+ inches) 100 / 200 = 0.5000
Gd Good (90-99 inches) ((99 - 90) / 2) + 90 / 200 = 0.4725
TA Typical (80-89 inches) ((89 - 80) / 2) + 80 / 200 = 0.4225
Fa Fair (70-79 inches) ((79 - 70) / 2) + 70 / 200 = 0.3725
Po Poor (<70 inches (69 / 2) / 200 = 0.1725
NA No Basement 0 / 200 = 0.0000
Actual measurement 120 inch 120 / 200 = 0.6000
产生近似值(范围Ex
之外的中点值,这是最小值)。如果在此类列上进行的计算不准确,则表示符号不精确(标签表示范围而不是值)。