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-310.pyc
3591 views
o

v�hd8�@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.mplstylecCsfd}t|�dkr
dSt||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&rcCs@g}g}|D]}|||dkr|�|�q|�|�q||fS)Nr)�append)�X�node_indices�feature�left_indices�
right_indices�irrr�
split_datasetsrcCs�t|||�\}}||||}}||||}}	||||}
}d}t|�}
t|	�}t|�}t|�t|�}t|
�t|�}||||}|
|}|S)Nr)rrr)rrrrrrZX_nodeZy_nodeZX_leftZy_leftZX_rightZy_rightZinformation_gainZnode_entropyZleft_entropyZ
right_entropyZw_leftZw_rightZweighted_entropyrrr�compute_information_gain%srcCsB|jd}d}d}t|�D]}t||||�}||kr|}|}q
|S)Nr�����r)�shape�ranger)rrrZnum_features�best_featureZ
max_info_gainrZ	info_gainrrr�get_best_split9s
�rcCs�||krd|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)rrrZbranch_name�	max_depthZ
current_depth�tree�
formattingrrrrrrr$Isr$c
Cs�dd�|D�}dd�|D�}tdd�|D��\}}t|�}t|�}t�d||f�}d}|D]}	|�|	|df�||	jd7}q-|�t|t	|�d�t|t	|�d�f�}|S)	NcSsg|]}d|�qS)z
images/%d.pngr)�.0�idxrrr�
<listcomp>_�z'generate_node_image.<locals>.<listcomp>cSsg|]}t�|��qSr)r�open)r(�xrrrr*`scss�|]}|jVqdS�N)�size)r(rrrr�	<genexpr>as�z&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�imrrr�generate_node_image^s.rAcCspt��}|||g}t|�D]
\}}|j|t|�d�q
|�dd�|�dd�t|dd�}t��}	t�	d�}
|
�
d�tj|||
d	d
d�|
jj
}|	j��j
}gd�|}
d
|
d|
d|
g}t|�D]H\}}|||�\}}|||f�\}}t||�d}|d}t�||||||g�}|�
d�|�|j|d�|�d�|�||�qd|
�d�t��dS)N��imagerr��dot��prog�o�equalT�(��ax�arrows�	arrowsize�z	Ear Shapez
Face ShapeZWhiskerszSplitting on %szLeft: %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)rrrr�G�indices_listr)�indices�pos�figrL�trans�trans2�feature_name�ax_name�n�xx�yy�xa�ya�piesize�p2�arrr�generate_split_vizrs6





rxc	Cs�t��}|jdt|�d�d}d}t|�g}gd�}ddg}g}	g}
t|�D]I\}}|dd�}
|
D]-}|j|t|�d�|�||�|�t|��|d7}|dkr_|
�d|t||��q2|	�d	||d�|d7}q&|	|
}t	|d
d�}t
jdd
�}t
�d�}|�
d�tj|||ddd�|jj}|j��j}t|�D]Q\}}|||�\}}|||f�\}}||d}|d}t
�||||||g�}|�
d�|�|j|d�|�d�z
|j||dddd�Wq�Yq�|�d�t
��dS)NrrBrrOzNon CatZCatrDz
Leaf node: %szSplit on: %srErF)�r2)�figsizerHrITrJrK�rQrCrRg��������
�left)r�fontsize�loc)rSrTrVrArrUrWrr4rrXrYrZr[r\r]r^r_r`rarbrcrdrerf)Zroot_indicesrr&rgr)�rootZ
num_imagesrnZy_nameZdecision_namesZ
leaf_namesr�levelrhri�
node_namesrjrkrLrlrmrprqrrrsrtrurvrwrrr�generate_tree_viz�sX
�





r�cs�dd��t�ddd�}�fdd�|D�}t��\}}tjddd	�|�d
�|�d�|�d�t�gd
��}|�	||�}|j
dddddd��t|dddddd�}��fdd�}|�|�|S)NcSs:|dks|dkr
dS|t�|�d|t�d|�Sr)r
r)�prrrr
�s&zplot_entropy.<locals>.entropyrr��csg|]}�|��qSrr)r(r�)r
rrr*�r+z plot_entropy.<locals>.<listcomp>��?)r}�bottomzp x H(p)r�zH(p))r�g�������?g�������?g���Q��?�red�d�F)�color�zorder�sg�������?)�valinit�valstepcs|}�|�}��||f�dSr.)�set_offsets)�valr-r�r
�scatterrr�update�szplot_entropy.<locals>.update)
r
�linspacerX�subplots�subplots_adjustre�
set_xlabel�
set_ylabelra�plotr�r�
on_changed)Zp_arrayZh_arrayrkrLZaxfreqZh_plot�sliderr�rr�r�plot_entropy�s



r�)�PILrZnetworkxrS�matplotlib.pyplot�pyplotrXZnetworkx.drawing.nx_pydotr�numpyr
Zmatplotlib.widgetsrr�style�userrrrr$rArxr�r�rrrr�<module>s 
%<