Re[10]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.07.19 09:47
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Питон и быстрее — не...

Б>В любом случае будет O(N). А вот код станет сложнее.

Сложнее не станет, там в цикле надо считать суму и сумму квадратов. В чём сложность-то?
А быстрее станет на констант, что может быть весьма весомо
Re[11]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 17:18
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Сложнее не станет, там в цикле надо считать суму и сумму квадратов. В чём сложность-то?


Код станет совсем не похож на формулы для среднего и для стандартного отклонения.

N>А быстрее станет на констант, что может быть весьма весомо


def mean_std_1(arr):
    n = len(arr)
    mean = sum(arr) / n
    d = sum((x-mean)*(x-mean) for x in arr) / n
    std = math.sqrt(d)
    return mean, std

def mean_std_2(arr):
    n = len(arr)
    s1 = 0
    s2 = 0
    for x in arr:
        s1 += x
        s2 += x*x
    mean = s1 / n
    std = math.sqrt(s2 / n - mean*mean)
    return mean, std


Второй вариант быстрее первого всего лишь на 10-15% (для arr от 0 до 10_000_000)
Best regards, Буравчик
Re[12]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.07.19 18:08
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Второй вариант быстрее первого всего лишь на 10-15% (для arr от 0 до 10_000_000)


На первый взгляд, ты его ещё и закодил неверно. Проверял с чем-нибудь стандартным ответ?
Re[13]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 18:26
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>На первый взгляд, ты его ещё и закодил неверно. Проверял с чем-нибудь стандартным ответ?


Проверял
Best regards, Буравчик
Re[8]: Покритикуйте код
От: $$ Австралия жж
Дата: 20.07.19 22:11
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>С точностью — отлично

На 2+2 отлично. На реальные обсчёты такое нельзя.

Б>$>mean_std — говнокод.


Б>Поясни

Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.
Re[9]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 22:54
Оценка: +1
Здравствуйте, $$, Вы писали:

$>На 2+2 отлично. На реальные обсчёты такое нельзя.

Для данной задачи (hackerrank) — все ок.

$>Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.

В данной задаче mean и stddev "ходят" вместе. Да и вообще, они часто вместе.
К тому же, это вспомогательная функция для pearson. Я вообще изначально хотел поместить ее внутри pearson.

В общем, не вижу особых проблем в объединении вычисления двух значений.
Наоборот, считаю, что так лучше для данной задачи.
Best regards, Буравчик
Re[8]: Этично ли спрашивать коэффициент Пирсона?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.07.19 03:23
Оценка:
Здравствуйте, Nuzhny, Вы писали

N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.


Так как тема про статистику, предлагаю заняться вычислением вероятности этого события
Re[14]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.07.19 04:40
Оценка:
Здравствуйте, Буравчик, Вы писали:

N>>На первый взгляд, ты его ещё и закодил неверно. Проверял с чем-нибудь стандартным ответ?

Б>Проверял

Странно, обычно все формулы для несмещенной оценки. Ну, ладно.
Re[9]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.07.19 04:43
Оценка:
Здравствуйте, $$, Вы писали:

$>Здравствуйте, Буравчик, Вы писали:

Б>>$>mean_std — говнокод.


Нет, это стандартная практика, особенно когда всё вычисляется за один проход.

Б>>Поясни

$>Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.

Там нет размазанной логики. В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.
Re[10]: Покритикуйте код
От: $$ Австралия жж
Дата: 21.07.19 04:51
Оценка:
Здравствуйте, Nuzhny, Вы писали:

Б>>>$>mean_std — говнокод.


N>Нет, это стандартная практика,


N> В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.


Спасибо за предупреждение. Типичный стиль дата-саентиста?
Re[15]: Покритикуйте код
От: Буравчик Россия  
Дата: 21.07.19 05:38
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Странно, обычно все формулы для несмещенной оценки. Ну, ладно.


Так это и есть "Naïve algorithm":

# исходный вариант в Naïve algorithm
Var = (SumSq − (Sum × Sum) / n) / n      

# раскрываем скобки, получаем
Var = SumSq / n − Sum × Sum / n / n

# заменяем Sum/n на mean
Var = SumSq / n − mean × mean

# ч.т.д.
Best regards, Буравчик
Re[11]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.07.19 10:44
Оценка:
Здравствуйте, $$, Вы писали:

N>> В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.

$>Спасибо за предупреждение. Типичный стиль дата-саентиста?

Типичный здравый смысл.
Re: Почитал тред
От: Wolverrum Ниоткуда  
Дата: 21.07.19 12:59
Оценка:
Здравствуйте, $$, Вы писали:

$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.

Сложилось впечатление, что топикстартер впервые TI проводит.
Если я угадал, то как от бывалого — не совсем на том концентрируетесь
Re[11]: Покритикуйте код
От: Буравчик Россия  
Дата: 21.07.19 13:48
Оценка:
Здравствуйте, $$, Вы писали:

>Спасибо за предупреждение. Типичный стиль дата-саентиста?


В scipy есть функция stats, возвращающая тупл из четырех значений: mean, variance, skewness, kurtosis. В ней даже можно выбрать, какие из значений будут возвращены. Т.е. результатом может быть например кортеж только из двух значений (mean, variance). Для статически типизированных языков звучит страшно, но на практике оказывается удобным, потому что часто приходится получать эти значения вместе.

В scipy есть также функция describe, которая кроме этих четырех значений возвращает дополнительно: количество, минимум и максимум (т.е. возвращает аж 7 значений).

В питоне с туплами работать достаточно удобно, поэтому это не вызывает проблем. Даже наоборот, добавляет удобства, если нужно получить сразу несколько параметров. В общем, в некоторых случаях это нормальная практика.

P.S. Конечно есть и отдельные функции для mean, var и т.д.
Best regards, Буравчик
Re[12]: Покритикуйте код
От: $$ Австралия жж
Дата: 21.07.19 21:53
Оценка:
Здравствуйте, Буравчик, Вы писали:

Перечитал ещё раз твой код, мой код. Твой считает сразу 2 значения, чтобы не дублировать суммирование. Мой код в stddev ожидает ещё mean, чтобы не дублировать суммирование . Т.е. по факту у меня уже не stddev(X), а полу-фабрикат.
Беру слова обратно. Единственное что, наверное лучше назвать mean_stddev или mean_sd.

Для потокового обсчёта (достраивания на основе предыдущего), наверное можно возвращать (mean, stddev, count), а принимать x, y, prev_mean_sd_count.
Отредактировано 21.07.2019 22:11 Артём . Предыдущая версия . Еще …
Отредактировано 21.07.2019 22:11 Артём . Предыдущая версия .
Re: Этично ли спрашивать коэффициент Пирсона?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.07.19 04:56
Оценка:
Здравствуйте, $$, Вы писали:

>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.


Нет, дурь это в общем случае. Но не исключено что именно в этой компании подобные знания критичны
Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию
Re[2]: Этично ли спрашивать коэффициент Пирсона?
От: 0xCAFEDEAD  
Дата: 22.07.19 05:25
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, $$, Вы писали:


>>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.


KP>Нет, дурь это в общем случае. Но не исключено что именно в этой компании подобные знания критичны

KP>Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию
Как ты это оцениваешь? Где спросили (область)?
Re[2]: Этично ли спрашивать коэффициент Пирсона?
От: $$ Австралия жж
Дата: 22.07.19 05:43
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию


Это что такое? Гугл не помог.
Re[3]: Этично ли спрашивать коэффициент Пирсона?
От: 0xCAFEDEAD  
Дата: 22.07.19 05:49
Оценка: :)
Здравствуйте, $$, Вы писали:

$>Здравствуйте, kaa.python, Вы писали:

KP>>Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию


$>Это что такое? Гугл не помог.

Все таки забанили
Re[3]: Этично ли спрашивать коэффициент Пирсона?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.07.19 05:50
Оценка: 2 (1)
Здравствуйте, $$, Вы писали:

>Это что такое? Гугл не помог.


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