机器学习中的数据编码

2024-09-24 00:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

dataset image我有一个交通数据集,它包含6个分类变量(即发送者、接收者、卡车名称、fromcity、tocity、vehicletype)和一个连续变量(即重量),我想预测销售量(这是连续变量)。我在数据集中有13000条记录。你知道吗

我已经尝试过一种热编码,但是每个变量中有300多个类别,这意味着(300*6=1800个变量) 对列进行编码还是有其他解决方案?你知道吗

在这里您可以看到示例数据集:


Tags: 数据image名称编码分类dataset交通重量
3条回答

我学到了三种标签编码方法。你知道吗

删除包含分类数据的列 如果分类变量不多,那么从这个开始。你知道吗

标签编码 第二种可能性将把您的值转换为数字,例如:['tuesday'、'most'、'three']到[1,2,3]。但是,如果您已经将数据拆分为train和test,请检查test data和train data中的唯一值是否不同。你知道吗

# Apply label encoder 
encoderlab =  LabelEncoder()
for col in cols:
    label_X_train[col] = encoderlab.fit_transform(label_X_train[col])
    label_X_valid[col] = encoderlab.transform(label_X_valid[col])

一个热编码 第三种可能性是,对于每个包含分类数据的列,检查列中唯一值的数量。如果有许多大于10的唯一值,最好对它们进行标签编码,而其他小于10个唯一值的则进行一次热编码。你知道吗

oh_encod = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_X_train = pd.DataFrame(oh_encod.fit_transform(X_train[low_cardinality_cols]))
OH_X_valid = pd.DataFrame(oh_encod.transform(X_valid[low_cardinality_cols])) 

在Kagglehandling-categorical-variables(练习细节)或categorical-variables中了解更多信息

销售是你的目标变量,其余是自变量。你可以使用Logistic回归(有不同类型的回归)来预测与其他变量相关的销售额。你需要深入挖掘适合你需要的回归模型。你知道吗

我建议你做以下事情:

1-你需要找到相关性并决定需要哪些变量。这样您就可以删除像name这样的变量。因为他们对结果的贡献可能不大。只编码非常重要的变量。你知道吗

2-尝试通过对值进行分组来创建新的变量,如车辆类型/城市,并减少唯一值,找出其是否重要。这样就可以使用新值而不是旧列。你知道吗

3-尝试根据列中的值使用不同的编码,如序数编码。这可能有助于减少列数。你知道吗

相关问题 更多 >