Я функция, которая вычисляет 2 значение R^для заданного набора х и у данных со степенью указания:Массив из 2-х значений R^
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)
и для каждого значения п, можно получить значение г^2, то хранить его в массив.
r2= [] #array for each r^2 value for each value of n in linspace
Может кто-нибудь помочь мне в этом? Я новичок в python, и мне все еще сложно делать итерации. Спасибо.
Степень должна быть целочисленным значением - это степень полинома. 'numpy.linpace()' даст вам числа с плавающей запятой, которые не имеют большого смысла. Вместо этого я предлагаю использовать 'range()' или 'numpy.arange()'. –