09_K-means聚类 1 概述 聚类是一种无监督学习,不需要预先定义的标签,只是根据数据特征去学习,通过度量特相似度或者距离,然后把已知的数据集划分成若干个不同的类别。与分类不同,聚类任务的标是发现数据内在的结构。 聚类分为两类: 硬聚类:每个数据点仅属于一个聚类 软聚类:每个数据点被赋予属于每个已识别聚类的概率 聚类算法大体上可以分为: 基于质心的聚类 基于密度的聚类 层次聚类 谱聚类 2025-10-29 机器学习 #机器学习 #K-means
C++基础算法 1 模拟枚举 枚举算法是我们在日常中使用到的最多的一个算法,枚举算法的核心思想就是:枚举所有的可能。枚举算法简单粗暴,暴力的枚举所有可能速度可能比较慢,但是总能得出正确答案。 枚举算法的三要素:枚举对象、枚举范围和判定条件 比如密码锁,枚举 000~999 的情况 枚举对象:密码 枚举范围:000~999 判定条件:否密码是否正确(能否打开锁) 2 递归算法 从前有座山,山 2025-10-29 C++算法 #cpp
02_机器学习基本理论 1 机器学习三要素 机器学习方法 = 模型 + 策略 + 算法 模型(model):总结数据的内在规律,用数学语言描述的参数系统 策略(strategy):选取最优模型的评价准则 算法(algorithm):选取最优模型的具体方法 2 机器学习方法分类 3 建模流程 收集数据:收集用于训练和测试的数据集,确保数据代表实际问题的不同方面 数据清洗:对数据进行清洗,去除 2025-10-29 机器学习 #机器学习
10_感知机 1 概述 感知机(Perceptron)是二分类模型, 接收多个信号,输出一个信号。 感知机的信号只有 0、1 两种取值。 𝑥1、𝑥2 是输入信号,𝑦 是输出信号,𝑤1、𝑤2 是权重,○ 称为神经元或节点。只有当输入信号和权重计算之后超过阈值 θ 时才会输出 1,也称之为神经元被激活。 $$y= \begin{cases} 0 & (w_1x_1+w_2x_2\l 2025-10-29 机器学习 #机器学习 #感知机
08_集成学习 1 概述 集成学习(Ensemble Learning)并不是一种具体的算法,而是一种思想:将多个单模型组合成一个综合模型,从而克服单一模型可能存在的局限性,提高准确性和稳定性,获得比单一模型更好的泛化能力。 1.1 术语说明 基学习器 (base learner)、基模型(base model)、基估计器 (base estimator),指的是集成学习中的单个模型。 进一步将基学习器 2025-10-29 机器学习 #机器学习 #集成学习
埃氏筛质数判定 从 2 开始,将每个质数的倍数都标记为非质数,最终剩下未被标记的就是质数。 举例说明(筛选 2~30 的质数): 初始时,默认 2~30 全部为质数。 2 是质数,标记 2 的所有倍数(4, 6, 8…)不是质数。 找到下一个未被标记的数:3,是质数,标记 3 的倍数(6, 9, 12…)不是质数。 接着是 5、7……依此类推,直到 $\sqrt30$ ≈ 5 为止。 12 2025-10-29 C++算法 #cpp #埃氏筛
二分查找(唯一值) 思路 在 n 个元素有序的(升序)整型数组 nums 中查找目标值 target,如果目标值存在返回下标,否则返回 -1。 数组为有序数组 数组中无重复元素 一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的 根据循环不变量规则,二分查找的过程中,想清楚区间的定义,区间的定义就是不变量,保持不变量,在 while 寻找中每一次边界的处理都要坚持根据区间的定义来操作。 2025-10-29 C++算法 #cpp #二分
二分 1 整数二分 指针的跳跃次数 logn l + 1 = r 时结束,也就是 l 和 r 紧挨的时候 可行区的指针最后一定指向答案 开区间可以正确处理边界(l和r初始化在数组的两侧) 注意: 访问a[l]或a[r]的时候注意边界问题 例如目标值在左侧,需要判断 a[l] == x,l有可能一直是-1,此时访问a[l]会出现下标越界 1.1 最大化查找 123456789 2025-10-29 C++算法 #cpp #二分
C++文件读取 如果需要从文件读入数据,并把输出数据保存为文件,需要使用文件读取。 freopen为file reopen,意为文件重新打开,实现重定向标准输入输出 第一个参数为文件名可以修改,输入文件为.in,输出文件为.out 第二个参数,r代表读(read),w代表写(write) 第三个参数,stdin标准输入,stdout标准输出 12freopen("test.in&quo 2025-10-29 C++算法 #cpp
标准输入输出 cin >> cout << scanf() printf() getchar(c) 字符输入 putchar(c) 字符输出 gets(str) 读取一整行,回车或EOF停止,不会判断上限,不安全 fgets(str, 100, stdin) 读取一整行,读取最多100个字符存到str中 cin.getline(str, 100) getline(cin, 2025-10-29 C++算法 #cpp #stdio