关键词Python | 算法 | 模型 | 底层数学 | 线性代数 | 主成分分析 | 降维 | 投影 | 优化 | 奇值分解 | 概率 | 统计 | 方程 | 数值 | 梯度 | 线搜索 | 最小二乘 | 约束 | 并行 | 多核 | C/C++ | 贝叶斯 | 概率规划 | 蒙特卡罗 | 马尔可夫 | 哈密顿蒙特卡罗 | 线性回归 | 逻辑回归 | 分层模型 | 混合
🏈 指点迷津 | Brief 🎯要点
🎯算法和模型底层数学及代码:🖊线性代数应用(主成分分析):降维、投影(用于求解线性系统)和二次形式(用于优化)| 🖊奇值分解 | 🖊线性代数 | 🖊求方程根 | 🖊数值优化及算法 | 🖊梯度方向和牛顿方向的线搜索 | 🖊最小二乘优化 | 🖊梯度下降优化 | 🖊约束优化 | 🖊并行编程 | 🖊多核并行 | 🖊使用C/C++代码 | 🖊贝叶斯和概率规划 | 🖊蒙特卡罗方法 | 🖊蒙特卡罗积分 | 🖊马尔可夫链 | 🖊马尔可夫链蒙特卡罗 | 🖊哈密顿蒙特卡罗 | 🖊线性回归 | 🖊逻辑回归 | 🖊分层模型 | 🖊混合模型 | 🖊概率分布。
📜概率统计算法模型和并行计算-用例
📜Python产品价格弹性生命周期和客户群利润点概率推理数学模型 | 📜Python | MATLAB | R 心理认知数学图形模型推断 | 📜Python燃气轮机汽车钢棒整流电路控制图统计模型过程潜力分析 | 📜Python高层解雇和客户活跃度量化不确定性模型 | 📜Python | R 雌雄配对和鱼仔变异马尔可夫链 | 📜Julia和Python蛛网图轨道图庞加莱截面曲面确定性非线性系统 | 📜C++和Python通信引文道路社评电商大规模行为图结构数据模型 | 📜Python和C++数学物理计算分形热力学静电学和波动方程 | 📜C++和Python计算金融数学方程算法模型 | 📜Python和R概率统计算法建模评估气象和运动 | 📜Python流体数据统计模型和浅水渗流平流模型模拟 | 📜社会经济怀特的异方差一致估计量统计推理。
🍇Python统计可视化离群值
机器学习算法的成功在很大程度上取决于输入模型的数据的质量。现实世界的数据通常很脏,包含异常值、缺失值、错误的数据类型、不相关的特征或非标准化数据。任何这些因素的存在都会阻碍机器学习模型的正确学习。因此,将原始数据转换为有用的格式是机器学习过程中必不可少的阶段。
离群值是数据集中表现出某种异常并与正常数据有显著偏差的对象。在某些情况下,离群值可以提供有用的信息(例如在欺诈检测中)。然而,在其他情况下,它们不会提供任何有用的信息,并且会严重影响学习算法的性能。
在此,我们将演示使用箱线图、散点图和残差等多种技术从数据集中识别异常值。
Copy 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 ()
height weight 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 \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} 0 1 2 3 4 height 161.000724 171.504245 173.201739 166.563658 176.464080 weight 55.530340 71.872692 69.897780 62.395484 80.540956 您可能会注意到,本文使用的数据集非常简单(100 个观察值和 2 个特征)。在现实世界的问题中,您将处理更复杂的数据集。然而,识别异常值的程序保持不变
💦识别离群值
有许多视觉和统计方法来检测异常值。我们将详细解释 5 种用于识别数据集中异常值的工具:(1) 直方图,(2) 箱线图,(3) 散点图,(4) 残差值和 (5) Cook 距离。
直方图 是可视化数值变量分布的常见图。在直方图中,数据被分成也称为区间的区间。每个条形的高度代表每个箱内数据点的频率。两个变量的直方图如下所示。条形图呈钟形曲线,表明两个特征(体重和身高)呈正态分布。此外,还描绘了高斯核密度估计函数。该函数是概率密度函数的近似值,表示连续变量落入特定值范围内的概率。
Copy 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 ) ;
(图略,请自行执行上述代码)
Copy 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 ) ;
(图略,请自行执行上述代码)
如上所示,两个变量似乎都存在异常值(孤立条)。重要的是要记住,直方图不能像箱线图那样从统计上识别异常值。相反,使用直方图识别异常值完全是视觉上的,取决于我们的个人观点。
箱线图 是探索性数据分析的绝佳工具,可以轻松地在分布之间进行比较。它显示了数据集的五数摘要,其中包括:
最小值:排除异常值后的最小值(根据IQR邻近规则计算)
最大值:排除异常值后的最大值(根据IQR邻近规则计算)
方框表示第一四分位数和第三四分位数之间的数据,也称为四分位距 (IQR = Q3-Q1)。它包含 50% 的数据,并被中位数分成两部分。须根据 IQR 接近规则表示。
上边界 = 第三个四分位数 +(1.5 *QR )
下边界 = 第一个四分位数 -(1.5* IQR )
如果某个值超出此范围,则该值被视为离群值,并以带点的箱线图表示。
两个变量的箱线图如下所示。我们在身高 = 190 和体重 = 105 处观察到异常值。
Copy ax = sns . boxplot (df_weight.height)
ax . annotate ( 'Outlier' , xy = ( 190 , 0 ), xytext = ( 186 , - 0.05 ), fontsize = 14 ,
arrowprops = dict (arrowstyle = '->' , ec = 'grey' , lw = 2 ), bbox = dict (boxstyle = "round" , fc = "0.8" ))
plt . xticks (fontsize = 14 )
plt . xlabel ( 'height' , fontsize = 14 )
plt . title ( 'Distribution of height' , fontsize = 20 )
Copy ax = sns . boxplot (df_weight.weight)
ax . annotate ( 'Outlier' , xy = ( 105 , 0 ), xytext = ( 98 , - 0.05 ), fontsize = 14 ,
arrowprops = dict (arrowstyle = '->' , ec = 'grey' , lw = 2 ), bbox = dict (boxstyle = "round" , fc = "0.8" ))
plt . xticks (fontsize = 14 )
plt . xlabel ( 'weight' , fontsize = 14 )
plt . title ( 'Distribution of weight' , fontsize = 20 )
与直方图不同,箱线图根据 IQR 邻近规则统计识别异常值,这意味着异常值的识别不仅仅依赖于我们的个人观点。
Last updated 5 months ago