代码:
import numpy as np
import scipy.io as sio
import matplotlib.pyplot as plt
mat=sio.loadmat('ex8data1.mat')
print(mat.keys())# X Xval yval
X=mat['X']#(307,2)
Xval,yval=mat['Xval'],mat['yval']#(307,2)(307,1)
# 绘制初始图像
plt.plot(X[:,0],X[:,1],'bx')
plt.show()
# 1.获取训练集中样本特征的均值和方差
def estimateGaussianl(X,isCovariance):
means=np.mean(X,axis=0)
if isCovariance:
sigma2=(X-means).T@(X-means)/len(X)
else:
sigma2=np.var(X,axis=0)
return means,sigma2
# 2.多元正态分布密度函数
def gaussian(X,means,sigma2):
if np.ndim(sigma2)==1:
# 转为二维矩阵
sigma2=np.diag(sigma2)
X=X-means
n=X.shape[1]
first=np.power(2*np.pi,-n/2)*(np.linalg.det(sigma2)**(-0.5))#是一个数
second&