高斯混合模型实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实例:使用模型进行训练
# 转换rdd wine_Vc_St_rdd = wine_Vc_St.rdd.map(lambda x: tuple(x.cols_st)) # 使用GMM模型,spark1.6中,混合高斯模型在mllib模块中,故数据要转为rdd类型 import pyspark.mllib.clustering as mllib_clustering clusters = mllib_clustering.GaussianMixture.train(rdd=wine_Vc_St_rdd, # 输入数据源RDD(tuple)
实例:初始化Spark,读取数据
# -*-coding:utf-8-*# pyspark --master local[5] from pyspark import SparkContext, SQLContext, SparkConf from math import sqrt from pyspark.sql.functions import monotonically_increasing_id
k=3, # 类别数 converΒιβλιοθήκη BaiduenceTol=1e-3, # 训练停止误差阈值 maxIterations=100, # 最大迭代次数 seed=None) # 随机种子 # 模型应用 wine_Vc_St_clusters = sqlContext.createDataFrame(clusters.predict(wine_Vc_St_rdd).zipWithIndex()).toDF("pred", "ID") # 数据整合 wine_Vc_St_pred = wine_Vc_St.withColumn("ID", monotonically_increasing_id()).join(wine_Vc_St_clusters, on=["ID"]) # 展示数据 wine_Vc_St_pred.show()
实例:展示数据
# 本地数据转换为RDD df_wine_rdd = sqlContext.createDataFrame(df_wine)
# 展示数据 df_wine_rdd.show()
实例:数据整理,标准化
# 去掉第一列,第一列为类别,我们不关注,我们假设不知道类别,用聚类的方式让数据聚类 df_wine_rdd = df_wine_rdd.drop("_1")
高斯混合模型的应用
GMM常用于聚类。如果要从 GMM 的分布中随机地取一个点的话,实际上可以分 为两步:首先随机地在这 K 个 Component 之中选一个,每个 Component 被选中 的概率实际上就是它的系数πk ,选中 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布, 转化为已知的问题。 将GMM用于聚类时,假设数据服从混合高斯分布(Mixture Gaussian Distribution),那么只要根据数据推出 GMM 的概率分布来就可以了;然后 GMM 的 K 个 Component 实际上对应K个 cluster 。根据数据来推算概率密度通常被称作 density estimation 。特别地,当我已知(或假定)概率密度函数的形式,而要估 计其中的参数的过程被称作『参数估计』。
高斯混合模型简介与 python实践
演讲人:
时间:
提纲
高斯混合模型简介 高斯混合模型实现
高斯混合模型简介
高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上 GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分 布的情况。 下图中的点可分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生 成而来。用一个的二维高斯分布来描述图中的数据。这显然不太合理。 GMM后,使用两个二维高斯分布来描述图中的数据,可以看到使用两个二维高斯分布 来描述图中的数据显然更合理。
# 对数据进行标准化 standardScaler = ml_feature.StandardScaler().setInputCol("cols").setOutputCol("cols_st").setWithMean(True).setWithStd(
True).fit(wine_Vc) wine_Vc_St = standardScaler.transform(wine_Vc)
提纲
高斯混合模型简介 高斯混合模型实现
Python 进行GMM实践
• 系统准备:centos6.8、Spark 2.3.1、Pyrhon3.X • 数据准备:采用UCI机器学习库中的wine数据集作为算法数据,包括了三种酒中13种不同成分的数
量。成分分别为:Alcohol,Malicacid,Ash,lcalinity of ash,Magnesium,Total phenols, Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文件中,每行代表一种酒的样本,共有178个样本;一共 有14列,其中,第一列为类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每 个样本的对应属性的样本值。第1类有59个样本,第2类有71个样本,第3类有48个样本。本例实 验是聚类,所以我们不用第一列的数据 • 建模目的:训练GMM聚类器,使得知道13个特征后,对样本进行聚类。
# 合并所有列,构建spark向量 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)
# 初始化sparkContext conf = SparkConf().setMaster("local").setAppName("My KmeansDemo") sc = SparkContext(conf=conf) sqlContext = SQLContext(sc)
# 读取数据 df_wine = sc.textFile(u"file:./wine数据集.txt").map( lambda x: str(x).split(",")).map(lambda x: [float(z) for z in x])
相关文档
最新文档