如何解决计算正在运行的窗口中每个窗口的R ^ 2值
我有两个数据集,我想在其上运行一个运行窗口并为每个窗口计算R ^ 2值。我所拥有的是:
import numpy as np
from scipy.ndimage.filters import generic_filter
from sklearn.metrics import r2_score
data1 = np.random.randint(1,100,size=(100,50))
data2 = np.random.randint(1,50))
array = np.ones(np.shape(data1))
def function(array):
return r2_score(data1,data2)
window = generic_filter(array,function,footprint=np.ones((3,3)),mode='nearest')
因此,基本上应该为每个3x3框计算R ^ 2值,并将该值放置在该框的中央,例如:
0 0 0
0 R^2 0
0 0 0
然后它将移动到下一个点,并为整个大小(100x50)的数组计算另一个R ^ 2,依此类推。当我运行它时,尽管它创建了一个100x50的数组,但它们都是相同的值。我认为它是针对整个data1和data2而不是每个封装尺寸计算R ^ 2。我不确定是否需要传递给函数而不是数组。
解决方法
这是它的循环版本:
from skimage.util import view_as_windows
data1_w = view_as_windows(data1,(3,3))
data2_w = view_as_windows(data2,3))
r,c,_,_ = data1_w.shape
r2 = np.zeros_like(data1[2:,2:])
for i in range(r):
for j in range(c):
r2[i,j] = r2_score(data1_w[i,j,:,:],data2_w[i,:])
我对r2_score
函数不熟悉。我建议以数组格式编写该函数以避免循环。 data1_w
和data2_w
为您提供了进行数组操作所需的移动窗口。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。