| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> NB 算法 (包括符号型与数值型 结合 Java 程序分析) -> 正文阅读 |
|
[数据结构与算法]NB 算法 (包括符号型与数值型 结合 Java 程序分析) |
摘要: 本贴结合例子与程序分析 NB 算法. 1. 例子数据集 1: 符号型符号型数据集, 还是用 weather 吧. 可在 https://gitee.com/fansmale/javasampledata 下载.
2. 基础理论2.1 条件概率
P
(
A
B
)
=
P
(
A
)
P
(
B
∣
A
)
(1)
P(AB) = P(A)P(B|A) \tag{1}
P(AB)=P(A)P(B∣A)(1)
例:
A
A
A 表示天气是晴天, 即 outlook = sunny;
B
B
B 表示湿度高, 即 humidity = high. 2.2 独立性假设令
x
=
x
1
∧
x
2
∧
?
∧
x
m
\mathbf{x} = x_1 \wedge x_2 \wedge \dots \wedge x_m
x=x1?∧x2?∧?∧xm? 表示一个条件的组合, 如:
o
u
t
l
o
o
k
=
s
u
n
n
y
∧
t
e
m
p
e
r
a
t
u
r
e
=
h
o
t
∧
h
u
m
i
d
i
t
y
=
h
i
g
h
∧
w
i
n
d
y
=
F
A
L
S
E
\mathrm{outlook = sunny} \wedge \mathrm{temperature = hot} \wedge \mathrm{humidity = high} \wedge \mathrm{windy = FALSE}
outlook=sunny∧temperature=hot∧humidity=high∧windy=FALSE, 它对应于我们数据集的第一行. 令
D
i
D_i
Di? 表示一个事件, 如: play = no. 根据 (1) 式可知:
2.3 Laplacian 平滑然鹅, (5) 式在预测时会出现问题. 例如:
那么, 如果有一天
o
u
t
l
o
o
k
=
o
v
e
r
c
a
s
t
∧
t
e
m
p
e
r
a
t
u
r
e
=
h
o
t
\mathrm{outlook = overcast} \wedge \mathrm{temperature = hot}
outlook=overcast∧temperature=hot, 岂不是打球和不打球的概率都为 0 了?
P
L
(
x
j
∣
D
i
)
=
n
P
(
x
j
D
i
)
+
1
n
P
(
D
i
)
+
v
j
=
n
P
(
o
u
t
l
o
o
k
=
s
u
n
n
y
∧
p
l
a
y
=
y
e
s
)
+
1
n
P
(
p
l
a
y
=
y
e
s
)
+
3
(7)
P^L(x_j | D_i) = \frac{n P(x_j D_i) + 1}{n P(D_i) + v_j} = \frac{n P(\mathrm{outlook = sunny} \wedge \mathrm{play = yes}) + 1}{n P(\mathrm{play = yes}) + 3} \tag{7}
PL(xj?∣Di?)=nP(Di?)+vj?nP(xj?Di?)+1?=nP(play=yes)+3nP(outlook=sunny∧play=yes)+1?(7)
第二个条件与如下条件保持一定程度的一致:
对于
P
(
D
i
)
P(D_i)
P(Di?) 也需要进行平滑: 考虑 Laplacian 平滑的优化目标为: 3. 针对符号型数据的预测算法跟踪请各位打开 日撸 Java 三百行(51-60天,kNN 与 NB), 对照程序来理解. 3.1 初始化361 行初始化一个对象, 包括
3.2 设置数据类型362 行设置数据类型为符号型, 这个与数值型区别. 3.3 计算决策属性的分布363 行计算决策属性 (play) 的分布.
3.4 计算条件概率364 行计算条件概率.
3.5 预测365 行进行预测.
4. 处理数值型数据需要的理论数值型数据, 没有办法使用
P
(
h
u
m
i
d
i
t
y
=
87
)
P(\mathrm{humidity} = 87)
P(humidity=87), 因为湿度刚刚好为 87 (而不是 87.001) 的概率为 0. 实际上, 湿度为任何值的概率都为 0. 当然,
P
(
86
≤
h
u
m
i
d
i
t
y
<
87
)
P(86 \le \mathrm{humidity} < 87)
P(86≤humidity<87) 的概率不为 0.
5. 针对数值型数据的预测算法跟踪400 行是入口, 转到 375 行. 5.1 计算高斯分布的参数384 行进行参数计算.
5.2 预测309 行这个方法负责预测.
6. 小结值型数据的代码居然比符号型的还短! 附录: 在这里没有用到的式子, 如果接下来我发现它们真没用, 就删除全概率 1: 全概率 2: 有的时候决策类不只是两种情况 (例如 iris 的种类为
k
=
3
k = 3
k=3), 所以需要推广一下. P ( D i ∣ x ) = P ( x D i ) P ( x ) = P ( D i ) P ( x ∣ D i ) P ( x ) = ∑ i = 1 k P ( D i ) P ( A ∣ D i ) P ( x ) \begin{array}{ll}P(D_i | x) & = \frac{P(xD_i)}{P(x)} = \frac{P(D_i)P(x | D_i)}{P(x)}\\ & = \frac{\sum_{i = 1}^k P(D_i)P(A | D_i)}{P(x)}\end{array} P(Di?∣x)?=P(x)P(xDi?)?=P(x)P(Di?)P(x∣Di?)?=P(x)∑i=1k?P(Di?)P(A∣Di?)?? 同理,
P
(
A
B
)
=
P
(
B
)
P
(
A
∣
B
)
P(AB) = P(B)P(A|B)
P(AB)=P(B)P(A∣B). P ( X = x ) = ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) P(X=x) = \sum_k P(X = x | Y = c_k)P(Y= c_k) P(X=x)=∑k?P(X=x∣Y=ck?)P(Y=ck?)
P
(
a
1
=
s
u
n
n
y
)
P(a_1 = sunny)
P(a1?=sunny) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:27:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |