Наследник Тутти капризен: когда королевский повар приносит
ему блюдо, он либо соглашается попробовать его (обозначим
такой ответ 1), либо отказывается (0). Перед каждой попыткой три
толстяка смотрят на блюдо и высказывают своё мнение о том, нравится ли
оно наследнику.
Продвинутый королевский повар ведёт таблицу, которую вы можете скачать
в одном из трёх форматов: XLSX, ODS, CSV.
В каждой строке записаны четыре целых числа, каждое
из которых равно 0 или 1: ответы
трёх толстяков n1, n2, n3 и решение Тутти y. На основании мнений толстяков
повар по правилу большинства делает предположение y^ о том, будет ли
попробовано блюдо: если хотя бы два толстяка считают, что
Тутти согласится (1), то повар тоже предполагает согласие (1), иначе — отказ
(0):
Значения y^ повар записывал в отдельный столбец, но случайно стёр
данные и теперь пытается их восстановить. В скольких строках
предположение повара y^ совпадало с решением наследника y?
Классическая задача: повар предсказывает y^ по правилу большинства трёх мнений n1, n2, n3. y^ = 1, если сумма n1+n2+n3 >= 2; иначе y^ = 0. Нужно посчитать, в скольких строках этот прогноз совпал с фактическим решением Тутти y (0 или 1).
Что сделать, если файл с данными есть или нет
- Что дано в файле: в каждой строке 4 целых числа 0 или 1 в таком порядке: n1, n2, n3, y.
- Что нужно посчитать: количество строк, в которых y^ = y.
Пошаговое объяснение (для понимания)
1) Вычислите y^ по каждому ряду: суммируйте три числа n1, n2, n3.
2) Преобразуйте сумму в прогноз повара: если сумма >= 2, то y^ = 1, иначе y^ = 0.
3) Сравните получившееся y^ с y. Если они совпадают, считайте строку как совпавшую.
4) Подсчёт: просуммируйте число совпавших строк.
Формула для y^
- y^ = 1, если n1 + n2 + n3 >= 2
- y^ = 0, если n1 + n2 + n3 <= 1
Рраспределение по форматам (практические инструкции)
1) CSV/Excel/ODS (пошагово в Excel/Sheets)
- Пусть столбцы:
- A: n1, B: n2, C: n3, D: y
- В столбце E добавьте формулу для y^:
- E2: =IF((A2+B2+C2)>=2, 1, 0)
- В столбце F добавьте формулу для совпадения:
- F2: =IF(D2=E2, 1, 0)
- Протяните формулы вниз по всем строкам.
- Сумма совпавших строк:
- В любом пустом месте введите: =SUM(F2:F1000) или используйте диапазон, соответствующий числу строк в вашем файле.
Альтернатива без двух столбцов:
- Можно обойтись одной формулой в столбце E (для y^) и затем посчитать совпадения через суммирование: =SUMPRODUCT(--(D2:D1000 = (A2:A1000+B2:B1000+C2:C1000 >= 2)))
Но обычно понятнее заводить отдельный столбец для y^.
2) OpenDocument Spreadsheet (ODS)
- Принципы такие же, как и в Excel.
- Формула в ODS: =IF((A2+B2+C2)>=2; 1; 0) (разделитель аргументов может быть точкой с запятой)
- Остальное аналогично: столбец совпадений и итоговая сумма.
3) Python (для больших файлов)
- Пример кода (CSV файл data.csv с колонками n1,n2,n3,y):
import csv
matches = 0
total = 0
with open('data.csv', newline='') as f:
rdr = csv.reader(f)
for row in rdr:
n1, n2, n3, y = map(int, row)
y_hat = 1 if (n1 + n2 + n3) >= 2 else 0
if y_hat == y:
matches += 1
total += 1
print("Совпавших строк:", matches, "из", total)
4) Python (pandas, более удобно для больших наборов)
- Пример:
import pandas as pd
df = pd.read_csv('data.csv') # колонки: n1, n2, n3, y
df['y_hat'] = (df[['n1','n2','n3']].sum(axis=1) >= 2).astype(int)
matches = (df['y_hat'] == df['y']).sum()
print(matches)
5) Советы по ошибкам
- Убедитесь, что значения действительно 0 или 1 в n1, n2, n3 и y.
- Проверьте диапазон строк при суммировании столбцов.
- Если данные начинаются не с первой строки (есть заголовок), учтите это: начинайте формулы с соответствующей строки.
Пример на практике (маленький набор данных)
Допустим, у вас 5 строк:
- 1) n1=1, n2=1, n3=0, y=1 → сумма=2 → y^=1 → совпало
- 2) n1=0, n2=1, n3=0, y=0 → сумма=1 → y^=0 → совпало
- 3) n1=1, n2=0, n3=1, y=0 → сумма=2 → y^=1 → не совпало
- 4) n1=0, n2=0, n3=1, y=0 → сумма=1 → y^=0 → совпало
- 5) n1=1, n2=1, n3=1, y=1 → сумма=3 → y^=1 → совпало
Итог: совпали в 4 из 5 строк.
Что нужно от вас дальше
- Загрузите файл (XLSX, ODS или CSV) или вставьте сюда несколько строк из него (4 числа на строку: n1 n2 n3 y).
- Я посчитаю точное число строк, в которых предсказание y^ совпало с y, и кратко поясню результат.
- Если хотите, могу привести готовые формулы именно под ваш файл (укажете, какие столбцы соответствуют n1, n2, n3, y).