<aside> <img src="/icons/condense_yellow.svg" alt="/icons/condense_yellow.svg" width="40px" /> Python | 算法 | 模型 | 底层数学 | 线性代数 | 主成分分析 | 降维 | 投影 | 优化 | 奇值分解 | 概率 | 统计 | 方程 | 数值 | 梯度 | 线搜索 | 最小二乘 | 约束 | 并行 | 多核 | C/C++ | 贝叶斯 | 概率规划 | 蒙特卡罗 | 马尔可夫 | 哈密顿蒙特卡罗 | 线性回归 | 逻辑回归 | 分层模型 | 混合
</aside>
🎯算法和模型底层数学及代码:🖊线性代数应用(主成分分析):降维、投影(用于求解线性系统)和二次形式(用于优化)| 🖊奇值分解 | 🖊线性代数 | 🖊求方程根 | 🖊数值优化及算法 | 🖊梯度方向和牛顿方向的线搜索 | 🖊最小二乘优化 | 🖊梯度下降优化 | 🖊约束优化 | 🖊并行编程 | 🖊多核并行 | 🖊使用C/C++代码 | 🖊贝叶斯和概率规划 | 🖊蒙特卡罗方法 | 🖊蒙特卡罗积分 | 🖊马尔可夫链 | 🖊马尔可夫链蒙特卡罗 | 🖊哈密顿蒙特卡罗 | 🖊线性回归 | 🖊逻辑回归 | 🖊分层模型 | 🖊混合模型 | 🖊概率分布。
📜Python产品价格弹性生命周期和客户群利润点概率推理数学模型 | 📜Python | MATLAB | R 心理认知数学图形模型推断 | 📜Python燃气轮机汽车钢棒整流电路控制图统计模型过程潜力分析 | 📜Python高层解雇和客户活跃度量化不确定性模型 | 📜Python | R 雌雄配对和鱼仔变异马尔可夫链 | 📜Julia和Python蛛网图轨道图庞加莱截面曲面确定性非线性系统 | 📜C++和Python通信引文道路社评电商大规模行为图结构数据模型 | 📜Python和C++数学物理计算分形热力学静电学和波动方程 | 📜C++和Python计算金融数学方程算法模型 | 📜Python和R概率统计算法建模评估气象和运动 | 📜Python流体数据统计模型和浅水渗流平流模型模拟 | 📜社会经济怀特的异方差一致估计量统计推理。
机器学习算法的成功在很大程度上取决于输入模型的数据的质量。现实世界的数据通常很脏,包含异常值、缺失值、错误的数据类型、不相关的特征或非标准化数据。任何这些因素的存在都会阻碍机器学习模型的正确学习。因此,将原始数据转换为有用的格式是机器学习过程中必不可少的阶段。
离群值是数据集中表现出某种异常并与正常数据有显著偏差的对象。在某些情况下,离群值可以提供有用的信息(例如在欺诈检测中)。然而,在其他情况下,它们不会提供任何有用的信息,并且会严重影响学习算法的性能。
在此,我们将演示使用箱线图、散点图和残差等多种技术从数据集中识别异常值。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('seaborn')
# read csv file
df_weight = pd.read_csv('weight.csv')
# visualize the first 5 rows
df_weight.head()
$$ \begin{array}{rrr} & \text { height } & \text { weight } \\ \hline 0 & 161.000724 & 55.530340 \\ 1 & 171.504245 & 71.872692 \\ 2 & 173.201739 & 69.897780 \\ 3 & 166.563658 & 62.395484 \\ 4 & 176.464080 & 80.540956 \end{array} $$
您可能会注意到,本文使用的数据集非常简单(100 个观察值和 2 个特征)。在现实世界的问题中,您将处理更复杂的数据集。然而,识别异常值的程序保持不变
💦识别离群值
有许多视觉和统计方法来检测异常值。我们将详细解释 5 种用于识别数据集中异常值的工具:(1) 直方图,(2) 箱线图,(3) 散点图,(4) 残差值和 (5) Cook 距离。
直方图是可视化数值变量分布的常见图。在直方图中,数据被分成也称为区间的区间。每个条形的高度代表每个箱内数据点的频率。两个变量的直方图如下所示。条形图呈钟形曲线,表明两个特征(体重和身高)呈正态分布。此外,还描绘了高斯核密度估计函数。该函数是概率密度函数的近似值,表示连续变量落入特定值范围内的概率。
ax = sns.distplot(df_weight.height, hist=True, hist_kws={"edgecolor": 'w', "linewidth": 3}, kde_kws={"linewidth": 3})
ax.annotate('Possible outlier', xy=(188,0.0030), xytext=(189,0.0070), fontsize=12,
arrowprops=dict(arrowstyle='->', ec='grey', lw=2), bbox = dict(boxstyle="round", fc="0.8"))
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlabel('height', fontsize=14)
plt.ylabel('frequency', fontsize=14)
plt.title('Distribution of height', fontsize=20);
(图略,请自行执行上述代码)
ax = sns.distplot(df_weight.weight, hist=True, hist_kws={"edgecolor": 'w', "linewidth": 3}, kde_kws={"linewidth": 3})
ax.annotate('Possible outlier', xy=(102, 0.0020), xytext=(103, 0.0050), fontsize=12,
arrowprops=dict(arrowstyle='->', ec='grey', lw=2), bbox=dict(boxstyle="round", fc="0.8"))
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.xlabel('weight', fontsize=14)
plt.ylabel('frequency', fontsize=14)
plt.title('Distribution of weights', fontsize=20);
(图略,请自行执行上述代码)