pysal.lib.weights.Kernel

class pysal.lib.weights.Kernel(data, bandwidth=None, fixed=True, k=2, function='triangular', eps=1.0000001, ids=None, diagonal=False, distance_metric='euclidean', radius=None, **kwargs)[源代码]

基于核函数的空间权重。

参数:
data : 数组

(n,k)或kdtree,其中kdtree.data是数组(n,k)n用于测量n个对象之间距离的k特征观测值

bandwidth : 浮动

或类似阵列(可选)的带宽 \(h_i\) 对于内核。

fixed : 二元的

如果是真的话 \(h_i=h \forall i\) . 如果为假,那么带宽在观测中是自适应的。

k : 利息

用于确定带宽的最近邻居数。对于固定带宽, \(h_i=max(dknn) \forall i\) 在哪里? \(dknn\) 是k-最近邻距离的向量(每次观测到k-最近邻的距离)。对于自适应带宽, \(h_i=dknn_i\)

diagonal : 布尔

如果为真,则设置对角线权重=1.0;如果为假(默认),则根据内核函数将对角线权重设置为值。

功能 : '三角形'、'均匀'、'二次'、'四次'、'高斯'

内核函数定义如下

\[Z_i,J=D_i,J/H_i\]

三角形

\[K(z) = (1 - |z|) \ if |z| \le 1\]

制服

\[K(z) = 1/2 \ if |z| \le 1\]

二次

\[K(z) = (3/4)(1-z^2) \ if |z| \le 1\]

四次的

\[K(z) = (15/16)(1-z^2)^2 \ if |z| \le 1\]

高斯

\[k(z)=(2pi)^(-1/2)exp(-z^2/2)\]
eps : 浮动

调整以确保KNN距离范围在KNN观测值上关闭。

实例

>>> points=[(10, 10), (20, 10), (40, 10), (15, 20), (30, 20), (30, 30)]
>>> kw=Kernel(points)
>>> kw.weights[0]
[1.0, 0.500000049999995, 0.4409830615267465]
>>> kw.neighbors[0]
[0, 1, 3]
>>> kw.bandwidth
array([[20.000002],
       [20.000002],
       [20.000002],
       [20.000002],
       [20.000002],
       [20.000002]])
>>> kw15=Kernel(points,bandwidth=15.0)
>>> kw15[0]
{0: 1.0, 1: 0.33333333333333337, 3: 0.2546440075000701}
>>> kw15.neighbors[0]
[0, 1, 3]
>>> kw15.bandwidth
array([[15.],
       [15.],
       [15.],
       [15.],
       [15.],
       [15.]])

用户指定的自适应带宽

>>> bw=[25.0,15.0,25.0,16.0,14.5,25.0]
>>> kwa=Kernel(points,bandwidth=bw)
>>> kwa.weights[0]
[1.0, 0.6, 0.552786404500042, 0.10557280900008403]
>>> kwa.neighbors[0]
[0, 1, 3, 4]
>>> kwa.bandwidth
array([[25. ],
       [15. ],
       [25. ],
       [16. ],
       [14.5],
       [25. ]])

内生自适应带宽

>>> kwea=Kernel(points,fixed=False)
>>> kwea.weights[0]
[1.0, 0.10557289844279438, 9.99999900663795e-08]
>>> kwea.neighbors[0]
[0, 1, 3]
>>> kwea.bandwidth
array([[11.18034101],
       [11.18034101],
       [20.000002  ],
       [11.18034101],
       [14.14213704],
       [18.02775818]])

高斯核内生自适应带宽

>>> kweag=Kernel(points,fixed=False,function='gaussian')
>>> kweag.weights[0]
[0.3989422804014327, 0.2674190291577696, 0.2419707487162134]
>>> kweag.bandwidth
array([[11.18034101],
       [11.18034101],
       [20.000002  ],
       [11.18034101],
       [14.14213704],
       [18.02775818]])

对角线到1.0

>>> kq = Kernel(points,function='gaussian')
>>> kq.weights
{0: [0.3989422804014327, 0.35206533556593145, 0.3412334260702758], 1: [0.35206533556593145, 0.3989422804014327, 0.2419707487162134, 0.3412334260702758, 0.31069657591175387], 2: [0.2419707487162134, 0.3989422804014327, 0.31069657591175387], 3: [0.3412334260702758, 0.3412334260702758, 0.3989422804014327, 0.3011374490937829, 0.26575287272131043], 4: [0.31069657591175387, 0.31069657591175387, 0.3011374490937829, 0.3989422804014327, 0.35206533556593145], 5: [0.26575287272131043, 0.35206533556593145, 0.3989422804014327]}
>>> kqd = Kernel(points, function='gaussian', diagonal=True)
>>> kqd.weights
{0: [1.0, 0.35206533556593145, 0.3412334260702758], 1: [0.35206533556593145, 1.0, 0.2419707487162134, 0.3412334260702758, 0.31069657591175387], 2: [0.2419707487162134, 1.0, 0.31069657591175387], 3: [0.3412334260702758, 0.3412334260702758, 1.0, 0.3011374490937829, 0.26575287272131043], 4: [0.31069657591175387, 0.31069657591175387, 0.3011374490937829, 1.0, 0.35206533556593145], 5: [0.26575287272131043, 0.35206533556593145, 1.0]}
属性:
砝码 : 双关语

由ID键入的字典,每个邻居都有一个权重列表

neighbors : 双关语

通过观察ID键入的邻居列表

bandwidth : 数组

带宽阵列

方法

asymmetry \([固有]) 不对称检查。
from_adjlist \(adjlist [,focal u col,…]) 返回权重对象的相邻列表表示形式。
from_array \(数组,**kwargs) 从数组构造一个内核权重。
from_dataframe \(df [,geom u col,id ]) 从数据帧中进行内核权重。
from_networkx \(图表[,权重列]) 将networkx图转换为pysal w对象。
from_shapefile \(文件路径[,idvariable ]) shapefile中基于内核的权重
full () 生成完整的numpy数组。
get_transform () 转换属性的getter。
plot \(gdf [,indexed on ,ax ,color ,node kws ,…]) 绘制空间权重对象。
remap_ids [新的IIDS ] 全程就地修改 W 的ID值来自 w.id_ordernew_ids 总共
set_shapefile \(shapefile [,idvariable ,full ]) 添加用于写入gal和gwt文件头的元数据。
set_transform [(值)] 权重转换。
symmetrize \([就地]) 构造对称的knn权重。
to_WSP () 生成一个wsp对象。
to_adjlist \([删除对称,焦点列,…]) 计算权重对象的邻接列表表示。
to_networkx () 将权重对象转换为NetworkX图形
from_WSP  
from_file  
__init__(data, bandwidth=None, fixed=True, k=2, function='triangular', eps=1.0000001, ids=None, diagonal=False, distance_metric='euclidean', radius=None, **kwargs)[源代码]

初始化自身。请参阅帮助(键入(self))以获得准确的签名。

方法

__init__ \(数据[,带宽,固定,K,…]) 初始化自身。
asymmetry \([固有]) 不对称检查。
from_WSP \(wsp [,静音警告])
from_adjlist \(adjlist [,focal u col,…]) 返回权重对象的相邻列表表示形式。
from_array \(数组,**kwargs) 从数组构造一个内核权重。
from_dataframe \(df [,geom u col,id ]) 从数据帧中进行内核权重。
from_file \([路径,格式])
from_networkx \(图表[,权重列]) 将networkx图转换为pysal w对象。
from_shapefile \(文件路径[,idvariable ]) shapefile中基于内核的权重
full () 生成完整的numpy数组。
get_transform () 转换属性的getter。
plot \(gdf [,indexed on ,ax ,color ,node kws ,…]) 绘制空间权重对象。
remap_ids [新的IIDS ] 全程就地修改 W 的ID值来自 w.id_ordernew_ids 总共
set_shapefile \(shapefile [,idvariable ,full ]) 添加用于写入gal和gwt文件头的元数据。
set_transform [(值)] 权重转换。
symmetrize \([就地]) 构造对称的knn权重。
to_WSP () 生成一个wsp对象。
to_adjlist \([删除对称,焦点列,…]) 计算权重对象的邻接列表表示。
to_networkx () 将权重对象转换为NetworkX图形

属性

asymmetries  具有不对称权重的ID对列表。
cardinalities  每个观测点的邻居数。
component_labels  存储每个观察结果所在的图表组件。
diagW2  对角线 \(WW\) .
diagWtW  对角线 \(W^{{'}}W\) .
diagWtW_WW  对角线 \(W^{{'}}W + WW\) .
histogram  基数柱状图作为字典,其中键是ID,值是该单元的邻居数。
id2i  字典,其中键是一个ID,值是按w.id_顺序排列的ID索引。
id_order  返回观察值的ID,其顺序与迭代权重时遇到的顺序相同。
id_order_set  如果用户设置了id_顺序,则返回true;否则返回false。
islands  没有任何邻居的ID列表。
max_neighbors  邻居数量最多。
mean_neighbors  邻居的平均数目。
min_neighbors  最小邻居数。
n  单位数。
n_components  存储相邻矩阵是否完全连接。
neighbor_offsets  给定当前的id_顺序,neighbor_offsets[id]是id_顺序中id的邻居的偏移量。
nonzero  非零权重的数目。
pct_nonzero  非零权重的百分比。
s0  S0定义为
s1  S1定义为
s2  s2定义为
s2array  包含s2的单个元素。
sd  相邻数的标准差。
sparse  稀疏矩阵对象。
transform  转换属性的getter。
trcW2  痕迹 \(WW\) .
trcWtW  痕迹 \(W^{{'}}W\) .
trcWtW_WW  痕迹 \(W^{{'}}W + WW\) .