基于关联规则的分类算法(CBA) | 项集、频繁项集、关联规则 | arulesCBA库

基于关联规则的分类算法

目前使用较多且较为简洁的关联规则分类算法是基于关联规则的分类算法(Classification Based on Association, CBA),下面将从该算法的相关概念开始介绍。

这部分笔记参考论文:孙菡悦.基于多因素交互效应的农村贫困家庭精准识别研究[D]. 华东师范大学, 2022.

示例和解释参考ChatGPT。

项集、频繁项集、关联规则

以一个小型的交易数据集为例:

交易ID (Transaction ID)购买的商品 (Items)
1牛奶, 面包, 黄油
2面包, 黄油, 啤酒
3牛奶, 面包, 可乐
4牛奶, 面包, 黄油, 啤酒
5面包, 可乐
项集 (Itemsets)

在这个数据集中,项集可以是不同商品的组合。我们可以从单个商品(单项集)开始,逐步扩展到多个商品的组合(多项集)。

  • 单项集(1-itemset):{牛奶}、{面包}、{黄油}、{啤酒}、{可乐}
  • 二项集(2-itemset):{牛奶, 面包}、{牛奶, 黄油}、{面包, 黄油}、{面包, 啤酒} 等等
  • 三项集(3-itemset):{牛奶, 面包, 黄油}、{面包, 黄油, 啤酒} 等等
频繁项集 (Frequent Itemsets)

频繁项集是指在交易数据中出现频率较高的项集。我们可以设定一个最小支持度阈值,比如 60%(即项集至少出现在60%的交易中)。

  • 支持度 (Support) 的计算方法是项集出现的次数除以总交易次数。例如,项集 {牛奶, 面包} 出现了3次(交易ID 1, 3, 4),总交易次数为5次,所以支持度为 3/5 = 60%。

根据上述数据集,频繁项集可能包括:

  • {牛奶, 面包},支持度 = 3/5 = 60%
  • {面包, 黄油},支持度 = 3/5 = 60%
  • {面包},支持度 = 5/5 = 100%

如果关联规则$ A \Rightarrow B$在发生频率不小于预先设定阈值的基础上同时符合最小置信度要求,则进一步定义该关联规则为强关联规则。

关联规则 (Association Rules)

从频繁项集中,我们可以生成关联规则,表示商品之间的关系。关联规则的形式为$ A \Rightarrow B$,表示如果购买了商品 A,则很可能会购买商品 B。关联规则有两个重要指标:

  • 支持度 (Support):规则中项集的出现频率。例如,规则 {牛奶} -> {面包} 的支持度为 3/5 = 60%。
  • 置信度 (Confidence):表示在包含前件的交易中也包含后件的交易比例。例如,规则 {牛奶} -> {面包} 的置信度为包含 {牛奶} 的交易中同时包含 {面包} 的比例。在包含 {牛奶} 的3笔交易(交易ID 1, 3, 4)中,有3笔同时包含 {面包},所以置信度为 3/3 = 100%。该规则的置信度定义为在事件 A 发生的条件下,事件 B 发生的概率,用公式表示为:

c o n f i d e n c e ( A ⇒ B ) = P ( B ∣ A ) = s u p p ( A ∪ B ) s u p p ( A ) confidence(A\Rightarrow B)=P(B|A)=\frac{supp(A\cup B)}{supp(A)} confidence(AB)=P(BA)=supp(A)supp(AB)

基于频繁项集,我们可以得出一些关联规则:

  1. {牛奶} -> {面包}
    • 支持度:3/5 = 60%
    • 置信度:3/3 = 100%
  2. {面包} -> {黄油}
    • 支持度:3/5 = 60%
    • 置信度:3/5 = 60%
  3. {黄油} -> {面包}
    • 支持度:3/5 = 60%
    • 置信度:3/3 = 100%

Apriori算法

  1. 生成候选项集(Candidate Generation)
    • 通过连接频繁项集生成候选项集。频繁项集的连接是通过对频繁项集中的项进行组合来完成的。例如,从频繁1项集生成候选2项集。
  2. 剪枝(Pruning)
    • 利用Apriori性质:如果一个项集是频繁的,那么它的所有子集也是频繁的;如果一个项集是非频繁的,那么它的所有超集也是非频繁的。因此,可以在候选项集中删除那些包含非频繁子集的项集,从而减少计算量。
  3. 计算支持度(Support Counting)
    • 通过扫描交易数据库,计算每个候选项集的支持度。保留支持度不小于最小支持度阈值的候选项集,作为频繁项集。
  4. 重复上述步骤
    • 从频繁k项集生成频繁(k+1)项集,直到无法生成更多的频繁项集为止。

假设有如下交易数据集,最小支持度阈值为50%(即支持度 ≥ 0.5):

交易ID购买的商品
T1{A, B, C}
T2{A, C}
T3{A, B, D}
T4{B, C}
T5{A, B, C, D}

步骤1:生成频繁1项集 L 1 L1 L1

扫描交易数据库,计算每个单项的支持度:

  • {A}: 4/5 = 0.8
  • {B}: 4/5 = 0.8
  • {C}: 4/5 = 0.8
  • {D}: 2/5 = 0.4

支持度不小于0.5的项集为频繁项集:

L 1 = { { A } , { B } , { C } } L1 = \{ \{A\}, \{B\}, \{C\} \} L1={{A},{B},{C}}

步骤2:生成候选2项集 C 2 C2 C2

对频繁1项集进行连接:

C 2 = { { A , B } , { A , C } , { B , C } } C2 = \{ \{A, B\}, \{A, C\}, \{B, C\} \} C2={{A,B},{A,C},{B,C}}

计算候选2项集的支持度:

  • {A, B}: 3/5 = 0.6
  • {A, C}: 3/5 = 0.6
  • {B, C}: 3/5 = 0.6

支持度不小于0.5的项集为频繁项集:

L 2 = { { A , B } , { A , C } , { B , C } } L2 = \{ \{A, B\}, \{A, C\}, \{B, C\} \} L2={{A,B},{A,C},{B,C}}

步骤3:生成候选3项集 C 3 C3 C3

对频繁2项集进行连接:

C 3 = { A , B , C } C3={\{A,B,C}\} C3={A,B,C}

计算候选3项集的支持度:

  • {A, B, C}: 2/5 = 0.4

支持度小于0.5,故没有频繁3项集:

L 3 = ∅ L3=∅ L3=

至此,算法终止,得到的频繁项集为:

L = { L 1 , L 2 } = { { { A } , { B } , { C } } } , { { A , B } , { A , C } , { B , C } } L=\{L1,L2\}={\{\{ \{A\}, \{B\}, \{C\} \}\},\{ \{A, B\}, \{A, C\}, \{B, C\} \}} L={L1,L2}={{{A},{B},{C}}},{{A,B},{A,C},{B,C}}

步骤4:关联规则生成

从频繁2项集中生成关联规则,并计算每条规则的置信度:

  • 规则 {A} -> {B}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75
  • 规则 {B} -> {A}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75
  • 规则 {A} -> {C}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75
  • 规则 {C} -> {A}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75
  • 规则 {B} -> {C}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75
  • 规则 {C} -> {B}
    • 支持度:3/5 = 0.6
    • 置信度:3/4 = 0.75

arulesCBA库的简单使用

这里参考arulesCBA官方文档:https://cran.r-project.org/web/packages/arulesCBA/arulesCBA.pdf,解释参考ChatGPT。

将连续特征离散化

由于CBA算法要求数据类型为离散型,arulesCBA封装好了离散化的函数,若需要根据实际问题采用其他算法,可参考上文引用的论文。

discretizeDF.supervised函数实现了几种有监督的方法,将连续变量转换为适用于关联规则挖掘和构建关联分类器的分类变量。

加载iris数据集并输出描述性统计结果:

data("iris")
summary(iris)

输出以下信息:

image-20240727192613251使用Species的监督离散化:

iris.disc <- discretizeDF.supervised(Species ~ ., iris)
summary(iris.disc)
attributes(iris.disc$Sepal.Length) # 检查特定特征的属性

输出以下信息:

image-20240727194142659

Sepal.Length:为例,被划分为三个区间 [-Inf,5.55), [5.55,6.15), [6.15, Inf],每个区间的样本数量分别是59, 36, 和 55。

也可以对指定的特征进行离散化:

iris.disc2 <- discretizeDF.supervised(Species ~ Sepal.Length + Sepal.Width, iris)

使用前面离散规则对样本进行离散化:

discretizeDF(head(iris), methods = iris.disc)

这个命令使用之前通过discretizeDF.supervised()函数生成的离散化方法(iris.disc)对iris数据集的前六个样本进行离散化,输出以下信息:

image-20240727194459549

挖掘iris数据集的关联规则

导入库:library(arulesCBA)

创建分类器:classifier <- CBA(Species ~ ., data = iris, supp = 0.05, conf = 0.9)

第一个参数:Species是目标变量,而.表示使用数据集中除Species以外的所有变量作为特征。

**第二个参数:**指定用于训练分类器的数据集是iris数据集。

**第三个参数:**设置支持度的阈值,即规则在数据集中出现的最小比例。支持度是衡量某个模式在数据集中出现频率的指标。这里设置为5%,即某个规则至少需要在5%的数据中出现才会被考虑。

**第四个参数:**设置置信度的阈值,即规则在预测目标变量时的可靠性程度。置信度是指规则的前件和后件同时出现的比例,通常用于评估规则的准确性。这里设置为90%,意味着我们希望规则在90%的情况下是正确的。

运行后会输出以下信息:

CBA Classifier Object
Formula: Species ~ .
Number of rules: 8
Default Class: versicolor
Classification method: first  
Description: CBA algorithm (Liu et al., 1998)

Formula: Species ~ .

这是指分类器使用的公式。Species是目标变量,即分类器要预测的类别。.表示使用数据集中除目标变量之外的所有特征来进行预测。在这个例子中,目标变量是鸢尾花的品种(Species),而特征包括花瓣长度、花瓣宽度、萼片长度和萼片宽度等属性。

Number of rules: 8

这是分类器生成的关联规则的数量。CBA算法根据训练数据生成规则,每个规则用于将输入数据映射到一个类别。在这个例子中,算法生成了8条规则。

Default Class: versicolor

当输入数据不符合任何规则时,分类器将预测为默认类别。在这个例子中,默认类别是versicolor,这意味着如果没有规则匹配,分类器将预测鸢尾花的品种为versicolor

Classification method: first

这是分类器选择规则的方法。first表示分类器在预测时会使用匹配的第一条规则。这意味着分类器会按照规则的顺序进行匹配,一旦找到匹配的规则,就会使用该规则进行预测,而不会考虑其他规则。

Description: CBA algorithm (Liu et al., 1998)

这是对所使用的算法的描述,指出这个分类器使用的是CBA算法,这是由Liu等人于1998年提出的基于关联规则的分类算法。

查看生成的关联规则:inspect(classifier$rules)

运行后会输出以下信息:

image-20240727190212293

lhs (左侧项)

这些是规则的前件(条件),即规则适用的前提条件。例如,规则1中,{Petal.Length=[-Inf,2.45)}表示当花瓣长度在该范围内时,规则适用。

rhs (右侧项)

这些是规则的后件(结论),即在满足前件条件时,预测的类别。例如,规则1中,{Species=setosa}表示如果条件成立,则预测品种为setosa

support (支持度)

规则适用的数据点在整个数据集中所占的比例。例如,规则1的支持度为0.3333333,表示该规则适用于33.33%的数据。

confidence (置信度)

规则的准确性,即在前件条件满足时,后件也为真的比例。例如,规则1的置信度为1.0,表示在所有花瓣长度在[-Inf,2.45)范围内的数据中,品种都是setosa

coverage (覆盖率)

前件条件在整个数据集中出现的比例。例如,规则1的覆盖率为0.3333333,表示花瓣长度在[-Inf,2.45)范围内的数据占总数据的33.33%。

lift (提升度)

规则相对于随机猜测的优势。例如,提升度为3表示该规则比随机猜测提高了三倍的正确率。

count (计数)

满足该规则的实际数据点的数量。例如,规则1有50个数据点符合条件。

size (规则项数)

规则中的条件数。例如,规则1中有2个条件。

coveredTransactions (覆盖的事务数)

满足前件条件的事务数,即数据点数量。

totalErrors (总错误数)

规则预测错误的次数。

把剪枝后的关联规则导出:

pruned_rules_df <- as(classifier$rules, "data.frame")
write.csv(pruned_rules_df , file = "pruned_rules_subset.csv", row.names = FALSE)

使用训练好的分类器对前六个样本进行预测:predict(classifier, head(iris))

输出混淆矩阵:table(pred = predict(classifier, iris), true = iris$Species)

输出的混淆矩阵如下:

image-20240727190901711

Rows (pred)

代表分类器的预测类别。

Columns (true)

代表数据的真实类别。

Cells

数值表示分类器在预测中正确和错误的次数。

转换成事务格式:

iris_trans <- prepareTransactions(Species ~ ., iris, disc.method = "mdlp")
iris_trans

输出以下信息:

image-20240727191539999

使用mdlp(Minimum Description Length Principle)方法对连续变量进行离散化,输出显示数据集有150个事务(行)和15个项目(列)。每个事务对应一个数据点,每个项目对应一个离散化后的特征值。

verbose = TRUE:启用详细输出,显示训练过程中的详细信息:classifier <- CBA(Species ~ ., data = iris_trans, supp = 0.05, conf = 0.9, verbose = TRUE)

image-20240727191701650

  1. Apriori:使用Apriori算法来挖掘关联规则。
  2. Parameter specification:列出了参数设置,包括最小置信度、最小支持度等。
  3. Algorithmic control:控制算法的具体实现参数,如过滤器、排序等。
  4. Absolute minimum support count: 7:绝对最小支持度计数,即规则至少应满足7个数据点。
  5. Apriori过程:显示了挖掘规则的具体步骤,包括设置项出现、事务、排序和重编码、创建事务树等。最终生成了55条规则。
  6. 剪枝:CARs left: 8修剪后剩余8条规则。修剪是删除冗余或不可靠规则的过程,以提高分类器的效率和准确性。

上面的函数挖掘的是后项为目标变量的关联规则,如果不要求后项为目标变量,可以使用以下函数:

rules <- apriori(iris, parameter = list(supp = 0.05, conf = 0.9))
rules_df <- as(rules, "data.frame")
write.csv(rules_df, file = "rules.csv", row.names = FALSE)

以返贫数据集演示完整代码

这里以返贫数据集为例,下载数据集可直接运行代码出结果。不过用 apriori 挖掘关联规则,产生的关联规则有100多万条,csv文件有400多M,所以不放进仓库了。代码、数据集、结果以及笔记见Gitee仓库:

https://gitee.com/chuantaoli/data_mining_and_courses_learning/tree/master/CBA%E7%AE%97%E6%B3%95

# 导入库和数据
library(arulesCBA)
library(readxl)
excel_file <- "D:/贫困论文/总数据集.xlsx"
data <- read_excel(excel_file)# 数据离散化
summary(data)
vars_to_discretize <- setdiff(names(data), c("性别", "学历","劳动技能","健康状况", "是否参加城乡居民基本医疗保险", "是否参加城乡居民基本养老保险", "是否享受人身意外保险补贴", "就业渠道","是否有龙头企业带动", "主要燃料类型","是否有创业致富带头人带动", "是否有卫生厕所", "入户路类型", "是否通生产用电", "是否加入农民专业合作组织"))
data_to_discretize <- data[ , vars_to_discretize]
data_to_discretize$`风险是否已消除` <- as.factor(data_to_discretize$`风险是否已消除`)
data_to_discretize_disc <- discretizeDF.supervised(`风险是否已消除` ~ ., data_to_discretize, disc.method = "mdlp")
summary(data_to_discretize_disc)# 将离散化后的特征与不离散化的特征合并
non_discretized_vars <- data[ , c("性别", "学历","劳动技能","健康状况", "是否参加城乡居民基本医疗保险", "是否参加城乡居民基本养老保险", "是否享受人身意外保险补贴", "就业渠道","是否有龙头企业带动", "主要燃料类型","是否有创业致富带头人带动", "是否有卫生厕所", "入户路类型", "是否通生产用电", "是否加入农民专业合作组织")]
data_final <- cbind(data_to_discretize_disc, non_discretized_vars)
summary(data_final)# CBA函数挖掘关联规则,后项为因变量
classifier <- CBA(`风险是否已消除` ~ ., data = data_final, supp = 0.01, conf = 0.7)
inspect(classifier$rules)# 导出关联规则
pruned_rules_df <- as(classifier$rules, "data.frame")
write.csv(pruned_rules_df , file = "pruned_rules_subset.csv", row.names = FALSE)## 如果不能运行,就转化成事务格式
# data_final[] <- lapply(data_final, as.factor)
# str(data_final)
# data_final_trans <- as(data_final, "transactions")# apriori挖掘关联规则,后项是任何特征
rules <- apriori(data_final, parameter = list(supp = 0.09, conf = 0.9))
rules_df <- as(rules, "data.frame")
write.csv(rules_df, file = "rules.csv", row.names = FALSE)
_rules_df , file = "pruned_rules_subset.csv", row.names = FALSE)## 如果不能运行,就转化成事务格式
# data_final[] <- lapply(data_final, as.factor)
# str(data_final)
# data_final_trans <- as(data_final, "transactions")# apriori挖掘关联规则,后项是任何特征
rules <- apriori(data_final, parameter = list(supp = 0.09, conf = 0.9))
rules_df <- as(rules, "data.frame")
write.csv(rules_df, file = "rules.csv", row.names = FALSE)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3270240.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux第五节课(权限02)

1、Linux下的用户分类 root&#xff1a;超级用户普通用户&#xff1a;通过root新建的用户&#xff0c;adduser root不受权限约束&#xff1b;普通用户受权限约束&#xff1b; Linux系统中&#xff0c;所有用户都需要有密码&#xff0c;无论是root还是其他&#xff0c;即便是…

MySQL内如何改变编码格式

查找数据库的编码格式&#xff1a; show variables like character%;具体内容时这些 在创建表时设定编码格式&#xff1a; create database <要创建的数据库的名字> charset utf8; 修改数据库默认编码&#xff1a; set character_set_databaseutf8mb4; character_…

大模型算法备案流程最详细说明【流程+附件】

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…

【二分查找 数论】2513. 最小化两个数组中的最大值

本文涉及知识 二分查找算法合集 质数、最大公约数、菲蜀定理 LeetCode2513. 最小化两个数组中的最大值 给你两个数组 arr1 和 arr2 &#xff0c;它们一开始都是空的。你需要往它们中添加正整数&#xff0c;使它们满足以下条件&#xff1a; arr1 包含 uniqueCnt1 个 互不相同…

栈和队列<数据结构 C版>

目录 栈&#xff08;Stack&#xff09; 栈的结构体 初始化 销毁 入栈 判空 出栈 取栈顶元素 获取栈个数 测试&#xff1a; 队列&#xff08;Queue&#xff09; 队列的结构体 单个结点 队列 初始化 销毁 入队列&#xff0c;队尾 判空 出队列&#xff0c;队头 …

贪心算法.

哈夫曼树 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称为霍夫曼树或最优二叉树&#xff0c;是一种带权路径长度最短的二叉树&#xff0c;常用于数据压缩。 定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构造一棵二叉树&#xff0c;若该树…

大话成像公众号文章阅读学习(一)

系列文章目录 文章目录 系列文章目录前言一、扫射拍摄二、索尼Alpha 9 III2.1. 视频果冻效应2.2 闪光灯同步速度2.3 其他功能 三 A9III 局限性总结 前言 大话成像是一个专注成像的公众号&#xff0c;文章都很好。 今天看的这篇是 特朗普遭枪击后“大片”出自它 文章地址 htt…

Python | Leetcode Python题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; class PeekingIterator:def __init__(self, iterator):self.iterator iteratorself._next iterator.next()self._hasNext iterator.hasNext()def peek(self):return self._nextdef next(self):ret self._nextself._hasNext self.itera…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…

1.2 单链表定义及操作实现(链式结构)

1.单链表定义 链式存储&#xff1a;用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性 表简称线性链表。 为了正确表示结点间的逻辑关系&#xff0c;在存储每个结点值的同时&#xff0c;还必须存储指示其直接 后继结点的地址&#xff08;或位置&#xff09;…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A&#xff0c;但是接口A的响应结果不能满足需求&#xff1b;此时&#xff0c;有另一个…

第15周 Zookeeper分布式锁与变种多级缓存

Zookeeper **************************************************************

heic怎么转换成jpg?heic转jpg,分享6款图片格式转换器免费汇总!

众所周知&#xff0c;在与非苹果手机设备用户&#xff08;如安卓手机或Windows台式机用户&#xff09;分享照片之前&#xff0c;通常需要将iphone的heic格式转换为jpg。由于这些操作系统的旧版本不原生支持heic图片格式&#xff0c;因此需要额外的第三方工具来查看这些图像。因…

0727,学什么学,周六就应该休息!!!!!

周六就应该休息&#xff0c;一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01&#xff1a;使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器&#xff01;&#xff01;&#xff01; 今天到此为止&#x…

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合

目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起&#xff0c;目标方法异常后&#xff0c;around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时&#xff0c;可以使用两个execution annotation 自定义…

【计算机网络】期末实验答辩

注意事项&#xff1a; 1&#xff09;每位同学要在下面做过的实验列表中选取三个实验进行答辩准备&#xff0c;并将自己的姓名&#xff0c;学号以及三个实验序号填入共享文档"1&#xff08;2&#xff09;班答辩名单"中。 2&#xff09;在答辩当日每位同学由老师在表…

支持向量机 及其分类案例详解(附Python 代码)

支持向量机分类器预测收入等级 我们将构建一个支持向量机&#xff08;SVM&#xff09;分类器&#xff0c;以预测一个人基于14个属性的收入等级。我们的目标是判断收入是否高于或低于每年$50,000。因此&#xff0c;这是一个二元分类问题。我们将使用在此处可用的人口普查收入数…

Python高维度大型气象矩阵存储策略分享

零、前情提要 最近需要分析全球范围多变量的数值预报数据&#xff0c;将grb格式的数据下载下来经过一通处理后需要将预处理数据先保存一遍&#xff0c;方便后续操作&#xff0c;处理完发现此时的数据维度很多&#xff0c;数据量巨大&#xff0c;使用不同的保存策略的解析难度和…