8 4 Deep Learning with Python 费良宏 历史的数据和统计建模被用于概率进行预测 传统的数据分析旨在回答关于过去的事实,机器学习的目 的是回答关于未来事件的可能性的问题! 机器学习的应用场景 个性化 – 提供个性化的电子商务体验 文档聚类 – 按照文档上下文自动分类 欺诈检测 – 发现异常的规律行为,识别和标记欺诈交易 推荐引擎 客户流失预测 ... 机器学习-学习方式 监督学习- 人工干预和验证的要求,算法:Logistic SVM 强化学习- 通过观察来学习做成如何的动作, 算法:Q-Learning以及时间差学习 机器学习- 方法及流程 输入特征选择 – 基于什么进行预测 目标 – 预测什么 预测功能 – 回归、聚类、降维... Xn -> F(xn) -> T(x) 机器学习- 举例 机器学习- 举例 如何让机器分辨出来他/她是谁 ? 图像分析 – 输入特征选择 ->面部特征、发型、裙子、身高、手势… ->面部特征、发型、裙子、身高、手势… 机器学习- 何时使用 你不需要机器学习,如果 - 使用简单的规则和计算,你可以预测答案 你能够预先了解到所需要的步骤不需要任何数据驱动的 学习 你需要机器学习,如果 - 简单的聚类规则是不充分的 面对大量的数据集的可伸缩性的问题 机器学习 - 总结 由已知答案的数据开始 明确目标 – 从数据中希望可以预测什么 选择可以被用来预测目标的模式所需要的变量/特性 使用已知目标答案的数据训练机器学习模型0 码力 | 49 页 | 9.06 MB | 1 年前3
1_丁来强_开源AIOps数据中台搭建与Python的作用各种第三⽅方数据关联 • 数据⽣生命周期管理理(时序数据的归并、变化数据更更新等) 机器器学习对分析增强的⽅方向 增强点 描述 统计性分析 基于IT实体与数据,在单维、多维变量量上的关联、聚类、分类和推断。 ⾃自动模式发现与预测 基于历史数据⾃自动探索出数学与结构化模式,并⽤用于各种可能维度的预测。 异常检测 基于模式识别正常⾏行行为与异常⾏行行为。 根因判断 修剪⽹网络并提供有效问题的关系链接。 机器器学习:Airflow(编排)+ 如下机器器学习框架 • ⾃自动化:Ansible、Puppet等 • AI增强 - 降噪去重与模式识别 • 对海海量量⽇日志进⾏行行模式聚类(例例如从65万条⽇日志,聚类出50条⽇日志模式) 阿⾥里里云⽇日志服务 Sumologic Splunk 消除告警疲劳 • 传统阈值⽅方式的告警并不不能解决问题: • 阈值难以合理理,或会⾮非常复杂0 码力 | 48 页 | 17.54 MB | 1 年前3
PyConChina2022-深圳-Python赋能智慧物流-康昊= g + h h:传统启发函数+额外代价 Python赋能智慧物流 2-系统/模型实现 · 增强系统鲁棒性 - 准确的抛出异常,快速处理 - 引入状态机,在稳定状态中判断 - “高内聚,低耦合” - 判断数据的时效性 Python赋能智慧物流 2-系统/模型实现 · 产品价值 Python赋能智慧物流 2-系统/模型实现 应 用 层 驱 动 层 硬 件 层 雷达驱动0 码力 | 22 页 | 3.81 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Python 版叫自身來解決問題。它主要包含兩個階段。 1. 遞:程式不斷深入地呼叫自身,通常傳入更小或更簡化的參數,直到達到“終止條件”。 2. 迴:觸發“終止條件”後,程式從最深層的遞迴函式開始逐層返回,匯聚每一層的結果。 而從實現的角度看,遞迴程式碼主要包含三個要素。 1. 終止條件:用於決定什麼時候由“遞”轉“迴”。 2. 遞迴呼叫:對應“遞”,函式呼叫自身,通常輸入更小或更簡化的參數。 3. 118 圖 6‑6 開放定址(線性探查)雜湊表的鍵值對分佈 然而,線性探查容易產生“聚集現象”。具體來說,陣列中連續被佔用的位置越長,這些連續位置發生雜湊衝 突的可能性越大,從而進一步促使該位置的聚堆積生長,形成惡性迴圈,最終導致增刪查改操作效率劣化。 值得注意的是,我們不能在開放定址雜湊表中直接刪除元素。這是因為刪除元素會在陣列內產生一個空桶 None ,而當查詢元素時,線性探查到該空桶就 27, 30, 33, … } hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, … } 如果輸入 key 恰好滿足這種等差數列的資料分佈,那麼雜湊值就會出現聚堆積,從而加重雜湊衝突。現在, 假設將 modulus 替換為質數 13 ,由於 key 和 modulus 之間不存在公約數,因此輸出的雜湊值的均勻性會明 顯提升。 modulus = 130 码力 | 364 页 | 18.74 MB | 10 月前3
Hello 算法 1.0.0b4 Python版时,该空位可能导致 程序误判元素不存在。为此,通常需要借助一个标志位来标记已删除元素。 ‧ 容易产生聚集。数组内连续被占用位置越长,这些连续位置发生哈希冲突的可能性越大,进一步促使这 一位置的聚堆生长,形成恶性循环,最终导致增删查改操作效率劣化。 以下代码实现了一个简单的开放寻址(线性探测)哈希表。值得注意两点: ‧ 我们使用一个固定的键值对实例 removed 来标记已删除元素。也就是说,当一个桶内的元素为 27, 30, 33, ⋯} hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, ⋯} 如果输入 key 恰好满足这种等差数列的数据分布,那么哈希值就会出现聚堆,从而加重哈希冲突。现在,假设 将 modulus 替换为质数 13 ,由于 key 和 modulus 之间不存在公约数,输出的哈希值的均匀性会明显提升。 modulus = 13 key = 冲突元素存储在同一个链表中。然而,链表过长会降低查 询效率,可以进一步将链表转换为红黑树来提高效率。 ‧ 开放寻址通过多次探测来处理哈希冲突。线性探测使用固定步长,缺点是不能删除元素,且容易产生聚 集。多次哈希使用多个哈希函数进行探测,相较线性探测更不易产生聚集,但多个哈希函数增加了计算 量。 ‧ 不同编程语言采取了不同的哈希表实现。例如,Java 的 HashMap 使用链式地址,而 Python0 码力 | 329 页 | 27.34 MB | 1 年前3
Hello 算法 1.1.0 Python版118 图 6‑6 开放寻址(线性探测)哈希表的键值对分布 然而,线性探测容易产生“聚集现象”。具体来说,数组中连续被占用的位置越长,这些连续位置发生哈希冲 突的可能性越大,从而进一步促使该位置的聚堆生长,形成恶性循环,最终导致增删查改操作效率劣化。 值得注意的是,我们不能在开放寻址哈希表中直接删除元素。这是因为删除元素会在数组内产生一个空桶 None ,而当查询元素时,线性探测到该空桶就会 27, 30, 33, … } hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, … } 如果输入 key 恰好满足这种等差数列的数据分布,那么哈希值就会出现聚堆,从而加重哈希冲突。现在,假 设将 modulus 替换为质数 13 ,由于 key 和 modulus 之间不存在公约数,因此输出的哈希值的均匀性会明显 提升。 modulus = 13 key 元素存储在同一个链表中。然而,链表过长会降低查 询效率,可以通过进一步将链表转换为红黑树来提高效率。 ‧ 开放寻址通过多次探测来处理哈希冲突。线性探测使用固定步长,缺点是不能删除元素,且容易产生聚 集。多次哈希使用多个哈希函数进行探测,相较线性探测更不易产生聚集,但多个哈希函数增加了计算 量。 ‧ 不同编程语言采取了不同的哈希表实现。例如,Java 的 HashMap 使用链式地址,而 Python0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0b5 Python版时,该空位可能导致 程序误判元素不存在。为此,通常需要借助一个标志位来标记已删除元素。 ‧ 容易产生聚集。数组内连续被占用位置越长,这些连续位置发生哈希冲突的可能性越大,进一步促使这 一位置的聚堆生长,形成恶性循环,最终导致增删查改操作效率劣化。 以下代码实现了一个简单的开放寻址(线性探测)哈希表。 ‧ 我们使用一个固定的键值对实例 removed 来标记已删除元素。也就是说,当一个桶内的元素为 27, 30, 33, … } hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, … } 如果输入 key 恰好满足这种等差数列的数据分布,那么哈希值就会出现聚堆,从而加重哈希冲突。现在,假设 将 modulus 替换为质数 13 ,由于 key 和 modulus 之间不存在公约数,输出的哈希值的均匀性会明显提升。 modulus = 13 key = 冲突元素存储在同一个链表中。然而,链表过长会降低查 询效率,可以进一步将链表转换为红黑树来提高效率。 ‧ 开放寻址通过多次探测来处理哈希冲突。线性探测使用固定步长,缺点是不能删除元素,且容易产生聚 集。多次哈希使用多个哈希函数进行探测,相较线性探测更不易产生聚集,但多个哈希函数增加了计算 量。 ‧ 不同编程语言采取了不同的哈希表实现。例如,Java 的 HashMap 使用链式地址,而 Python0 码力 | 361 页 | 30.64 MB | 1 年前3
Hello 算法 1.0.0 Python版118 图 6‑6 开放寻址(线性探测)哈希表的键值对分布 然而,线性探测容易产生“聚集现象”。具体来说,数组中连续被占用的位置越长,这些连续位置发生哈希冲 突的可能性越大,从而进一步促使该位置的聚堆生长,形成恶性循环,最终导致增删查改操作效率劣化。 值得注意的是,我们不能在开放寻址哈希表中直接删除元素。这是因为删除元素会在数组内产生一个空桶 None ,而当查询元素时,线性探测到该空桶就会 27, 30, 33, … } hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, … } 如果输入 key 恰好满足这种等差数列的数据分布,那么哈希值就会出现聚堆,从而加重哈希冲突。现在,假 设将 modulus 替换为质数 13 ,由于 key 和 modulus 之间不存在公约数,因此输出的哈希值的均匀性会明显 提升。 modulus = 13 key 元素存储在同一个链表中。然而,链表过长会降低查 询效率,可以通过进一步将链表转换为红黑树来提高效率。 ‧ 开放寻址通过多次探测来处理哈希冲突。线性探测使用固定步长,缺点是不能删除元素,且容易产生聚 集。多次哈希使用多个哈希函数进行探测,相较线性探测更不易产生聚集,但多个哈希函数增加了计算 量。 ‧ 不同编程语言采取了不同的哈希表实现。例如,Java 的 HashMap 使用链式地址,而 Python0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版118 图 6‑6 开放寻址(线性探测)哈希表的键值对分布 然而,线性探测容易产生“聚集现象”。具体来说,数组中连续被占用的位置越长,这些连续位置发生哈希冲 突的可能性越大,从而进一步促使该位置的聚堆生长,形成恶性循环,最终导致增删查改操作效率劣化。 值得注意的是,我们不能在开放寻址哈希表中直接删除元素。这是因为删除元素会在数组内产生一个空桶 None ,而当查询元素时,线性探测到该空桶就会 27, 30, 33, … } hash = {0, 3, 6, 0, 3, 6, 0, 3, 6, 0, 3, 6, … } 如果输入 key 恰好满足这种等差数列的数据分布,那么哈希值就会出现聚堆,从而加重哈希冲突。现在,假 设将 modulus 替换为质数 13 ,由于 key 和 modulus 之间不存在公约数,因此输出的哈希值的均匀性会明显 提升。 modulus = 13 key 元素存储在同一个链表中。然而,链表过长会降低查 询效率,可以通过进一步将链表转换为红黑树来提高效率。 ‧ 开放寻址通过多次探测来处理哈希冲突。线性探测使用固定步长,缺点是不能删除元素,且容易产生聚 集。多次哈希使用多个哈希函数进行探测,相较线性探测更不易产生聚集,但多个哈希函数增加了计算 量。 ‧ 不同编程语言采取了不同的哈希表实现。例如,Java 的 HashMap 使用链式地址,而 Python0 码力 | 364 页 | 18.43 MB | 10 月前3
Hello 算法 1.0.0b1 Python版为元素不存在(即上述第 2. 种情况)。因此需要借助一个标志位来标记删除元素。 ‧ 容易产生聚集。桶内被占用的连续位置越长,这些连续位置发生哈希冲突的可能性越大,从而进一步促 进这一位置的“聚堆生长”,最终导致增删查改操作效率的劣化。 多次哈希 顾名思义,「多次哈希」的思路是使用多个哈希函数 ?1(?) , ?2(?) , ?3(?) , ⋯ 进行探测。 插入元素:若哈希函数 ?1(0 码力 | 178 页 | 14.67 MB | 1 年前3
共 28 条
- 1
- 2
- 3













