第五章 贝叶斯框架朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入$ x$ ,利用贝叶斯定理求出后验概率最大的输出 $y$ .本章要论的模型仍属于监督学习范畴,但与之前不同的是,这些模型都基于一种全新的建模理论:搭建模型的出发点不是为了对未知数据做预测,而是为了弄清楚并模拟数据产生的原理与机制。为了更具体地讨论建模理论,我们假设数据的因变量为X,被预测量为y。首先简单介绍下逻辑回归(logistic regression,后面章节学习),他直接从自变量$X$出发,得到被预测量$y=1$的概率,$P(y=1|X)=1/(1+e^{-X\beta})$。也就是说模型的建模出发点是直接考察自变量到被预测函量的关系,即建模的对象是条件概率$P(y|X)$。学术上,这些模型被称为判别式模型(discriminative model)。本章即将讨论的式与之相对的生成模型(generative model)。这类模型并不直接寻找自变量X与被预测y之间的因果关系,而是关系数据${X,y}$
python函数img.resize((width, height),Image.ANTIALIAS)第二个参数:Image.NEAREST :低质量Image.BILINEAR:双线性Image.BICUBIC :三次样条插值Image.ANTIALIAS:高质量x if y else z这个用法的效果是,如果y真,返回x,否则返回z。而且这个用法是表达式,不是语句!因此我们可以这样写:x=3*4/7 y='a' z='b' t=y if int(x) else z 📝 本文由 deepseek-v4-pro 根据笔记内容自动发布
拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱。bagging(bootstrap aggregating 的缩写)算法从训练数据的样本中建立复合模型,可以有效降低决策树的方差,但树与树之间有高度关联(并不是理想的树的状态)。随机森林算法(Random forest algorithm)是对 bagging 算法的扩展。除了仍然根据从训练数据样本建立复合模型之外,随机森林对用做构建树(tree)的数据特征做了一定限制,使得生成的决策树之间没有关联,从而提升算法效果。本教程旨在探讨如何用 Python 实现随机森林算法。通过本文,我们可以了解到: bagged decision trees 与随机森林算法的差异; 如何构建含更多方差的装袋决策树; 如何将随机森林算法运用于预测模型相关的问题。 算法描述这个章节将对随机森林算法本身以及本教程的算法试验所用的声纳数据集(Sonar dataset)做一个简要介绍。随机森林算法决策树运行的每一步都涉及到对数据集中的最优分裂点(best split point)进行贪婪选择(greedy select
题目描述字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。 例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。输入描述输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。输出描述输出共一行,为进行了右旋转操作后的字符串。输入示例2 abcdefg 输出示例fgabcde n = int(input()) x=input() print(x[len(x)-n:]+x[:len(x)-n]) 📝 本文由 deepseek-v4-pro 根据笔记内容自动发布
707. 设计链表你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。实现 MyLinkedList 类: MyLinkedList() 初始化 MyLinkedList 对象。 int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 。 void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点。 void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。 void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。如果 inde
459. 重复的子字符串给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。) 思路移动匹配当一个字符串s:abcabc,内部由重复的子串组成,那么这个字符串的结构一定是这样的:也就是由前后相同的子串组成。那么既然前面有相同的子串,后面有相同的子串,用 s + s,这样组成的字符串中,后面的子串做前串,前面的子串做后串,就一定还能组成一个s,如图:当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,要刨除 s + s 的首字符和尾字符,这样避免在s+s中搜索出原来的s,我们要搜索的是中间拼接出来的s。以上证明的充分性,接下来证明必要性:如果有一个字符串s,在 s + s 拼接后, 不算首尾
一只胖橘