Вопрос:
У меня есть матрица в 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, я бы предложил следующее:
- Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF (X> 0; LN (X); 0)
- Создайте вторую матрицу, которая умножает x и ln (x) матрицу
- Вычислить суммы строк: 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, я бы предложил следующее:
- Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF(X>0;LN(X);0)
- Создайте вторую матрицу, которая умножает матрицу x и ln (x)
- Вычислить суммы строк: 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, я бы предложил следующее:
- Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF (X> 0; LN (X); 0)
- Создайте вторую матрицу, которая умножает матрицу x и ln (x)
- Вычислить суммы строк: СУММ (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
Всем привет!
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 |
Мне нужна формула для этой функции А где увидеть ваши попытки решения этого задания? Если вы хотите ничего не делая получить готовое решение, то я пас, терпеть не могу лентяев и халявщиков.
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).
1 |
13 / 9 / 5 Регистрация: 12.10.2020 Сообщений: 156 |
|
12.03.2023, 18:03 [ТС] |
5 |
Создайте рядом столбец, в первой ячейке напишите «=A1*log(1/A1;2)» жмёте enter и тянете до конци столбца с исходными данными (предполагается, что он начинается с A1). Я так и делал. Создал вопрос чтобы узнать как записать это в одну ячейку
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
12.03.2023, 18:16 |
6 |
Я так и делал в файле покажите
0 |
13 / 9 / 5 Регистрация: 12.10.2020 Сообщений: 156 |
|
12.03.2023, 19:01 [ТС] |
7 |
в файле покажите Вот Миниатюры
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
12.03.2023, 19:55 |
8 |
Сообщение от Fairuza Прошу прощения что позволяю себе вопрос: вы так прикалываетесь?
0 |
13 / 9 / 5 Регистрация: 12.10.2020 Сообщений: 156 |
|
12.03.2023, 20:12 [ТС] |
9 |
Прошу прощения что позволяю себе вопрос: вы так прикалываетесь? Нет. Я создал тему, чтобы узнать: как получить ответ на задачу, используя для этого одну ячейку? несколько следующих задач. Отсюда, спасибо 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)) массивная
1 |
512 / 358 / 104 Регистрация: 31.10.2016 Сообщений: 3,062 |
|
12.03.2023, 20:55 |
15 |
а почему основание логарифма 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 |
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=? Пожалуйста, напишите полную программу, спасибо Формула полной вероятности. Формула Байеса
Формула полной вероятности и формула Байеса Установлено, что 20% банок импортных консервов и 10%… Формула полной вероятности. Формула Байеса Формула полной вероятности и формула Байеса Формула полной вероятности. Формула Байеса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 19 |