Как посчитать энтропию в excel

Вопрос:

У меня есть матрица в excel. Мне нужно нормализовать строки, а затем вычислить энтропию каждой строки (рассматривая ее как распределение вероятности).

Например, предположим, что моя матрица:

2   0   3   5
0   1   0   0
1   0   3   2

После нормализации строки матрица становится:

0.2000         0    0.3000    0.5000
0    1.0000         0         0
0.1667         0    0.5000    0.3333

Предполагая, что каждая строка является распределением вероятности, энтропия каждой строки:

1.0297
0
1.0114

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

Можно ли это сделать в Excel?

Примечание. Энтропия распределения вероятности определяется как:

H(X) = sum over all x {-p(x) * log(p(x))}

Лучший ответ:

Если у вас есть исходная матрица в A1: D3, попробуйте эту формулу в F1

=SUM(-A1:D1/SUM(A1:D1)*IF(A1:D1<>0,LN(A1:D1/SUM(A1:D1))))

подтвержденный CTRL + SHIFT + ENTER (так что фигурные скобки появляются вокруг формулы в строке формулы)

копировать в F3

Ответ №1

Предполагая, что ваша энтропия определяется x ln x, я бы предложил следующее:

  1. Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF (X> 0; LN (X); 0)
  2. Создайте вторую матрицу, которая умножает x и ln (x) матрицу
  3. Вычислить суммы строк: SUM (A1: A4)

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

У меня есть матрица в Excel. Мне нужно нормализовать строки, а затем рассчитать энтропию каждой строки (рассматривая это как распределение вероятностей).

Например, предположим, что моя матрица:

2   0   3   5
0   1   0   0
1   0   3   2

После нормализации строки матрица становится:

0.2000         0    0.3000    0.5000
     0    1.0000         0         0
0.1667         0    0.5000    0.3333

Предполагая, что каждая строка является распределением вероятностей, энтропия каждой строки:

1.0297
     0
1.0114

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

Возможно ли это сделать в Excel?

Примечание: энтропия распределения вероятностей определяется как:

H(X) = sum over all x {-p(x) * log(p(x))}

2012-09-21 17:52

2

ответа

Решение

Если у вас есть исходная матрица в A1:D3, попробуйте эту формулу в F1

=SUM(-A1:D1/SUM(A1:D1)*IF(A1:D1<>0,LN(A1:D1/SUM(A1:D1))))

подтверждается сочетанием клавиш CTRL+SHIFT+ENTER (чтобы фигурные скобки появлялись вокруг формулы в строке формул)

скопировать в F3

2012-09-21 18:16

Предполагая, что ваша энтропия определяется как x ln x, я бы предложил следующее:

  1. Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF(X>0;LN(X);0)
  2. Создайте вторую матрицу, которая умножает матрицу x и ln (x)
  3. Вычислить суммы строк: SUM(A1:A4)

Однако я не знаю, как это сделать без промежуточных матриц. Зачем тебе это?

2012-09-21 17:56

Из -за потребностей проекта необходимо оценить предпочтения пользователя для определенного продукта в виде результатов. Я собрал некоторую информацию в Интернете, а затем сделал ее с Excel и Python для достижения этого.

Оглавление

    • 1. Введение в метод значения энтропии
    • 2. Шаги расчета
      • 1. Стандартизация данных
      • 2. Рассчитайте долю первой записи в соответствии с индикаторами элементов.
      • 3. Рассчитайте значение энтропии ITEM J INDICATOR
      • 4. Рассчитайте коэффициент различия индикатора элемента J
      • 5. Рассчитайте вес предмета J Индекс
    • В -третьих, внедрение Python
    • 4. Реализация Excel
      • 1. Стандартизация данных
      • 2. Рассчитайте долю первой записи в соответствии с индикаторами элементов.
      • 3. Рассчитайте значение энтропии ITEM J INDICATOR
      • 4. Рассчитайте вес предмета J Индекс
      • 5. Re -Score

1. Введение в метод значения энтропии

Значение энтропии является одним из классических алгоритмов, которые рассчитывают вес индекса. Он относится к математическому методу, используемому для определения степени дискретности определенного индикатора. Чем больше степень дискретного, тем больше объема информации, тем меньше неопределенность и чем меньше энтропия; тем меньше объем информации, тем больше неопределенность и чем больше энтропия. В соответствии с характеристиками энтропии, оценивая случайность и расстройство события путем расчета значения энтропии, и вы также можете использовать значение энтропии, чтобы определить степень дискретного по определенному индикатору. Big.

2. Шаги расчета

1. Стандартизация данных

Данные — это матрица m*n, где n характеризуется номером, m — номер записи

Стандартизировать

2. Рассчитайте долю первой записи в соответствии с индикаторами элементов.

3. Рассчитайте значение энтропии ITEM J INDICATOR

4. Рассчитайте коэффициент различия индикатора элемента J

5. Рассчитайте вес предмета J Индекс

В -третьих, внедрение Python

import pandas as pd
import numpy as np
from numpy import array

# Читать данные
doctor = pd.read_csv(r'D:  Workspace  Pythonwork  Python Learning  Maning Baseline  Rights Rights.)
index = doctor['Раздел']
doctor = doctor.drop(['Раздел'],axis = 1)

#Определить метод значения энтропии
def cal_weight(x):
    «Метод значения энтропии» Рассчитайте вес переменной '' '' ''
    #    
    x = x.apply(lambda x: ((x - np.min(x)) / (np.max(x) - np.min(x))))
 
    #   k
    rows = x.index.size  # Строка
    cols = x.columns.size  # Список
    k = 1.0 / math.log(rows)
 
    lnf = [[None] * cols for i in range(rows)]
 
    # Матричный расчет--
    #   Энтропия
    # p=array(p)
    x = array(x)
    lnf = [[None] * cols for i in range(rows)]
    lnf = array(lnf)
    for i in range(0, rows):
        for j in range(0, cols):
            if x[i][j] == 0:
                lnfij = 0.0
            else:
                p = x[i][j] / x.sum(axis=0)[j]
                lnfij = math.log(p) * p * (-k)
            lnf[i][j] = lnfij
    lnf = pd.DataFrame(lnf)
    E = lnf
 
    #Clouging избыточный
    d = 1 - E.sum(axis=0)
    #Наденьте веса каждого индикатора
    w = [[None] * 1 for i in range(cols)]
    for j in range(0, cols):
        wj = d[j] / sum(d)
        w[j] = wj
        # Рассчитайте комплексную оценку каждой выборки, используйте наиболее примитивные данные
    
    w = pd.DataFrame(w)
    w.columns = ['weight']
    w.index = doctor.columns
    return w
w = cal_weight(doctor)  #Cal_weight
print(w)
print('Беги полным!)

# Расчет баллов
array1 = np.array(doctor)
array2 = np.array(w)
score = array1.dot(array2)
score = pd.DataFrame(score)
score.columns = ['score']
score.index = index
print(score)

4. Реализация Excel

1. Стандартизация данных

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

Формула: (B2 -минутная (B $ 2: B $ 12))/(Макс (B $ 2: B $ 12) -min (B $ 2: B $ 12))

2. Рассчитайте долю первой записи в соответствии с индикаторами элементов.

Формула: M2/Sum (M $ 2: M $ 12)

3. Рассчитайте значение энтропии ITEM J INDICATOR


Формула: =-$ $ 14*Сумма (B $ 16: B $ 26)

4. Рассчитайте вес предмета J Индекс

Формула: (1-M17)/(9-Sum ($ m 17 : 17: 17:U$17))

5. Re -Score

Имею матрицу в excel. Мне нужно нормализовать строки, а затем вычислить энтропию каждой строки (рассматривая это как распределение вероятностей).

Например, предположим, что моя матрица:

2   0   3   5
0   1   0   0
1   0   3   2

После нормализации строк матрица становится:

0.2000         0    0.3000    0.5000
     0    1.0000         0         0
0.1667         0    0.5000    0.3333

Предполагая, что каждая строка представляет собой распределение вероятностей, энтропия каждой строки равна:

1.0297
     0
1.0114

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

Можно ли это сделать в Excel?

Примечание: энтропия распределения вероятностей определяется как:

H(X) = sum over all x {-p(x) * log(p(x))}

2 ответа

Лучший ответ

Если у вас есть исходная матрица в A1: D3, попробуйте эту формулу в F1

=SUM(-A1:D1/SUM(A1:D1)*IF(A1:D1<>0,LN(A1:D1/SUM(A1:D1))))

Подтверждается нажатием CTRL + SHIFT + ENTER (чтобы вокруг формулы в строке формул появлялись фигурные скобки)

Скопировать в F3


5

barry houdini
21 Сен 2012 в 22:16

Предполагая, что ваша энтропия определяется x ln x, я бы предложил следующее:

  1. Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF (X> 0; LN (X); 0)
  2. Создайте вторую матрицу, которая умножает матрицу x и ln (x)
  3. Вычислить суммы строк: СУММ (A1: A4)

Однако я не знаю, как это сделать без промежуточных матриц. Зачем тебе это нужно?


1

krlmlr
21 Сен 2012 в 21:56

Добрый день, вопрос довольно специфичный, не уверен что могу даже верно сформулировать его для поиска на вашем необъятном форуме.

Задача — расчет энтропии лейкоцитарной формулы по адаптированной формуле Шеннона для неполной группы показателей.

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

Целевая формула в текстовом виде выглядит следующим образом

h= H/Hmax

H= — Cумма Ai/100 x log2 Ai/100
Hmax = log2 n

h- относительная энтропия
H — энтропия
Hmax — предельная энтропия

Ai — процентное содержание группы лейкоцитов

n — количество групп лейкоцитов. В идеале должно быть 6, в исследовании доступно 5. ЕСЛИ какая либо из групп имеет значение A=0, то и предельную энтропию приходится уменьшать на одну группу и, собственно, считать относительную величину нежели строить выводы на базе непосредственно энтропии.

Проблема возникла при расчете H
моя текущая формула выглядит следующим образом

Код

=-СУММПРОИЗВ((A2:E2)/100;LOG((A2:E2)/100;2))/LOG(5;2)

источник проблемы LOG((A2:E2)/100;2)) если исходные данные содержат 0, расчет выдает ошибку ибо нелья посчитать логарифм нуля.

как можно исключить из диапазона ячейки содержащие ноль?

В конкретной подвыборке такой случай всего один, но в дальнейшем нули будут возникать повсеместно.

13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

1

Формула информационной энтропии

12.03.2023, 16:02. Показов 421. Ответов 18


Студворк — интернет-сервис помощи студентам

Всем привет!
У меня есть функция. Значения переменной p записываются в строчку
https://www.cyberforum.ru/cgi-bin/latex.cgi?H=-sum _{i=1}^{n} p_{i}*log(1/p_{i})
Мне нужна формула для этой функции



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

12.03.2023, 16:02

18

344 / 206 / 78

Регистрация: 16.07.2020

Сообщений: 589

12.03.2023, 16:51

2

Цитата
Сообщение от Gasych
Посмотреть сообщение

Мне нужна формула для этой функции

А где увидеть ваши попытки решения этого задания? Если вы хотите ничего не делая получить готовое решение, то я пас, терпеть не могу лентяев и халявщиков.



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 16:53

 [ТС]

3

Это не задание. Я обратился к знающим людям как можно сделать для данной функции формулу



0



512 / 358 / 104

Регистрация: 31.10.2016

Сообщений: 3,062

12.03.2023, 17:22

4

Создайте рядом столбец, в первой ячейке напишите «=A1*log(1/A1;2)» жмёте enter и тянете до конци столбца с исходными данными (предполагается, что он начинается с A1).
Потом, в любой свободной ячейке пиите «=-СУММ(B1:B100)» и жмёте enter. В ней будет искомое значение.



1



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 18:03

 [ТС]

5

Цитата
Сообщение от Alexis333
Посмотреть сообщение

Создайте рядом столбец, в первой ячейке напишите «=A1*log(1/A1;2)» жмёте enter и тянете до конци столбца с исходными данными (предполагается, что он начинается с A1).
Потом, в любой свободной ячейке пиите «=-СУММ(B1:B100)» и жмёте enter. В ней будет искомое значение.

Я так и делал. Создал вопрос чтобы узнать как записать это в одну ячейку



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

12.03.2023, 18:16

6

Цитата
Сообщение от Gasych
Посмотреть сообщение

Я так и делал

в файле покажите



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 19:01

 [ТС]

7

Цитата
Сообщение от Fairuza
Посмотреть сообщение

в файле покажите

Вот

Миниатюры

Формула информационной энтропии
 



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

12.03.2023, 19:55

8

Цитата
Сообщение от Gasych
Посмотреть сообщение

Сообщение от Fairuza
в файле покажите
Вот

Прошу прощения что позволяю себе вопрос: вы так прикалываетесь?



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 20:12

 [ТС]

9

Цитата
Сообщение от Fairuza
Посмотреть сообщение

Прошу прощения что позволяю себе вопрос: вы так прикалываетесь?

Нет. Я создал тему, чтобы узнать: как получить ответ на задачу, используя для этого одну ячейку?
У меня нет цели становиться гуру excel и узнать все доступные в нем функции. Мне и так хватает моих познаний в нем, чтобы решить эту и

несколько

следующих задач.
Не понимаю чем таким я затриггерил вас и AlexOld. Если не знаете как ответить на вопрос в моей теме, то зачем накручивать сообщения? Если знаете, но не говорите потому что я «лентяй» и «халявщик», опять же, зачем накручивать сообщения?

Отсюда, спасибо Alexis333 за ваш ответ



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

12.03.2023, 20:15

10

Gasych, вы на ветке Excel, следовательно файл надо прикладывать соответствующий



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 20:24

 [ТС]

11

Вот



0



512 / 358 / 104

Регистрация: 31.10.2016

Сообщений: 3,062

12.03.2023, 20:33

12

Gasych, единственное, что приходит на ум — то макрос в VBA. Редактор открывается Alt+F11. Там можно записать исходные данные с листа в массив, обсчитать, и вывести в нужную ячейку. Недостаток — при открытии документа будет вылетать предупреждение, что документ содержит макросы и запуск небезопасен. А пПросто с помощью формулы, не уверен, что можно такое сделать.



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 20:38

 [ТС]

13

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



0



195 / 134 / 64

Регистрация: 21.09.2016

Сообщений: 530

12.03.2023, 20:46

14

Gasych, а строка с p уже есть? тогда

Код

=-SUM(B3:G3*LOG(1/B3:G3;2))

массивная
а почему основание логарифма 2? по картинке я бы решил, что 10



1



512 / 358 / 104

Регистрация: 31.10.2016

Сообщений: 3,062

12.03.2023, 20:55

15

Цитата
Сообщение от Garic73
Посмотреть сообщение

а почему основание логарифма 2

потому, что энтропию принято измеряеть в битах



1



195 / 134 / 64

Регистрация: 21.09.2016

Сообщений: 530

12.03.2023, 20:59

16

Alexis333, спасибо, за разъяснение, так ряд р тоже как то задан или высчитывается?



0



13 / 9 / 5

Регистрация: 12.10.2020

Сообщений: 156

12.03.2023, 21:15

 [ТС]

17

Цитата
Сообщение от Garic73
Посмотреть сообщение

Alexis333, спасибо, за разъяснение, так ряд р тоже как то задан или высчитывается?

Ряд p задается по условию. p(i) это вероятность возникновения события x(i), под событием может быть возникновение ошибки из-за воздействия помех при передачи информации по каналу связи. Однако, если по условию не у каждого события задана вероятность, то ее (по крайней мере в моей задаче) необходимо подобрать таким образом, чтобы сумма всех p(i) была равна 1



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

12.03.2023, 21:43

18

Garic73, а я раскидала сначала)))

Код

=-СУММ(LOG(1^B3:G3;2)-LOG(B3:G3^B3:G3;2))



0



195 / 134 / 64

Регистрация: 21.09.2016

Сообщений: 530

12.03.2023, 21:50

19

Fairuza, я так давно имел дело с логарифмами, что не решился. Сделал как написано.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

12.03.2023, 21:50

Помогаю со студенческими работами здесь

Паскаль, формула процентов. Дана формула An=Ao(1+p/100)^n найти P=? Пожалуйста, напишите полную программу, спасибо

Формула полной вероятности. Формула Байеса
В медицине установлен факт, что некоторое тяжелое неврологическое заболевание в разной степени…

Формула полной вероятности. Формула Байеса
Здравствуйте. Помогите, пожалуйста, с заданием: Счетчик регистрирует частицы трех типов: a , b , y…

Формула полной вероятности и формула Байеса
Помогите с решением пожалуйста.

Установлено, что 20% банок импортных консервов и 10%…

Формула полной вероятности. Формула Байеса
Из урны, где было 4 белых и 6 черных шаров, потерян один шар неизвестного цвета.
После этого из…

Формула полной вероятности и формула Байеса
Помогите, пожалуйста.
Два филателиста А и В, имеющие соответственно a и b марок, играют в…

Формула полной вероятности. Формула Байеса
3.5. На четырех станках при одинаковых и независимых условиях изготавливают детали одного…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

19

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как посчитать цену в долларах в excel
  • Как посчитать элементы в excel
  • Как посчитать целые числа в excel
  • Как посчитать эксцесс excel
  • Как посчитать целевую функцию в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии