数据挖掘流程
-
加载数据
- 把需要的模型数据先计算出来
-
特征工程 提取数据特征,对特征数据进行清洗转化
- 数据的筛选和清洗
- 数据转化 类型转为 性别 男,女 ----> 1,0
- 特征交叉 性别/职业/收入 —> 新特这 优质男性程序员 将多个特征值组合在一起
- 特征筛选 筛选和计算需求强关联的特征
- 特征清洗 空值处理,重复值处理
- 数据经过特征处理后会转为向量数据
-
模型训练
- 将特征工程的数据传递算法训练
- 模型评估
- 数据划分 100万 80万 训练 20万 评估
- 样本数据 训练模型
- 测试数据 评估模型
- 数据划分 100万 80万 训练 20万 评估
-
模型的上线部署
- 模型评估没有问题就可以上线部署
spark实现机器学习
from pyspark.ml
- 各类算法
- 分类算法,聚类,协调过滤…
- 特征处理方法
- 特征抽取,转化,选择…
- 管道
- 传递数据方法
- 持久化
- 保存数据
特征工程
安装numpy模块
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
将字符串数据转为数值,在算法模型训练需要用到的是数值
根据需求选择
1、创建df数据
# 机器学习模块使用
from pyspark.sql import SparkSession
# 导入特征工程方法
from pyspark.ml.feature import StringIndexer# 创df数据
ss = SparkSession.builder.getOrCreate()
df = ss.createDataFrame([[1,'张三',20,'男'],[2,'韩梅梅',21,'女'],[3,'王五',19,'男'],[4,'蔡徐坤',28,'男'],[5,'蔡文姬',19,'女'],[6,'小乔',22,'女'],],schema='id int,name string,age int,gender string'
)
df.show()
2、特征工程处理
# 2- 特征转化 将男转为0 女转为1
# 特征转化 将字符串数据转为数值 StringIndexer
# inputCol指定需要转化的字段
# outputCol 指定输出字段
data_str = StringIndexer(inputCol='gender',outputCol='gender_index')
# fit() 添加df数据
data_fit = data_str.fit(df)
# transform() 转化df数据
df_gender = data_fit.transform(df)
df_gender.show()
3、特征交叉处理
# 3、特征交叉 将多个特征组合 将性别和年龄组合
# inputCols 指定多个字段
data_vector = VectorAssembler(inputCols=['age','gender_index'],outputCol='age_gender')
# 对上一步的df_gender交叉转化
# 将年龄和性别进行组合,转化成列表的形式
df_age_gender = data_vector.transform(df_gender)
df_age_gender.show()
4、特征缩放(归一处理)
# 3、特征缩放
# 多个特征数据量级保持一致,归一化处理(将数据转化为0-1的范围)
min_max = MinMaxScaler(inputCol='age_gender',outputCol='min_age_gender')
# 添加数据
m_fit = min_max.fit(df_age_gender)
# 转换
df_age_gender_min = m_fit.transform(df_age_gender)
df_age_gender_min.show(truncate=False)