Найдите “лучшее пригодное” уравнение

Мне действительно нравится использовать библиотеку invoke для подобных задач. В частности, он хорошо подходит для запуска команд bash (например, gcloud) в скрипте Python без разбора в subprocess.

В вашем случае вы можете создать файл tasks.py, который выглядит как

from invoke import task

@task
def deploy_cloud_functions(c):
    c.run('gcloud functions deploy function_1 --runtime RUNTIME TRIGGER [FLAGS...]')
    c.run('gcloud functions deploy function_2 --runtime RUNTIME TRIGGER [FLAGS...]')

, а затем запустить его, вызвав

invoke deploy-cloud-functions

Обратите внимание, что если вы назовете ваша функция deploy_cloud_functions вы должны вызвать ее с помощью: invoke deploy-cloud-functions (обратите внимание на -). Вы можете найти список текущих доступных задач в вашем каталоге, используя invoke --list

blockquote>

Вы также можете распараллелить его, используя библиотеку потоков (хотя я не проверял, используя это в себе, вызывайте). Это, безусловно, сделает для уродливого вывода в консоли, хотя. Т.е.

from threading import Thread
from invoke import task

@task
def deploy_cloud_functions(c):
    Thread(lambda x:
           c.run('gcloud functions deploy function_1 --runtime RUNTIME TRIGGER [FLAGS...]')
    ).start()
    Thread(lambda x:
           c.run('gcloud functions deploy function_2 --runtime RUNTIME TRIGGER [FLAGS...]')
    ).start()

12
задан davethegr8 13 December 2008 в 00:25
поделиться

7 ответов

Из дополнительного интереса, вероятно, насколько хороший из соответствия строка. Для этого используйте корреляцию Pearson, здесь в функции PHP:

/**
 * returns the pearson correlation coefficient (least squares best fit line)
 * 
 * @param array $x array of all x vals
 * @param array $y array of all y vals
 */

function pearson(array $x, array $y)
{
    // number of values
    $n = count($x);
    $keys = array_keys(array_intersect_key($x, $y));

    // get all needed values as we step through the common keys
    $x_sum = 0;
    $y_sum = 0;
    $x_sum_sq = 0;
    $y_sum_sq = 0;
    $prod_sum = 0;
    foreach($keys as $k)
    {
        $x_sum += $x[$k];
        $y_sum += $y[$k];
        $x_sum_sq += pow($x[$k], 2);
        $y_sum_sq += pow($y[$k], 2);
        $prod_sum += $x[$k] * $y[$k];
    }

    $numerator = $prod_sum - ($x_sum * $y_sum / $n);
    $denominator = sqrt( ($x_sum_sq - pow($x_sum, 2) / $n) * ($y_sum_sq - pow($y_sum, 2) / $n) );

    return $denominator == 0 ? 0 : $numerator / $denominator;
}
2
ответ дан 2 December 2019 в 07:04
поделиться

Метод Наименьших квадратов http://en.wikipedia.org/wiki/Least_squares. Эта книга Числовые Рецепты 3-й Выпуск: Искусство Научных вычислений (Книга в твердом переплете) имеет все, в чем Вы нуждаетесь, чтобы алгоритмы реализовали Наименьшие квадраты и другие методы.

5
ответ дан 2 December 2019 в 07:04
поделиться

Хотя можно использовать итерационный подход, можно непосредственно вычислить наклон и прерывание строки, данной ряд наблюдений с помощью подхода наименьших квадратов. Посмотрите раздел "Univariate Linear Case" статьи Wikipedia о линейной регрессии для того, как вычислить коэффициенты a и b в y = a + bx учитывая наборы (x,y) точки.

4
ответ дан 2 December 2019 в 07:04
поделиться

Вот статья, сравнивающая два способа соответствовать строке к данным. Одна вещь не упустить состоит в том, что существует прямое решение, которое корректно в теории, но может иметь числовые проблемы. Шоу статьи, почему тот метод может привести к сбою и дает другой метод, который лучше.

6
ответ дан 2 December 2019 в 07:04
поделиться

Реализованный от страницы Wiki, непротестированной.

$sx = 0;
$sy = 0;
$sxy = 0;
$sx2 = 0;
$n = count($data);
foreach ($data as $x => $y)
{
    $sx += $x;
    $sy += $y;
    $sxy += $x * $y;
    $sx2 += $x * $x;
}
$beta = ($n*$sxy - $sx*$sy) / ($n*$sx2 - $sx*$sx);
$alpha = $sy/$n - $sx*$beta/$n;

echo "y = $alpha + $beta x";
3
ответ дан 2 December 2019 в 07:04
поделиться

Можно хотеть проверить линейную регрессию, или в более общем плане, подбор кривых.

2
ответ дан 2 December 2019 в 07:04
поделиться

Часто используемый подход должен многократно минимизировать сумму y-различий в квадрате между Вашими точками и пригодной функцией.

0
ответ дан 2 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: