Python R^2值的数组

Python R^2值的数组,python,Python,我有一个函数,它计算给定的一组x和y数据的R^2值,并指定度数: import numpy as np # Polynomial Regression def polyfit(x,y,degree): coeffs = np.polyfit(x, y, degree) # Polynomial Coefficients results = coeffs.tolist() # r-squared p = np.poly1d(coeffs) # fit value

我有一个函数,它计算给定的一组x和y数据的R^2值,并指定度数:

import numpy as np

# Polynomial Regression
    def polyfit(x,y,degree):
    coeffs = np.polyfit(x, y, degree)

# Polynomial Coefficients
    results = coeffs.tolist()
# r-squared
    p = np.poly1d(coeffs)
# fit values, and mean
    yhat = p(x)                         # or [p(z) for z in x]
    ybar = np.sum(y)/len(y)          # or sum(y)/len(y)
    ssreg = np.sum((yhat-ybar)**2)   # or sum([ (yihat - ybar)**2 for yihat in yhat])
    sstot = np.sum((y - ybar)**2)    # or sum([ (yi - ybar)**2 for yi in y])
    r2= ssreg / sstot

    results=r2

return results
我尝试将此函数用于一组示例数据:

x = np.arange(1,5)
y = np.arange(1,5)

print polyfit(x,y,1)

>>1.0
到目前为止还不错。我现在的问题是我想通过迭代的方式改变度(多边形拟合函数的第三个参数)。我正在考虑使用

n=np.linspace(1,9,100)
对于n的每个值,我可以得到一个r^2值,然后将它存储到一个数组中

r2= [] #array for each r^2 value for each value of n in linspace
有人能帮我吗?我是python新手,但我仍然很难进行迭代。谢谢

每个r^2值的数组,用于linspace中n的每个值

您可以将其作为一个列表:

r2 = [polyfit(x, y, n) for n in np.linspace(1,9,100)]
转换为numpy阵列并不困难:

r2 = np.array(r2)

度数必须是整数值——它是多项式的度数
numpy.linpace()
将为您提供意义不大的浮点数。我建议使用
range()
numpy.arange()