Warning: mkdir(): No space left on device in /var/www/hottg/post.php on line 59

Warning: file_put_contents(aCache/aDaily/2025-07-22/post/devsp/--): Failed to open stream: No such file or directory in /var/www/hottg/post.php on line 72
πŸ‘©β€πŸ’» Поиск ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ разбиСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΏΠΎ энтропии (ID3-style) @Data Science | Machinelearning [ru]
TG Telegram Group & Channel
Data Science | Machinelearning [ru] | United States America (US)
Create: Update:

πŸ‘©β€πŸ’» Поиск ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ разбиСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΏΠΎ энтропии (ID3-style)

Π£ вас Π΅ΡΡ‚ΡŒ бинарная цСлСвая пСрСмСнная y (список ΠΈΠ· 0 ΠΈ 1) ΠΈ числовой ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ x (Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹). НуТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ best_split(x, y), которая Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°, ΠΏΡ€ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ (мСньшС/большС) Π±ΡƒΠ΄Π΅Ρ‚ максимально ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π° энтропия классов.

Π˜Π½Ρ‹ΠΌΠΈ словами, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ threshold, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ дСлятся Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ x, ΠΈ Ρƒ этих Π³Ρ€ΡƒΠΏΠΏ наимСньшая срСдняя энтропия. Π­Ρ‚ΠΎ базовая опСрация Π² построСнии Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ID3.

ЦСль:

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ threshold, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ (наимСньшСС) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡ€Π΅Π΄Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠΉ энтропии.


РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈπŸ”½

import numpy as np

def entropy(labels):
if len(labels) == 0:
return 0
p = np.bincount(labels) / len(labels)
return -np.sum([pi * np.log2(pi) for pi in p if pi > 0])

def best_split(x, y):
x = np.array(x)
y = np.array(y)
thresholds = sorted(set(x))
best_entropy = float('inf')
best_thresh = None

for t in thresholds:
left_mask = x <= t
right_mask = x > t
left_entropy = entropy(y[left_mask])
right_entropy = entropy(y[right_mask])
w_left = np.sum(left_mask) / len(x)
w_right = 1 - w_left
avg_entropy = w_left * left_entropy + w_right * right_entropy

if avg_entropy < best_entropy:
best_entropy = avg_entropy
best_thresh = t

return best_thresh

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
x = [2, 4, 6, 8, 10, 12]
y = [0, 0, 1, 1, 1, 1]

print(best_split(x, y))
# ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 4 ΠΈ 6 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 6), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π΄Π΅Π»ΠΈΡ‚ классы

πŸ‘©β€πŸ’» Поиск ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ разбиСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΏΠΎ энтропии (ID3-style)

Π£ вас Π΅ΡΡ‚ΡŒ бинарная цСлСвая пСрСмСнная y (список ΠΈΠ· 0 ΠΈ 1) ΠΈ числовой ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ x (Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹). НуТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ best_split(x, y), которая Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°, ΠΏΡ€ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ (мСньшС/большС) Π±ΡƒΠ΄Π΅Ρ‚ максимально ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π° энтропия классов.

Π˜Π½Ρ‹ΠΌΠΈ словами, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ threshold, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ дСлятся Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ x, ΠΈ Ρƒ этих Π³Ρ€ΡƒΠΏΠΏ наимСньшая срСдняя энтропия. Π­Ρ‚ΠΎ базовая опСрация Π² построСнии Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ID3.

ЦСль:

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ threshold, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ (наимСньшСС) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡ€Π΅Π΄Π½Π΅Π²Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠΉ энтропии.


РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈπŸ”½

import numpy as np

def entropy(labels):
if len(labels) == 0:
return 0
p = np.bincount(labels) / len(labels)
return -np.sum([pi * np.log2(pi) for pi in p if pi > 0])

def best_split(x, y):
x = np.array(x)
y = np.array(y)
thresholds = sorted(set(x))
best_entropy = float('inf')
best_thresh = None

for t in thresholds:
left_mask = x <= t
right_mask = x > t
left_entropy = entropy(y[left_mask])
right_entropy = entropy(y[right_mask])
w_left = np.sum(left_mask) / len(x)
w_right = 1 - w_left
avg_entropy = w_left * left_entropy + w_right * right_entropy

if avg_entropy < best_entropy:
best_entropy = avg_entropy
best_thresh = t

return best_thresh

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
x = [2, 4, 6, 8, 10, 12]
y = [0, 0, 1, 1, 1, 1]

print(best_split(x, y))
# ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 4 ΠΈ 6 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 6), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π΄Π΅Π»ΠΈΡ‚ классы
Please open Telegram to view this post
VIEW IN TELEGRAM
❀2


>>Click here to continue<<

Data Science | Machinelearning [ru]




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)


Warning: Undefined array key 3 in /var/www/hottg/function.php on line 115

Fatal error: Uncaught mysqli_sql_exception: Too many connections in /var/www/db.php:16 Stack trace: #0 /var/www/db.php(16): mysqli_connect() #1 /var/www/hottg/function.php(212): db() #2 /var/www/hottg/function.php(115): select() #3 /var/www/hottg/post.php(351): daCache() #4 /var/www/hottg/route.php(63): include_once('...') #5 {main} thrown in /var/www/db.php on line 16