Рубрики
Без рубрики

Как получить ряд с минимальной дисперсией в Numpy

Это решение нуждается только одна строка кода (Python One-LiLer)!

Автор оригинала: Chris.

Возможно, вы прочитали о «V» в больших данных: объем, скорость, разнообразие, правдивость, ценность, волатильность.

Дисперсия еще одна важная «V» (она измеряет волатильность набора данных). На практике дисперсия является важной мерой с важными доменами применения в финансовых услугах, прогнозировании погоды и обработки изображений. Дисперсия измеряет, сколько данных распространяется вокруг его среднего в одно- или многомерном пространстве. Вы увидите графический пример в мгновение.

Фактически, дисперсия является одной из самых важных свойств в машинном обучении. Он захватывает шаблоны данных в обобщенной манере – и изучение машины все о распознавании шаблона.

Многие алгоритмы обучения машины полагаются на дисперсию в одной или другой форме. Например, компромисс смещения-дисперсии является хорошо известной проблемой в изучении машины: сложные модели машинного обучения рискуют переполнять данные (высокую дисперсию), но они представляют собой данные о тренировках очень точно (низкая смещение). С другой стороны, простые модели часто обобщены хорошо (низкая дисперсия), но не представляют данные точно (высокое предвзятость).

Основы

Дисперсия – это простое статистическое свойство, которое захватывает, сколько набор данных распространяется от его среднего.

Вот пример сюжета с двумя наборами данных: одна с низкой дисперсией и одна с высокой дисперсией.

Фигура иллюстрирует цены на акции двух компаний. Цена акций Tech Startup сильно колеблется вокруг его среднего. Цена акций продовольственной компании довольно стабильна и колеблется только в незначительных способах в среднем. Другими словами, Tech Startup имеет высокую дисперсию, продовольственная компания имеет низкую дисперсию.

В математических терминах вы можете рассчитать дисперсию var (x) набора численных значений Х Используя следующую формулу:

Код

Когда стало старше, обычно рекомендуется снизить общий риск вашего инвестиционного портфеля. Согласно традиционным инвестиционным советам, вы должны рассмотреть акции с нижней дисперсией как менее рискованные инвестиционные автомобили. Вы можете потерять меньше денег при инвестировании в крупную компанию, чем в небольшом стартапе. (Давайте не будем обсуждать достоверность этого совета здесь.)

Цель этого одноклассник это определить акции в вашем портфеле, который имеет минимальную дисперсию. Инвестируя больше денег в этот запас, вы можете ожидать более низкую общую дисперсию вашего портфолио.

## Dependencies
import numpy as np

## Data (rows: stocks / cols: stock prices)
X = np.array([[25,27,29,30],
              [1,5,3,2],
              [12,11,8,3],
              [1,1,2,2],
              [2,6,2,2]])


## One-liner
# Find the stock with smallest variance
min_row = min([(i,np.var(X[i,:])) for i in range(len(X))], key=lambda x: x[1])


## Result & puzzle
print("Row with minimum variance: " + str(min_row[0]))
print("Variance: " + str(min_row[1]))

Головоломка : Что такое вывод этого кода фрагмент?

Результаты, достижения

Как обычно, мы сначала определим данные, на которых мы запускаем одноклассник. Numpy Array Х Содержит пять строк (одна строка на склад в вашем портфолио) с четырьмя значениями на ряд (цены на акции).

Цель состоит в том, чтобы найти идентификатор и дисперсию запасов с минимальной дисперсией. Следовательно, внешняя функция одноклассника является мин () функция. Мы выполняем мин Функция на последовательности кортежи (a, b) Где первая ценность кортежа А Является ли индекс строки (фондовый индекс) и второе значение кортежа B это дисперсия строки.

Вы можете спросить: Какое минимальное значение последовательности кортежей? Конечно, нам нужно правильно определить эту операцию, прежде чем использовать его. С этой целью мы используем ключевой аргумент мин () функция. ключ Аргумент принимает функцию, которая возвращает сопоставимое значение объекта, учитывая значение последовательности. Опять же, наши значения последовательности являются кортежими – и нам нужно найти кортеж с минимальной дисперсией (второе значение кортежа). Следовательно, мы возвращаем вторую ценность кортежа х [1] в качестве основы для сравнения. Другими словами, кортеж с минимальными второго значения кортежного значения выигрывает. Это кортеж с минимальной дисперсией.

Давайте посмотрим, как мы создаем последовательность ценностей кортежей.

Мы используем Понимание списка Чтобы создать кортеж для любого строкого индекса (акции). Первый элемент кортежа – это просто индекс ряд Я Отказ Второй элемент кортежа – это дисперсия этой строки. Мы используем Numpy var () Функция в сочетании с нарезка рассчитать дисперсию строки.

Если вы хотите подробно учиться о функции Numpy Diance, посмотрите следующее видео:

Давайте вернемся к коду. Результат одноклассника:

"""
Row with minimum variance: 3
Variance: 0.25
"""

Я хотел бы добавить, что есть альтернативный способ решения этой проблемы. Если эта статья не была о Python One-Liners, я бы предпочел следующее решение вместо одноклассника:

var = np.var(X, axis=1)
min_row = (np.where(var==min(var)), min(var))

В первой строке мы рассчитываем дисперсию MUMPY Array Х вдоль колонн ( ось = 1 ). Во второй строке мы создаем кортеж. Первая ценность кортежа – это индекс минимального элемента в массиве дисперсии. Второе кортеж ценит его минимальным элементом в массиве отклонения.

Это решение более читаемо и использует существующие реализации, которые обычно более эффективны.

Куда пойти отсюда?

Вы чувствуете, что вам нужно почистить свои навыки Python? Без проблем. Просто скачивайте мои популярные читы Python Cheat (десятки тысяч кодеров уже сделали это). Распечатать их и опубликуйте их в свою офисную стену!

Python One-LiLERS Книга: сначала мастер по одной линии!

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас, как читать и писать “одноклассники”: Краткие заявления полезной функциональности упакованы в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

Пять главных глав Книги покрывают (1) Советы и трюки, (2) Регулярные выражения, (3) Машинное обучение, (4) Основные темы науки о данных и (5) Полезные алгоритмы.

Подробные объяснения одноклассников вводят Ключевые компьютерные науки концепции и повысить ваши кодирование и аналитические навыки Отказ Вы узнаете о продвинутых функциях Python, такие как Понимание списка , нарезка , лямбда функции , Регулярные выражения , карта и Уменьшить Функции и Срежительные задания Отказ

Вы также узнаете, как:

  • Используйте структуры данных для Решить реальные проблемы , как использовать булевую индексацию, чтобы найти города с загрязнением выше среднего
  • Использовать Numpy Основы такие как массив , Форма , Ось , Тип , вещание , Расширенная индексация , нарезка , сортировка , поиск , Агрегация и статистика
  • Рассчитайте Basic статистика многомерных массивов данных и алгоритмы K-означает для немецкого обучения
  • Создать больше Усовершенствованные регулярные выражения Использование группировка и названные группы , Отрицательный взгляд , Сбежавшие персонажи , Пробелы, наборы персонажейотрицательные персонажи наборы ), а Жадные/негреюные операторы
  • Понять широкий ассортимент Темы компьютерных наук , в том числе Анаграммы , Палиндромы , Supersets , Перестановки , факториалы , Простые номера , Фибоначчи Числа, запутывание , поиск и Алгоритмическая сортировка

К концу книги вы будете знать, как Напишите Python на самых изысканных И создайте краткие, красивые кусочки «Python Art» в просто одной линии.

Получите свой Python One-Liners на Amazon !!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.