机器学习3

embedded/2024/11/19 16:20:12/

六、朴素贝叶斯分类

 背景知识:第三大点的第4点:概率 基础定义_数学概率中事件的定义-CSDN博客

1、条件概率

        𝑃(𝐴|𝐵)=𝑃(𝐴∩𝐵)/𝑃(𝐵) :A事件在B事件发生的情况下发生的概率为 交集发生的概率除以B事件发生的概率。

2、全概率公式

        𝑃(𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)+𝑃(𝐵|𝐴′)𝑃(𝐴′):事件B的概率为B在A发生的情况下概率以及B在非A发生情况下的概率之和。𝑃(𝐴′)表示非A事件。

3、贝叶斯推论

        𝑃(𝐴|𝐵)=𝑃(𝐴) * 𝑃(B|A)/𝑃(𝐵):A事件在B事件发生情况下的概率为A事件概率乘以B事件在A事件发生情况下概率除以B事件发生的概率,也就是前提的互换。

        P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。

        P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。

        P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

        后验概率 = 先验概率x调整因子

4、朴素贝叶斯推论

        对条件概率分布做了条件独立的假设,再去使用 𝑃(𝐴|𝐵)=𝑃(𝐴) * 𝑃(B|A)/𝑃(𝐵) 。

5、拉普拉斯平滑系数

        某些事件或特征可能从未出现过,这会导致它们的概率被估计为零。所以进行了分子加上1,分母加上特征总数量

6、API

from navie_beyes import MultinomialNB

同样的使用 fit 训练,predict预测, score 获取准确率

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNBx,y = load_iris(return_X_y=True)
# 划分数据集
x_train,x_test, y_train,y_test = train_test_split(x,y,shuffle=True,train_size=0.85,stratify=y)
# 实例化预估器
model = MultinomialNB()
# fit 训练数据
model.fit(x_train,y_train)
# score 获得准确率
print(model.score(x_test,y_test))

七、决策树

1、信息熵

        通过本样本的类别在样本空间占比的方法进行计算

        例如:样本空间为8,该特征存在两个类别,第一个类别占据5,第二种占据3,那么该点的信息熵为 -(5/8log5/8 + 3/8log3/8)

        信息熵越小,决策价值越大。(信息熵大代表对数据划分性能差,故而无法决策)

2、信息增益 entropy

        在根节点判断情况下得到新的样本空间,这时候得到特征的信息熵减去根节点信息熵的绝对值,就是该特征的信息增益。

        信息增益越大,越有决策价值。

3、基尼指数 gini

        也就是二分类,一个节点包含的样本属于正类的概率是 (p),则属于负类的概率是 (1-p):

Gini(p) = 1 - p^2 - (1-p)^2 = 2p(1-p)

        基尼指数约大,数据越混乱,决策效果越差。

4、可视化决策树

        export_graphviz(算法名称, out_file = "路径/名称.dot",fearure_names=特征描述)

        将文件内容复制到网站(Webgraphviz )后生成。

5、API

from sklearn.tree import DecisionTreeClassifier

参数:criterion:gini-基尼指数;entropy-信息增益;log_loss-对数损失

            max-depth:整数,默认None

from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_splitwine = load_wine()
x = wine.data
y = wine.target
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.2)
# 生成决策树对象
tree = DecisionTreeClassifier()
# 使用fit训练数据
tree.fit(x_train, y_train)
print(tree.score(x_test, y_test))# 生成可视化文件
export_graphviz(tree, out_file="../model/wine_tree.dot", feature_names=wine.feature_names)

八、随机森林

1、API

from sklearn.ensemlbe import RandomForestClassifier

参数与决策树一致

import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 1、获取数据
titanic = pd.read_csv("../../src/titanic/titanic.csv")
titanic.head()
# 筛选特征值和目标值
x = titanic[["pclass", "age", "sex"]]
y = titanic["survived"]# 2、数据处理
# 1)缺失值处理
x["age"].fillna(x["age"].mean(), inplace=True)
# 2) 转换成字典
x = x.to_dict(orient="records")
# 3)、数据集划分
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
# 4)、字典特征抽取
transfer = DictVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)# 3、创建训练模型,,传入数据
estimator = RandomForestClassifier()
estimator.fit(x_train, y_train)# 4、模型评估
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)

        


http://www.ppmy.cn/embedded/138808.html

相关文章

一文速学---红黑树

文章目录 一、红黑树简介二、 红黑树特性三、红黑树插入3.1 红黑树为空3.2 父节点为黑色3.3 父节点为红色3.3.1 父亲和叔叔都是红色3.3.2 父节点为红色,叔叔节点为黑色3.3.2.1 父节点在左节点,插入节点在父亲左节点3.3.2.2 父节点在左节点,插…

树莓派(Raspberry Pi)picotool

树莓派(Raspberry Pi)picotool 安装直接安装从源码安装工具介绍显示信息保存程序二进制信息基本信息引脚完整信息 链接 安装 直接安装 在archlinux上,使用yay直接安装 yay -S picotool从源码安装 安装libusb sudo pacman -S libusb下载 …

SQL,力扣题目1369,获取最近第二次的活动

一、力扣链接 LeetCode_1369 二、题目描述 表: UserActivity ------------------------ | Column Name | Type | ------------------------ | username | varchar | | activity | varchar | | startDate | Date | | endDate | Date | -----…

云原生周刊:Istio 1.24.0 正式发布

云原生周刊:Istio 1.24.0 正式发布 开源项目推荐 Kopf Kopf 是一个简洁高效的 Python 框架,只需几行代码即可编写 Kubernetes Operator。Kubernetes(K8s)作为强大的容器编排系统,虽自带命令行工具(kubec…

第十六届蓝桥杯模拟赛(第一期)-c++/c

前面填空参考https://blog.csdn.net/2301_76891851/article/details/143448411 后面大题code&#xff1a; 停车场停车 #include <bits/stdc.h> #define int long long using namespace std; int tmp; signed main() {int n;cin>>n;if(n<15)cout<<"…

使用 AWR 进行 Exadata 性能诊断

本文内容来自Oracle 2024年3月发布的白皮书&#xff1a;Exadata Performance and AWR: Exadata Performance Diagnostics with AWR 简介 本技术简介概述了如何将 Oracle AWR 功能与 Exadata 结合使用&#xff0c;从 Exadata 的角度&#xff08;standpoint&#xff09;监控和分…

飞凌嵌入式RK3576核心板已适配Android 14系统

在今年3月举办的RKDC2024大会上&#xff0c;飞凌嵌入式FET3576-C核心板作为瑞芯微RK3576处理器的行业首秀方案重磅亮相&#xff0c;并于今年6月率先量产发货&#xff0c;为客户持续稳定地供应&#xff0c;得到了众多合作伙伴的认可。 FET3576-C核心板此前已提供了Linux 6.1.57…

量子前沿英雄谱|光量子计算的前沿探险家:Jeremy O‘Brien

大航海时代&#xff0c;书写了一部人类探索与发现的壮丽史诗&#xff0c;而作为宏大叙事背后若干个体之一&#xff0c;那些大大小小航船上载着的&#xff0c;是一群不断航向未知海域的坚定探险家。 日光底下无新事。从著名物理学家费曼提出量子计算机的概念起 ... 大航海时代&a…