数据分析项目 基于K-Means算法的广告聚类分析(4)----特征数字化:独热编码(One-Hot)

一、为什么要进行特征数字化

这是没有进行特征数字化之前的数据

    素材类型    广告类型 合作方式     广告尺寸 广告卖点
0    jpg  banner  roi   140*40   打折
1    jpg  banner  cpc   140*40   满减
2    jpg  banner  cpc   140*40   满减
3    jpg  banner  cpc   140*40   满减
4    jpg  banner  cpc   140*40   满减
5    jpg  banner  cpc   140*40   满减

可以看到,这些数据都是文本类型的数据,这是不能够使用K-Means算法进行分析的,
这些文本类型的数据可以看作是分类数据,通过这些数据可以将整个数据集分为不同的类别,不同的类别会以数字进行表示,之后再进行独热编码,将这些数据用0和1进行表示,判断分类变量是否在本类别之中,这防止了分类变量无意义的排序。

二、对数据进行特征数字化

# 引入第三方库
from sklearn.preprocessing import LabelEncoder
# 提取8~12行的数据
y=data.iloc[:,7:12]
# 初始化LableEncoder
le=LabelEncoder()
# 使用数据拟合并转化
for L in y.columns:
    y[L]=le.fit_transform(y[L])

部分结果

861    4
862    2
863    2
864    2
865    1
866    1
867    1
868    1
869    0
870    0

可以看到,不同类别的文本数据已经数字化了
接下来进行独热编码,使数据以0或1进行表示

#引入第三方库
from sklearn.preprocessing import OneHotEncoder
# 初始化OneHotEncoder,sparse如果设置为True,将返回稀疏矩阵,否则将返回数组
onehot_mode = OneHotEncoder(sparse=False)
# 使用数据拟合并转化
data_ohe = onehot_mode.fit_transform(y)

结果

[[0. 1. 0. ... 0. 0. 0.]
 [0. 1. 0. ... 0. 0. 0.]
 [0. 1. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [1. 0. 0. ... 0. 1. 0.]]
(889, 27)

可以看到,这些文本数据已经完成了数字化

三、将所有数据进行合并

合并1-7列8-12列的数据

# 数据合并,使用numpy的hstack方法
import numpy as np
data_matrix = np.hstack((data_rescaled, data_ohe))
# 取小数点后两位 
for i in data_matrix:
    print(i.round(2))
print(data_matrix)
print(data_matrix.shape)

结果

[0.   0.   0.   0.53 0.   0.62 1.   0.   0.   0.   0.   0.   0.   1.
 0.   1.   0.   0.   0.   0.   0.   1.   0.   0.   0.   0.   0.   0.
 0.   0.   0.   1.   0.  ]
[[1.43508267e-04 1.81585678e-01 2.06364513e-02 ... 0.00000000e+00
  0.00000000e+00 0.00000000e+00]
 [7.06234624e-03 1.02301790e-01 3.12439730e-02 ... 0.00000000e+00
  0.00000000e+00 0.00000000e+00]

完成了数据合并

数据文件

你可能感兴趣的:(数据分析项目,python,数据分析,机器学习)