如何操作这个小于/大于的列?
数据挖掘
数据集
特征选择
数据清理
特征提取
擅长
2022-02-13 15:17:14
1个回答
这是一个分类变量。文献中有多种处理分类变量的方法 -
虚拟化(主要用于名义变量)
将变量拆分并转换为多个二进制变量(变量个数应为1-(number of classes))。
Python 示例 -
import pandas as pd
series = pd.Series(['<=50k', '<=50k', '<=50k', '<=50k', '<=50k', '<=50k', '<=50k',
'>50k', '>50k', '>50k', '>50k', '>50k', '<=50k'])
print(pd.get_dummies(series).iloc[:, 1:])
输出
>50k
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 1
8 1
9 1
10 1
11 1
12 0
注意以前是字符串的信息现在是如何编码为数字的。删除一列的原因是不存在完美的多重共线性。
排名(在序数变量的情况下)
在这些情况下,您可以清楚地rank了解变量。在您的情况下,对它们进行排名会更有意义,因为我们知道那时>50k实际上超过<50k.
在你的薪水案例中使用排名方法和名义案例的虚拟化方法(如location变量 - 无法订购)
Python 示例 -
import pandas as pd
series = pd.Series(['<=50k', '<=50k', '<=50k', '<=50k', '<=50k', '<=50k', '<=50k',
'>50k', '>50k', '>50k', '>50k', '>50k', '<=50k'])
uniq = series.unique()
ranks = { uniq[i]:i+1 for i in range(len(uniq)) }
print(ranks)
series_ranked = series.apply(lambda x: ranks[x])
print(series_ranked)
输出
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 2
8 2
9 2
10 2
11 2
12 1
dtype: int64
同样,这绝不是一个详尽的答案,但请放心,这些是用于处理分类变量的最流行的方法。希望有帮助。干杯!
其它你可能感兴趣的问题
