Re[8]: Этично ли спрашивать коэффициент Пирсона?
От: AleksandrN Россия  
Дата: 19.07.19 15:03
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


M>>Сообщение послано от пользователя Аноним.


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


Аноним есть. Мне тоже иногда письма от него приходили и ещё кто-то про него писал. Я Анонима проигнорировал, а Muxa решил с ним пообщаться. Форум уже давно существует, а на старом форуме, как в старом замке, должно быть приведение
Re[4]: Этично ли спрашивать коэффициент Пирсона?
От: Muxa  
Дата: 19.07.19 15:07
Оценка: :)
GIV>Я их игнорю, смысл? Зачем мне мнение какого-то труса непонятного.
Что трус эт понятно, но мне показалось забавным.
Это не первый раз когда я его сообщения публикую.
Он мне щас пишет чтоб я его сообщения приводил полностью (далее цитата) "иначе другим не понятно, что за бред я несу."
Хотя я только лишние пустые строки удаляю, это конечно немного повышает уровень бреда, но в пределах погрешности.
Re[4]: Этично ли спрашивать коэффициент Пирсона?
От: Vetal_ca Канада http://vetal.ca
Дата: 19.07.19 15:52
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Реализация должна быть на brainfuck а текст программы оформлен в виде котёнка.


Все хорошо, плохие работодатели должны самовыпиливаться на рынке работников.

Что особенно ценно на ранних этапах и позволяет отбрасывать мусор более эффективно.
Re[3]: Этично ли спрашивать коэффициент Пирсона?
От: CreatorCray  
Дата: 19.07.19 16:59
Оценка:
Здравствуйте, Muxa, Вы писали:

M>На почту пришел ответ от анонима


В следующий раз удаляй это не читая.
Не следовало было сюда постить его высер.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Этично ли спрашивать коэффициент Пирсона?
От: CreatorCray  
Дата: 19.07.19 16:59
Оценка:
Здравствуйте, Muxa, Вы писали:

И уж точно не надо было ему тут отвечать.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Этично ли спрашивать коэффициент Пирсона?
От: CreatorCray  
Дата: 19.07.19 17:01
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Это не первый раз когда я его сообщения публикую.

Не делай так больше.

M>Он мне щас пишет чтоб я его сообщения приводил полностью (далее цитата) "иначе другим не понятно, что за бред я несу."

Если ему хочется нести бред — пусть регистрируется и несёт.
А вот переносчиком говна быть не стоит — обгаживаться будет он а пахнуть будет от тебя.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Этично ли спрашивать коэффициент Пирсона?
От: Muxa  
Дата: 19.07.19 17:05
Оценка: :)
M>>На почту пришел ответ от анонима

CC>В следующий раз удаляй это не читая.

CC>Не следовало было сюда постить его высер.

Не говори мне что делать, и я не скажу куда тебе идти.
Re[5]: Этично ли спрашивать коэффициент Пирсона?
От: CreatorCray  
Дата: 19.07.19 17:24
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Не говори мне что делать, и я не скажу куда тебе идти.

Воля твоя, ныряй в эту субстанцию.
Тока не обижайся потом.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: Этично ли спрашивать коэффициент Пирсона?
От: Muxa  
Дата: 19.07.19 17:39
Оценка: :)
CC>Тока не обижайся потом.
Re[8]: питон
От: cures Россия cures.narod.ru
Дата: 19.07.19 19:58
Оценка:
Здравствуйте, pagid, Вы писали:

P>При желании на тестовых данных можно организовать и переполнение double. Вот только нужно при выполнении задания на 15 мин это учитывать


Задачи на хакерранке хороши тем, что в них чётко оговариваются пределы возможных значений. Конкретно для этой задачи длина не больше 100, числа в выборке от 1 до 500, максимум с одной цифрой после запятой. Какие тут могут быть переполнения? Результат нужен с тремя знаками после запятой, какая тут может быть потеря точности? Ещё и значения координат уникальны, то есть делить на ноль точно не придётся. Народ тупо прикалывается.
Re[4]: Этично ли спрашивать коэффициент Пирсона?
От: $$ Австралия жж
Дата: 19.07.19 22:49
Оценка:
Здравствуйте, De-Bill, Вы писали:

DB>Специально поискал на хакерранке эту задачу. Это она https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem? Зачем гуглить, там же всё написано... Специально зарегался на этом сайте, чтобы посмотреть, вдруг в задаче есть какие-то "секретные" сложности. Вроде нет.


Спасибо, попрактикуюсь.
Я откопал ссылку на хакерранк от той конторы, но ещё раз запустить тест она не позволяет.
Также, закачал с каггла таблицу (csv) на 160мег примерно, чтобы сравниватт результат с numpy.
Re: Этично ли спрашивать коэффициент Пирсона?
От: AmSpb  
Дата: 19.07.19 23:21
Оценка:
Здравствуйте, $$, Вы писали:

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

https://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html
Re[4]: Покритикуйте код
От: $$ Австралия жж
Дата: 20.07.19 00:14
Оценка:
Здравствуйте, De-Bill, Вы писали:

DB>$>Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?


DB>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem


1 час минимум потратил, пока оно заработало. Отлаживал в идее.

Python 2
# Enter your code here. Read input from STDIN. Print output to STDOUT

from functools import reduce
from math import sqrt
from sys import stdin, stdout


def cumulative_ma(ma, i, value):
    return ma + (value - ma) / (i + 1)


def mean(X):
    return reduce((lambda acc, i: cumulative_ma(acc, i, X[i])), range(len(X)), 0.)


def stddev(X, m):
    return sqrt(reduce( \
        (lambda acc, i: cumulative_ma(acc, i, \
                                      pow(X[i] - m, 2))), range(len(X)), 0.))


def pearson(X, Y):
    muX = mean(X)
    muY = mean(Y)

    sigmaX = stddev(X, muX)
    sigmaY = stddev(Y, muY)
    sigmaCross = sigmaX * sigmaY

    return reduce( \
        (lambda acc, i: cumulative_ma(acc, i, (X[i] - muX) * (Y[i] - muY) / sigmaCross)), range(len(X)), 0.)


# ======
n = int(stdin.readline())
n = n

X = map(float, stdin.readline().split())
Y = map(float, stdin.readline().split())

result = pearson(X, Y)
stdout.write("%.03f" % result)
Re[5]: Покритикуйте код
От: De-Bill  
Дата: 20.07.19 03:19
Оценка:
DB>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem
$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.

Если ты про конкретную задачу по ссылке, то там указаны ограничения. Следовательно все приседания со средним заменяются на sum(X)/len(X). Далее через zip и mean пишется функция cov(X, Y). sigmaX соответсвенно корень из cov(X, X) и т.д.
Re[6]: Покритикуйте код
От: $$ Австралия жж
Дата: 20.07.19 06:32
Оценка:
Здравствуйте, De-Bill, Вы писали:

DB>>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem

DB>$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.

DB>Если ты про конкретную задачу по ссылке, то там указаны ограничения. Следовательно все приседания со средним заменяются на sum(X)/len(X). Далее через zip и mean пишется функция cov(X, Y). sigmaX соответсвенно корень из cov(X, X) и т.д.


Т.е. решение- говно, потому что переполнения не будет на 500*100? Я правильно уловил мысль?
Re[5]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 07:03
Оценка:
Здравствуйте, $$, Вы писали:

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

DB>>$>Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?


DB>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem


$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.

Минут 20. В браузере:

# Enter your code here. Read input from STDIN. Print output to STDOUT

import math

def read_input():
    n = float(input())
    x_arr = [float(x) for x in input().split()]
    y_arr = [float(x) for x in input().split()]
    return x_arr, y_arr

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

def pearson(x_arr, y_arr):
    mean_x, std_x = mean_std(x_arr)
    mean_y, std_y = mean_std(y_arr)
    p_numerator = sum([(x-mean_x)*(y-mean_y) for x,y in zip(x_arr,y_arr)])
    p_denominator = len(x_arr) * std_x * std_y
    return p_numerator / p_denominator

def main():
    x_arr, y_arr = read_input()
    p = pearson(x_arr, y_arr)
    print(f'{p:.3g}')

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

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


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


DB>>>$>Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?


DB>>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem


Б>$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.


Б>Минут 20. В браузере:


Б>
Б># Enter your code here. Read input from STDIN. Print output to STDOUT

Б>import math

Б>def read_input():
Б>    n = float(input())
Б>    x_arr = [float(x) for x in input().split()]
Б>    y_arr = [float(x) for x in input().split()]
Б>    return x_arr, y_arr

Б>def mean_std(arr):
Б>    n = len(arr)
Б>    mean = sum(arr) / n
Б>    d = sum([(x-mean)**2 for x in arr]) / n
Б>    std = math.sqrt(d)
Б>    return mean, std

Б>def pearson(x_arr, y_arr):
Б>    mean_x, std_x = mean_std(x_arr)
Б>    mean_y, std_y = mean_std(y_arr)
Б>    p_numerator = sum([(x-mean_x)*(y-mean_y) for x,y in zip(x_arr,y_arr)])
Б>    p_denominator = len(x_arr) * std_x * std_y
Б>    return p_numerator / p_denominator

Б>def main():
Б>    x_arr, y_arr = read_input()
Б>    p = pearson(x_arr, y_arr)
Б>    print(f'{p:.3g}')

Б>main()
Б>


С точностью всё нормально?
mean_std — говнокод.
Re[7]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 07:15
Оценка:
Здравствуйте, $$, Вы писали:

$>С точностью всё нормально?

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

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

Поясни
Best regards, Буравчик
Отредактировано 20.07.2019 7:16 Буравчик . Предыдущая версия .
Re[8]: Покритикуйте код
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.07.19 07:18
Оценка:
Здравствуйте, Буравчик, Вы писали:
Сервер
Б>$>mean_std — говнокод.
Б>Поясни

Говнокода там не вижу, но, если нет переполнение, то можно посчитать одним циклом, а не двумя. Будет быстрее.
Re[9]: Покритикуйте код
От: Буравчик Россия  
Дата: 20.07.19 07:36
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Говнокода там не вижу, но, если нет переполнение, то можно посчитать одним циклом, а не двумя. Будет быстрее.


Питон и быстрее — не...
В любом случае будет O(N). А вот код станет сложнее.
Best regards, Буравчик
Отредактировано 20.07.2019 7:36 Буравчик . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.