微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算正在运行的窗口中每个窗口的R ^ 2值

如何解决计算正在运行的窗口中每个窗口的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_wdata2_w为您提供了进行数组操作所需的移动窗口。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。