Перейти к содержимому

Как посчитать дисперсию в python

  • автор:

Функция variance() модуля statistics в Python, выборочная дисперсия

Выборочная дисперсия от числовой последовательности

Синтаксис:
import statistics statistics.variance(data, xbar=None) 
Параметры:
  • data — данные, последовательность или итерация,
  • xbar=None — среднее значение данных data .
Возвращаемое значение:
  • выборочная дисперсия данных data .
Описание:

Функция variance() модуля statistics возвращает выборочную дисперсию данных data , которые представляют готовую выборку элементов из всей числовой последовательности.

  • Аргумент data может быть последовательностью или итерацией и должна иметь по крайней мере два действительных числа..
  • Если входные данные data пусты, то возникает ошибка StatisticsError .

Дисперсия является мерой изменчивости (разброса) элементов числовой последовательности. Большая дисперсия указывает на то, что данные распределены относительно среднего значения. Небольшая дисперсия указывает на то, что они тесно сгруппированы вокруг среднего значения числовой последовательности.

Если указан необязательный второй аргумент xbar , то это должно быть среднее значение данных data . Если аргумент xbar отсутствует или None (по умолчанию), то среднее арифметическое значение рассчитывается автоматически.

Используйте функцию statistics.variance() , когда данные являются выборкой из элементов числовой последовательности. Смотрите функцию statistics.pvariance() , чтобы вычислить дисперсию всей совокупности числовой последовательности.

Примеры использования функции statistics.variance() :

>>> import statistics >>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5] >>> statistics.variance(data) # 1.3720238095238095 # дисперсию всей числовой последовательности >>> statistics.pvariance(data) # 0.9739583333333334 

Если есть рассчитанное среднее значение данных, то можно передать его как необязательный второй аргумент xbar , чтобы избежать пересчета:

>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5] >>> m = statistics.mean(data) >>> statistics.variance(data, m) # 1.3720238095238095 

Функция statistics.variance() не проверяет переданное значение аргумента xbar на фактическое среднее значение числовой последовательности. Использование произвольных значений для xbar может привести к недействительным или невозможным результатам.

Функция statistics.variance() поддерживает десятичные и дробные значения:

>>> from decimal import Decimal as D >>> statistics.variance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")]) # Decimal('31.01875') >>> from fractions import Fraction as F >>> statistics.variance([F(1, 6), F(1, 2), F(5, 3)]) # Fraction(67, 108) 

Примечание. Значение этой функции представляет собой выборочную дисперсию s² из элементов числовой последовательности с поправкой Бесселя, также известную как дисперсия с N-1 степенями свободы. При условии, что элементы данных репрезентативны (например, независимы и одинаково распределены), то результатом должна быть объективная оценка истинной дисперсии всей числовой последовательности.

Если каким-то образом известно фактическое среднее значение всей числовой последовательности μ , то это значение необходимо передать функции statistics.pvariance() в качестве параметра mu , чтобы получить дисперсию выборки из числовой последовательности.

  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Функция mean() и fmean() модуля statistics, среднее арифметическое
  • Функция geometric_mean() модуля statistics, среднее геометрическое
  • Функция harmonic_mean() модуля statistics, среднее гармоническое
  • Функция median() модуля statistics, медиана последовательности
  • Функция median_low() модуля statistics, наименьшее среднее значение
  • Функция median_high() модуля statistics, наибольшее среднее значение
  • Функция median_grouped() модуля statistics, медиана непрерывных данных
  • Функция mode() модуля statistics, распространенный элемент
  • Функция multimode() модуля statistics, часто встречающиеся элементы
  • Функция pstdev() модуля statistics, стандартное отклонение
  • Функция pvariance() модуля statistics, дисперсия элементов
  • Функция stdev() модуля statistics, выборочное отклонение
  • Функция variance() модуля statistics, выборочная дисперсия
  • Функция quantiles() модуля statistics, интервалы равной вероятности
  • Класс NormalDist() модуля statistics, распределение случайной величины
  • Функция covariance() модуля statistics ковариация данных
  • Функция correlation() модуля statistics, корреляция Пирсона
  • Функция linear_regression() модуля statistics, линейная регрессия

Как рассчитать выборку и дисперсию населения в Python

Дисперсия — это способ измерения разброса значений в наборе данных.

Формула для расчета дисперсии населения :

σ 2 = Σ (xi – μ) 2 / N

  • Σ : символ, означающий «сумма».
  • μ : Среднее значение населения
  • x i : i -й элемент из совокупности
  • N : Численность населения

Формула для расчета выборочной дисперсии :

s 2 = Σ (x i – x ) 2 / (n-1)

Мы можем использовать функции дисперсии и pдисперсии из библиотеки статистики в Python, чтобы быстро вычислить выборочную дисперсию и дисперсию генеральной совокупности (соответственно) для данного массива.

from statistics import variance, pvariance #calculate sample variance variance(x) #calculate population variance pvariance(x) 

В следующих примерах показано, как использовать каждую функцию на практике.

Пример 1: Расчет выборочной дисперсии в Python

Следующий код показывает, как вычислить выборочную дисперсию массива в Python:

from statistics import variance #define data data = [4, 8, 12, 15, 9, 6, 14, 18, 12, 9, 16, 17, 17, 20, 14] #calculate sample variance variance(data) 22.067 

Выборочная дисперсия оказывается равной 22,067 .

Пример 2: Расчет дисперсии населения в Python

Следующий код показывает, как вычислить дисперсию совокупности массива в Python:

from statistics import pvariance #define data data = [4, 8, 12, 15, 9, 6, 14, 18, 12, 9, 16, 17, 17, 20, 14] #calculate sample variance pvariance(data) 20.596 

Дисперсия населения оказывается равной 20,596 .

Примечания по расчету выборки и дисперсии генеральной совокупности

При расчете дисперсии выборки и генеральной совокупности следует учитывать следующее:

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

Дополнительные ресурсы

В следующих руководствах объясняется, как рассчитать другие показатели распространения в Python:

Смещение и дисперсия с использованием Python

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

Что такое смещение и дисперсия?

Смещение – это разница между прогнозируемыми значениями и ожидаемыми результатами. Модель машинного обучения с низким смещением является идеальной моделью, и ожидается, что модель с высоким смещением будет иметь высокий уровень ошибок в обучающих и тестовых наборах.

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

Смещение и дисперсия с использованием Python

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

Вы должны использовать библиотеку scikit-learn в Python для реализации большинства алгоритмов машинного обучения. Но у нее нет функции для вычисления смещения и дисперсии вашей обученной модели. Итак, чтобы рассчитать смещение и дисперсию вашей модели с использованием Python, вам необходимо установить другую библиотеку, известную как mlxtend. Вы можете легко установить ее в своей системе с помощью команды pip:

Теперь давайте обучим модель машинного обучения, а затем посмотрим, как можно рассчитать смещение и дисперсию с помощью Python:

from mlxtend.evaluate import bias_variance_decomp import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.utils import shuffle from sklearn.metrics import mean_squared_error data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/student-mat.csv") data = data[["G1", "G2", "G3", "studytime", "failures", "absences"]] predict = "G3" x = np.array(data.drop([predict], 1)) y = np.array(data[predict]) from sklearn.model_selection import train_test_split xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2) linear_regression = LinearRegression() linear_regression.fit(xtrain, ytrain) y_pred = linear_regression.predict(xtest)

Итак, до сих пор мы обучали модель машинного обучения с использованием алгоритма линейной регрессии, ниже показано, как мы можем вычислить ее:

mse, bias, variance = bias_variance_decomp(linear_regression, xtrain, ytrain, xtest, ytest, loss='mse', num_rounds=200, random_seed=123) print("Average Bias : ", bias) print("Average Variance : ", variance)
Average Bias : 3.909459558063484 Average Variance : 0.07349200663859749

Резюме

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

Python – Измерение дисперсии

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

Оба из них рассчитываются с использованием функций, доступных в библиотеке панд.

Измерение стандартного отклонения

Стандартное отклонение является квадратным корнем дисперсии. дисперсия – это среднее значение квадрата разности значений в наборе данных от среднего значения. В python мы вычисляем это значение с помощью функции std () из библиотеки pandas.

import pandas as pd #Create a Dictionary of series d = 'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack', 'Lee','Chanchal','Gasper','Naviya','Andres']), 'Age':pd.Series([25,26,25,23,30,25,23,34,40,30,25,46]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])> #Create a DataFrame df = pd.DataFrame(d) # Calculate the standard deviation print df.std()

Его вывод выглядит следующим образом –

Age 7.265527 Rating 0.661628 dtype: float64

Измерение асимметрии

Используется для определения того, являются ли данные симметричными или искаженными. Если индекс находится между -1 и 1, то распределение является симметричным. Если индекс не больше -1, то он смещен влево, а если он равен как минимум 1, то он смещен вправо

import pandas as pd #Create a Dictionary of series d = 'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack', 'Lee','Chanchal','Gasper','Naviya','Andres']), 'Age':pd.Series([25,26,25,23,30,25,23,34,40,30,25,46]), 'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])> #Create a DataFrame df = pd.DataFrame(d) print df.skew()

Его вывод выглядит следующим образом –

Age 1.443490 Rating -0.153629 dtype: float64

Таким образом, распределение возрастного рейтинга симметрично, а распределение возраста отклонено вправо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *