首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pysal中基于距离的核权重

pysal中基于距离的核权重
EN

Stack Overflow用户
提问于 2020-01-03 19:49:49
回答 1查看 159关注 0票数 0

我想在pysal中创建一个基于距离的空间权重矩阵,稍后将其输入到pysal的"spreg“子模块的空间回归方法中。以下是一个可重现的小代码示例:

代码语言:javascript
复制
import numpy as np 
import pysal
position=np.random.standard_normal((1000,2))
y_=np.random.standard_normal((1000,1))
X_=np.random.standard_normal((1000,10))   
kd = pysal.lib.cg.KDTree(position)
spweights = pysal.lib.weights.Kernel(kd, bandwidth=None, fixed=False, k=4,
                     function='triangular', eps=1.000000, ids=None,
                     diagonal=False, distance_metric='euclidean', radius=None)
models_GM_Error_Het=pysal.model.spreg.GM_Error_Het(y=y_,x=X_,w=spweights,max_iter=2,epsilon=1e-8)

python返回的错误是“异常:对角线上的所有条目必须等于0”。另一方面,仅使用仅具有二进制权重的k最近邻权重,

代码语言:javascript
复制
import numpy as np 
import pysal
position=np.random.standard_normal((1000,2))
y_=np.random.standard_normal((1000,1))
X_=np.random.standard_normal((1000,10))   
kd = pysal.lib.cg.KDTree(position)
spweights2 = pysal.lib.weights.KNN(kd, 4)
models_GM_Error_Het=pysal.model.spreg.GM_Error_Het(y=y_,x=X_,w=spweights2,max_iter=2,epsilon=1e-8)

效果很好。如何修改上面的代码?

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 19:20:49

在倒数第二行插入以下内容有帮助:

代码语言:javascript
复制
for k in range(position.shape[0]):
    spweights2.weights[k][0]=0.0
spweights2.transform = 'r'

对角线元素必须为零。此外,权重必须是行标准化的。程序现在运行得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59578118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档