Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
greyhatguy007
GitHub Repository: greyhatguy007/Machine-Learning-Specialization-Coursera
Path: blob/main/C2 - Advanced Learning Algorithms/week3/C2W3A1/__pycache__/assigment_utils.cpython-37.pyc
3540 views
B

�+�b�D�@s�dZddlZddlZddlZddlmZddlZ	ddl
mZddlm
Z
mZddlmZmZddlmZmZddlmZmZddlmZdd	lmZdd
lmZddlmZej dd
�e!ddddddd�Z"dZ#dZ$dZ%dZ&dZ'dZ(e#e$e%e&e'gZ)ej*�+d�dBdd�Z,dd�Z-Gdd�d�Z.dd�Z/d d!�Z0d"d#�Z1d$d%�Z2d&d'�Z3ej4�5d(�Z6ej4�5d)�Z7e	j8�
e6�Z9e	j8�
e7�Z:dej4j5d*d+d,fd-d.�Z;dCd1d2�Z<d3d4�Z=d5d6�Z>dDd8d9�Z?d:d;�Z@d<d=�ZAd>d?�ZBd@dA�ZCdS)EzB
assignment_utils.py
contains routines used by C2_W3 Assignments 
�N)�FancyArrowPatch)�ListedColormap�LinearSegmentedColormap)�Button�CheckButtons)�LinearRegression�Ridge)�StandardScaler�PolynomialFeatures)�mean_squared_error)�train_test_split)�
make_blobs)�Output�)�	precisionz#0096ffz#FF9300z#C00000z#FF40FFz#7030A0z#0D5BDC)�dlblue�dlorange�	dldarkred�	dlmagenta�dlpurple�
dldarkbluez./deeplearning.mplstyle��ffffff�?cCsXd}t�dd|�}tj�|�|d|}|||tj�|f�d}|}||||fS)z5 generate a data set based on a x^2 with added noise r�1rg�?)�np�linspace�random�seed�sample)�mr�scale�c�x_train�y_ideal�y_train�x_ideal�r&�$/home/jovyan/work/assigment_utils.py�gen_datasr(c	Cs^d}d}d}t�ddgddgddgddgddgddgg�}t|||ddd	�\}}|||||fS)
N�i g�������?�����rr�����r)�	n_samples�centersZcluster_std�random_state�
n_features)r�arrayr
)�classesr�stdr-�X�yr&r&r'�	gen_blobs&s.r5c@s.eZdZddd�Zdd�Zdd�Zd	d
�ZdS)
�	lin_modelFrcCs4|rt|d�|_nt�|_t|dd�|_t�|_dS)N)�alphaF)�include_bias)r�linear_modelrr
�polyr	�scaler)�self�degree�regularization�lambda_r&r&r'�__init__/s
zlin_model.__init__cCs2|j�|�dd��}|j�|�}|j�||�dS)z: just fits the data. mapping and scaling are not repeated r*rN)r:�
fit_transform�reshaper;r9�fit)r<�X_trainr$ZX_train_mappedZX_train_mapped_scaledr&r&r'rC7sz
lin_model.fitcCs0|j�|�dd��}|j�|�}|j�|�}|S)Nr*r)r:�	transformrBr;r9�predict)r<r3ZX_mappedZX_mapped_scaled�yhatr&r&r'rF=szlin_model.predictcCst||�d}|S)Nr)r)r<r4rG�errr&r&r'�mseCsz
lin_model.mseN)Fr)�__name__�
__module__�__qualname__r@rCrFrIr&r&r&r'r6.s
r6c	Cs�tjdddd�\}	}
d|	j_d|	j_d|	j_|
jddd�|
�d�|
�d	�|
j	||d
dd�|
j	||t
d
dd�|
�|
���|
�
|
���|
j||dd|��d�|
j||ddddd�|
jdd�t��t��dS)Nr)�rM)�figsizeFzPoor Performance on Test Data�)�fontsize�xr4�red�train)�color�labelr�testg�?zpredicted, degree=)�lwrUz--�	orangeredr#)rTrUrWz
upper left)�loc)�plt�subplots�canvas�toolbar_visible�header_visible�footer_visible�	set_title�
set_xlabel�
set_ylabel�scatter�dlc�set_xlim�get_xlim�set_ylim�get_ylim�plot�legend�tight_layout�show)rDr$�X_test�y_testrQ�y_predr%r#r=�fig�axr&r&r'�plt_train_testGs 

rrc
Cs4tjdddd�\}}
d|j_d|j_d|j_|
djddd	�|
d�d
�|
d�d�|
dj	||dd
ddd�|
dj
||ddd�|
dj
||tddd�|
d�|
d�
��|
d�|
d���x:td|�D],}|
dj	||dd�|fd|d�d�q�W|
djdd�|
djddd	�ttd|d��}|
dj	||dd�dddtdd�|
dj	||	dd�dddtdd�|
dj|
d���|
dj|
dtdd �|
djd!|
d"fd#d$d%d&td'd(td)dd*�d+�|
d�d,�|
d�d-�|
d��|jd.dd	�t��t��dS)/Nrr)�rM)rNFrzpredictions vs datarO)rPrQr4z--rXr#)rTrUrWrRrS)rTrUr�cvg�?)rWrUz
upper left)rYzerror vs degree�oztrain errorr)�markerrUrWrTzcv errorr)rWrTzoptimal degreei�8�data)g333333�?g�������?z
axes fraction�
z->�arc3r)�
arrowstyle�connectionstylerTrW)�xy�xycoords�xytext�
textcoordsrP�
arrowpropsr=�errorzFind Optimal Degree)rZr[r\r]r^r_r`rarbrircrdrerfrgrh�rangerj�list�axvline�annotate�dict�suptitlerkrl)rDr$�X_cv�y_cvrQror%r#�	err_train�err_cvZoptimal_degreeZ
max_degreerprq�iZcptsr&r&r'�plt_optimal_degree[s>,&&r�c
	Cs\tjdddd�\}
}d|
j_d|
j_d|
j_|djddd	�|d�d
�|d�d�|dj	||dd
d�|dj	||t
ddd�|d�|d���|d�
|d���x8dD]0}|dj||dd�|fdd|	|��d�q�W|d��|djddd	�|dj|	|dd�dt
dd�|dj|	|dd�dt
dd�|d�d�|dj
|d���|	|}
|dj|
f|d���ddd��|djd|
dfdd d!d"id#�|d�d$�|d�d%�|
jd&dd	�|djd'd(d)dd*|djt
dd+�|djd,d(d-dd.|djt
dd+�|djd/d0�t��t��dS)1Nrr)rsrM)rNFrzpredictions vs datarO)rPrQr4rRrS)rTrUrrt)r���	g�?z$\lambda =$)rWrUzerror vs regularizationztrain errorr)rUrTzcv error�log�black)rTrWzoptimal lambdai�I)i����rxz
offset pointsrz�simple)r~rr�zregularization (lambda)r�zTuning Regularizationg�������?g)\���(�?z
High
Variance�left)rP�harErTgffffff�?z	High
Bias�rightz
upper left)rY)rZr[r\r]r^r_r`rarbrcrdrerfrgrhrirj�
set_xscale�vlinesr�r��text�	transAxesrkrl)rDr$r�r�rQror�r�Zoptimal_reg_idxZlambda_rangerprqr�Zopt_xr&r&r'�plt_tune_regularization�s>
0""$&&r�c
Cs0d}t�|t�dd��}|jd}d}t�|�}t�|�}t�d|f�}x�t|�D]�}t||dd�\}}	}
}t�dt|�	��d�}t
||	ddd	�\}
}}}t
||d
dd	�\}}}}t|�}|�|
|�|�
|
�}|�||�||<|�
|�}|�||�||<|�
|�|dd�|f<qTW|
|||||||||f
S)z3 tune the number of examples to reduce overfitting �2r�r�d�gffffff�?g�������?)�	test_sizer.g�?N)rr0�arange�shape�zerosr�r(r�int�maxrr6rCrFrI)r�m_range�	num_stepsr=r�r�ror�r3r4r#r%rQrDZX_r$�y_r�rmr�rnZlmodelrGr&r&r'�tune_m�s(




r�c

	Cs,tjdddd�\}
}d|
j_d|
j_d|
j_|djddd	�|d�d
�|d�d�|dj	||dd
ddd�|dj	||t
dd
ddd�|d�|d���|d�
|d���xDtdt|�d
�D]0}|dj||dd�|fdd||��d�q�W|djdd�|djddd|	��dd|djt
dd�|djddd	�|dj||dd�dt
dd �|dj||dd�d!t
dd �|d�d"�|d�d#�|
jd$dd	�|djddd%dd|djt
dd�|djd&dd'dd(|djt
dd�|d��t��t��dS))Nrr)rsrM)rNFrzpredictions vs datarO)rPrQr4rRr�rSg�������?)rT�srUr7rrtz$m =$)rWrUz
upper left)rYg�������?g�?z	degree = rxr�r)rPr�rErTzerror vs number of examplesztrain error)rUrTzcv errorzNumber of Examples (m)r�zTuning number of examplesz
High
Variancegffffff�?zGood 
Generalizationr�)rZr[r\r]r^r_r`rarbrcrdrerfrgrhr��lenrirjr�r�r�rkrl)
rDr$r�r�rQror�r�r�r=rprqr�r&r&r'�
plt_tune_m�s40,""&&r�)rr�r�r�r��)rrr)rsrMrxFr�ruc	
Cs�xtt|�D]h}	t�||	k�}
t|
d�|	g}|r:||	nd�|	�}|j||
df||
df||d|j|||d�	q
W|r�|��|�d�dS)Nrzc{}r)rvr!�vmin�vmax�cmapr�rU�equal)	r�r�wherer��formatrc�Nrj�axis)
rqr3r4r1�class_labels�maprj�sizerr��idx�colrUr&r&r'�plt_mc_data�s
r�T�gcCs2d}|dd�df��||dd�df��|}	}
|dd�df��||dd�df��|}}t|
|	||�d}
t�t�|	|
|
�t�|||
��\}}tj|��|��f}|r�||�}n>t�t|�f�}x,t	t|��D]}|||�
dd��||<q�W|�
|j�}|j|||||d�|�
d�dS)Ng�?rr��r)�colors�
linewidths�tight)�minr�r�meshgridr��c_�ravelr�r�r�rBr��contourr�)rqr3rFr�rj�vectorrTrW�pad�x_min�x_max�y_min�y_max�h�xx�yy�points�Zr�r&r&r'�plot_cat_decision_boundary�s22
r�cCs\t|�}d}d}xFt|�D]:}|||�d�}t�t�|j|��}||kr|}|}qW|S)z> categorize a point based on distance from origin of clusters i'Nr)r�r�rBr�sqrt�dot�T)�pt�originsZ	nclusters�min_dist�y_new�j�temp�distr&r&r'�recat	sr�c
	s2t�|�}tjdddd�\}}	d|j_d|j_d|j_t|	d|||t	ddd	�t|	d|||t
dd
d�|	d�d�x<|D]4}
tj�|
d|t	|
�ddd
d�}|	d�
|�q~W�fdd�}t|	d||dtddd�|	djddd�t|	d|||t	ddd	�|	d�d�|	d�d�t��dS)Nrr)rsrM)rNFrTr�)r�rjr��<)r�rjrzTraining, CV Datag�?)rT�clip_on�fillrWcst|�dd���S)Nrr)r�rB)r�)r-r&r'�<lambda>&�z#plt_train_eq_dist.<locals>.<lambda>rg�?)r�rTrWzideal performance�)rP�x0�x1)r�uniquerZr[r\r]r^r_r��dkcolors_map�ltcolors_mapr`�Circle�	add_patchr�rdrarbrl)
rDr$r1r�r�r-r2�cssrprqr!�circ�cat_predictr&)r-r'�plt_train_eq_dists$

"r��c	
Cstjdddd�\}}d|j_d|j_d|j_t|d||dd�|djd	d
d�t|d|||t	ddd
�|d�
d�|d�d�t|d||dd�|djdd
d�t|d|||tdddd�|d�
d�|d�d�|j
|dd�t��dS)Nrr)rsrM)rNFrT)r�z
training datar�)rP�K)r�rjr�r�r�zcross-validation datar�r�)r�rjr�rrO)rZr[r\r]r^r_r�r`r�r�rarbr�r�rl)	Z
model_predictrDr$r1r�r�r�rprqr&r&r'�plt_nn0s"r�cCsBt|�}d}x(t|�D]}||||kr|d7}qW||}|S)z� 
    Calculate the categorization error
    Args:
      y    : (ndarray  Shape (m,) or (m,1))  target value of each example
      yhat : (ndarray  Shape (m,) or (m,1))  predicted value of each example
    Returns:|
      err: (scalar)             
    rr)r�r�)r4rGrZ	incorrectr�rHr&r&r'�eval_cat_errFs	r�c	Csnt�t|��}t�t|��}xTtt|��D]D}t|tj|||�dd��||<t|tj|||�dd��||<q*Wtjdddd�\}	}
d|	j_	d|	j_
d|	j_|
jddd�|
j
||d	d
tdd�|
j
||d	d
tdd�|
�d�|
j|
���|
jddd�|
jddd�|
��|	jddd�|
jddddd|
jtdd�|
jddddd|
jtdd�t��dS)Nr)r�)r)rM)rNFzerror vs regularizationrO)rPruztrain errorr)rvrUrTzcv errorrr�zRegularization (lambda)r��ErrorzTuning Regularizationg�������?g�Q����?zTraining Error
lower than CVr�)rPr�rErTgffffff�?zSimilar
Training, CVr�)rr�r�r�r��argmaxrZr[r\r]r^r_r`rirdr�rgrhrarbrjr�r�r�rl)�lambdas�modelsrDr$r�r�r�r�r�rprqr&r&r'�plot_iterateWs* $
r�c
Csltj|||fdd�}tj|||fdd�}t|�}	t�|	�}
x"t|	�D]}t|||�|
|<qDWt||
�}|S)Nr)r�)r�concatenater�r�r�r�r�)
rDr�rmr$r�rnr-ZX_all�y_allr�y_eqr�Zerr_allr&r&r'�
err_all_equalps

r�c	st�d�tjdddd�\}}d|j_d|j_d|j_t|d||dd	�|djd
dd�t	|d|||t
dd
d�|d�d�|d�d�t|d||dd	�|djddd�t	|d|||t
dd
d�|d�d�|d�d��fdd�}t|d||dd	�|djddd�t	|d|||t
dd
d�|d�d�|d�d�t
|||��}	t
|||��}
|djddd|	d��dd�|djddd|
d��dd�t|�}t�|�}x$t|�D]}
t||
��||
<�q�Wt
||�}|djddd|d��dd�t��dS)N�allrr�)rsr�)rNFrT)r�zSimple Modelr�)rPr�)r�rjr�r�r�zRegularized Modelcst|�dd���S)Nrr)r�rB)r�)r-r&r'r��r�zplt_compare.<locals>.<lambda>rzIdeal Modelg�z	err_test=z0.2frO)rZ�closer[r\r]r^r_r�r`r�r�rarbr�r�r�rr�r�r�rl)r3r4r1r�Zregularizedr-rprqr�Zerr_sZerr_rrr�r�Zerr_eqr&)r-r'�plt_comparezs@


r�)rr)NFTr�r)r�)D�__doc__�copy�math�numpyr�matplotlib.pyplot�pyplotrZ�
matplotlib�mpl�matplotlib.patchesr�matplotlib.colorsrrZmatplotlib.widgetsrr�sklearn.linear_modelrr�sklearn.preprocessingr	r
�sklearn.metricsr�sklearn.model_selectionrZsklearn.datasetsr
�
ipywidgetsr�set_printoptionsr�rdrrrrrrZdlcolors�style�user(r5r6rrr�r�r�r��cm�PairedZdkcolorsZltcolorsr�r�r�r�r�r�r�r�r�r�r�r�r&r&r&r'�<module>sZ

%%