什么是类别特征?
"类别特征"是指表示分类或类别的特征。例如颜色(红、绿、蓝)、血型(A型、B型、O型、AB型)等...
常见类别特征算法
1、Label Encoding
LabelEncoder 会对一组数转换成 [0,n) 的数。
比如把[男,女] 转成 [0, 1];把 [红, 黄,蓝, 红] 转成 [0, 1, 2, 0]
from sklearn.preprocessing import LabelEncoder
# 初始化
le = LabelEncoder()
label_list = ["D", "B", "C", "D", "A", "B"] # 标签有A、B、C、D四个类别,所以转换为[0, 1, 2, 3]
print(le.fit_transform(label_list)) # [0 1 2 3 0 1]
label_list = ["张三", "李四", "王五", "张三"] # 标签有张三、李四、王五三个类别,所以转换为[0, 1, 2]
print(le.fit_transform(label_list)) # [0 1 2 0]
label_list = [100, 90, 80, 80, 0, 100] # 标签是0, 80, 90, 100四个类别,所以转换为[0, 1, 2, 3]
print(le.fit_transform(label_list)) # [3 2 1 1 0 3]
# 注意:LabelEncoder会先排序后编码,所以编码结果是有序的
2、One-Hot Encoding
找出所有特征,然后编码时,匹配的位置取1,不匹配取0。
比如将 红黄蓝分别编码为 100,010,001, 三个向量相互正交(垂直),不相关,距离相同。
注意:不要给红黄蓝设置编码为1,2,3。因为1,2,3之间有大小关系,相关
单列示例
from sklearn import preprocessing
encoder = preprocessing.OneHotEncoder()
# 3个特征:即 blue、red、yellow 三种颜色(排序后)
# 分别用 [1, 0, 0]、[0, 1, 0]、[0, 0, 1] 来表示
# red => 编码为 [0, 1, 0]
# yellow => 编码为 [0, 0, 1]
# blue => 编码为 [1, 0, 0]
# red => 编码为 [0, 1, 0]
encoder.fit([
['red'],
['yellow'],
['blue'],
['red']
])
print(encoder.transform([['red']]).toarray()) # [[0. 1. 0.]]
print(encoder.transform([['yellow']]).toarray()) # [[0. 1. 0.]]
print(encoder.transform([['blue']]).toarray()) # [[0. 1. 0.]]
多列示例
from sklearn import preprocessing
encoder = preprocessing.OneHotEncoder()
# 8个特征:即 001、002、003、004、女、男、大一、大二 (女排在男前面,大一排在大二前面)
# 学号 性别 年级
# 001 男 大一
# 002 女 大二
# 003 男 大一
# 004 女 大一
encoder.fit([['001', '男', '大一'],
['002', '女', '大二'],
['003', '男', '大一'],
['004', '女', '大一']])
print(encoder.transform([['001', '男', '大一']]).toarray()) # [[1 0 0 0 0 1 1 0]]
print(encoder.transform([['001', '男', '大二']]).toarray()) # [[1 0 0 0 0 1 0 1]]
print(encoder.transform([['001', '女', '大一']]).toarray()) # [[1 0 0 0 1 0 1 0]]
print(encoder.transform([['001', '女', '大二']]).toarray()) # [[1 0 0 0 1 0 0 1]]
print('女' < '男') # True
除了类别特征,还有什么特征?
-
连续型特征(Numerical Features):连续型特征是指取值范围在一定区间内的数值型特征。例如,身高、体重、温度、价格等都属于连续型特征。这些特征可以是整数型或浮点型。
-
时间序列特征(Time Series Features):时间序列特征是指与时间相关的特征,例如日期、时间戳、季节性特征等。时间序列数据通常以时间为自变量,记录某个或某些变量随时间的变化情况。
-
文本特征(Text Features):文本特征是指自然语言文本中的特征,例如文档、评论、描述等。文本特征常常需要进行文本预处理和特征提取,以便用于机器学习模型。
-
图像特征(Image Features):图像特征是指图像数据中的特征,例如像素值、颜色直方图、纹理特征等。处理图像特征通常需要使用计算机视觉技术。
-
空间特征(Spatial Features):空间特征是指与空间位置相关的特征,例如地理位置坐标、区域边界、地形等。这些特征常常用于地理信息系统(GIS)和地理数据分析中。
-
信号特征(Signal Features):信号特征是指来自传感器、设备或系统的信号数据,例如声音、振动、电压等。处理信号特征通常需要使用信号处理技术和数字信号处理算法。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏