From fc8dbc6990a01421b13ddf64be1c46cb70428dae Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Wed, 16 Dec 2020 21:21:49 +0800 Subject: [PATCH] 2020-12-16 21:21:49 --- new/ai-py/02.md | 20 ++++++++++---------- new/ai-py/03.md | 18 +++++++++--------- new/ai-py/04.md | 32 ++++++++++++++++---------------- new/ai-py/05.md | 2 +- new/ai-py/11.md | 6 +++--- new/ai-py/20.md | 2 +- new/ai-py/21.md | 2 +- new/gan-proj/3.md | 4 ++-- new/gan-proj/6.md | 2 +- new/handson-unsup-learn-py/01.md | 2 +- new/handson-unsup-learn-py/02.md | 6 +++--- new/handson-unsup-learn-py/03.md | 2 +- new/handson-unsup-learn-py/05.md | 10 +++++----- new/handson-unsup-learn-py/06.md | 2 +- new/handson-unsup-learn-py/07.md | 2 +- new/handson-unsup-learn-py/10.md | 6 +++--- 16 files changed, 59 insertions(+), 59 deletions(-) diff --git a/new/ai-py/02.md b/new/ai-py/02.md index bb2c0ab9..75c21386 100644 --- a/new/ai-py/02.md +++ b/new/ai-py/02.md @@ -191,12 +191,12 @@ AI 可以协助生成候选药物(即要在医学上测试的分子),然 有很多研究将深度学习应用于基因组学领域。 尽管基因组学的深度学习仍处于早期阶段,但它有可能为以下领域提供信息: * 功能基因组学 -* 肿瘤科 +* 肿瘤学 * 人口遗传学 * 临床遗传学 * 作物单产提高 * 流行病学与公共卫生 -* 进化和系统发育分析 +* 进化和系统演化分析 # 知识搜索 @@ -233,7 +233,7 @@ AI 可以协助生成候选药物(即要在医学上测试的分子),然 * 餐厅 * 电影 * 音乐 -* 潜在合作伙伴(在线约会) +* 潜在合作伙伴(在线会议) * 书籍和文章 * 搜索结果 * 金融服务(机器人顾问) @@ -276,7 +276,7 @@ Pandora 的推荐器基于多个层次: * 煮晚餐 * 铺床 * 捡起地板上的物品 -* 拖地,灰尘和真空 +* 拖地,扫地和吸尘 * 洗碗 * 监控房屋 @@ -434,7 +434,7 @@ Deepfake 是术语“深度学习”和`fake`的混合。 这是一种合并视 * 签发保险单 * 健康 * 生活 - * 家 + * 家庭 * 驾驶 * 贷款额 * 分期贷款 @@ -475,12 +475,12 @@ Deepfake 是术语“深度学习”和`fake`的混合。 这是一种合并视 Lake Formation 还提供了集中式仪表板,管理员可以在其中管理和监视跨多个分析引擎的数据访问策略,治理和审计。 用户还可以在结果目录中搜索数据集。 随着该工具在未来几个月和几年中的发展,它将使用他们最喜欢的分析和机器学习服务促进数据分析,其中包括: -* 数据块 -* 板 +* DataBricks +* Tableau * 亚马逊 Redshift -* 亚马逊雅典娜 -* AWS 胶水 -* 亚马逊电子病历 +* 亚马逊 Athena +* AWS Glue +* 亚马逊 EMR * 亚马逊 QuickSight * 亚马逊 SageMaker diff --git a/new/ai-py/03.md b/new/ai-py/03.md index 62c7da6a..4d68c462 100644 --- a/new/ai-py/03.md +++ b/new/ai-py/03.md @@ -21,7 +21,7 @@ * Hadoop * Spark -* 火花流 +* Spark Streaming * Kafka * Azure * AWS @@ -153,7 +153,7 @@ * 数据清理 * 过滤 * 聚合 -* 增加 +* 扩充 * 合并 * 存储 @@ -164,7 +164,7 @@ * GCP Cloud ML 引擎 * SAS * RapidMiner -* 尼姆 +* Knime 执行这些转换的最流行的工具之一是 Apache Spark,但它仍然需要数据存储。 对于持久性,最常见的解决方案是: @@ -180,7 +180,7 @@ 某些实时数据处理解决方案提供了容错,可伸缩,低延迟的数据提取。 一些最喜欢的是: -* 阿帕奇·卡夫卡 +* Apache Kafka * Azure 事件中心 * AWS Kinesis @@ -217,10 +217,10 @@ 数据可能经常包含不一致的值。 此外,数据可能以多种方式不一致。 数据不一致的一个示例是街道地址修饰符。 考虑以下数据点: -* 第五大道 -* 第五大道 -* 第五大道 -* 第五大道 ++ `Fifth Avenue` ++ `Fifth Ave` ++ `Fifth Av` ++ `Fifth Av.` 作为人类,我们可以快速确定所有这些示例确实具有相同的价值。 计算机很难得出这个结论。 @@ -321,7 +321,7 @@ * **内存使用情况**:正在消耗多少内存。 * **磁盘使用率**:我们的应用消耗了多少磁盘空间。 * **网络 I/O 流量**:如果我们的应用跨越实例,则衡量网络流量非常重要。 -* **延迟**:发生数据传输所花费的时间。 +* **延迟**:数据传输所花费的时间。 * **吞吐量**:成功传输的数据量。 如果这些指标发生变化,则需要对其进行分析以了解为什么会发生这些变化。 diff --git a/new/ai-py/04.md b/new/ai-py/04.md index e09bbcf2..849bde75 100644 --- a/new/ai-py/04.md +++ b/new/ai-py/04.md @@ -4,7 +4,7 @@ * 缩短训练时间 * 简化模型并使它们更易于解释 -* 通过减少过拟合来增强测试集性能 +* 通过减少过拟合来增强测试集表现 删除特征的一个重要原因是输入变量之间的高度相关性和冗余性,或者某些特征的不相关性。 因此,可以删除这些输入变量,而不会造成很多信息丢失。 冗余和无关是两个截然不同的概念,因为一个相关特征在存在与之高度相关的另一个相关特征的情况下可能是多余的。 @@ -58,7 +58,7 @@ Zestimate 算法的确切细节是专有的,但是我们可以做一些假设 正如我们之前提到的,探索性数据分析是获得直观了解和深入了解正在使用的数据集的好方法。 让我们分析通常用于获取这些见解的三种方法。 他们是: -* 功能重要性 +* 特征重要性 * 单变量选择 * 具有热图的相关矩阵 @@ -181,7 +181,7 @@ g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn") 使用包装器方法时,使用以下步骤可将特征选择的问题实质上减少为搜索问题: -1. 功能子集用于训练模型 +1. 特征子集用于训练模型 2. 根据每次迭代的结果,将要素添加到子集中或从子集中删除 包装方法通常在计算上很昂贵。 以下是一些示例: @@ -244,11 +244,11 @@ g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn") 特征工程过程可以描述如下: -1. 集体讨论哪些功能相关 -2. 确定哪些功能可以改善模型性能 -3. 创建新功能 -4. 确定新功能是否会增加模型性能; 如果没有,放下它们 -5. 返回“步骤 1”,直到模型的性能达到预期 +1. 集体讨论哪些特征相关 +2. 确定哪些特征可以改善模型性能 +3. 创建新特征 +4. 确定新特征是否会增加模型表现; 如果没有,丢弃它们 +5. 返回“步骤 1”,直到模型的表现达到预期 正如我们在示例中看到的那样,拥有域知识并熟悉数据集对于特征工程很有用。 但是,也有一些通用的数据科学技术可应用于数据准备和功能工程步骤中,而不管其域是什么。 让我们花一些时间分析这些技术。 @@ -256,7 +256,7 @@ g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn") * 归因 * 离群值管理 -* 一键编码 +* 单热编码 * 对数转换 * 缩放比例 * 日期操作 @@ -307,9 +307,9 @@ print(data) * 将零用作替换值是一种选择 * 计算整个数据集的平均值,然后用平均值替换缺失值 -* 计算整个数据集的平均值,然后用平均值替换缺失值 +* 计算整个数据集的中值,然后用中值替换缺失值 -通常最好使用平均值而不是平均值,因为平均值更容易受到异常值的影响。 让我们看一些替换示例: +通常最好使用中值而不是平均值,因为平均值更容易受到异常值的影响。 让我们看一些替换示例: ```py #Filling all missing values with 0 @@ -369,7 +369,7 @@ print(data) 如您所见,如果从最佳拟合线的计算中除去异常值,则该线将更准确地预测低价房屋。 因此,简单地删除异常值是处理异常值影响的简单而有效的方法。 -那么,我们如何确定某个值是否为离群值并应将其删除? 一种常见的方法是删除落在数据集中某个要素值的标准偏差的某个倍数的离群值。 用于乘数的常量更多的是一门艺术,而不是一门科学,但是 2 到 4 之间的值很常见: +那么,我们如何确定某个值是否为离群值并应将其删除? 一种常见的方法是删除落在数据集中某个要素值的标准差的某个倍数的离群值。 用于乘数的常量更多的是一门艺术,而不是一门科学,但是 2 到 4 之间的值很常见: ```py #Dropping the outlier rows with standard deviation @@ -475,7 +475,7 @@ print(data) | 0 | 0 | 1 | | 0 | 0 | 1 | -此外,我们可以从其他两个颜色特征中计算出任何颜色特征的值。 如果红色和黄色都为 0,则意味着绿色需要为 1,依此类推。 因此,在一键编码中,我们始终可以删除其中一项功能而不会丢失信息。 像这样: +此外,我们可以从其他两个颜色特征中计算出任何颜色特征的值。 如果红色和黄色都为 0,则意味着绿色需要为 1,依此类推。 因此,在单热编码中,我们始终可以删除其中一项功能而不会丢失信息。 像这样: | **红色** | **黄色** | | --- | --- | @@ -558,7 +558,7 @@ print(data) * `X`max –数据集中所有数据点的最大值 * `X`规范 –应用公式后的归一化值 -规范化不会更改特征的分布,并且由于减少的标准偏差,离群值的影响会增加。 因此,建议在规范化之前处理离群值。 现在,让我们看一个 Python 示例: +规范化不会更改特征的分布,并且由于减少的标准差,离群值的影响会增加。 因此,建议在规范化之前处理离群值。 现在,让我们看一个 Python 示例: ```py data = pd.DataFrame({'value':[7,25, -47, 73, 8, 22, 53, -25]}) @@ -575,14 +575,14 @@ print(data) 图 14:标准化输出 -**标准化**(或 z 分数标准化)是一种缩放方法,其中包括标准偏差作为其计算的一部分。 标准化最小化并平滑了缩放中异常值的影响。 让我们看看如何计算它: +**标准化**(或 z 分数标准化)是一种缩放方法,其中包括标准差作为其计算的一部分。 标准化最小化并平滑了缩放中异常值的影响。 让我们看看如何计算它: ![](img/B15441_04_003.png) 哪里: * `μ =`平均值 -* `σ =`标准偏差 +* `σ =`标准差 * `x =`数据点 并使用 Python 计算: diff --git a/new/ai-py/05.md b/new/ai-py/05.md index 458340ae..c7d329ce 100644 --- a/new/ai-py/05.md +++ b/new/ai-py/05.md @@ -110,7 +110,7 @@ print("Mean =", input_data.mean(axis=0)) print("Std deviation =", input_data.std(axis=0)) ``` -前一行显示输入数据的平均值和标准偏差。 让我们去除均值: +前一行显示输入数据的平均值和标准差。 让我们去除均值: ```py # Remove mean diff --git a/new/ai-py/11.md b/new/ai-py/11.md index aab82c61..e7beb620 100644 --- a/new/ai-py/11.md +++ b/new/ai-py/11.md @@ -561,11 +561,11 @@ if __name__ == "__main__": 图 5:演变过程中的标绘比例 -第四个屏幕截图显示了标准偏差: +第四个屏幕截图显示了标准差: ![](img/B15441_11_06.png) -图 6:从进化过程中绘制的标准偏差 +图 6:从进化过程中绘制的标准差 您将看到打印出来的进度。 首先,您会看到类似以下的内容: @@ -1096,7 +1096,7 @@ if __name__ == "__main__": 图 13:演进过程的最终输出 -从上图中可以看出,随着我们的发展,标准偏差不断减小。 这表明它正在收敛。 在此输出中,我们仅显示 50 代。 如果运行更多的代,您可以期望这些值甚至会进一步收敛。 +从上图中可以看出,随着我们的发展,标准差不断减小。 这表明它正在收敛。 在此输出中,我们仅显示 50 代。 如果运行更多的代,您可以期望这些值甚至会进一步收敛。 # 遗传编程用例 diff --git a/new/ai-py/20.md b/new/ai-py/20.md index 592b5cfd..c9ea1f42 100644 --- a/new/ai-py/20.md +++ b/new/ai-py/20.md @@ -319,7 +319,7 @@ import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data ``` -提取 MNIST 图像数据。 `one_hot`标志指定我们将在标签中使用一键编码。 这表示,如果我们有`n`类,则给定数据点的标签将是长度为`n`的数组。 该数组中的每个元素对应于一个给定的类。 要指定一个类,相应索引处的值将设置为`1`,其他所有值都将为`0`: +提取 MNIST 图像数据。 `one_hot`标志指定我们将在标签中使用单热编码。 这表示,如果我们有`n`类,则给定数据点的标签将是长度为`n`的数组。 该数组中的每个元素对应于一个给定的类。 要指定一个类,相应索引处的值将设置为`1`,其他所有值都将为`0`: ```py # Get the MNIST data diff --git a/new/ai-py/21.md b/new/ai-py/21.md index afd15d90..d5e36824 100644 --- a/new/ai-py/21.md +++ b/new/ai-py/21.md @@ -459,7 +459,7 @@ from sklearn.metrics import mean_squared_error math.sqrt(mean_squared_error(Y_valid[:, 0], preds[:, 0, 0])) ``` -RMSE 是方差的平方根。 可以将其解释为无法解释的方差的标准偏差。 它具有与响应变量具有相同单位的有用属性。 RMSE 值越低表示拟合度越好。 +RMSE 是方差的平方根。 可以将其解释为无法解释的方差的标准差。 它具有与响应变量具有相同单位的有用属性。 RMSE 值越低表示拟合度越好。 在这种情况下,我们得到的分数很低,表明我们的模型正在产生不错的预测: diff --git a/new/gan-proj/3.md b/new/gan-proj/3.md index 66255607..f74b4c24 100644 --- a/new/gan-proj/3.md +++ b/new/gan-proj/3.md @@ -889,7 +889,7 @@ def age_to_category(age_list): [1, 2, 4, 2, 3, 4, 2, 5, 5, 1, 3, 2, 1, 1, 2, 1, 2, 2, 1, 5, 4 , .............] ``` -将年龄类别转换为一键编码的向量: +将年龄类别转换为单热编码的向量: ```py # Also, convert the age categories to one-hot encoded vectors @@ -898,7 +898,7 @@ classes = len(set(age_cat)) y = to_categorical(final_age_cat, num_classes=len(set(age_cat))) ``` -将年龄类别转换为一键编码的向量后,`y`的值应如下所示: +将年龄类别转换为单热编码的向量后,`y`的值应如下所示: ```py [[0\. 1\. 0\. 0\. 0\. 0.] diff --git a/new/gan-proj/6.md b/new/gan-proj/6.md index 30888b82..33149053 100644 --- a/new/gan-proj/6.md +++ b/new/gan-proj/6.md @@ -97,7 +97,7 @@ StackGAN 是一个两阶段的网络。 每个阶段都有两个生成器和两 -从文本编码器获得文本嵌入(`φ[t]`)后,将它们馈送到完全连接的层以生成诸如平均值`μ[0]`和标准偏差`σ[0]`的值。然后使用这些值,通过将`σ[0]`放置在矩阵(`∑(φ[t])`)的对角线上来创建对角协方差矩阵。 最后,我们使用`μ[0]`和`∑[0]`创建高斯分布,可以表示为: +从文本编码器获得文本嵌入(`φ[t]`)后,将它们馈送到完全连接的层以生成诸如平均值`μ[0]`和标准差`σ[0]`的值。然后使用这些值,通过将`σ[0]`放置在矩阵(`∑(φ[t])`)的对角线上来创建对角协方差矩阵。 最后,我们使用`μ[0]`和`∑[0]`创建高斯分布,可以表示为: ![](img/bcc5921a-1e7e-497a-b134-61a55d04cecb.png) diff --git a/new/handson-unsup-learn-py/01.md b/new/handson-unsup-learn-py/01.md index 87d3a7d4..81ca9f25 100644 --- a/new/handson-unsup-learn-py/01.md +++ b/new/handson-unsup-learn-py/01.md @@ -208,7 +208,7 @@ ![](img/ca76916e-73c4-443f-9d41-78f2b0ff0ff7.png) -因此,所得成本函数对应于`p`和`p_data`之间的交叉熵之间的差,直到一个恒定值(数据生成过程的熵)。 因此,训练策略现在基于使用一键编码来表示标签(例如,如果有两个标签`0 → (0, 1)`和`1 → (1, 0)`,因此所有元素的总和必须始终等于`1`),并使用内在的概率输出(例如在逻辑回归中)或 softmax 过滤器 ,将`M`值转换为概率分布。 +因此,所得成本函数对应于`p`和`p_data`之间的交叉熵之间的差,直到一个恒定值(数据生成过程的熵)。 因此,训练策略现在基于使用单热编码来表示标签(例如,如果有两个标签`0 → (0, 1)`和`1 → (1, 0)`,因此所有元素的总和必须始终等于`1`),并使用内在的概率输出(例如在逻辑回归中)或 softmax 过滤器 ,将`M`值转换为概率分布。 在这两种情况下,很明显*隐藏的教师*的存在提供了对错误的一致度量,从而允许模型相应地校正参数。 特别地,第二种方法对我们的目的非常有帮助,因此,如果未知,我建议您进一步研究(所有主要定义也存在于《机器学习算法》第二版)。 diff --git a/new/handson-unsup-learn-py/02.md b/new/handson-unsup-learn-py/02.md index f4ab6278..44914543 100644 --- a/new/handson-unsup-learn-py/02.md +++ b/new/handson-unsup-learn-py/02.md @@ -233,7 +233,7 @@ print(df.describe()) 数据集前八个属性的统计报告 -当然,即使我们仅将注意力集中在子集上,我也请读者检查所有属性的值。 特别是,我们需要观察前八个属性之间存在的不同尺度。 标准偏差的范围是 0.01 到 350,这意味着仅由于一个或两个属性,许多向量可能极其相似。 另一方面,使用方差缩放对值进行归一化将赋予所有属性相同的责任(例如`143.5`和`2501`之间的界限为`area_mean`,而`0.05`和`smoothness_mean`之间的界限为`smoothness_mean`。 强迫它们具有相同的方差会影响因素的生物学影响,并且由于我们没有任何具体的指示,因此我们没有*授权*做出这样的选择)。 显然,某些属性在聚类过程中将具有更高的权重,我们将它们的主要影响视为与上下文相关的条件。 +当然,即使我们仅将注意力集中在子集上,我也请读者检查所有属性的值。 特别是,我们需要观察前八个属性之间存在的不同尺度。 标准差的范围是 0.01 到 350,这意味着仅由于一个或两个属性,许多向量可能极其相似。 另一方面,使用方差缩放对值进行归一化将赋予所有属性相同的责任(例如`143.5`和`2501`之间的界限为`area_mean`,而`0.05`和`smoothness_mean`之间的界限为`smoothness_mean`。 强迫它们具有相同的方差会影响因素的生物学影响,并且由于我们没有任何具体的指示,因此我们没有*授权*做出这样的选择)。 显然,某些属性在聚类过程中将具有更高的权重,我们将它们的主要影响视为与上下文相关的条件。 让我们现在开始考虑`perimeter_mean`,`area_mean`,`smoothness_mean`,`concavity_mean`和`symmetry_mean`的对图的初步分析。 该图显示在以下屏幕截图中: @@ -404,7 +404,7 @@ print(sdff[['perimeter_mean', 'area_mean', 'smoothness_mean', 恶性群集的统计描述 -根据事实,我们知道所有这些样本都是恶性的,但是我们可以尝试确定一个规则。 `area_mean` / `perimeter_mean`之比约为`9.23`,相对于平均值,相对标准偏差非常小。 这意味着这些样本在非常狭窄的范围内代表了扩展的肿瘤。 而且,`concavity_mean`和`symmetry_mean`均大于总值。 因此(在不进行科学合理分析的前提下),我们可以得出结论,分配给这些簇的样本代表了已经进入晚期的非常糟糕的肿瘤。 +根据事实,我们知道所有这些样本都是恶性的,但是我们可以尝试确定一个规则。 `area_mean` / `perimeter_mean`之比约为`9.23`,相对于平均值,相对标准差非常小。 这意味着这些样本在非常狭窄的范围内代表了扩展的肿瘤。 而且,`concavity_mean`和`symmetry_mean`均大于总值。 因此(在不进行科学合理分析的前提下),我们可以得出结论,分配给这些簇的样本代表了已经进入晚期的非常糟糕的肿瘤。 为了与良性样本进行比较,现在考虑由`x > -10`和`20 < y < 50`界定的区域如下: @@ -420,7 +420,7 @@ print(sdff[['perimeter_mean', 'area_mean', 'smoothness_mean', 良性簇的统计描述 -在这种情况下,比 `area_mean` / `perimeter_mean` 约为`4.89`,但是`area_mean`具有较大的标准差(实际上,其最大值约为`410`)。 `concavity_mean`相对于前一个非常小(即使具有近似相同的标准偏差),而`symmetry_mean`几乎相等。 从这个简短的分析中,我们可以推断出`symmetry_mean`不是判别特征,而`concavity_mean`的比值`area_mean` / `perimeter_mean`小于`5.42`(考虑最大值)。 小于或等于`0.04`应当保证良性结果。 由于`concavity_mean`可以达到非常大的最大值(大于与恶性样本相关的最大值),因此有必要考虑其他特征,以便确定是否应将其值视为警报。 但是,我们可以得出结论,说属于这些簇的所有样本都是良性的,错误概率可以忽略不计。 我想重复一遍,这不是真正的分析,而是更多的练习,在这种情况下,数据科学家的主要任务是收集可以支持结论的上下文信息。 即使存在基本事实,该验证过程也始终是强制性的,因为根本原因的复杂性可能导致完全错误的陈述和规则。 +在这种情况下,比 `area_mean` / `perimeter_mean` 约为`4.89`,但是`area_mean`具有较大的标准差(实际上,其最大值约为`410`)。 `concavity_mean`相对于前一个非常小(即使具有近似相同的标准差),而`symmetry_mean`几乎相等。 从这个简短的分析中,我们可以推断出`symmetry_mean`不是判别特征,而`concavity_mean`的比值`area_mean` / `perimeter_mean`小于`5.42`(考虑最大值)。 小于或等于`0.04`应当保证良性结果。 由于`concavity_mean`可以达到非常大的最大值(大于与恶性样本相关的最大值),因此有必要考虑其他特征,以便确定是否应将其值视为警报。 但是,我们可以得出结论,说属于这些簇的所有样本都是良性的,错误概率可以忽略不计。 我想重复一遍,这不是真正的分析,而是更多的练习,在这种情况下,数据科学家的主要任务是收集可以支持结论的上下文信息。 即使存在基本事实,该验证过程也始终是强制性的,因为根本原因的复杂性可能导致完全错误的陈述和规则。 diff --git a/new/handson-unsup-learn-py/03.md b/new/handson-unsup-learn-py/03.md index d153b1c5..62b33e25 100644 --- a/new/handson-unsup-learn-py/03.md +++ b/new/handson-unsup-learn-py/03.md @@ -790,7 +790,7 @@ Adjusted Rand score BIRCH: 0.767304858161472 4. K 中心点基于欧几里得度量。 它是否正确? 5. DBSCAN 对数据集的几何非常敏感。 它是否正确? 6. 数据集包含 10,000,000 个样本,可以使用 K 均值在大型计算机上轻松进行聚类。 相反,我们可以使用更小的机器和小批量的 K 均值吗? -7. 群集的标准偏差等于 1.0。 施加噪声`N(0, 0.005)`后,80% 的原始分配被更改。 我们可以说这样的集群配置通常是稳定的吗? +7. 群集的标准差等于 1.0。 施加噪声`N(0, 0.005)`后,80% 的原始分配被更改。 我们可以说这样的集群配置通常是稳定的吗? diff --git a/new/handson-unsup-learn-py/05.md b/new/handson-unsup-learn-py/05.md index 62f7b985..52311ac3 100644 --- a/new/handson-unsup-learn-py/05.md +++ b/new/handson-unsup-learn-py/05.md @@ -163,7 +163,7 @@ print(adjusted_rand_score(Y, Y_pred)) 0.6574291419247339 ``` -该值确认大多数样本已成功硬分配。 作为补充练习,让我们找到权重最小的标准偏差的样本: +该值确认大多数样本已成功硬分配。 作为补充练习,让我们找到权重最小的标准差的样本: ```py im = np.argmin(np.std(W.T, axis=1)) @@ -186,9 +186,9 @@ print(W[:, im]) ![](img/a35690c9-1b3e-4f02-a28d-69b704e008ec.png) -样本`X[414]`的图,对应于具有最小标准偏差的权重向量 +样本`X[414]`的图,对应于具有最小标准差的权重向量 -在这种情况下,存在三个主要簇:`C[8]`,`C[4]`和`C[7]`(降序)。 不幸的是,它们都不对应于与`C[5]`相关的数字 8。 不难理解,这种错误主要是由于手指下部的格式不正确而导致的,其结果更类似于 9(这种错误分类也可能发生在人类身上)。 然而,低标准偏差和明显的主导成分的缺乏应告诉我们,这一决定不容易做出,并且样本具有属于三个主要类别的特征。 一个更复杂的监督模型可以轻松避免此错误,但考虑到我们正在执行非监督分析,并且我们仅将基本事实用于评估目的,结果并不是那么负面。 我建议您使用其他`m`值测试结果,并尝试找出一些可能的合成规则(即,大多数 8 位数字都被软分配给`C[i]`和`C[j]`,因此我们可以假设相应的质心对部分共同特征进行编码,例如,由所有 8 位和 9 位数字共享。 +在这种情况下,存在三个主要簇:`C[8]`,`C[4]`和`C[7]`(降序)。 不幸的是,它们都不对应于与`C[5]`相关的数字 8。 不难理解,这种错误主要是由于手指下部的格式不正确而导致的,其结果更类似于 9(这种错误分类也可能发生在人类身上)。 然而,低标准差和明显的主导成分的缺乏应告诉我们,这一决定不容易做出,并且样本具有属于三个主要类别的特征。 一个更复杂的监督模型可以轻松避免此错误,但考虑到我们正在执行非监督分析,并且我们仅将基本事实用于评估目的,结果并不是那么负面。 我建议您使用其他`m`值测试结果,并尝试找出一些可能的合成规则(即,大多数 8 位数字都被软分配给`C[i]`和`C[j]`,因此我们可以假设相应的质心对部分共同特征进行编码,例如,由所有 8 位和 9 位数字共享。 现在,我们可以讨论高斯混合的概念,这是一种非常广泛使用的方法,用于建模以低密度区域包围的密集斑点为特征的数据集的分布。 @@ -216,7 +216,7 @@ print(W[:, im]) 完整协方差矩阵(左); 对角协方差(中心);圆形/球形协方差(右) -从现在开始,我们将一直在考虑完全协方差矩阵的情况,该矩阵可以实现最大的表达能力。 很容易理解,当这样的分布完全对称(即协方差矩阵是圆形/球形)时,伪簇的形状与 K 均值相同(当然 ,在高斯混合中,簇没有边界,但是始终可以在固定数量的标准偏差后削减高斯)。 相反,当协方差矩阵不是对角线或具有不同的方差时,影响不再是对称的(例如,在双变量的情况下,一个组件可以显示出比另一个更大的方差)。 在这两种情况下,高斯混合均允许我们计算实际概率,而不是测量样本`x[i]`和平均向量`μ[j]`之间的距离(以 K 均值表示)。 下图显示了单变量混合的示例: +从现在开始,我们将一直在考虑完全协方差矩阵的情况,该矩阵可以实现最大的表达能力。 很容易理解,当这样的分布完全对称(即协方差矩阵是圆形/球形)时,伪簇的形状与 K 均值相同(当然 ,在高斯混合中,簇没有边界,但是始终可以在固定数量的标准差后削减高斯)。 相反,当协方差矩阵不是对角线或具有不同的方差时,影响不再是对称的(例如,在双变量的情况下,一个组件可以显示出比另一个更大的方差)。 在这两种情况下,高斯混合均允许我们计算实际概率,而不是测量样本`x[i]`和平均向量`μ[j]`之间的距离(以 K 均值表示)。 下图显示了单变量混合的示例: ![](img/45e96e53-863e-4c70-995b-c33388eb96ea.png) @@ -285,7 +285,7 @@ nb_centers = 2 X, Y = make_blobs(n_samples=nb_samples, n_features=2, center_box=[-1, 1], centers=nb_centers, cluster_std=[1.0, 0.6], random_state=1000) ``` -该数据集是通过对两个具有不同标准偏差(1.0 和 0.6)的高斯分布进行采样而生成的,如以下屏幕截图所示: +该数据集是通过对两个具有不同标准差(1.0 和 0.6)的高斯分布进行采样而生成的,如以下屏幕截图所示: ![](img/db575108-46aa-404e-9944-7ad79dde1310.png) diff --git a/new/handson-unsup-learn-py/06.md b/new/handson-unsup-learn-py/06.md index b9f180e5..b3f7858d 100644 --- a/new/handson-unsup-learn-py/06.md +++ b/new/handson-unsup-learn-py/06.md @@ -78,7 +78,7 @@ -本章的主题是在没有任何监督的情况下自动检测异常。 由于模型不是基于标记样本提供的反馈,因此我们只能依靠整个数据集的属性来找出相似之处并突出显示不同之处。 特别是,我们从一个非常简单但有效的假设开始:常见事件为*正常*,而不太可能发生的事件通常被视为**异常**。 当然,此定义意味着我们正在监视的过程运行正常,并且大多数结果都被认为是有效的。 例如:一家硅加工厂必须将晶圆切成相等的块。 我们知道它们每个都是`0.2×0.2`英寸(约`0.5×0.5`厘米),每侧的标准偏差为 0.001 英寸。 此措施是在 1,000,000 个处理步骤后确定的。 我们是否被授权将`0.25×0.25`英寸芯片视为异常? 当然可以。 实际上,我们假设每边的长度都建模为高斯分布(一个非常合理的选择),其中`μ = 0.2`和`σ = 0.001`;在经过三个标准偏差后,概率下降到几乎为零。 因此,例如:`P(edge > 0.23)≈ 0`,具有这种尺寸的芯片必须清楚地视为异常。 +本章的主题是在没有任何监督的情况下自动检测异常。 由于模型不是基于标记样本提供的反馈,因此我们只能依靠整个数据集的属性来找出相似之处并突出显示不同之处。 特别是,我们从一个非常简单但有效的假设开始:常见事件为*正常*,而不太可能发生的事件通常被视为**异常**。 当然,此定义意味着我们正在监视的过程运行正常,并且大多数结果都被认为是有效的。 例如:一家硅加工厂必须将晶圆切成相等的块。 我们知道它们每个都是`0.2×0.2`英寸(约`0.5×0.5`厘米),每侧的标准差为 0.001 英寸。 此措施是在 1,000,000 个处理步骤后确定的。 我们是否被授权将`0.25×0.25`英寸芯片视为异常? 当然可以。 实际上,我们假设每边的长度都建模为高斯分布(一个非常合理的选择),其中`μ = 0.2`和`σ = 0.001`;在经过三个标准差后,概率下降到几乎为零。 因此,例如:`P(edge > 0.23)≈ 0`,具有这种尺寸的芯片必须清楚地视为异常。 显然,这是一个非常简单的示例,不需要任何模型。 但是,在现实生活中,密度的结构可能非常复杂,几个高概率区域被低概率区域包围。 这就是为什么必须采用更通用的方法来对整个样本空间进行建模的原因。 diff --git a/new/handson-unsup-learn-py/07.md b/new/handson-unsup-learn-py/07.md index c87836e6..ce43f14a 100644 --- a/new/handson-unsup-learn-py/07.md +++ b/new/handson-unsup-learn-py/07.md @@ -319,7 +319,7 @@ print(np.sum(pca.explained_variance_ratio_)) ![](img/f1b5b271-2c9d-46d2-99c5-e00687a24f4c.png) -对于非常大的数据集,该过程仍然相当昂贵(但是可以预先计算并存储内核值,以避免浪费额外的时间),但是它比标准投影更有效。 此外,其具有允许在可能进行线性辨别的空间中提取主要成分的优点。 现在,让我们将 RBF 核 PCA 应用于上一个屏幕快照中显示的半月数据集。 `gamma` 参数等于`1 /σ^2`。 在这种特殊情况下,主要问题是存在双重重叠。 考虑到原始标准偏差约为 1.0(即`σ^2 = 1`),我们至少需要三个标准偏差才能适当区分他们; 因此,我们将设置`γ = 10`: +对于非常大的数据集,该过程仍然相当昂贵(但是可以预先计算并存储内核值,以避免浪费额外的时间),但是它比标准投影更有效。 此外,其具有允许在可能进行线性辨别的空间中提取主要成分的优点。 现在,让我们将 RBF 核 PCA 应用于上一个屏幕快照中显示的半月数据集。 `gamma` 参数等于`1 /σ^2`。 在这种特殊情况下,主要问题是存在双重重叠。 考虑到原始标准差约为 1.0(即`σ^2 = 1`),我们至少需要三个标准差才能适当区分他们; 因此,我们将设置`γ = 10`: ```py from sklearn.datasets import make_moons diff --git a/new/handson-unsup-learn-py/10.md b/new/handson-unsup-learn-py/10.md index ec552baf..f984696f 100644 --- a/new/handson-unsup-learn-py/10.md +++ b/new/handson-unsup-learn-py/10.md @@ -15,7 +15,7 @@ 2. 由于目标是找到趋势的原因,因此有必要执行诊断分析。 3. 没有; 从单个分布中提取`n`个独立样本的可能性作为单个概率的乘积(主要假设请参见问题 4)。 4. 主要假设是样本是**独立同分布**(**IID**)的。 -5. 性别可以编码为数字特征(例如,一键编码); 因此,我们需要考虑两种可能性。 如果在属性之间不存在性别,而其他特征与性别不相关,则聚类结果是完全合理的。 如果存在性别(作为通用聚类方法)是基于样本之间的相似性的,则 50/50 的结果表示性别不是歧视性特征。 换句话说,给定两个随机选择的样本,它们的相似性不受性别影响(或受到轻微影响),因为其他特征占主导。 例如,在这种特殊情况下,平均分数或年龄有较大的差异,因此它们的影响更大。 +5. 性别可以编码为数字特征(例如,单热编码); 因此,我们需要考虑两种可能性。 如果在属性之间不存在性别,而其他特征与性别不相关,则聚类结果是完全合理的。 如果存在性别(作为通用聚类方法)是基于样本之间的相似性的,则 50/50 的结果表示性别不是歧视性特征。 换句话说,给定两个随机选择的样本,它们的相似性不受性别影响(或受到轻微影响),因为其他特征占主导。 例如,在这种特殊情况下,平均分数或年龄有较大的差异,因此它们的影响更大。 6. 我们可以预期会有更紧凑的群体,其中每个主要特征的范围都较小。 例如,一个小组可以包含 13-15 岁的学生,并带有所有可能的分数,依此类推。 另外,我们可以观察基于单个特征的细分(例如年龄,平均分数等)。 最终结果取决于向量的数值结构,距离函数,当然还取决于算法。 7. 如果每个客户均由包含其兴趣摘要的特征向量表示(例如,基于他/她购买或看过的产品),我们可以找到集群分配,检查哪些元素可以表征集群(例如书籍,电影,衣服,特定品牌等),并使用这些信息来推荐潜在产品(即类似用户购买的产品)。 该概念基于在相同集群的成员之间共享信息的主要思想,这要归功于它们的相似性。 @@ -54,7 +54,7 @@ 4. 没有; k 型参量可以采用任何度量。 5. 没有; DBSCAN 对几何不敏感,并且可以管理任何种类的群集结构。 6. 我们已经表明,小批量 K 均值的性能稍差于 K 均值。 因此,答案是肯定的。 使用批量算法可以节省内存。 -7. 考虑到噪声的方差为`σ^2 = 0.005 → σ ≈ 0.07`,它比聚类标准偏差小约 14 倍,因此,我们不能期望这么多的新分配(80%)在稳定的群集配置中。 +7. 考虑到噪声的方差为`σ^2 = 0.005 → σ ≈ 0.07`,它比聚类标准差小约 14 倍,因此,我们不能期望这么多的新分配(80%)在稳定的群集配置中。 @@ -133,7 +133,7 @@ 1. 不,他们没有。 编码器和解码器都必须在功能上对称,但是它们的内部结构也可以不同。 2. 没有; 输入信息的一部分在转换过程中丢失,而其余部分则在代码输出`Y`和自编码器变量之间分配,该变量与基础模型一起对所有转换进行编码。 -3. 当`min(sum(z[i]))= 0`和`min(sum(z[i]))= 128`时,等于 36 的总和既可以表示稀疏(如果标准偏差较大),也可以表示具有较小值的均匀分布(当标准偏差接近零时)。 +3. 当`min(sum(z[i]))= 0`和`min(sum(z[i]))= 128`时,等于 36 的总和既可以表示稀疏(如果标准差较大),也可以表示具有较小值的均匀分布(当标准差接近零时)。 4. 当`sum(z[i]) = 36`时,`std(z[i]) = 0.03`意味着大多数值都围绕`0.28 * (0.25÷0.31)`,该代码可以视为密集代码。 5. 没有; 一个 Sanger 网络(以及 Rubner-Tavan 网络)需要输入样本`x[i] ∈X`。 6. 从最大特征值到最小特征值(即从第一个主成分到最后一个主成分)以降序提取成分。 因此,无需进一步分析来确定其重要性。 -- GitLab