权重属性

数据挖掘 机器学习 Python scikit-学习
2021-09-20 18:34:37

如果我有一个具有二进制分类的数据集并且有许多值为(0 或 1)的属性意味着属性的出现用 1 表示,而缺失用 0 表示,我可以在应用之前将该属性的权重添加为数据集中的单独列吗分类器模型?

1个回答

对的,这是可能的。您实际上并不需要新列,您只需将现有列转换为其代表权重即可。

我建议您:

  1. 转换[0,1][-1,1];
  2. 乘以范围内的浮点权重[0.0, 1.0]

我建议您将范围从 更改为[0, 1][-1,1]因为以下示例无法区分两者:

attribute_value = 0
weight = 1.0
final_value = attribute_value × weight = 0.0

attribute_value = 1
weight = 0.0
final_value = attribute_value × weight = 0.0

但是,如果更改范围,则会得到:

attribute_value = 0
attribute_value_new = -1
weight = 1.0
final_value = attribute_value_new × weight = -1.0

attribute_value = 1
attribute_value_new = 1
weight = 0.0
final_value = attribute_value_new × weight = 0.0

一个完整的例子是:

X = [
    [0, 1, 0, 1],
    [0, 0, 1, 1]
]

X_transformed = [
    [-1,  1, -1, 1],
    [-1, -1,  1, 1]
]

column_weights = [1, 0, 0.5, 0.25]

weighted_X = [
    [-1, 0, -0.5, 0.25],
    [-1, 0,  0.5, 0.25]
]