Упрощение статистики для науки о данных и машинного обучения с помощью Python: увлекательное руководство для любознательных
Считаете ли вы себя ошеломленным сложностями статистики как начинающего специалиста по данным?
Вы когда-нибудь мечтали о формуле, которая сделает обучение не только легким, но и приятным?
По правде говоря, эту формулу можно применить к любому понятию, с которым вы боретесь, а не только к статистике.
Если вы заинтригованы идеей окончательно понять эти неуловимые статистические термины, эта статья для вас.
Приготовьтесь, пока мы погружаемся в захватывающий мир статистики с Python, и эти концепции полезны для машинного обучения и науки о данных.
Учитесь, развлекаясь, не придерживайтесь длинных формул!
Вместо этого просто изучите понятия.
Потому что, если вы будете применять статистику, вы, возможно, сделаете это, используя более простые коды, будь то Python, R или Excel.
Допустим, вы являетесь писателем на Medium и хотите создать впечатляющий заголовок, и вам интересно, добавить ли ваш заголовок в биткойн или нет.
Получают ли статьи со словом «Биткойн» в заголовке разное количество лайков?
Теперь давайте узнаем, как это сделать.
Следующий код просматривает кучу статей. В некоторых статьях есть слово «Биткойн» в названии, а в некоторых нет. Код начинается с импорта необходимых библиотек с помощью:
from scipy.stats import norm import numpy as np
Затем он разделяет статьи на две группы: те, которые содержат «Биткойн» в названии, и те, которые не содержат
df_python = df2[df2['title'].str.contains('Bitcoin')] df_not_python = df2[~df2['title'].str.contains('Bitcoin')]
Он также подсчитывает количество статей в каждой группе:
n = df_python.shape[0] m = df_not_python.shape[0]
Далее код вычисляет среднее количество лайков для каждой группы статей:
x = df_python["like"].values.mean() y = df_not_python["like"].values.mean()
Эти средние значения затем распечатываются:
print("Average like per article which contains bitcoin word is : {}".format(x)) print("Average like per article which does not contains bitcoin word is : {}".format(y))
Код также вычисляет, насколько распределено количество лайков для каждой группы статей, что называется дисперсией:
x_var = df_python["like"].values.var() y_var = df_not_python["like"].values.var()
И печатает эти отклонения:
print("Variance of like per article which contains bitcoin word is : {}".format(x_var)) print("Variance of like per article which does not contains bitcoin word is : {}".format(y_var))
Затем он использует то, что называется Z-тестом, чтобы увидеть, является ли разница в среднем количестве лайков между двумя группами просто случайностью или это реальная, значимая разница. Z-тест работает, наблюдая, на сколько стандартных отклонений наблюдаемая разница отличается от ожидаемой разницы (которая равна нулю, если реальной разницы нет):
z = (x - y)/np.sqrt(x_var/n + y_var/m)
Z-тест дает нам число, называемое p-значением:
p = 1 - norm.cdf(z)
Затем это p-значение распечатывается:
print("P-value is : {}".format(p))
Если p-значение мало (обычно меньше 0,05), мы можем сказать, что разница в среднем количестве лайков между двумя группами, вероятно, не случайность — это реальная разница. Если p-значение велико, мы не можем точно сказать, реальна ли разница или это просто случайность.
Если вы хотите прочитать эту статью и хотите увидеть данные, вот статья.
Что мы здесь делали?
Собственно, здесь мы и сделали Z-Test.
Вот формула z-теста.
z = (x - y) / np.sqrt(x_var/n + y_var/m)
Вот что означает каждая часть формулы:
x
иy
— среднее количество лайков для статей со словом «Биткойн» в заголовке и без него соответственно.x_var
иy_var
— это дисперсии (показатель того, насколько разбросаны лайки) для каждой группы.n
иm
— количество статей в каждой группе.np.sqrt(x_var/n + y_var/m)
— стандартная ошибка разницы между двумя средними значениями. Это мера неопределенности относительно разницы между двумя средними значениями.
Результат, z
, является Z-показателем. Это мера того, на сколько стандартных отклонений наблюдаемая разница между двумя средними значениями (x - y
) отличается от того, что мы ожидали бы, если бы не было реальной разницы (которая равна нулю).
Более высокий Z-показатель (в абсолютном значении) означает, что наблюдаемая разница с меньшей вероятностью будет случайной случайностью и с большей вероятностью будет реальной разницей.
Затем код вычисляет p-значение, связанное с этим Z-показателем, которое представляет собой вероятность наблюдения такого экстремального Z-показателя, если нулевая гипотеза (о том, что реальной разницы нет) верна:
p = 1 - norm.cdf(z)
Р-значение — это распространенный способ определить, является ли результат статистически значимым. Если p-значение мало (обычно меньше 0,05), мы отклоняем нулевую гипотезу и делаем вывод, что существует значительная разница в среднем количестве лайков между статьями со словом «Биткойн» в заголовке и без него.
Хотите увидеть больше?
Надеюсь, вы хотите увидеть больше.
Знаете ли вы, что вероятность того, что в группе из 23 человек дни рождения совпадают хотя бы у двух, составляет 50%?
Если вы хотите прочитать статью об этом, здесь.
Больше, больше, дай мне больше!
Хотите узнать больше о распределении Пуассона?
И у меня еще один вопрос, ты любишь смотреть футбол?
Если оба ответа да, то вот статья для вас.
В этой статье я объясняю, что такое распределение Пуассона, и рассчитываю вероятность совпадения между двумя командами с учетом исторических данных.
Что такое Bootstrapping?
Вы хотите изучить Bootstrapping, а также попытаться предсказать президентские выборы? Идите сюда".
Это просто метод повторной выборки для создания большого количества наборов данных. Так что, если у вас небольшой набор данных и у вас нет времени или денег на сбор данных, этот вариант для вас. Так что давай тут.
Заключительное примечание
На самом деле, я люблю писать о статистике, но я не вижу вашего внимания, которое мне нужно продолжать, поэтому, если вы хотите увидеть больше контента, как указано выше, дайте мне знать, и я продолжу создавать статьи, чтобы научить вас сложным статистическим понятиям. с популярными и легкими примерами, такими как выше.
Мои шпаргалки и исходные коды.
Если вы зашли так далеко, спасибо! Если вы еще не являетесь участником Medium и хотите расширить свои знания с помощью чтения, вот моя реферальная ссылка.
Я постоянно обновляю и добавляю новые шпаргалки и исходные коды для вашего удобства. Недавно я создал шпаргалку по ChatGPT и, честно говоря, не могу вспомнить дня, когда бы я не пользовался ChatGPT с момента его выпуска.
Не стесняйтесь выбрать один из шпаргалок или проектов, которые я отправлю вам, заполнив формы ниже:
Вот моя шпаргалка NumPy.
Вот исходный код проекта данных Как стать миллиардером.
Вот исходный код проекта данных Задача классификации с 6 различными алгоритмами с использованием Python.
Вот исходный код проекта данных Дерево решений в анализе энергоэффективности.
Вот исходный код проекта данных Анализ статей DataDrivenInvestor 2022.
«Машинное обучение — это последнее изобретение, которое когда-либо понадобится человечеству». Ник Бостром