Из документации numpy.polyfit соответствует линейная регрессия. В частности, numpy.polyfit со степенью «d» соответствует линейной регрессии со средней функцией
E (y | x) = p_d * x ** d + p_ {d-1} * x ** ( d-1) + ... + p_1 * x + p_0
Так что вам просто нужно вычислить R-квадрат для этой подгонки. Страница wikipedia на линейной регрессии дает полную информацию. Вас интересует R ^ 2, который вы можете рассчитать несколькими способами: easisest, вероятно, являющийся
SST = Sum(i=1..n) (y_i - y_bar)^2
SSReg = Sum(i=1..n) (y_ihat - y_bar)^2
Rsquared = SSReg/SST
Где я использую «y_bar» для среднего значения y, а «y_ihat» - значение соответствия для каждой точки.
Я не очень хорошо знаком с numpy (обычно я работаю в R), поэтому, вероятно, есть более аккуратный способ вычисления вашего R-квадрата, но следующее должно быть правильным
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
В основном мы можем иметь 4 ситуации:
Имея только необходимый класс:
<div class="Nam-StdCss-*-Cls"></div>
Имея необходимый класс в начале
<div class="Nam-StdCss-*-Cls ... more-class"></div>
Имея необходимый класс в конце
<div class="more-class ... Nam-StdCss-*-Cls"></div>
Имея необходимый класс посередине
<div class="more-class ... Nam-StdCss-*-Cls ... more-class"></div>
Вы можете написать селектор для каждого, как показано ниже:
[class^="Nam-"][class*="StdCss-"][class$="-Cls"]{
color:red;
}
/*note the space after the class name---------v*/
[class^="Nam-"][class*="StdCss-"][class*="-Cls "]{
color:blue;
}
/* v---note the space before the class name*/
[class*=" Nam-"][class*="StdCss-"][class$="-Cls"]{
color:green;
}
/* v------space before and after---------v */
[class*=" Nam-"][class*="StdCss-"][class*="-Cls "]{
color:purple;
}
<div class="Nam-StdCss-Cls">aaa</div>
<div class="Nam-StdCss-anything-Cls">aaa</div>
<div class="Nam-StdCss-Cls ... more-class">bbb</div>
<div class="Nam-StdCss-other-Cls more-class ...">bbb</div>
<div class="more-class ... Nam-StdCss-Cls">ccc</div>
<div class="more-class ... Nam-StdCss-radius-Cls">ccc</div>
<div class="more-class ... Nam-StdCss-Cls ... more-class">ddd</div>
<div class="more-class ... Nam-StdCss-radius-Cls ... more-class">ddd</div>
<br>
<div class="more-class more-class">not !!</div>
<div class="more-class Nam-StdCss more-class">not !!</div>
<div class="Nam-StdCss more-class">not !!</div>
Следует обратить внимание, так как в некоторых случаях это может быть нацелено на ненужный элемент, что связано с тем, что порядок не имеет значения для классов .
[class^="Nam-"][class*="StdCss-"][class$="-Cls"]{
color:red;
}
[class^="Nam-"][class*="StdCss-"][class*="-Cls "]{
color:blue;
}
[class*=" Nam-"][class*="StdCss-"][class$="-Cls"]{
color:green;
}
[class*=" Nam-"][class*="StdCss-"][class*="-Cls "]{
color:purple;
}
<div class="Nam- StdCss- -Cls">aaa</div>
<div class="StdCss- Nam- -Cls">aaa</div>
<div class="-Cls StdCss- Nam-">aaa</div>