Path: blob/main/C2 - Advanced Learning Algorithms/week4/optional labs/__pycache__/utils.cpython-310.pyc
3591 views
o v�hd8 � @ 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 sf d}t | �dkr dS t| | dk �t | � }|dks|dkr dS | t�|� d| t�d| � S �Nr � )�len�sum�np�log2)�y�entropy� r �md:\TA\machine-learning-specialization-coursera\C2 - Advanced Learning Algorithms\week4\optional labs\utils.py�compute_entropy s &r c C s@ g }g }|D ]}| | | dkr|� |� q|� |� q||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 sB | j d }d}d}t|�D ]}t| |||�}||kr|}|}q |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� ||krd| 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�tree� 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}|D ]} |�| |df� || jd 7 }q-|�t|t | � d �t|t | � d �f�}|S ) Nc S s g | ]}d | �qS )z images/%d.pngr )�.0�idxr r r � <listcomp>_ � z'generate_node_image.<locals>.<listcomp>c S s g | ]}t �|��qS r )r �open)r( �xr r r r* ` s c s s � | ]}|j V qd S �N)�size)r( r r r r � <genexpr>a s � z&generate_node_image.<locals>.<genexpr>�RGBr � ) �zipr �maxr �new�paster/ �resize�intr ) r Zimage_paths�images�widths�heights�total_width� max_height�new_im�x_offset�imr r r �generate_node_image^ s .rA c C sp t �� }| ||g}t|�D ] \}}|j|t|�d� q |�dd� |�dd� t|dd�}t�� } t� d�} | � d� t j||| d d d� | jj }| j�� j }g d�| } d | d| d| g}t|�D ]H\}}||| �\}}|||f�\}}t|| �d }|d }t�|| || ||g�}|� d� |�|j| d � |�d� |�|| � qd| �d� t�� d S )N��imager r � �dot��prog�o �equalT�( ��ax�arrows� arrowsize�z Ear Shapez Face ShapeZWhiskerszSplitting on %szLeft: %s = 1z Right: %s = 0� � @rC �off)�nx�DiGraph� enumerate�add_noderA �add_edger �plt�figure�subplot� set_aspect�draw_networkx_edges� transData� transform�transFigure�invertedr �axes�imshow�nodes�axis� set_title�show)r r r r �G�indices_listr) �indices�pos�figrL �trans�trans2�feature_name�ax_name�n�xx�yy�xa�ya�piesize�p2�ar r r �generate_split_vizr s6 rx c C s� t �� }|jdt| �d� d}d}t| �g}g d�}ddg}g } g } t|�D ]I\}}|d d� } | D ]-}|j|t|�d� |�||� |�t|�� |d7 }|dkr_| �d|t|| � � q2| �d ||d � |d7 }q&| | }t |d d�}t jdd �}t �d�}|� d� t j|||ddd� |jj}|j�� j}t|�D ]Q\}}||| �\}}|||f�\}}|| d }|d }t �|| || ||g�}|� d� |�|j| d � |�d� z |j|| dddd� W q� Y q�|�d� t �� d S )Nr rB r rO zNon CatZCatrD z Leaf node: %szSplit on: %srE rF )� r2 )�figsizerH rI TrJ rK � rQ rC rR g�������� �left)r �fontsize�loc)rS rT rV rA r rU rW r r4 r rX rY rZ r[ r\ r] r^ r_ r` ra rb rc rd re rf )Zroot_indicesr r&