From 503df974b8cca4f8cd07e11705442e1f9f7cc7dd Mon Sep 17 00:00:00 2001 From: nero58 Date: Mon, 16 Oct 2023 15:19:26 +0530 Subject: [PATCH 1/3] test 3 --- mlhybridx/default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mlhybridx/default.py b/mlhybridx/default.py index e876bb4..53b5511 100644 --- a/mlhybridx/default.py +++ b/mlhybridx/default.py @@ -55,7 +55,7 @@ def By_default(): print(f" Predicted value = {pred}") - print("\n\n\n///////////////////////////////////// ●▬▬▬▬◤ By Gradient Descent Regression ◢▬▬▬▬● //////////////////////////////////////\n") + print("\n\n\n//////////////////////////////// ●▬▬▬▬◤ By Gradient Descent Regression ◢▬▬▬▬● //////////////////////////////////////\n") print("\n\n\n For lr = 0.001 and epochs = 50\n\n") x_train, x_test, y_train, y_test = train_data( x, y , size) intercept_, coef_= GDR(x_train, y_train, lr=0.001, epochs=50) From aa40e392a40b650c61565f9f7186f3ad02be79e0 Mon Sep 17 00:00:00 2001 From: nero58 Date: Tue, 17 Oct 2023 13:02:47 +0530 Subject: [PATCH 2/3] new --- mlhybridx/default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mlhybridx/default.py b/mlhybridx/default.py index 53b5511..a05a48d 100644 --- a/mlhybridx/default.py +++ b/mlhybridx/default.py @@ -45,7 +45,7 @@ def By_default(): m,b = ols( x_train, y_train) print(f"m = {m}\nb = {b} ") pred = predict_olr(x_test,m,b) - print(f" Predicted value = {pred}") + print(f" Predicted Value = {pred}") print("\n\n\n//////////////////////////////////////////// ●▬▬▬▬◤ By Multiple Regression ◢▬▬▬▬● ///////////////////////////////////////\n") x_train, x_test, y_train, y_test = train_data( x, y , size) From d49c40037d24271a45aed435ef18e9b9c7049273 Mon Sep 17 00:00:00 2001 From: nero58 Date: Tue, 17 Oct 2023 18:18:01 +0530 Subject: [PATCH 3/3] forwarding --- README.md | 1 + mlhybridx/{check.py => EasyReg.py} | 20 ++-- mlhybridx/Visualization.py | 36 +++++++ mlhybridx/__init__.py | 2 +- mlhybridx/__pycache__/EasyReg.cpython-310.pyc | Bin 0 -> 5379 bytes .../__pycache__/Visualization.cpython-310.pyc | Bin 0 -> 716 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 206 bytes .../__pycache__/algorithm.cpython-310.pyc | Bin 0 -> 1242 bytes .../check_extention.cpython-310.pyc | Bin 0 -> 474 bytes mlhybridx/__pycache__/default.cpython-310.pyc | Bin 0 -> 3967 bytes mlhybridx/__pycache__/hub.cpython-310.pyc | Bin 0 -> 568 bytes mlhybridx/__pycache__/predict.cpython-310.pyc | Bin 0 -> 610 bytes mlhybridx/__pycache__/scores.cpython-310.pyc | Bin 0 -> 1074 bytes mlhybridx/__pycache__/split.cpython-310.pyc | Bin 0 -> 520 bytes mlhybridx/__pycache__/train.cpython-310.pyc | Bin 0 -> 436 bytes mlhybridx/default.py | 5 + mlhybridx/hub.py | 3 +- test/test.ipynb | 98 ++++++++++++++---- 18 files changed, 134 insertions(+), 31 deletions(-) rename mlhybridx/{check.py => EasyReg.py} (90%) create mode 100644 mlhybridx/__pycache__/EasyReg.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/Visualization.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/__init__.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/algorithm.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/check_extention.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/default.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/hub.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/predict.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/scores.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/split.cpython-310.pyc create mode 100644 mlhybridx/__pycache__/train.cpython-310.pyc diff --git a/README.md b/README.md index f580d89..aba789f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # ML Module that makes learning process smooth ### Project Overview diff --git a/mlhybridx/check.py b/mlhybridx/EasyReg.py similarity index 90% rename from mlhybridx/check.py rename to mlhybridx/EasyReg.py index 766a183..298a136 100644 --- a/mlhybridx/check.py +++ b/mlhybridx/EasyReg.py @@ -1,7 +1,7 @@ import sys import pandas as pd -from .hub import check_file,ols,multiple,GDR,SE,split_data,train_data,predict_gdr,predict_olr,perdict_multiple, By_default +from .hub import check_file,ols,multiple,GDR,SE,split_data,train_data,predict_gdr,predict_olr,perdict_multiple, By_default, visuals import time class EasyRegressor: @@ -89,7 +89,7 @@ def model_gdr(self, lr=0.0001, epochs=50): def predict(self, model, val=None): self.df() x, y = split_data(self.data, self.target) - x_train, x_test, y_train, y_test = train_data(x, y, self.test_size) + x_train, x_test, y_train, self.y_test = train_data(x, y, self.test_size) m,b = ols(x_train, y_train) try: if model == 'ols': @@ -98,8 +98,8 @@ def predict(self, model, val=None): pred = predict_olr(float(val),m,b) output = f"Predicted Values = {pred}" return self.typer(output) - pred = predict_olr(x_test, m, b) - output = f"Predicted values = {pred}" + self.pred = predict_olr(x_test, m, b) + output = f"Predicted values = {self.pred}" return self.typer(output) if model == 'mlr': @@ -108,8 +108,8 @@ def predict(self, model, val=None): pred = perdict_multiple(float(val),m,b) output = f"Predicted Values = {pred}" return self.typer(output) - pred = predict_olr(x_test, m, b) - output = f"Predicted values = {pred}" + self.pred = predict_olr(x_test, m, b) + output = f"Predicted values = {self.pred}" return self.typer(output) if model == 'gdr': @@ -118,8 +118,8 @@ def predict(self, model, val=None): pred = predict_gdr(x_test, m, b) output = f"Predicted values = {pred}" return self.typer(output) - pred = predict_gdr(x_test, m, b) - output = f"Predicted values = {pred}" + self.pred = predict_gdr(x_test, m, b) + output = f"Predicted values = {self.pred}" return self.typer(output) except ValueError: print("Inalid params") @@ -144,3 +144,7 @@ def score(self, score, model): m,b = GDR(x_train,y_train,lr=0.01,epochs= 50) y_pred = predict_gdr(x_test,m,b) return SE(y_test, y_pred, score) + + +def plot(self, y_pred, y_actual, plot_type:str): + return visuals(y_pred, y_actual, plot_type) \ No newline at end of file diff --git a/mlhybridx/Visualization.py b/mlhybridx/Visualization.py index e69de29..189bacd 100644 --- a/mlhybridx/Visualization.py +++ b/mlhybridx/Visualization.py @@ -0,0 +1,36 @@ +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns + + +def visuals(self, y_pred, y_actual, plot_type:str, title:str, xlabel: str, ylabel:str): + + title = f'{plot_type} Chart' + xlabel = f'{xlabel}' + ylabel = f'{ylabel}' + if plot_type == 'plot': + sns.lineplot(x=y_actual, y=y_pred, color='blue', label='Line 1') + sns.lineplot(x=y_actual, y=y_pred, color='red', label='Line 2') + plt.legend() + plt.title(title) + plt.xlabel(xlabel) + plt.ylabel(ylabel) + + plt.show() + + + if plot_type == 'scatter': + sns.scatterplot(x=y_actual, y=y_pred, color='blue', label='Line 1') + sns.lineplot(x=y_actual, y=y_pred, color='red', label='Line 2') + plt.legend() + plt.title(title) + plt.xlabel(xlabel) + plt.ylabel(ylabel) + + plt.show() + + +def main(): + visuals([1,2,3,4,5],[2,5,8,8,5],'plot') + +main() \ No newline at end of file diff --git a/mlhybridx/__init__.py b/mlhybridx/__init__.py index d78a672..a2d37a0 100644 --- a/mlhybridx/__init__.py +++ b/mlhybridx/__init__.py @@ -1 +1 @@ -from .check import EasyRegressor \ No newline at end of file +from .EasyReg import EasyRegressor \ No newline at end of file diff --git a/mlhybridx/__pycache__/EasyReg.cpython-310.pyc b/mlhybridx/__pycache__/EasyReg.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e2231860cf989c37c70860dc759be62ea967701 GIT binary patch literal 5379 zcmb_g%a0sK8Sm=XboV@VyOmpBslgBbFeHMl4@cXJ~W@pB0uM;x6{Z(~! zbya=e_xoPmE*3ovzs;qi(eL+Z+TZAA@@L@YbzE@=gln8NG(T&ZuXCLn4WnuLX4CSm zrtRC!oS$ntzSDGlx9Ry_Gwp`vFh*G27h*PK8ZOD3uZqJ^&nCh2K zr(WD?)Mda!8K#~TVZD|0^BocKdQ}G3xJbu0?S@F_JCRUN#*2Ax^a38$LM)!$>m~ZA07CNE4SZmS_P^52`C_C~7KdDQa^aPjlP=b?BXn zxh&?fUaH;y@K^Nv<5I=VMqE-)&i zx8Ces6?K03$oV$!HlmegV^s~@Tp3E}Xs4GtK~Qf27lDH%Vm7S%(m?rG-Kyeb*j=tp271{Fic(E%gc z8e3-rrl4bp1*vZs3EL#ln0RJh(xk=pbucIGjT~2ODu@`%XZpL&01V|;Tb66>Zi^o} zbg1G8+CXVI)jK?OPr+2r2;fERrw4~YQX}rgsTtj@%ZjcT_gxW%T$%DLyE?BC+i?NJ zV~*n0(Mzm9Kg}(#DRDn!AY%o-fd!N?faeWH<{<(5HGqCiTh~{}1i*1%Nt=WFHS^aR znZ=rg*0^Jl1cs*3^|8{inP2(d?GNt#@^@SRw?8VMYeAP~GKTVtmn)d@o2|!~di#U& z%p$n;%H1o(sW<&-yXD_jSQ)N=<%!n!%6;AQDmn2K_7F#iki{s~r0izOdP+e%<)D#DY$2nIlc$ zvT?C>V}&&3;Bs-n-357BP+D__T65Nlq&Lj=&=Qh8H9~8+7@>7sH9{-rF@n|B@-%X1 zeynSExl4g@8#V2$otuFQPfw=x$>lt+zsK|9)vyzl+qLp&ofGA*z*)RmWK6y~>~9B_ z-e)|{%xOl;;52b|njM96Y`f!tD@29QB%H-*;m|Vw?`go*=W&|hGAGKFQf6BRAfhb; z%gpI0jU6N6f~2{jep5RWNtzpqIJL9oGLLB~JdEs8tvhR%3U0Kpa+MB3!d`ZmUD(Dl z)y%2DKtX~oWt0?EhH;FtG(C%B6()*!fQBN~jF(oq!M89TtC&f_XwQs$&JwPvU1=kl zPrH6{8D!)NBspN^oXH6c*g%&i+=Ft*Wc&kTU=FN-E$zfekX>R!Ti#VPh*HzOFH;REL@3$Psl?kJ6ATlu(vMfzUSz$+=c6Butj|avRi3}yn+t^}gwgilY#{dJfmmiWC1#u;@ zk6^{0PGSh26kZ`SWk=4y?f-UIN4zsVo}hl{GI3Hm(uH(c;w0|60r_T<)s#_6d4l0iH)Zj2-O0jEe~=~GiQ81Sy-x@M$HV>AEakLP1E+noMQnM=)3oXf zL}pxNZdk@s3alzxa+LewD0QTnC0yh%3##HNFscG(M;0+sn3!Y#v*6fP+3A}K^8;bH_(tRp`nTd4OJ^hvR*}#85mox zl<4aMeeekIl_Lm%bbN+DzYqlP;nPv}L_ABcP%O>l_Z8~BOoa9kuMqh*k=KcwBSL&k z;9qe`m9CfrA(6&ZFgqxEy*bB5-tRb`V>+(qdS0QTW~FYY(Ut)f`c+cQ=tq6JR7ju$ zpw6fC$yhhCDps7wAowj&lYM&-Z=vryy&$YguqD2a+lk}R$>12U-7nCKb&z=`E~2R{ ziZ9VayA!r}7>f#Sd}FnHHTx2v0HeU6+=#*og)5c*3i2v~9FS0+hD=Z$N<2?Jk_0{$ iNTD{GIL%mCsq<>4kk=@Ejfo!z%72A`pld%}nEM~NE7L6i literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/Visualization.cpython-310.pyc b/mlhybridx/__pycache__/Visualization.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d25e68c9457a0bcfa5790a3559d5530b79b2ae47 GIT binary patch literal 716 zcmZ8fPm2>V6i+glbXr=_f_j~64_5TxK~z@UgTn42EG}9KB{O-ov82(T~ezeJn&!5MbLRp*w5C|1cn5~{n8I_)Y&&V!D6XP&og zJkRtBHsYixA$>gJo~}J@e4JOhGCtNa1MMRNYQN;k=IL=UpM!xM(hS@+K$*V7`673q z(hG^zQdz3hEg*fByOq>Ca5Ff}?B>pYo9rm@ku9xHG*SuFqFOsIG<$vD?nN`Jk&927nG9zehS&Lxn0x4czs;Xb-&-(tdJIs@%k-mE@(L4s z>8g5qdh({pOrbtJJgwA9!*r<^0a#Bj3X6>t8|jLw9M_HSTm{6&?UN1BBy@-)p}jEr zjQ=tZ5FT~CsPQ_a^{iI@?ozt8HC<#_B{V5^-t=*`?^uvoWlGcjMZ6AYLX|-Oz}#g`kg7cPosY*clF^Gc(44TX@8G*u@ zjJJ4Q6N@W@Qqzl4i;MG%{4|-O*kK|d6IL=5F#{ literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/algorithm.cpython-310.pyc b/mlhybridx/__pycache__/algorithm.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ed76af3dfa2f83ccde411d9cead9020103d7cce GIT binary patch literal 1242 zcmZ8g&2Aev5a#dhN|saA5mGsEiyVR!I;7VGMbQSSi}ujukhVa&P+_b^CR%5;yXLL~ zDd3)x9`g>?F|X1`;I$_|L4h9Xexz(TEf+JK8FILsZ$4Jr+kJxZ4Zo*tOvsOE(;AAe#fZgA%BH{nh!bXGcPvhsy?ywK&O@8ab_YqGp_@#?~$ zWh$2khnY#`%1@4!5M>(~TWwy7qlxithTp z_$=}}gDot#BA_QO(DM+!r%q(cyqQFRqjphVqVU#5MP8y9$Mf=)DVVm#sE4UAG5L&MN)p?CO2`Fn6@0_t)M zU?h-G{vR+vCV^4`!4XQ?B`6Lh0|FjE;qTbkdw>EE!2@NYR$3m2_o$0uN5}*iA@Tqb zaul7$ieARotV{5R1T;)QP`PGSd;+p50m}MF&l9!lgNV%b0}+MtcS^3-H@RzueOn+d zvs+=GJpTOnGvvttyWGHTK1Nw)2kPvf^Yimb&x~L@QI)!JvYBVKHl8+)H?1-r92bGv zs#>_%&p_Oa5uFUu-m?w0wF*sftS~Opbv2te<|ek7TTp3yvCC}vvv{tS{sGLhHr>AJ zp3){wLIYv_zlZ$${imNIx$%dJ?IFF*25g6p=!gy3fbOwtl>L?T&0Q={q?6^zqF#lv j0>O=Mb6EV~VE@w0h9O@q!aMrf^Re;WPe{U&;h_I7RBIIT literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/check_extention.cpython-310.pyc b/mlhybridx/__pycache__/check_extention.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb8627deb5880443ca6d4aebab04ac720d186a26 GIT binary patch literal 474 zcmYjNu}T9$5S`gQC5fk~trlWsKm}V771SVTQWzu}4#Ii6;*rbUvAZ#eBvtJF02?j+ zrERVJ1q*dHL2-uncIVA7GfXx=UjniNz9ks~yu0APF$xX|dX-3kzyzAp7n>-U;E&K` z0_#xrKBxj}5q0@9PQL=-h@hK959D&-mLWw}hPm&Dpw9_f2qI*ucAAwwaRU8=;1 ztYxN>byIPoRHn+@7H>&xrC~=}&wXuCQFTj%CVT_suJd^o?FN@xDjgh4nTPGQ>rjOE z6zI0e@}PQtI=E4>xZ0{_qMOK|liW>&eh}TssNIr%BU2M+>2^M_rK#pddG0KWL=1gg tK!zJ%KA%PQt$Y$`H?9X-xvGgUS>_+jQNkAXI+LOM?(TY)r~n1@*$*U`Y?lB4 literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/default.cpython-310.pyc b/mlhybridx/__pycache__/default.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68e1cd1b282137b0feefbcdb2454c27e48d5c272 GIT binary patch literal 3967 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 literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/split.cpython-310.pyc b/mlhybridx/__pycache__/split.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..297da016daa22b10f60db47de2abeb2564a91a6a GIT binary patch literal 520 zcmZ8eJx?Ps5S_6%n+1V%$5DVpkqT)Gu0j;(bbz3s02+h@XeDIg&9TWQYuOIUqP>cb z4vC*|SMrzKQspl|0ppcGfhW!LjA#7DV;8ft(?HnZE9nCQJo#V}jDk%vGfyNzVh*P$ zndCQc$|N2_9E>Rg2W?;Zj({9*+hpdBs6vT7rk5+|dKI{3#O#)J*dlcCAG5q0{Kvm+ zBL6kVD^~FiI|SR1{2CFcHYD9ZHtyMHjS4@hew>WM0|(<*!d3IUYzuD zRHd7)y))l~`^Wr76k!XOFlt6G3pj@n*FXFW+%*QnzAE(;MfFyFi3yscgo}Rl>t?_G L;KqMa1T*Xn)3kuC literal 0 HcmV?d00001 diff --git a/mlhybridx/__pycache__/train.cpython-310.pyc b/mlhybridx/__pycache__/train.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7fc49e21ec7a8c5dbf28b3c6819812bbc0b88bd GIT binary patch literal 436 zcmYjMyH3L}6tx{UfhvV=bYx)Z(0%|yJOl#+?Shb?iWHgJh^TqVHmIqbjg=4SFL^>@ z>Mt;H?Sj-R-E$x3==i$o^|}b+A{dD;sNZhb4Fba@q#6Kl#Bq)aJi{1q!h;VqBb?r& zVP^v@T4USSl4WJ8h0>|2^GweJ$NWVEHH5r|R3`u$8Dy{_9CPwX6WRtXZ98pf0z*y5 zgfGrKm~Pw^Lt^*0zS&CHShA8=MXEH@LV7;3cxiECsd9p7nfhC72o0QLqvn4B4J_73 z9)Ru7)%-MhP(rHYMu?g%j-ME3?=Yx^uIglRciTM6j6aSh6@SY`Qsl3Gu}r-GxNdBB z`)kfLbKg}IV1Q#R`_N2>!R$yaa=~OdE-EhaREb>7byk(q$-T 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mhybrid\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcheck\u001b[39;00m \u001b[39mimport\u001b[39;00m EasyReggressor\n", - "File \u001b[1;32md:\\Anaconda\\lib\\site-packages\\hybrid\\__init__.py:1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mcheck\u001b[39;00m \u001b[39mimport\u001b[39;00m EasyReggressor\n", - "File \u001b[1;32md:\\Anaconda\\lib\\site-packages\\hybrid\\check.py:17\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mpandas\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mpd\u001b[39;00m \n\u001b[0;32m 16\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mhybrid\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcheck_extention\u001b[39;00m \u001b[39mimport\u001b[39;00m check_file\n\u001b[1;32m---> 17\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39malgorithm\u001b[39;00m \u001b[39mimport\u001b[39;00m ols, multiple, GDR\n\u001b[0;32m 18\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mscores\u001b[39;00m \u001b[39mimport\u001b[39;00m SE\n\u001b[0;32m 19\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39msplit\u001b[39;00m \u001b[39mimport\u001b[39;00m split_data\n", - "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'algorithm'" - ] + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "# import hybrid\n", - "from hybrid.check import EasyReggressor" + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "\n", + "def visuals(y_pred, y_actual, plot_type:str, title:str, xlabel: str, ylabel:str):\n", + " \n", + " title = f'{plot_type} Chart' \n", + " xlabel = f'{xlabel}'\n", + " ylabel = f'{ylabel}'\n", + " if plot_type == 'plot':\n", + " sns.lineplot(x=y_actual, y=y_pred, color='blue', label='Line 1')\n", + " sns.lineplot(x=y_actual, y=y_pred, color='red', label='Line 2')\n", + " plt.legend() \n", + " plt.title(title)\n", + " plt.xlabel(xlabel)\n", + " plt.ylabel(ylabel)\n", + "\n", + " plt.show()\n", + "\n", + "\n", + " if plot_type == 'scatter':\n", + " sns.scatterplot(x=y_actual, y=y_pred, color='blue', label='Line 1')\n", + " sns.lineplot(x=y_actual, y=y_pred, color='red', label='Line 2')\n", + " plt.legend() \n", + " plt.title(title)\n", + " plt.xlabel(xlabel)\n", + " plt.ylabel(ylabel)\n", + "\n", + " plt.show()\n", + "\n", + "\n", + "def main():\n", + " visuals([1,2,3,4,5],[2,5,8,8,5],'plot','plot chart', 'x_axis', 'y_axis')\n", + "\n", + "main()" ] }, { @@ -30,19 +61,44 @@ "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'EasyReggressor' is not defined", + "ename": "URLError", + "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[6], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m new \u001b[39m=\u001b[39m EasyReggressor()\n", - "\u001b[1;31mNameError\u001b[0m: name 'EasyReggressor' is not defined" + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:1348\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m 1347\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m-> 1348\u001b[0m h\u001b[39m.\u001b[39;49mrequest(req\u001b[39m.\u001b[39;49mget_method(), req\u001b[39m.\u001b[39;49mselector, req\u001b[39m.\u001b[39;49mdata, headers,\n\u001b[0;32m 1349\u001b[0m encode_chunked\u001b[39m=\u001b[39;49mreq\u001b[39m.\u001b[39;49mhas_header(\u001b[39m'\u001b[39;49m\u001b[39mTransfer-encoding\u001b[39;49m\u001b[39m'\u001b[39;49m))\n\u001b[0;32m 1350\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mOSError\u001b[39;00m \u001b[39mas\u001b[39;00m err: \u001b[39m# timeout error\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:1282\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m 1281\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Send a complete request to the server.\"\"\"\u001b[39;00m\n\u001b[1;32m-> 1282\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_send_request(method, url, body, headers, encode_chunked)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:1328\u001b[0m, in \u001b[0;36mHTTPConnection._send_request\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m 1327\u001b[0m body \u001b[39m=\u001b[39m _encode(body, \u001b[39m'\u001b[39m\u001b[39mbody\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m-> 1328\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mendheaders(body, encode_chunked\u001b[39m=\u001b[39;49mencode_chunked)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:1277\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1276\u001b[0m \u001b[39mraise\u001b[39;00m CannotSendHeader()\n\u001b[1;32m-> 1277\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_send_output(message_body, encode_chunked\u001b[39m=\u001b[39;49mencode_chunked)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:1037\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1036\u001b[0m \u001b[39mdel\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_buffer[:]\n\u001b[1;32m-> 1037\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msend(msg)\n\u001b[0;32m 1039\u001b[0m \u001b[39mif\u001b[39;00m message_body \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 1040\u001b[0m \n\u001b[0;32m 1041\u001b[0m \u001b[39m# create a consistent interface to message_body\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:975\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[1;34m(self, data)\u001b[0m\n\u001b[0;32m 974\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mauto_open:\n\u001b[1;32m--> 975\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mconnect()\n\u001b[0;32m 976\u001b[0m \u001b[39melse\u001b[39;00m:\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:1447\u001b[0m, in \u001b[0;36mHTTPSConnection.connect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1445\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mConnect to a host on a given (SSL) port.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m-> 1447\u001b[0m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mconnect()\n\u001b[0;32m 1449\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_tunnel_host:\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\http\\client.py:941\u001b[0m, in \u001b[0;36mHTTPConnection.connect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 940\u001b[0m sys\u001b[39m.\u001b[39maudit(\u001b[39m\"\u001b[39m\u001b[39mhttp.client.connect\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mself\u001b[39m, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhost, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mport)\n\u001b[1;32m--> 941\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msock \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_create_connection(\n\u001b[0;32m 942\u001b[0m (\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mhost,\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mport), \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtimeout, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msource_address)\n\u001b[0;32m 943\u001b[0m \u001b[39m# Might fail in OSs that don't implement TCP_NODELAY\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\socket.py:845\u001b[0m, in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address)\u001b[0m\n\u001b[0;32m 844\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m--> 845\u001b[0m \u001b[39mraise\u001b[39;00m err\n\u001b[0;32m 846\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[0;32m 847\u001b[0m \u001b[39m# Break explicitly a reference cycle\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\socket.py:833\u001b[0m, in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address)\u001b[0m\n\u001b[0;32m 832\u001b[0m sock\u001b[39m.\u001b[39mbind(source_address)\n\u001b[1;32m--> 833\u001b[0m sock\u001b[39m.\u001b[39;49mconnect(sa)\n\u001b[0;32m 834\u001b[0m \u001b[39m# Break explicitly a reference cycle\u001b[39;00m\n", + "\u001b[1;31mTimeoutError\u001b[0m: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mURLError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mc:\\Users\\Deepak Yadav\\Desktop\\MLHybridX-Module\\test.ipynb Cell 2\u001b[0m line \u001b[0;36m1\n\u001b[1;32m----> 1\u001b[0m new\u001b[39m=\u001b[39m EasyRegressor()\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\Desktop\\MLHybridX-Module\\mlhybridx\\EasyReg.py:11\u001b[0m, in \u001b[0;36mEasyRegressor.__init__\u001b[1;34m(self, file_name)\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__init__\u001b[39m (\u001b[39mself\u001b[39m, file_name \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39mdefault\u001b[39m\u001b[39m'\u001b[39m):\n\u001b[0;32m 10\u001b[0m \u001b[39mif\u001b[39;00m file_name \u001b[39m==\u001b[39m \u001b[39m'\u001b[39m\u001b[39mdefault\u001b[39m\u001b[39m'\u001b[39m:\n\u001b[1;32m---> 11\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdefault()\n\u001b[0;32m 12\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 15\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfile_name \u001b[39m=\u001b[39m file_name \n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\Desktop\\MLHybridX-Module\\mlhybridx\\EasyReg.py:58\u001b[0m, in \u001b[0;36mEasyRegressor.default\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mdefault\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m---> 58\u001b[0m By_default()\n\u001b[0;32m 59\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39m\"\u001b[39m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\Desktop\\MLHybridX-Module\\mlhybridx\\default.py:25\u001b[0m, in \u001b[0;36mBy_default\u001b[1;34m()\u001b[0m\n\u001b[0;32m 23\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mBy_default\u001b[39m():\n\u001b[1;32m---> 25\u001b[0m name, data \u001b[39m=\u001b[39m datasets()\n\u001b[0;32m 26\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m*///////////////////////////////////////// ●▬▬▬▬◤ \u001b[39m\u001b[39m{\u001b[39;00mname\u001b[39m}\u001b[39;00m\u001b[39m Dataset ◢▬▬▬▬● ///////////////////////////////////////////\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m\\n\u001b[39;00m\u001b[39m\"\u001b[39m)\n\u001b[0;32m 28\u001b[0m \u001b[39mprint\u001b[39m(data)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\Desktop\\MLHybridX-Module\\mlhybridx\\default.py:12\u001b[0m, in \u001b[0;36mdatasets\u001b[1;34m()\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mdatasets\u001b[39m():\n\u001b[0;32m 11\u001b[0m flight \u001b[39m=\u001b[39m sns\u001b[39m.\u001b[39mload_dataset(\u001b[39m'\u001b[39m\u001b[39mflights\u001b[39m\u001b[39m'\u001b[39m)\u001b[39m.\u001b[39mreplace({\u001b[39m'\u001b[39m\u001b[39mJan\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m1\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mFeb\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m2\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mMar\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m3\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mApr\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m4\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mMay\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m5\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mJun\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m6\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mJul\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m7\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mAug\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m8\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mSep\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m9\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mOct\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m10\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mNov\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m11\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mDec\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m12\u001b[39m}) \n\u001b[1;32m---> 12\u001b[0m anscombe \u001b[39m=\u001b[39m sns\u001b[39m.\u001b[39;49mload_dataset(\u001b[39m'\u001b[39;49m\u001b[39manscombe\u001b[39;49m\u001b[39m'\u001b[39;49m)\u001b[39m.\u001b[39mreplace({\u001b[39m'\u001b[39m\u001b[39mI\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m1\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mII\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m2\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mIII\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m3\u001b[39m,\u001b[39m'\u001b[39m\u001b[39mIV\u001b[39m\u001b[39m'\u001b[39m:\u001b[39m4\u001b[39m})\n\u001b[0;32m 13\u001b[0m car_crash \u001b[39m=\u001b[39m sns\u001b[39m.\u001b[39mload_dataset(\u001b[39m'\u001b[39m\u001b[39mcar_crashes\u001b[39m\u001b[39m'\u001b[39m)\u001b[39m.\u001b[39mdrop([\u001b[39m'\u001b[39m\u001b[39mabbrev\u001b[39m\u001b[39m'\u001b[39m], axis\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m)\n\u001b[0;32m 14\u001b[0m dowjones \u001b[39m=\u001b[39m sns\u001b[39m.\u001b[39mload_dataset(\u001b[39m'\u001b[39m\u001b[39mdowjones\u001b[39m\u001b[39m'\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\seaborn\\utils.py:588\u001b[0m, in \u001b[0;36mload_dataset\u001b[1;34m(name, cache, data_home, **kws)\u001b[0m\n\u001b[0;32m 586\u001b[0m \u001b[39mif\u001b[39;00m name \u001b[39mnot\u001b[39;00m \u001b[39min\u001b[39;00m get_dataset_names():\n\u001b[0;32m 587\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00mname\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m\u001b[39m is not one of the example datasets.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m--> 588\u001b[0m urlretrieve(url, cache_path)\n\u001b[0;32m 589\u001b[0m full_path \u001b[39m=\u001b[39m cache_path\n\u001b[0;32m 590\u001b[0m \u001b[39melse\u001b[39;00m:\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:241\u001b[0m, in \u001b[0;36murlretrieve\u001b[1;34m(url, filename, reporthook, data)\u001b[0m\n\u001b[0;32m 224\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 225\u001b[0m \u001b[39mRetrieve a URL into a temporary location on disk.\u001b[39;00m\n\u001b[0;32m 226\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 237\u001b[0m \u001b[39mdata file as well as the resulting HTTPMessage object.\u001b[39;00m\n\u001b[0;32m 238\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 239\u001b[0m url_type, path \u001b[39m=\u001b[39m _splittype(url)\n\u001b[1;32m--> 241\u001b[0m \u001b[39mwith\u001b[39;00m contextlib\u001b[39m.\u001b[39mclosing(urlopen(url, data)) \u001b[39mas\u001b[39;00m fp:\n\u001b[0;32m 242\u001b[0m headers \u001b[39m=\u001b[39m fp\u001b[39m.\u001b[39minfo()\n\u001b[0;32m 244\u001b[0m \u001b[39m# Just return the local path and the \"headers\" for file://\u001b[39;00m\n\u001b[0;32m 245\u001b[0m \u001b[39m# URLs. No sense in performing a copy unless requested.\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:216\u001b[0m, in \u001b[0;36murlopen\u001b[1;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[0;32m 214\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 215\u001b[0m opener \u001b[39m=\u001b[39m _opener\n\u001b[1;32m--> 216\u001b[0m \u001b[39mreturn\u001b[39;00m opener\u001b[39m.\u001b[39;49mopen(url, data, timeout)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:519\u001b[0m, in \u001b[0;36mOpenerDirector.open\u001b[1;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[0;32m 516\u001b[0m req \u001b[39m=\u001b[39m meth(req)\n\u001b[0;32m 518\u001b[0m sys\u001b[39m.\u001b[39maudit(\u001b[39m'\u001b[39m\u001b[39murllib.Request\u001b[39m\u001b[39m'\u001b[39m, req\u001b[39m.\u001b[39mfull_url, req\u001b[39m.\u001b[39mdata, req\u001b[39m.\u001b[39mheaders, req\u001b[39m.\u001b[39mget_method())\n\u001b[1;32m--> 519\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_open(req, data)\n\u001b[0;32m 521\u001b[0m \u001b[39m# post-process response\u001b[39;00m\n\u001b[0;32m 522\u001b[0m meth_name \u001b[39m=\u001b[39m protocol\u001b[39m+\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m_response\u001b[39m\u001b[39m\"\u001b[39m\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:536\u001b[0m, in \u001b[0;36mOpenerDirector._open\u001b[1;34m(self, req, data)\u001b[0m\n\u001b[0;32m 533\u001b[0m \u001b[39mreturn\u001b[39;00m result\n\u001b[0;32m 535\u001b[0m protocol \u001b[39m=\u001b[39m req\u001b[39m.\u001b[39mtype\n\u001b[1;32m--> 536\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_call_chain(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mhandle_open, protocol, protocol \u001b[39m+\u001b[39;49m\n\u001b[0;32m 537\u001b[0m \u001b[39m'\u001b[39;49m\u001b[39m_open\u001b[39;49m\u001b[39m'\u001b[39;49m, req)\n\u001b[0;32m 538\u001b[0m \u001b[39mif\u001b[39;00m result:\n\u001b[0;32m 539\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:496\u001b[0m, in \u001b[0;36mOpenerDirector._call_chain\u001b[1;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[0;32m 494\u001b[0m \u001b[39mfor\u001b[39;00m handler \u001b[39min\u001b[39;00m handlers:\n\u001b[0;32m 495\u001b[0m func \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(handler, meth_name)\n\u001b[1;32m--> 496\u001b[0m result \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs)\n\u001b[0;32m 497\u001b[0m \u001b[39mif\u001b[39;00m result \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 498\u001b[0m \u001b[39mreturn\u001b[39;00m result\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:1391\u001b[0m, in \u001b[0;36mHTTPSHandler.https_open\u001b[1;34m(self, req)\u001b[0m\n\u001b[0;32m 1390\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mhttps_open\u001b[39m(\u001b[39mself\u001b[39m, req):\n\u001b[1;32m-> 1391\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdo_open(http\u001b[39m.\u001b[39;49mclient\u001b[39m.\u001b[39;49mHTTPSConnection, req,\n\u001b[0;32m 1392\u001b[0m context\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_context, check_hostname\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_check_hostname)\n", + "File \u001b[1;32mc:\\Users\\Deepak Yadav\\AppData\\Local\\Programs\\Python\\Python310\\lib\\urllib\\request.py:1351\u001b[0m, in \u001b[0;36mAbstractHTTPHandler.do_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m 1348\u001b[0m h\u001b[39m.\u001b[39mrequest(req\u001b[39m.\u001b[39mget_method(), req\u001b[39m.\u001b[39mselector, req\u001b[39m.\u001b[39mdata, headers,\n\u001b[0;32m 1349\u001b[0m encode_chunked\u001b[39m=\u001b[39mreq\u001b[39m.\u001b[39mhas_header(\u001b[39m'\u001b[39m\u001b[39mTransfer-encoding\u001b[39m\u001b[39m'\u001b[39m))\n\u001b[0;32m 1350\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mOSError\u001b[39;00m \u001b[39mas\u001b[39;00m err: \u001b[39m# timeout error\u001b[39;00m\n\u001b[1;32m-> 1351\u001b[0m \u001b[39mraise\u001b[39;00m URLError(err)\n\u001b[0;32m 1352\u001b[0m r \u001b[39m=\u001b[39m h\u001b[39m.\u001b[39mgetresponse()\n\u001b[0;32m 1353\u001b[0m \u001b[39mexcept\u001b[39;00m:\n", + "\u001b[1;31mURLError\u001b[0m: " ] } ], "source": [ - "new = EasyReggressor()" + "new= EasyRegressor()" ] }, { @@ -69,7 +125,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.10.7" }, "orig_nbformat": 4 },