【人工智能I】机器学习之分类

贝叶斯

条件概率

在这里插入图片描述

乘法定理

在这里插入图片描述

全概率公式

在这里插入图片描述

贝叶斯公式

在这里插入图片描述

贝叶斯分类

在这里插入图片描述
在这里插入图片描述

朴素贝叶斯分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述

决策树

在这里插入图片描述

信息熵与信息增益

信息熵:表示信息的复杂程度,例如集合A={1,1,1,2,2}和集合B={1,2,3,4,5}相比,集合A的熵更小。
信息增益:是在划分数据集前后信息熵的差值。

决策树的过程

在这里插入图片描述

根节点

1、计算赖床信息熵
在这里插入图片描述
p(赖床)=8/12. p(不赖床)=4/12.
H(赖床)=-(p(赖床)*log2(p(赖床))+p(不赖床) *log2(p(不赖床)))=0.89

2、计算每个属性(季节、时间已过 8 点、风力情况)的信息熵
在这里插入图片描述
3、同样的计算方法:
H(季节)=0.56 H(是否过8点)=0.748

4、信息增益是上一步的信息熵减去选定属性的信息熵
信息增益 g(风力情况) = H(赖床) - H(风力情况) =0.89-0.801=0. 089
信息增益 g(是否过8点) =?
信息增益 g(季节) = ?

5、选取信息增益最大的那个作为根节点:季节

挑选新的节点

在这里插入图片描述

构建完整的树

在这里插入图片描述

总结

在这里插入图片描述

KNN(k近邻)

流程

1、计算已知类别数据集中的点与当前点之间的距离
2、按距离递增次序排序
3、选取与当前点距离最小的k个点
4、统计前k个点所在的类别出现的频率
5、返回前k个点出现频率最高的类别作为当前点的预测分类

K值的选择

在应用中,K值一般取一个比较小的数值,通常采用交叉验证法来选取最优的K值。
交叉验证法:将数据集划分为 N个大小相似的互斥子集,并且尽量保证每个子集数据分布的一致性。这样,就可以获取 N组训练 - 测试集,从而进行 N 次训练和测试。

应用

电影分类
在这里插入图片描述

import math
movie_data = {"宝贝当家": [45, 2, 9, "喜剧片"],
              "美人鱼": [21, 17, 5, "喜剧片"],
              "澳门风云3": [54, 9, 11, "喜剧片"],
              "功夫熊猫3": [39, 0, 31, "喜剧片"],
              "谍影重重": [5, 2, 57, "动作片"],
              "叶问3": [3, 2, 65, "动作片"],
              "伦敦陷落": [2, 3, 55, "动作片"],
              "我的特工爷爷": [6, 4, 21, "动作片"],
              "奔爱": [7, 46, 4, "爱情片"],
              "夜孔雀": [9, 39, 8, "爱情片"],
              "代理情人": [9, 38, 2, "爱情片"],
              "新步步惊心": [8, 34, 17, "爱情片"]}
# 测试样本  唐人街探案": [23, 3, 17, "?片"]
#下面为求与数据集中所有数据的距离代码:
x = [23, 3, 17]
KNN = []
for key, v in movie_data.items():
    d = math.sqrt((x[0] - v[0]) ** 2 + (x[1] - v[1]) ** 2 + (x[2] - v[2]) ** 2)
    KNN.append([key, round(d, 2)])

# 输出所用电影到 唐人街探案的距离
print(KNN)

#按照距离大小进行递增排序
KNN.sort(key=lambda dis: dis[1])

#选取距离最小的k个样本,这里取k=5;
KNN=KNN[:5]
print(KNN)

#确定前k个样本所在类别出现的频率,并输出出现频率最高的类别
labels = {"喜剧片":0,"动作片":0,"爱情片":0}
for s in KNN:
    label = movie_data[s[0]]
    labels[label[3]] += 1
labels =sorted(labels.items(),key=lambda l: l[1],reverse=True)
print(labels,labels[0][0],sep='\n')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值