高斯混合模型实现——【机器学习与算法分析 精品资源池】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验算法高斯混合模型实验
【实验名称】
高斯混合模型实验
【实验要求】
掌握高斯混合模型应用过程,根据模型要求进行数据预处理,建模,评价与应用;
【背景描述】
高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM 可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。属于无监督机器学习,用于对结构化数据进行聚类。
【知识准备】
了解高斯混合模型的使用场景,数据标准。了解Python/Spark数据处理一般方法。了解spark 模型调用,训练以及应用方法
【实验设备】
Windows或Linux操作系统的计算机。部署Spark,Python,本实验提供centos6.8环境。【实验说明】
采用UCI机器学习库中的wine数据集作为算法数据,除去原来的类别号,把数据看做没有类别的样本,训练混合高斯模型,对样本进行聚类。
【实验环境】
Spark 2.3.1,Pyrhon3.X,实验在命令行pyspark中进行,或者把代码写在py脚本,由于本次为实验,以学习模型为主,所以在命令行中逐步执行代码,以便更加清晰地了解整个建模流程。【实验步骤】
第一步:启动pyspark:
1
命令行中键入pyspark --master local[4],本地模式启动spark与python:
第二步:导入用到的包,并读取数据:
(1).导入所需的包
from pyspark import SparkContext, SQLContext, SparkConf
from math import sqrt
from pyspark.sql.functions import monotonically_increasing_id
(2).读取数据源
df_wine = sc.textFile(u"file:/opt/algorithm/gaussianMixture/wine.txt").map( lambda x: str(x).split(",")).map(lambda x: [float(z) for z in x])
(3).数据转换为Data
df_wine_rdd = sqlContext.createDataFrame(df_wine)
(4).数据展示
df_wine_rdd.show()
1
第三步:数据预处理
(1).去掉类别标号那一类,本例在假设不知道类别的情况下聚类
df_wine_rdd = df_wine_rdd.drop("_1")
(2).构建向量
import pyspark.ml.feature as ml_feature
cols = df_wine_rdd.columns
vectorAssembler = ml_feature.VectorAssembler().setInputCols(cols).setOutputCol("cols") wine_Vc = vectorAssembler.transform(df_wine_rdd)
(3).对数据进行标准化
standardScaler=ml_feature.StandardScaler().setInputCol("cols").setOutputCol("cols_st").set WithMean(True).setWithStd(True).fit(wine_Vc)
wine_Vc_St = standardScaler.transform(wine_Vc)
(4).转换rdd
wine_Vc_St_rdd = wine_Vc_St.rdd.map(lambda x: tuple(x.cols_st))
1