Path: blob/main/C2 - Advanced Learning Algorithms/week4/optional labs/__pycache__/utils.cpython-37.pyc
3742 views
B
���c# � @ s� d dl mZ d dlZd dlmZ d dlmZ d dl Z
d dlmZm
Z
ej�d� dd� Zdd � Zd
d� Zdd
� Zdd� Zdd� Zdd� Zdd� Zdd� ZdS )� )�ImageN)�graphviz_layout)�Slider�Buttonz./deeplearning.mplstylec C sj d}t | �dkrdS t| | dk �t | � }|dks<|dkr@dS | t�|� d| t�d| � S d S )Nr � )�len�sum�np�log2)�y�entropy� r
�/home/jovyan/work/utils.py�compute_entropy s r c C sD g }g }x2|D ]*}| | | dkr.|� |� q|� |� qW ||fS )Nr )�append)�X�node_indices�feature�left_indices�
right_indices�ir
r
r �
split_dataset s
r c C s� t | ||�\}}| | || }}| | || }} | | || }
}d}t|�}
t| �}t|�}t|�t|� }t|
�t|� }|| || }|
| }|S )Nr )r r r )r r r r r r ZX_nodeZy_nodeZX_leftZy_leftZX_rightZy_rightZinformation_gainZnode_entropyZleft_entropyZ
right_entropyZw_leftZw_rightZweighted_entropyr
r
r �compute_information_gain% s r c C sF | j d }d}d}x.t|�D ]"}t| |||�}||kr|}|}qW |S )Nr �����r )�shape�ranger )r r r Znum_features�best_featureZ
max_info_gainr Z info_gainr
r
r �get_best_split9 s
r c C s� ||kr,d| d| }t |d| |� d S t| ||�}d| }t d||||f � t| ||�\} }
|�| |
|f� t| || d||d |� t| ||
d||d |� |S )N� �-z%s leaf node with indicesz%%s Depth %d, %s: Split on feature: %d�Leftr �Right)�printr r r �build_tree_recursive)r r r Zbranch_name� max_depthZ
current_depth�treeZ
formattingr r r r
r
r r# I s r# c
C s� dd� | D �}dd� |D �}t dd� |D �� \}}t|�}t|�}t�d||f�}d}x*|D ]"} |�| |df� || jd 7 }q\W |�t|t | � d �t|t | � d �f�}|S ) Nc S s g | ]}d | �qS )z
images/%d.pngr
)�.0�idxr
r
r �
<listcomp>_ s z'generate_node_image.<locals>.<listcomp>c S s g | ]}t �|��qS r
)r �open)r&