testGetKernelDensityEstimation.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:policosm 作者: ComplexCity 项目源码 文件源码
def getKernelDensityEstimation(nodes, metric='euclidean', metric_params=None, bbox=None, bandwidth=0.002, optimizeBandwidth=False, bwmin=0.0001, bwmax=0.01, crossValidation=20):
    lon = []
    lat = []
    for nlon,nlat in nodes:
        lon.append(nlon)
        lat.append(nlat)
    lon = np.array(lon)
    lat = np.array(lat)

    if bbox is None:
        xmin, xmax = min(lon), max(lon)
        ymin, ymax = min(lat), max(lat)
        bbox = [xmin, xmax, ymin, ymax]
    else:
        xmin, ymin, xmax, ymax = bbox[0],bbox[1],bbox[2],bbox[3]
        bbox = [xmin, xmax, ymin, ymax]

    x, y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
    positions = np.vstack([x.ravel(), y.ravel()])
    values = np.vstack([lon, lat])

    if optimizeBandwidth:
        grid = GridSearchCV(KernelDensity(kernel='gaussian', metric=metric, metric_params=metric_params, algorithm='ball_tree'), {'bandwidth': np.linspace(bwmin, bwmax, 30)}, cv=crossValidation) # 20-fold cross-validation
        grid.fit(zip(*values))

        bandwidth = grid.best_params_['bandwidth']
        kernel = grid.best_estimator_
    else:
        kernel = KernelDensity(kernel='gaussian', metric=metric, metric_params=metric_params, algorithm='ball_tree', bandwidth=bandwidth)
        kernel.fit(zip(*values))

    return kernel, positions, x, y, bbox, bandwidth
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号