bam*_*222 1 python statistics machine-learning kernel-density
假设我在地图上有 X 和 Y 坐标以及“热区”的非参数分布(例如,位于 X 和 Y 坐标处的地理地图上的污染程度)。我的输入数据是热图。
我想训练一个机器学习模型来学习“热区”是什么样子,但我没有很多标记的例子。所有“热区”看起来都非常相似,但可能位于我的标准化 XY 坐标图的不同部分。
我可以计算一个多元 KDE 并相应地绘制密度图。要生成合成标记数据,我是否可以“反转”KDE 并随机生成新的图像文件,其观察值在我的 KDE 的“密集”范围内?
有没有办法在python中做到这一点?
至少有 3 种高质量的内核密度估计实现可用于 Python:
我的个人排名是statsmodels > scikit-learn > scipy(最好到最差),但这取决于您的用例。
一些随机评论:
kde.sample(N))有更多的差异,其中的一些在这个很好的进行分析的博客文章由杰克VanderPlas。下表是这篇文章的摘录:
来自:https ://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/(作者:Jake VanderPlas)
from sklearn.datasets import make_blobs
from sklearn.neighbors import KernelDensity
from sklearn.model_selection import GridSearchCV
import matplotlib.pyplot as plt
import numpy as np
# Create test-data
data_x, data_y = make_blobs(n_samples=100, n_features=2, centers=7, cluster_std=0.5, random_state=0)
# Fit KDE (cross-validation used!)
params = {'bandwidth': np.logspace(-1, 2, 30)}
grid = GridSearchCV(KernelDensity(), params)
grid.fit(data_x)
kde = grid.best_estimator_
bandwidth = grid.best_params_['bandwidth']
# Resample
N_POINTS_RESAMPLE = 1000
resampled = kde.sample(N_POINTS_RESAMPLE)
# Plot original data vs. resampled
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(100):
axs[0,0].scatter(*data_x[i])
axs[0,1].hexbin(data_x[:, 0], data_x[:, 1], gridsize=20)
for i in range(N_POINTS_RESAMPLE):
axs[1,0].scatter(*resampled[i])
axs[1,1].hexbin(resampled[:, 0], resampled[:, 1], gridsize=20)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |