我有一个包含很少列的pandas数据帧.
现在我知道某些行是基于某个列值的异常值.
例如列 - 'Vol'的所有值都大约为12xx,一个值为4000(异常值).
现在我想排除那些有'Vol'列的行.因此,基本上我需要在数据框上放置一个过滤器,以便我们选择所有行,其中某列的值在与平均值相差3个标准差的范围内.
实现这一目标的优雅方式是什么?
我有一些美丽与年龄的多元数据.年龄范围为20-40,间隔为2(20,22,24 ...... 40),并且对于每个数据记录,它们的年龄和美容等级为1-5.当我对这些数据进行箱形图(横跨X轴的年龄,Y轴上的美观评级)时,在每个框的胡须外面都会绘制一些异常值.
我想从数据框本身中删除这些异常值,但我不确定R如何计算其箱形图的异常值.下面是我的数据可能是什么样子的示例.
我正在绘制各种测试的一些数据.有时在测试中我碰巧有一个异常值(比如说0.1),而所有其他值都小三个数量级.
使用matplotlib,我会对范围进行绘图 [0, max_data_value]
我怎样才能放大我的数据而不显示异常值,这会弄乱我的情节中的x轴?
我应该简单地采用95%并且[0, 95_percentile]
在x轴上具有范围吗?
我有一个欺诈检测算法,我想检查它是否适用于真实世界的数据集.
我的算法表明声明通常与否.
有没有可用的数据集?
可能重复:
更改箱线图中的异常值规则
我需要使用box-plot可视化我的结果.
x<-rnorm(10000)
boxplot(x,horizontal=TRUE,axes=FALSE)
Run Code Online (Sandbox Code Playgroud)
如何在可视化过程中过滤异常值?
(1)这样我就可以在屏幕上显示完整的图像而不会出现丑陋的异常值.
http://postimage.org/image/szzbez0h1/a610666d/
(2)有没有办法显示超出一定范围的异常值? http://postimage.org/image/np28oee0b/8251d102/
问候
我有很多已知异常值的数据集(大订单)
data <- matrix(c("08Q1","08Q2","08Q3","08Q4","09Q1","09Q2","09Q3","09Q4","10Q1","10Q2","10Q3","10Q4","11Q1","11Q2","11Q3","11Q4","12Q1","12Q2","12Q3","12Q4","13Q1","13Q2","13Q3","13Q4","14Q1","14Q2","14Q3","14Q4","15Q1", 155782698, 159463653.4, 172741125.6, 204547180, 126049319.8, 138648461.5, 135678842.1, 242568446.1, 177019289.3, 200397120.6, 182516217.1, 306143365.6, 222890269.2, 239062450.2, 229124263.2, 370575384.7, 257757410.5, 256125841.6, 231879306.6, 419580274, 268211059, 276378232.1, 261739468.7, 429127062.8, 254776725.6, 329429882.8, 264012891.6, 496745973.9, 284484362.55),ncol=2,byrow=FALSE)
Run Code Online (Sandbox Code Playgroud)
这个特定系列的前11个异常值是:
outliers <- matrix(c("14Q4","14Q2","12Q1","13Q1","14Q2","11Q1","11Q4","14Q2","13Q4","14Q4","13Q1",20193525.68, 18319234.7, 12896323.62, 12718744.01, 12353002.09, 11936190.13, 11356476.28, 11351192.31, 10101527.85, 9723641.25, 9643214.018),ncol=2,byrow=FALSE)
Run Code Online (Sandbox Code Playgroud)
有哪些方法可以预测考虑这些异常值的时间序列?
我已经尝试更换下一个最大的异常值(因此,运行数据集10次,用下一个最大值替换异常值,直到第10个数据集替换掉所有异常值).我也试过简单地删除异常值(因此每次再次运行数据集10次删除异常值,直到在第10个数据集中删除所有10个异常值)
我只想指出,删除这些大订单并不会完全删除数据点,因为该季度还会发生其他交易
我的代码通过多个预测模型测试数据(ARIMA加权样本,ARIMA加权样本,ARIMA加权,ARIMA,加性Holt-winters加权和Multiplcative Holt-winters加权)所以它需要是可以的适应这些多种模式.
以下是我使用的几个数据集,但我没有这些系列的异常值
data <- matrix(c("08Q1","08Q2","08Q3","08Q4","09Q1","09Q2","09Q3","09Q4","10Q1","10Q2","10Q3","10Q4","11Q1","11Q2","11Q3","11Q4","12Q1","12Q2","12Q3","12Q4","13Q1","13Q2","13Q3","13Q4","14Q1","14Q2","14Q3", 26393.99306, 13820.5037, 23115.82432, 25894.41036, 14926.12574, 15855.8857, 21565.19002, 49373.89675, 27629.10141, 43248.9778, 34231.73851, 83379.26027, 54883.33752, 62863.47728, 47215.92508, 107819.9903, 53239.10602, 71853.5, 59912.7624, 168416.2995, 64565.6211, 94698.38748, 80229.9716, 169205.0023, …
Run Code Online (Sandbox Code Playgroud) 我试图检测我的数据集的异常值,我找到了sklearn的隔离森林.我无法理解如何使用它.我将训练数据放入其中,它给了我一个带-1和1值的向量.
任何人都可以向我解释它是如何工作的并提供一个例子吗?
我怎么知道异常值是"真正的"异常值?
调整参数?
这是我的代码:
clf = IsolationForest(max_samples=10000, random_state=10)
clf.fit(x_train)
y_pred_train = clf.predict(x_train)
y_pred_test = clf.predict(x_test)
[1 1 1 ..., -1 1 1]
Run Code Online (Sandbox Code Playgroud) 作为我的数据分析工作流程的一部分,我想测试异常值,然后使用和不使用这些异常值进行进一步的计算.
我找到了异常包,它有各种测试,但我不确定如何最好地将它们用于我的工作流程.
我正在开发一个模拟程序.有成群的动物(角马),在那群中,我需要找到一只远离牛群的动物.
在下图中,绿点远离牛群.我希望能够快速找到这些要点.
当然,有一个简单的算法来解决这个问题.计算每个点附近的点数,然后如果该邻域是空的(其中0点),那么我们知道这一点远离牛群.
问题是这个算法根本没有效率.我有一百万点,并且在每百万点上应用这个算法非常慢.
有什么东西会更快吗?也许用树木?
编辑@amit:我们想避免这种情况.A组在左上角绿点会被选择,即使他们应该不是,因为它不是一个单一的动物是从牛群离开,这是一组动物.我们只是寻找远离牛群的一只动物(不是一群人).
我正在寻找有效的方法来删除数据中的异常值。我尝试了在 StackOverflow 和其他地方找到的几种解决方案,但没有一个对我有用(应该在样本数据中检测并删除 1993 年 6 月、1994 年 8 月和 1995 年 3 月的 4 个高值 21637、19590、21659 和 200000发布在这篇文章的末尾)。任何建议将不胜感激!
这是我到目前为止测试过的:
数据概览
3 个异常值仍然存在,并且时间序列末尾的许多合法高值已被删除。
y <- dat$Value
y_filter <- y[!y %in% boxplot.stats(y)$out]
plot(y_filter)
Run Code Online (Sandbox Code Playgroud)
与第一种方法类似的问题
FindOutliers <- function(data) {
data <- data[!is.na(data)]
lowerq = quantile(data)[2]
upperq = quantile(data)[4]
iqr = upperq - lowerq #Or use IQR(data)
# we identify extreme outliers
extreme.threshold.upper = (iqr * 1.5) + upperq
extreme.threshold.lower = lowerq - (iqr * 1.5)
result <- which(data …
Run Code Online (Sandbox Code Playgroud) outliers ×10
r ×5
python ×3
statistics ×2
time-series ×2
algorithm ×1
boxplot ×1
data-science ×1
dataframe ×1
dataset ×1
filtering ×1
forecasting ×1
geometry ×1
matplotlib ×1
pandas ×1
percentile ×1
plot ×1
scikit-learn ×1