东华大学信息学院机器学习大作业全集-最后一个大作业,源代码,实验结果图,论文格式都很详细,别想了就是你想要的那个。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-22 18:59 EM&GMM
文件 1475530 2019-12-22 18:56 EM&GMMEM&GMM.docx
目录 0 2019-12-19 21:42 EM&GMM数据集
文件 6254 2019-12-17 22:55 EM&GMM数据集The old faithful dataset.txt
文件 6245 2019-12-19 09:43 EM&GMM数据集Theoldfaithfuldataset.txt
文件 2087 2019-12-19 21:44 EM&GMM数据集dest.txt
文件 4900 2019-12-19 10:28 EM&GMM数据集iris.txt
目录 0 2019-12-22 18:56 EM&GMM程序源代码
文件 3434 2019-12-22 18:23 EM&GMM程序源代码实验一.py
文件 4009 2019-12-22 18:42 EM&GMM程序源代码实验三.py
文件 2938 2019-12-22 18:32 EM&GMM程序源代码实验二.py
文件 4083 2019-12-22 18:51 EM&GMM程序源代码思考题1-1.py
文件 3197 2019-12-19 23:25 EM&GMM程序源代码思考题1-2(k-means-2维).py
文件 3364 2019-12-19 23:27 EM&GMM程序源代码思考题1-2(k-means-3维).py
import numpy as np
import matplotlib.pyplot as plt
import math
“““
生成的三个高斯模型的数据点,每个高斯各500个点
“““
def get_data():
mean1 = [10]
cov1 = [[50][01]]
mean2 = [80]
cov2 = [[10][05]]
mean3 = [44]
cov3 = [[40][04]]
#生成数据点
data1 = np.random.multivariate_normal(mean1cov1500)
data2 = np.random.multivariate_normal(mean2cov2500)
data3 = np.random.multivariate_normal(mean3cov3500)
x1y1 = data1.T
x2y2 = data2.T
x3y3 = data3.T
plt.scatter(x1y1s=3c=‘g‘)
plt.scatter(x2y2s=3c=‘b‘)
plt.scatter(x3y3s=3c=‘r‘)
#合并成一个数据集
x = np.hstack((x1x2x3))
y = np.hstack((y1y2y3))
return xy
“““
计算矩阵的行列式的值和逆矩阵
“““
def get_det_inv(c):
det_c=np.linalg.det(c)
inv_c=np.linalg.inv(c)
return det_cinv_c
“““
do-M step 更新参数wcu
“““
def do_mstep(Plenxyu):
c=sum(P)
w=sum(P)/len
tem1=np.array([[0][0]])
tem2=np.array([[00][00]])
for i in range(len):
a = np.array([[x[i] y[i]]])
a = a.T
tem1=tem1+P[i]*a
tem2=tem2+P[i]*np.dot((a-u)(a-u).T)
u=tem1/c
c=tem2/c
return wuc
#获取生成点的二维坐标
xy=get_data()
len=len(x)
#plt.scatter(xys=1.5)
#高斯模型参数初始化
x_u1=[]
y_u1=[]
x_u2=[]
y_u2=[]
x_u3=[]
y_u3=[]
w1=0.4
u1=np.array([[1.1][0.1]])
c1=np.array([[30][03]])
w2=0.3
u2=np.array([[8.2][0.1]])
c2=np.array([[30][03]])
w3=0.3
u3=np.array([[4.2][4.2]])
c3=np.array([[30][03]])
#记录第一次的聚类中心
x_u1.append(u1[00])
y_u1.append(u1[10])
x_u2.append(u2[00])
y_u2.append(u2[10])
x_u3.append(u3[00])
y_u3.append(u3[10])
#设置迭代次数
flag=100
while(1):
#计算行列式的值和逆矩阵
det_c1inv_c1=get_det_inv(c1)
det_c2inv_c2=get_det_inv(c2)
det_c3inv_c3=get_det_inv(c3)
P1 = []
P2 = []
P3 = []
for i in range(len):
a=np.array([[x[i]y[i]]])
a=a.T
#do E-step
N1 = (1 / (2 * math.pi * math.sqrt(det_c1))) * np.exp(-0.5 * np.dot(np.dot((a - u1).T inv_c1) (a - u1)))
N1=N1[00]
N2 = (1 / (2 * math.pi * math.sqrt(det_c2))) * np.exp(-0.5 * np.dot(np.dot((a - u2).T inv_c2) (a - u2)))
N2 = N2[0 0]
N3 = (1 / (2 * math.pi * math.sqrt(det_c3))) * np.exp(-0.5 * np.dot(np.dot((a - u3).T inv_c3) (a - u3)))
N3 = N3[0 0]
tem=w1*N1+w2*N2+w3*N3
#计算先验概率
p1=w1*N1/tem
p2=w2*N2/tem
p3=w3*N3/tem
P1.append(p1)
P2.append(p2)
P3.append(p3)
# do M-step
w1_1=w1
w2u2c2=do_mstep(P2 len x y u2)
plt.plot(u2[0 0] u2[1 0])
w1u1c1=do_mstep(P1 len x y u1)
# plt.plot(u1[0 0] u1[1 0])
w3u3c3=do_mstep(P3 len x y u3)
plt.plot(u3[0 0] u3[1 0])
x_u1.append(u1[0 0])
y_u1.append(u1[1 0])
x_u2.append(u2[0 0])
y_u2.append(u2[1 0])
x_u3.append(u3[0 0])
y_u3.append(u3[1 0])
if abs(w1-w1_1) < 0.0001:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-22 18:59 EM&GMM
文件 1475530 2019-12-22 18:56 EM&GMMEM&GMM.docx
目录 0 2019-12-19 21:42 EM&GMM数据集
文件 6254 2019-12-17 22:55 EM&GMM数据集The old faithful dataset.txt
文件 6245 2019-12-19 09:43 EM&GMM数据集Theoldfaithfuldataset.txt
文件 2087 2019-12-19 21:44 EM&GMM数据集dest.txt
文件 4900 2019-12-19 10:28 EM&GMM数据集iris.txt
目录 0 2019-12-22 18:56 EM&GMM程序源代码
文件 3434 2019-12-22 18:23 EM&GMM程序源代码实验一.py
文件 4009 2019-12-22 18:42 EM&GMM程序源代码实验三.py
文件 2938 2019-12-22 18:32 EM&GMM程序源代码实验二.py
文件 4083 2019-12-22 18:51 EM&GMM程序源代码思考题1-1.py
文件 3197 2019-12-19 23:25 EM&GMM程序源代码思考题1-2(k-means-2维).py
文件 3364 2019-12-19 23:27 EM&GMM程序源代码思考题1-2(k-means-3维).py
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)