标签: kernel-density

双向密度图与单向密度图结合,r中选定区域

# data 
set.seed (123)
xvar <- c(rnorm (1000, 50, 30), rnorm (1000, 40, 10), rnorm (1000, 70, 10))
yvar <-   xvar + rnorm (length (xvar), 0, 20)
myd <- data.frame (xvar, yvar)


# density plot for xvar
            upperp = 80   # upper cutoff
            lowerp = 30   # lower cutoff
            x <- myd$xvar
            plot(density(x))
            dens <- density(x)
            x11 <- min(which(dens$x <= lowerp))
            x12 <- max(which(dens$x <= lowerp))
            x21 <- min(which(dens$x > upperp))
            x22 <- max(which(dens$x > upperp))
            with(dens, polygon(x = c(x[c(x11, …
Run Code Online (Sandbox Code Playgroud)

r graph ggplot2 kernel-density

28
推荐指数
3
解决办法
5719
查看次数

如何使用matplotlib在python中绘制3D密度图

我有一个大的(x,y,z)蛋白质位置数据​​集,并希望绘制高占有率的区域作为热图.理想情况下,输出应该类似于下面的体积可视化,但我不确定如何使用matplotlib实现这一点.

http://i.stack.imgur.com/nsNEL.jpg

我最初的想法是将我的位置显示为3D散点图,并通过KDE为其密度着色.我用测试数据将其编码如下:

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D 

mu, sigma = 0, 0.1 
x = np.random.normal(mu, sigma, 1000)
y = np.random.normal(mu, sigma, 1000)
z = np.random.normal(mu, sigma, 1000)

xyz = np.vstack([x,y,z])
density = stats.gaussian_kde(xyz)(xyz) 

idx = density.argsort()
x, y, z, density = x[idx], y[idx], z[idx], density[idx]

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c=density)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这很好用!但是,我的真实数据包含数千个数据点,并且计算kde和散点图变得非常慢.

我的真实数据的一小部分:

http://i.stack.imgur.com/BFT5V.png

我的研究表明,更好的选择是评估网格上的高斯kde.我只是不确定如何在3D中:

import numpy as np
from scipy import stats
import …
Run Code Online (Sandbox Code Playgroud)

python matplotlib scipy kernel-density mayavi

24
推荐指数
1
解决办法
2万
查看次数

如何在scikit学习中使用核密度估计作为一维聚类方法?

我需要将一个简单的单变量数据集聚集到预设数量的集群中.从技术上讲,它更接近于分类或排序数据,因为它只有1D,但我的老板称它为聚类,所以我将坚持使用该名称.我所使用的系统使用的当前方法是K-means,但这看起来有点过分.

有没有更好的方法来执行此任务?

其他一些帖子的答案提到了KDE(核密度估计),但这是一种密度估算方法,它会如何工作?

我看到KDE如何返回密度,但是如何告诉它将数据拆分成箱?

我如何拥有与数据无关的固定数量的箱(这是我的要求之一)?

更具体地说,如何使用scikit学习来解决这个问题?

我的输入文件如下:

 str ID     sls
 1           10
 2           11 
 3            9
 4           23
 5           21
 6           11  
 7           45
 8           20
 9           11
 10          12
Run Code Online (Sandbox Code Playgroud)

我想将sls编号分组成簇或箱,这样:

Cluster 1: [10 11 9 11 11 12] 
Cluster 2: [23 21 20] 
Cluster 3: [45] 
Run Code Online (Sandbox Code Playgroud)

我的输出文件将如下所示:

 str ID     sls    Cluster ID  Cluster centroid
    1        10       1               10.66
    2        11       1               10.66
    3         9       1               10.66 
    4        23       2               21.33   
    5        21       2               21.33
    6        11       1               10.66
    7 …
Run Code Online (Sandbox Code Playgroud)

cluster-analysis machine-learning data-mining kernel-density scikit-learn

23
推荐指数
2
解决办法
8054
查看次数

ValueError:不再支持多维索引(例如“obj[:, None]”)。在索引之前转换为 numpy 数组

我正在尝试使用seaborn 绘制直方图。obj[:, None]当我尝试设置 kde=True 时,返回此错误: ValueError:不再支持多维索引(例如)。在建立索引之前转换为 numpy 数组。

sns.histplot(data=df, x='age', kde=True);
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

visualization histogram kernel-density seaborn

19
推荐指数
2
解决办法
2万
查看次数

将密度线添加到直方图和累积直方图

我想将密度曲线添加到直方图和累积直方图,如下所示:

在此输入图像描述

到目前为止,我可以去:

hist.cum <- function(x, plot=TRUE, ...){
  h <- hist(x, plot=FALSE, ...)
  h$counts <- cumsum(h$counts)
  h$density <- cumsum(h$density)
  h$itensities <- cumsum(h$itensities)
  if(plot)
    plot(h)
  h
}
 x <- rnorm(100, 15, 5)
hist.cum(x)
 hist(x, add=TRUE, col="lightseagreen")

 #
lines (density(x), add = TRUE, col="red")
Run Code Online (Sandbox Code Playgroud)

plot r graph base kernel-density

16
推荐指数
1
解决办法
2万
查看次数

如何在特定点获得核密度估计值?

我正在尝试处理R中的过度绘图的方法,我想尝试的一件事是绘制单个点,但用它们的邻域密度来着色.为了做到这一点,我需要计算每个点的2D核密度估计.但是,似乎标准的核密度估计函数都是基于网格的.是否有在我指定的特定点计算2D内核密度估计值的函数?我想象一个函数将x和y向量作为参数并返回密度估计的向量.

r kernel-density

13
推荐指数
2
解决办法
4767
查看次数

Python高斯核密度计算新值的得分

这是我的代码:

import numpy as np
from scipy.stats.kde import gaussian_kde
from scipy.stats import norm
from numpy import linspace,hstack
from pylab import plot,show,hist

import re
import json

attribute_file="path"

attribute_values = [line.rstrip('\n') for line in open(attribute_file)]

obs=[]

#Assume the list obs as loaded

obs=np.asarray(osservazioni)
obs=np.sort(obs,kind='mergesort')
x_min=osservazioni[0]
x_max=osservazioni[len(obs)-1]



# obtaining the pdf (my_pdf is a function!)
my_pdf = gaussian_kde(obs)

# plotting the result
x = linspace(0,x_max,1000)

plot(x,my_pdf(x),'r') # distribution function

hist(obs,normed=1,alpha=.3) # histogram
show()

new_values = np.asarray([-1, 0, 2, 3, 4, 5, 768])[:, np.newaxis] …
Run Code Online (Sandbox Code Playgroud)

python kde gaussian kernel-density

13
推荐指数
1
解决办法
1045
查看次数

"python"中的加权高斯核密度估计

目前不可能使用scipy.stats.gaussian_kde基于加权样本来估计随机变量的密度.有哪些方法可以根据加权样本估算连续随机变量的密度?

python statistics scipy kernel-density

12
推荐指数
1
解决办法
7226
查看次数

如何在Python中提取密度函数概率(pandas kde)

pandas.plot.kde()函数可以方便地绘制连续随机变量的估计密度函数。它将数据x作为输入,并显示分箱输入的概率p(x)作为其输出。

如何提取它计算的概率值?我想要一个包含内部计算的概率值的数组或 pandas 系列,而不是仅仅绘制带宽样本的概率。

如果这不能用 pandas kde 完成,请告诉我 scipy 或其他中的任何等效项

python kernel-density pandas

12
推荐指数
1
解决办法
1万
查看次数

Python中的多变量核密度估计

我正在尝试使用SciPy的gaussian_kde函数来估计多变量数据的密度.在我的下面的代码中,我采样了一个3D多元法线并且符合内核密度,但我不确定如何评估我的拟合.

import numpy as np
from scipy import stats

mu = np.array([1, 10, 20])
sigma = np.matrix([[4, 10, 0], [10, 25, 0], [0, 0, 100]])
data = np.random.multivariate_normal(mu, sigma, 1000)
values = data.T
kernel = stats.gaussian_kde(values)
Run Code Online (Sandbox Code Playgroud)

我看到了这个,但不知道如何将它扩展到3D.

还不确定我怎么开始评估拟合密度?我如何想象这个?

python numpy gaussian scipy kernel-density

11
推荐指数
1
解决办法
1万
查看次数