人工智能第四次作业

1、K均值聚类

它是一种聚类算法,属于无监督学习算法,目标是将n个d维的数据划分为K个聚簇,使得簇内方差最小化。

2、K均值聚类是生成式还是判别式方法?

K均值聚类是一种判别式方法,它通过将数据分为K个簇来进行聚类。

3、KNN  VS   K-means

KNN是有监督学习,解决的是分类问题,KNN使用有分类标签的数据集通过计算对新数据进行分类预测。

K-means是无监督学习,解决的是聚类问题,K-means通过算法将数据集划分为K类。

4、主成分分析

主成分分析是一种特征降维的方法,找到数据的主要成分替换原来的数据。

5、LDA   VS   PCA

两者都符合高斯分布且都可对数据进行降维。LDA是有监督的降维方法,最多降到类别数k-1的维数,PCA是无监督的降维方法,主要以方差衡量数据。

6、奇异值分解(SVD)

将矩阵A分解为三个子矩阵,A=UDV^T,U是一个mxm矩阵,D是一个mxn的矩阵,V是一个nxn的矩阵。

7、特征人脸方法(Eigenface)

捕捉人脸图像集合的特征信息,并用该信息对各个人脸图像进行编码和比较。使用主成分分析,使用奇异值分解方法,将人脸从像素点空间转到人脸空间,比较是否相似。

8、潜在语义分析(LSA)

潜在语义分析是一种无监督学习算法,主要用于文本的话题分析。最初应用于文本信息检索,也被称为潜在语义索引。

9、期待最大化算法(EM)

期待最大化算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。EM算法是数据挖掘的十大算法之一,主要解决有隐含变量时,如何利用最大似然法求解未知参数。

10、K-means是最简单的EM算法?

K-means是最简单的EM算法。K-means算法是将样本聚类成k个簇,EM算法:E步就是估计隐含类别y的期望值,M步调整其他参数使得在给定类别y的情况下,极大似然估计P(x,y)能够达到极大值。然后在其他参数确定的情况下,重新估计y,周而复始,直至收敛。K-means是EM的体现。

11、编程实现EM算法

 

import numpy as np
import math
import copy
import matplotlib.pyplot as plt

isdebug = True


def init_data(Sigma, Mu1, Mu2, k, N):
    global X
    global Mu
    global Expectations
    X = np.zeros((1, N))
    Mu = np.random.random(k)
    Expectations = np.zeros((N, k))
    for i in range(0, N):
        if np.random.random(1) > 0.5:
            X[0, i] = np.random.normal(Mu1, Sigma)
        else:
            X[0, i] = np.random.normal(Mu2, Sigma)
    if isdebug:
        print("***********")
        print("初始观测数据X:")
        print(X)


# EM算法:步骤1,计算E
def e_step(Sigma, k, N):
    global Expectations
    global Mu
    global X
    for i in range(0, N):
        Denom = 0
        Numer = [0.0] * k
        for j in range(0, k):
            Numer[j] = math.exp((-1 / (2 * (float(Sigma ** 2)))) * (float(X[0, i] - Mu[j])) ** 2)
            Denom += Numer[j]
        for j in range(0, k):
            Expectations[i, j] = Numer[j] / Denom
    if isdebug:
        print("***********")
        print("隐藏变量E(Z):")
        print(Expectations)


# EM算法:步骤2,求最大化E[zij]的参数Mu
def m_step(k, N):
    global Expectations
    global X
    for j in range(0, k):
        Numer = 0
        Denom = 0
        for i in range(0, N):
            Numer += Expectations[i, j] * X[0, i]
            Denom += Expectations[i, j]
        Mu[j] = Numer / Denom



def run(Sigma, Mu1, Mu2, k, N, iter_num, Epsilon):
    init_data(Sigma, Mu1, Mu2, k, N)
    print("初始<u1,u2>:", Mu)
    for i in range(iter_num):
        Old_Mu = copy.deepcopy(Mu)
        e_step(Sigma, k, N)
        m_step(k, N)
        print(i, Mu)
        if sum(abs(Mu - Old_Mu)) < Epsilon:
            break


if __name__ == '__main__':
    sigma = 6
    mu1 = 40
    mu2 = 20  
    k = 2  # 高斯分布的个数
    N = 1000  # 样本个数
    iter_num = 1000  # 最大迭代次数
    epsilon = 0.0001  # 当两次误差小于这个时退出
    run(sigma, mu1, mu2, k, N, iter_num, epsilon)

    plt.hist(X[0, :], 50)
    plt.show()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工智能原理与算法第四次作业主要包括以下内容: 1. 线性回归:线性回归是一种常见的机器学习算法,用于建立输入变量与输出变量之间的线性关系。通过拟合最优的直线来进行预测和判断。 2. 逻辑回归:逻辑回归是一种常用于分类问题的线性模型。通过将线性回归的结果通过sigmoid函数进行转换,将输出限制在0-1之间,从而进行二分类预测。 3. 决策树:决策树是一种基于树结构的分类方法。通过一系列的决策节点和叶节点来对样本进行分类。决策树的训练过程包括选择最佳的节点和最优的划分特征。 4. K近邻算法:K近邻算法是一种基于实例的学习方法,通过计算输入样本与训练样本之间的距离,选择K个最近邻的样本来进行分类或回归。 5. 支持向量机:支持向量机是一种常用的二分类算法。通过将样本转换到高维空间,将样本分割为不同的类别,构造最优的超平面来进行分类。 6. 朴素贝叶斯:朴素贝叶斯是一种基于贝叶斯概率理论的分类方法。通过统计样本的特征向量在每个类别中的条件概率来进行分类。 7. 随机森林:随机森林是一种集成学习方法,通过多个决策树的集成来进行分类或回归。每个决策树使用不同的训练集和特征子集进行训练。 8. 神经网络:神经网络是一种模仿人脑神经元之间连接方式的计算模型。通过多个神经元的连接和权重调整来进行分类、回归等任务。 以上是人工智能原理与算法第四次作业的内容,涵盖了常用的机器学习算法和分类方法,这些方法在实际应用中具有广泛的应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值