मैं पायथन और नेम्पी का उपयोग करके आर-स्क्वेर्ड की गणना कैसे करूं?


92

मैं मनमानी डिग्री के सबसे अच्छे फिट बहुपद की गणना करने के लिए पायथन और नेम्पी का उपयोग कर रहा हूं। मैं x मानों, y मानों और बहुपद की डिग्री जो मैं फिट करना चाहता हूं (रैखिक, द्विघात आदि) की सूची पास करता हूं।

यह बहुत काम करता है, लेकिन मैं आर (सहसंबंध के गुणांक) और आर-स्क्वेर्ड (निर्धारण के गुणांक) की भी गणना करना चाहता हूं। मैं एक्सेल की सर्वश्रेष्ठ-फिट ट्रेंडलाइन क्षमता के साथ अपने परिणामों की तुलना कर रहा हूं, और आर-स्क्वेर्ड मूल्य इसकी गणना करता है। इसका उपयोग करते हुए, मुझे पता है कि मैं रैखिक सर्वश्रेष्ठ-फिट (डिग्री 1 के बराबर) के लिए सही ढंग से आर-स्क्वायर की गणना कर रहा हूं। हालांकि, मेरा कार्य 1 से अधिक डिग्री वाले बहुपद के लिए काम नहीं करता है।

एक्सेल ऐसा करने में सक्षम है। मैं Numpy का उपयोग करके उच्च-क्रम बहुपद के लिए r-squared की गणना कैसे करूं?

यहाँ मेरा कार्य है:

import numpy

# Polynomial Regression
def polyfit(x, y, degree):
    results = {}

    coeffs = numpy.polyfit(x, y, degree)
     # Polynomial Coefficients
    results['polynomial'] = coeffs.tolist()

    correlation = numpy.corrcoef(x, y)[0,1]

     # r
    results['correlation'] = correlation
     # r-squared
    results['determination'] = correlation**2

    return results

1
नोट: आप केवल गुणांक की गणना में डिग्री का उपयोग करते हैं।
निक डंडौलकिस

tydok सही है। आप y = p_0 + p_1 * x के लिए x और y और r-squared के सहसंबंध की गणना कर रहे हैं। कुछ कोड के लिए मेरा जवाब नीचे देखें जो काम करना चाहिए। यदि आप मुझसे यह पूछने में कोई गुरेज नहीं करते हैं, तो आपका अंतिम लक्ष्य क्या है? क्या आप मॉडल का चयन कर रहे हैं (किस डिग्री का उपयोग करना है)? या कुछ और?
लीफ

@ एलिफ़ - अनुरोध यह करने के लिए उबलता है "जैसे एक्सेल करता है"। मैं इन उत्तरों से यह महसूस कर रहा हूं कि गैर-रैखिक सर्वश्रेष्ठ-फिट वक्र का उपयोग करते समय उपयोगकर्ता आर-स्क्वेर्ड मूल्य में बहुत अधिक पढ़ सकते हैं। बहरहाल, मैं गणित का जादूगर नहीं हूं, और यह अनुरोधित कार्यक्षमता है।
ट्रैविस बीले

जवाबों:


62

से numpy.polyfit प्रलेखन, यह रेखीय प्रतीपगमन फिटिंग है। विशेष रूप से, डिग्री 'डी' के साथ numpy.polyfit माध्य फ़ंक्शन के साथ एक रैखिक प्रतिगमन फिट बैठता है

E (y | x) = p_d * x ** d + p_ {d-1} * x ** (d-1) + ... + p_1 * x + p_0

तो आपको बस उस फिट के लिए R-squared की गणना करने की आवश्यकता है। रैखिक प्रतिगमन पर विकिपीडिया पृष्ठ पूर्ण विवरण देता है। आप आर ^ 2 में रुचि रखते हैं, जिसे आप कुछ तरीकों से गणना कर सकते हैं, शायद सबसे आसान

SST = Sum(i=1..n) (y_i - y_bar)^2
SSReg = Sum(i=1..n) (y_ihat - y_bar)^2
Rsquared = SSReg/SST

जहाँ मैं y के अर्थ के लिए 'y_bar', और 'y_ihat' का उपयोग प्रत्येक बिंदु के लिए उपयुक्त मान के लिए करता हूँ।

मैं बहुत खौफ से परिचित नहीं हूं (मैं आमतौर पर आर में काम करता हूं), इसलिए आपके आर-स्क्वेर्ड की गणना करने के लिए संभवतः एक कठिन तरीका है, लेकिन निम्नलिखित सही होना चाहिए

import numpy

# Polynomial Regression
def polyfit(x, y, degree):
    results = {}

    coeffs = numpy.polyfit(x, y, degree)

     # Polynomial Coefficients
    results['polynomial'] = coeffs.tolist()

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

    return results

5
मैं केवल यह बताना चाहता हूं कि सूची बोध के बजाय सुन्न सरणी कार्यों का उपयोग करना बहुत तेज होगा, जैसे कि numpy.sum ((yi - ybar) ** 2) और पढ़ने में आसान
जोसेफ

17
Wiki पेज के अनुसार en.wikipedia.org/wiki/Coeffic_of_determination , R ^ 2 की सबसे सामान्य परिभाषा R^2 = 1 - SS_err/SS_tot, R^2 = SS_reg/SS_totसिर्फ एक विशेष मामला है।
LWZ

137

एक बहुत देर से जवाब, लेकिन सिर्फ मामले में किसी को इसके लिए एक तैयार फ़ंक्शन की आवश्यकता होती है:

scipy.stats.linregress

अर्थात

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)

@Adam Marples के जवाब में।


सहसंबंध के गुणांक के साथ विश्लेषण करना और फिर बड़ा काम, प्रतिगमन करना उचित है ।
象嘉道

19
यह उत्तर केवल रैखिक प्रतिगमन के लिए काम करता है, जो सबसे सरल बहुपद प्रतिगमन है
tashuhka

8
सावधानी: यहाँ r_value एक पियर्सन का सहसंबंध गुणांक है, न कि आर-स्क्वेर। r_squared = r_value ** 2
व्लादिमीर लुकिन

52

Yanl से (अभी तक एक और पुस्तकालय) sklearn.metricsएक r2_scoreसमारोह है;

from sklearn.metrics import r2_score

coefficient_of_dermination = r2_score(y, p(x))

1
(खबरदार: "डिफ़ॉल्ट मान 'variance_weighted' से मेल खाता है, इस व्यवहार को 0.17 संस्करण के बाद से हटा दिया गया है और इसे 'वर्दी_अवधि' में 0.19 से बदल दिया जाएगा"
Franck Dernoncourt

4
स्केलेर में r2_score नकारात्मक मूल्य हो सकता है, जो सामान्य मामला नहीं है।
Qinqing लियू

1
क्यों है r2_score([1,2,3],[4,5,7])= -16?
cz

22

मैं इसे सफलतापूर्वक उपयोग कर रहा हूं, जहां x और y सरणी-जैसे हैं।

def rsquared(x, y):
    """ Return R^2 where x and y are array-like."""

    slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
    return r_value**2

20

मैंने मूल रूप से सिफारिश करने के उद्देश्य से नीचे दिए गए बेंचमार्क पोस्ट किए numpy.corrcoef, मूर्खतापूर्ण रूप से यह महसूस नहीं किया कि मूल प्रश्न पहले से ही उपयोग करता है corrcoefऔर वास्तव में उच्च आदेश बहुपद फिट के बारे में पूछ रहा था। मैंने स्टेटमॉमियल आर-स्क्वैयर प्रश्न का एक वास्तविक समाधान जोड़ा है, जिसमें स्टैटमोडल का उपयोग किया गया है, और मैंने मूल बेंचमार्क को छोड़ दिया है, जो ऑफ-टॉपिक के दौरान संभावित रूप से किसी के लिए उपयोगी है।


statsmodelsr^2एक बहुपद फिट सीधे गणना करने की क्षमता है , यहाँ 2 तरीके हैं ...

import statsmodels.api as sm
import statsmodels.formula.api as smf

# Construct the columns for the different powers of x
def get_r2_statsmodels(x, y, k=1):
    xpoly = np.column_stack([x**i for i in range(k+1)])    
    return sm.OLS(y, xpoly).fit().rsquared

# Use the formula API and construct a formula describing the polynomial
def get_r2_statsmodels_formula(x, y, k=1):
    formula = 'y ~ 1 + ' + ' + '.join('I(x**{})'.format(i) for i in range(1, k+1))
    data = {'x': x, 'y': y}
    return smf.ols(formula, data).fit().rsquared # or rsquared_adj

आगे लाभ उठाने के लिए statsmodels, किसी को फिट किए गए मॉडल सारांश को भी देखना चाहिए, जिसे जुपिटर / आईपीथॉन नोटबुक में एक समृद्ध HTML तालिका के रूप में मुद्रित या प्रदर्शित किया जा सकता है। परिणाम वस्तु के अलावा कई उपयोगी सांख्यिकीय मैट्रिक्स तक पहुँच प्रदान करता है rsquared

model = sm.OLS(y, xpoly)
results = model.fit()
results.summary()

नीचे मेरा मूल उत्तर है जहां मैंने विभिन्न रैखिक प्रतिगमन r ^ 2 विधियों को बेंचमार्क किया है ...

प्रश्न में उपयोग किया जाने वाला गलियारा फ़ंक्शन सहसंबंध गुणांक की गणना करता है r, केवल एक रेखीय प्रतिगमन के लिए, इसलिए यह r^2उच्च क्रम बहुपद फिट के लिए प्रश्न को संबोधित नहीं करता है । हालांकि, इसके लायक क्या है, मुझे पता चला है कि रैखिक प्रतिगमन के लिए, यह वास्तव में गणना का सबसे तेज़ और सबसे प्रत्यक्ष तरीका है r

def get_r2_numpy_corrcoef(x, y):
    return np.corrcoef(x, y)[0, 1]**2

1000 यादृच्छिक (x, y) बिंदुओं के लिए तरीकों की एक गुच्छा की तुलना करने से ये मेरे समय परिणाम थे:

  • शुद्ध अजगर (प्रत्यक्ष rगणना)
    • 1000 लूप, सर्वश्रेष्ठ 3: 1.59 एमएस प्रति लूप
  • Numpy पॉलीफ़िट (n-th डिग्री बहुपद फिट करने के लिए लागू)
    • 1000 लूप, सर्वश्रेष्ठ 3: 326 µ प्रति लूप
  • Numpy मैनुअल (प्रत्यक्ष rगणना)
    • 10000 लूप, सर्वश्रेष्ठ 3: 62.1 ops प्रति लूप
  • Numpy नाली (प्रत्यक्ष rगणना)
    • 10000 लूप, सर्वश्रेष्ठ 3: 56.6। प्रति लूप
  • स्किप ( rउत्पादन के रूप में रैखिक प्रतिगमन )
    • 1000 लूप, सर्वश्रेष्ठ 3: 676 ops प्रति लूप
  • Statsmodels (n-th डिग्री बहुपद और कई अन्य फिट कर सकते हैं)
    • 1000 लूप, सर्वश्रेष्ठ 3: 422 of प्रति लूप

नालीदार विधि संकरी विधियों का उपयोग करके r ^ 2 "मैन्युअल रूप से" की गणना करते हुए संकीर्ण रूप से धड़कती है। यह पॉलीफ़िट विधि की तुलना में> 5X तेज़ और स्किपी.लाइनरग्रेड की तुलना में ~ 12X तेज़ है। सिर्फ यह बताने के लिए कि आपके लिए क्या खस्ता है, यह शुद्ध अजगर की तुलना में 28X तेज है। मैं सुब्बा और पिपी जैसी चीजों से अच्छी तरह वाकिफ नहीं हूं, इसलिए किसी और को उन अंतरालों को भरना होगा, लेकिन मुझे लगता है कि यह मेरे लिए काफी ठोस corrcoefहै जो rएक सरल रेखीय प्रतिगमन की गणना के लिए सबसे अच्छा उपकरण है ।

यहाँ मेरा बेंचमार्किंग कोड है। मैं ज्यूपिटर नोटबुक से कॉपी-पेस्ट करता हूं (हार्ड इसे आईपाइथॉन नोटबुक नहीं कहता ...), इसलिए अगर रास्ते में कुछ भी टूट गया तो मैं माफी मांगता हूं। % टाइमिट मैजिक कमांड के लिए IPython की आवश्यकता होती है।

import numpy as np
from scipy import stats
import statsmodels.api as sm
import math

n=1000
x = np.random.rand(1000)*10
x.sort()
y = 10 * x + (5+np.random.randn(1000)*10-5)

x_list = list(x)
y_list = list(y)

def get_r2_numpy(x, y):
    slope, intercept = np.polyfit(x, y, 1)
    r_squared = 1 - (sum((y - (slope * x + intercept))**2) / ((len(y) - 1) * np.var(y, ddof=1)))
    return r_squared
    
def get_r2_scipy(x, y):
    _, _, r_value, _, _ = stats.linregress(x, y)
    return r_value**2
    
def get_r2_statsmodels(x, y):
    return sm.OLS(y, sm.add_constant(x)).fit().rsquared
    
def get_r2_python(x_list, y_list):
    n = len(x_list)
    x_bar = sum(x_list)/n
    y_bar = sum(y_list)/n
    x_std = math.sqrt(sum([(xi-x_bar)**2 for xi in x_list])/(n-1))
    y_std = math.sqrt(sum([(yi-y_bar)**2 for yi in y_list])/(n-1))
    zx = [(xi-x_bar)/x_std for xi in x_list]
    zy = [(yi-y_bar)/y_std for yi in y_list]
    r = sum(zxi*zyi for zxi, zyi in zip(zx, zy))/(n-1)
    return r**2
    
def get_r2_numpy_manual(x, y):
    zx = (x-np.mean(x))/np.std(x, ddof=1)
    zy = (y-np.mean(y))/np.std(y, ddof=1)
    r = np.sum(zx*zy)/(len(x)-1)
    return r**2
    
def get_r2_numpy_corrcoef(x, y):
    return np.corrcoef(x, y)[0, 1]**2
    
print('Python')
%timeit get_r2_python(x_list, y_list)
print('Numpy polyfit')
%timeit get_r2_numpy(x, y)
print('Numpy Manual')
%timeit get_r2_numpy_manual(x, y)
print('Numpy corrcoef')
%timeit get_r2_numpy_corrcoef(x, y)
print('Scipy')
%timeit get_r2_scipy(x, y)
print('Statsmodels')
%timeit get_r2_statsmodels(x, y)

1
आप एक ढलान फिटिंग के साथ 3 तरीकों की तुलना कर रहे हैं और एक ढलान फिटिंग के बिना 3 तरीकों के साथ प्रतिगमन।
जोसेफ

हाँ, मुझे इतना पता था ... लेकिन अब मैं मूल प्रश्न को नहीं पढ़ने के लिए मूर्खतापूर्ण महसूस करता हूं और यह देखता हूं कि यह पहले से ही गलियारे का उपयोग करता है और विशेष रूप से उच्च आदेश बहुपद के लिए r ^ 2 को संबोधित कर रहा है ... अब मुझे अपने बेंचमार्क पोस्ट करने के लिए मूर्खतापूर्ण लगता है जो एक अलग उद्देश्य के लिए थे। उफ़ ...
flutefreak7

1
मैंने अपने उत्तर का उपयोग करके मूल प्रश्न के समाधान के साथ अद्यतन किया है statsmodels, और रैखिक प्रतिगमन r ^ 2 विधियों की अनावश्यक बेंचमार्किंग के लिए माफी मांगी, जिसे मैंने दिलचस्प, अभी तक विषय-वस्तु की जानकारी के रूप में रखा था।
flutefreak7

मुझे अभी भी बेंचमार्क दिलचस्प लगता है क्योंकि मुझे नहीं लगता कि स्काइप के लिनियरग्रेड को स्टैटमोडल की तुलना में धीमा होना चाहिए जो अधिक उदार कार्य करता है।
जोसेफ

1
ध्यान दें, np.column_stack([x**i for i in range(k+1)])स्तम्भों के क्रम के साथ x[:,None]**np.arange(k+1)या स्तंभों में क्रम उलट जाने वाले कार्यों का उपयोग करके उन्हें खसरे में सदिश किया जा सकता है ।
जोसेफ

5

R-squared एक आँकड़ा है जो केवल रैखिक प्रतिगमन पर लागू होता है।

अनिवार्य रूप से, यह मापता है कि रैखिक प्रतिगमन द्वारा आपके डेटा में कितनी भिन्नता को समझाया जा सकता है।

तो, आप "कुल वर्गों का योग" की गणना करते हैं, जो कि आपके प्रत्येक परिणाम चर का कुल चुकता विचलन है। । ।

\ sum_ {i} (y_ {i} - y_bar) ^ 2

जहां y_bar y का मतलब है।

फिर, आप "वर्गों के प्रतिगमन योग" की गणना करते हैं, जो कि आपके फिटेड मूल्यों से कितना भिन्न है

\ sum_ {i} (yHat_ {i} - y_bar) ^ 2

और उन दोनों के अनुपात का पता लगाएं।

अब, एक बहुपद फिट के लिए आपको बस इतना करना होगा कि उस मॉडल से y_hat में प्लग है, लेकिन उस r-squared को कॉल करना सटीक नहीं है।

यहाँ एक लिंक है जो मैंने पाया है कि इसे थोड़ा बोलता है।


यह मेरी समस्या की जड़ प्रतीत होती है। एक्सेल एक बहुपद फिट बनाम एक रेखीय प्रतिगमन के लिए एक अलग आर-स्क्वेर मूल्य कैसे प्राप्त करता है?
ट्रैविस बीले

1
क्या आप एक रेखीय प्रतिगमन से फिट बैठता है, और एक बहुपद मॉडल से फिट बैठता है? यह डेटा के दो सरणियों से rsq की गणना करने जा रहा है, और बस मान लें कि आप इसे एक रेखीय मॉडल से फिट कर रहे हैं। एक्सेल क्या दे रहे हो? एक्सेल में 'बेस्ट फिट ट्रेंडलाइन' कमांड क्या है?
बाल्टिमार्क

यह एक्सेल के रेखांकन कार्यों का हिस्सा है। आप कुछ डेटा को प्लॉट कर सकते हैं, उस पर राइट-क्लिक करें, फिर कई अलग-अलग प्रकार की ट्रेंड लाइनों में से चुनें। लाइन के समीकरण के साथ-साथ प्रत्येक प्रकार के लिए एक आर-स्क्वेर्ड मान को देखने का विकल्प है। प्रत्येक प्रकार के लिए r-squared मान भी भिन्न होता है।
ट्रैविस बीले

@ ट्राविस बीले - आप अपने द्वारा आजमाए जाने वाले प्रत्येक अलग-अलग माध्य फ़ंक्शन के लिए एक अलग-अलग आर-स्क्वेर प्राप्त करने जा रहे हैं (जब तक कि दो मॉडल नेस्टेड न हों और बड़े मॉडल में अतिरिक्त गुणांक सभी 0 हो जाएं)। तो बेशक एक्सेल एक अलग आर-स्क्वेर मान देता है। @ बाल्टिमार्क - यह रैखिक प्रतिगमन है, इसलिए यह आर-स्क्वेर्ड है।
लीफ

5

R-squareds पर विकिपीडिया लेख बताता है कि इसका उपयोग केवल रैखिक प्रतिगमन के बजाय सामान्य मॉडल फिटिंग के लिए किया जा सकता है।


1
: यहाँ एक अच्छा गैर रेखीय प्रतिगमन के लिए R2 के साथ इस मुद्दे का विवरण दिया गया है blog.minitab.com/blog/adventures-in-statistics/...
Tickon

5

यहाँ पायथन और नेम्पी के साथ भारित आर-वर्ग की गणना करने का एक कार्य है (अधिकांश कोड स्केलेरन से आता है):

from __future__ import division 
import numpy as np

def compute_r2_weighted(y_true, y_pred, weight):
    sse = (weight * (y_true - y_pred) ** 2).sum(axis=0, dtype=np.float64)
    tse = (weight * (y_true - np.average(
        y_true, axis=0, weights=weight)) ** 2).sum(axis=0, dtype=np.float64)
    r2_score = 1 - (sse / tse)
    return r2_score, sse, tse

उदाहरण:

from __future__ import print_function, division 
import sklearn.metrics 

def compute_r2_weighted(y_true, y_pred, weight):
    sse = (weight * (y_true - y_pred) ** 2).sum(axis=0, dtype=np.float64)
    tse = (weight * (y_true - np.average(
        y_true, axis=0, weights=weight)) ** 2).sum(axis=0, dtype=np.float64)
    r2_score = 1 - (sse / tse)
    return r2_score, sse, tse    

def compute_r2(y_true, y_predicted):
    sse = sum((y_true - y_predicted)**2)
    tse = (len(y_true) - 1) * np.var(y_true, ddof=1)
    r2_score = 1 - (sse / tse)
    return r2_score, sse, tse

def main():
    '''
    Demonstrate the use of compute_r2_weighted() and checks the results against sklearn
    '''        
    y_true = [3, -0.5, 2, 7]
    y_pred = [2.5, 0.0, 2, 8]
    weight = [1, 5, 1, 2]
    r2_score = sklearn.metrics.r2_score(y_true, y_pred)
    print('r2_score: {0}'.format(r2_score))  
    r2_score,_,_ = compute_r2(np.array(y_true), np.array(y_pred))
    print('r2_score: {0}'.format(r2_score))
    r2_score = sklearn.metrics.r2_score(y_true, y_pred,weight)
    print('r2_score weighted: {0}'.format(r2_score))
    r2_score,_,_ = compute_r2_weighted(np.array(y_true), np.array(y_pred), np.array(weight))
    print('r2_score weighted: {0}'.format(r2_score))

if __name__ == "__main__":
    main()
    #cProfile.run('main()') # if you want to do some profiling

आउटपुट:

r2_score: 0.9486081370449679
r2_score: 0.9486081370449679
r2_score weighted: 0.9573170731707317
r2_score weighted: 0.9573170731707317

यह सूत्र ( दर्पण ) से मेल खाती है :

यहाँ छवि विवरण दर्ज करें

f_i फिट से अनुमानित मूल्य है, y_ {av} मनाया गया डेटा का मतलब है y_i मनाया गया मान है। w_i प्रत्येक डेटा बिंदु पर लागू होने वाला भार है, आमतौर पर w_i = 1। SSE त्रुटि के कारण वर्गों का योग है और SST वर्गों का कुल योग है।


यदि रुचि है, तो R: https://gist.github.com/dhimmel/588d64a73fa4fef02c8f ( मिरर ) में कोड


2

यहाँ आर ^ 2 की गणना करने के लिए एक बहुत ही सरल अजगर कार्य है वास्तविक और अनुमानित मानों से माना जाता है कि y और y_hat पांडा श्रृंखला हैं:

def r_squared(y, y_hat):
    y_bar = y.mean()
    ss_tot = ((y-y_bar)**2).sum()
    ss_res = ((y-y_hat)**2).sum()
    return 1 - (ss_res/ss_tot)

0

Scipy.stats.linregress स्रोत से। वे वर्गों के औसत योग का उपयोग करते हैं।

import numpy as np

x = np.array(x)
y = np.array(y)

# average sum of squares:
ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat

r_num = ssxym
r_den = np.sqrt(ssxm * ssym)
r = r_num / r_den

if r_den == 0.0:
    r = 0.0
else:
    r = r_num / r_den

    if r > 1.0:
        r = 1.0
    elif r < -1.0:
        r = -1.0

0

आप इस कोड को सीधे निष्पादित कर सकते हैं, इससे आपको बहुपद मिल जाएगा, और आपको आर-मूल्य मिल जाएगा यदि आप अधिक स्पष्टीकरण की आवश्यकता हो तो नीचे टिप्पणी डाल सकते हैं।

from scipy.stats import linregress
import numpy as np

x = np.array([1,2,3,4,5,6])
y = np.array([2,3,5,6,7,8])

p3 = np.polyfit(x,y,3) # 3rd degree polynomial, you can change it to any degree you want
xp = np.linspace(1,6,6)  # 6 means the length of the line
poly_arr = np.polyval(p3,xp)

poly_list = [round(num, 3) for num in list(poly_arr)]
slope, intercept, r_value, p_value, std_err = linregress(x, poly_list)
print(r_value**2)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.