Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
greyhatguy007
GitHub Repository: greyhatguy007/Machine-Learning-Specialization-Coursera
Path: blob/main/C2 - Advanced Learning Algorithms/week4/optional labs/__pycache__/utils.cpython-37.pyc
3591 views
B

���c#�@s�ddlmZddlZddlmZddlmZddl	Z
ddlmZm
Z
ej�d�dd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�)�ImageN)�graphviz_layout)�Slider�Buttonz./deeplearning.mplstylecCsjd}t|�dkrdSt||dk�t|�}|dks<|dkr@dS|t�|�d|t�d|�SdS)Nr�)�len�sum�np�log2)�y�entropy�r
�/home/jovyan/work/utils.py�compute_entropy	srcCsDg}g}x2|D]*}|||dkr.|�|�q|�|�qW||fS)Nr)�append)�X�node_indices�feature�left_indices�
right_indices�ir
r
r�
split_datasets
rcCs�t|||�\}}||||}}||||}}	||||}
}d}t|�}
t|	�}t|�}t|�t|�}t|
�t|�}||||}|
|}|S)Nr)rrr)rrrrrrZX_nodeZy_nodeZX_leftZy_leftZX_rightZy_rightZinformation_gainZnode_entropyZleft_entropyZ
right_entropyZw_leftZw_rightZweighted_entropyr
r
r�compute_information_gain%srcCsF|jd}d}d}x.t|�D]"}t||||�}||kr|}|}qW|S)Nr�����r)�shape�ranger)rrrZnum_features�best_featureZ
max_info_gainrZ	info_gainr
r
r�get_best_split9s
rcCs�||kr,d|d|}t|d||�dSt|||�}d|}td||||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)�printrrr�build_tree_recursive)rrrZbranch_name�	max_depthZ
current_depth�treeZ
formattingrrrr
r
rr#Isr#c
Cs�dd�|D�}dd�|D�}tdd�|D��\}}t|�}t|�}t�d||f�}d}x*|D]"}	|�|	|df�||	jd7}q\W|�t|t	|�d�t|t	|�d�f�}|S)	NcSsg|]}d|�qS)z
images/%d.pngr
)�.0�idxr
r
r�
<listcomp>_sz'generate_node_image.<locals>.<listcomp>cSsg|]}t�|��qSr
)r�open)r&�xr
r
rr(`scss|]}|jVqdS)N)�size)r&rr
r
r�	<genexpr>asz&generate_node_image.<locals>.<genexpr>�RGBr�
)
�zipr�maxr�new�paster+�resize�intr)
rZimage_paths�images�widths�heights�total_width�
max_height�new_im�x_offset�imr
r
r�generate_node_image^s
.r=cCszt��}|||g}x&t|�D]\}}|j|t|�d�qW|�dd�|�dd�t|dd�}t��}	t�	d�}
|
�
d�tj|||
d	d
d�|
jj
}|	j��j
}dd
dg|}
d|
d|
d|
g}x�t|�D]�\}}|||�\}}|||f�\}}t||�d}|d}t�||||||g�}|�
d�|�|j|d�|�d�|�||�q�W|
�d�t��dS)N)�imagerr��dot)�prog�o�equalT�()�ax�arrows�	arrowsizez	Ear Shapez
Face Shape�WhiskerszSplitting on %szLeft: %s = 1z
Right: %s = 0�	g@r>�off)�nx�DiGraph�	enumerate�add_noder=�add_edger�plt�figure�subplot�
set_aspect�draw_networkx_edges�	transData�	transform�transFigure�invertedr�axes�imshow�nodes�axis�	set_title�show)rrrr�G�indices_listr'�indices�pos�figrE�trans�trans2�feature_name�ax_name�n�xx�yy�xa�ya�piesize�p2�ar
r
r�generate_split_vizrs6





rpc	Cst��}|jdt|�d�d}d}t|�g}dddg}ddg}g}	g}
x�t|�D]�\}}|dd	�}
xb|
D]Z}|j|t|�d�|�||�|�t|��|d7}|dkrj|
�d
|t||��qjW|	�d||d	�|d7}qPW|	|
}t	|dd
�}t
jdd�}t
�d�}|�
d�tj|||ddd�|jj}|j��j}x�t|�D]�\}}|||�\}}|||f�\}}||d}|d}t
�||||||g�}|�
d�|�|j|d�|�d�y|j||dddd�WnYnX�qPW|�d�t
��dS)Nr)r>rz	Ear Shapez
Face ShaperHzNon CatZCatr?z
Leaf node: %szSplit on: %sr@)rA)�r.)�figsizerBrCTrD)rErFrG�g@r>rJg��������
�left)r�fontsize�loc)rKrLrNr=rrMrOrr0rrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^)Zroot_indicesrr%r_r'�rootZ
num_imagesrfZy_nameZdecision_namesZ
leaf_namesr�levelr`ra�
node_namesrbrcrErdrerhrirjrkrlrmrnror
r
r�generate_tree_viz�sV







r{cs�dd��t�ddd�}�fdd�|D�}t��\}}tjddd	�|�d
�|�d�|�d�t�dd
ddg�}|�	||�}|j
dddddd��t|dddddd�}��fdd�}|�|�|S)NcSs>|dks|dkrdS|t�|�d|t�d|�SdS)Nrr)r	r
)�pr
r
rr�szplot_entropy.<locals>.entropyrr��csg|]}�|��qSr
r
)r&r|)rr
rr(�sz plot_entropy.<locals>.<listcomp>g�?)ru�bottomzp x H(p)r|zH(p)g�������?g�������?g���Q��?�red�d�F)�color�zorder�sg�������?)�valinit�valstepcs|}�|�}��||f�dS)N)�set_offsets)�valr*r)r�scatterr
r�update�szplot_entropy.<locals>.update)
r	�linspacerP�subplots�subplots_adjustr]�
set_xlabel�
set_ylabelrY�plotr�r�
on_changed)Zp_arrayZh_arrayrcrEZaxfreqZh_plot�sliderr�r
)rr�r�plot_entropy�s



r�)�PILrZnetworkxrK�matplotlib.pyplot�pyplotrPZnetworkx.drawing.nx_pydotr�numpyr	Zmatplotlib.widgetsrr�style�userrrrr#r=rpr{r�r
r
r
r�<module>s
%<