From daeb45a48f2d951082c7b3252718fc81445b7945 Mon Sep 17 00:00:00 2001 From: khalid818 Date: Thu, 3 Apr 2025 19:01:08 +0300 Subject: [PATCH] LAB | Logistic Regression with Python --- ChurnData.csv | 201 +++++++ lab-logistic-regression-with-python.ipynb | 681 +++++++++++++++++++--- 2 files changed, 804 insertions(+), 78 deletions(-) create mode 100644 ChurnData.csv diff --git a/ChurnData.csv b/ChurnData.csv new file mode 100644 index 0000000..179441c --- /dev/null +++ b/ChurnData.csv @@ -0,0 +1,201 @@ +tenure,age,address,income,ed,employ,equip,callcard,wireless,longmon,tollmon,equipmon,cardmon,wiremon,longten,tollten,cardten,voice,pager,internet,callwait,confer,ebill,loglong,logtoll,lninc,custcat,churn +11.000,33.000,7.000,136.000,5.000,5.000,0.000,1.000,1.000,4.400,20.750,0.000,15.250,35.700,42.000,211.450,125.000,1.000,1.000,0.000,1.000,1.000,0.000,1.482,3.033,4.913,4.000,1.000 +33.000,33.000,12.000,33.000,2.000,0.000,0.000,0.000,0.000,9.450,0.000,0.000,0.000,0.000,288.800,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.246,3.240,3.497,1.000,1.000 +23.000,30.000,9.000,30.000,1.000,2.000,0.000,0.000,0.000,6.300,0.000,0.000,0.000,0.000,157.050,0.000,0.000,0.000,0.000,0.000,0.000,1.000,0.000,1.841,3.240,3.401,3.000,0.000 +38.000,35.000,5.000,76.000,2.000,10.000,1.000,1.000,1.000,6.050,45.000,50.100,23.250,64.900,239.550,1873.050,880.000,1.000,1.000,1.000,1.000,1.000,1.000,1.800,3.807,4.331,4.000,0.000 +7.000,35.000,14.000,80.000,2.000,15.000,0.000,1.000,0.000,7.100,22.000,0.000,23.750,0.000,47.450,166.100,145.000,1.000,0.000,0.000,1.000,1.000,0.000,1.960,3.091,4.382,3.000,0.000 +68.000,52.000,17.000,120.000,1.000,24.000,0.000,1.000,0.000,20.700,0.000,0.000,22.000,0.000,1391.050,0.000,1505.000,0.000,0.000,0.000,0.000,0.000,0.000,3.030,3.240,4.787,1.000,0.000 +42.000,40.000,7.000,37.000,2.000,8.000,1.000,1.000,1.000,8.250,23.500,36.900,28.000,37.400,399.150,950.650,1190.000,1.000,0.000,1.000,1.000,1.000,1.000,2.110,3.157,3.611,4.000,0.000 +9.000,21.000,1.000,17.000,2.000,2.000,0.000,0.000,0.000,2.900,0.000,0.000,0.000,0.000,25.250,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.065,3.240,2.833,1.000,0.000 +35.000,50.000,26.000,140.000,2.000,21.000,0.000,1.000,0.000,6.500,27.500,0.000,35.000,0.000,247.550,1068.250,1215.000,0.000,0.000,0.000,1.000,1.000,0.000,1.872,3.314,4.942,3.000,0.000 +49.000,51.000,27.000,63.000,4.000,19.000,0.000,1.000,0.000,12.850,25.750,0.000,14.250,0.000,585.600,1278.450,635.000,0.000,0.000,1.000,1.000,0.000,1.000,2.553,3.248,4.143,2.000,0.000 +56.000,52.000,28.000,49.000,2.000,12.000,0.000,1.000,0.000,24.750,0.000,0.000,22.250,0.000,1349.050,0.000,1215.000,0.000,0.000,0.000,0.000,0.000,0.000,3.209,3.240,3.892,2.000,0.000 +47.000,40.000,16.000,127.000,4.000,12.000,1.000,1.000,0.000,19.700,0.000,28.150,14.750,0.000,909.900,0.000,680.000,0.000,0.000,1.000,0.000,0.000,1.000,2.981,3.240,4.844,2.000,0.000 +56.000,50.000,1.000,80.000,2.000,24.000,0.000,1.000,1.000,28.800,55.500,0.000,21.250,61.100,1558.100,3119.450,1065.000,1.000,1.000,0.000,1.000,1.000,0.000,3.360,4.016,4.382,4.000,0.000 +69.000,51.000,11.000,438.000,4.000,23.000,1.000,1.000,0.000,29.000,0.000,47.050,24.750,0.000,1815.400,0.000,1655.000,0.000,1.000,1.000,0.000,1.000,0.000,3.367,3.240,6.082,4.000,0.000 +16.000,27.000,5.000,37.000,3.000,5.000,0.000,0.000,0.000,6.000,0.000,0.000,0.000,0.000,80.700,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.792,3.240,3.611,1.000,0.000 +4.000,35.000,16.000,161.000,5.000,6.000,1.000,0.000,1.000,3.400,23.750,49.800,0.000,35.750,10.350,103.100,0.000,1.000,1.000,1.000,1.000,1.000,1.000,1.224,3.168,5.081,4.000,1.000 +27.000,51.000,3.000,80.000,5.000,11.000,1.000,0.000,0.000,7.100,0.000,39.400,0.000,0.000,176.200,0.000,0.000,0.000,1.000,1.000,0.000,0.000,1.000,1.960,3.240,4.382,2.000,0.000 +52.000,61.000,3.000,53.000,5.000,1.000,1.000,1.000,1.000,12.250,0.000,38.400,8.750,35.950,631.700,0.000,465.000,1.000,0.000,1.000,0.000,1.000,1.000,2.506,3.240,3.970,2.000,0.000 +64.000,25.000,4.000,76.000,3.000,2.000,1.000,1.000,0.000,24.050,0.000,35.400,21.250,0.000,1536.550,0.000,1400.000,0.000,0.000,0.000,0.000,1.000,1.000,3.180,3.240,4.331,3.000,0.000 +12.000,24.000,2.000,19.000,1.000,0.000,0.000,1.000,0.000,4.000,24.750,0.000,27.250,0.000,46.000,299.000,295.000,0.000,0.000,0.000,1.000,1.000,0.000,1.386,3.209,2.944,3.000,1.000 +35.000,61.000,23.000,41.000,2.000,11.000,0.000,1.000,0.000,9.600,0.000,0.000,9.500,0.000,353.550,0.000,295.000,0.000,0.000,0.000,0.000,0.000,0.000,2.262,3.240,3.714,1.000,0.000 +13.000,54.000,2.000,31.000,4.000,2.000,0.000,0.000,0.000,5.850,0.000,0.000,0.000,0.000,97.000,0.000,0.000,1.000,0.000,1.000,0.000,0.000,1.000,1.766,3.240,3.434,1.000,0.000 +45.000,22.000,2.000,36.000,4.000,0.000,1.000,0.000,0.000,9.950,14.750,26.150,0.000,0.000,412.100,663.100,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.298,2.691,3.584,2.000,1.000 +3.000,37.000,13.000,24.000,1.000,3.000,0.000,0.000,0.000,2.000,0.000,0.000,0.000,0.000,3.050,0.000,0.000,1.000,0.000,0.000,0.000,1.000,1.000,0.693,3.240,3.178,1.000,0.000 +53.000,22.000,1.000,25.000,4.000,0.000,1.000,1.000,0.000,12.050,0.000,27.150,6.500,0.000,666.000,0.000,335.000,0.000,0.000,1.000,0.000,0.000,1.000,2.489,3.240,3.219,2.000,0.000 +17.000,42.000,6.000,131.000,5.000,6.000,1.000,0.000,1.000,5.800,0.000,35.350,0.000,21.650,103.100,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.758,3.240,4.875,2.000,1.000 +59.000,43.000,4.000,101.000,2.000,22.000,0.000,1.000,0.000,13.650,0.000,0.000,20.750,0.000,817.650,0.000,1195.000,0.000,0.000,0.000,0.000,1.000,0.000,2.614,3.240,4.615,2.000,0.000 +57.000,37.000,11.000,108.000,4.000,9.000,1.000,1.000,0.000,21.800,27.250,42.000,8.000,0.000,1292.000,1492.100,425.000,0.000,0.000,1.000,1.000,1.000,0.000,3.082,3.305,4.682,3.000,0.000 +3.000,24.000,2.000,20.000,2.000,3.000,0.000,1.000,0.000,3.350,22.500,0.000,9.250,0.000,7.550,49.550,15.000,1.000,0.000,1.000,1.000,1.000,0.000,1.209,3.114,2.996,3.000,0.000 +4.000,47.000,5.000,123.000,4.000,11.000,1.000,1.000,0.000,2.500,0.000,25.300,13.750,0.000,9.250,0.000,40.000,0.000,0.000,1.000,0.000,0.000,1.000,0.916,3.240,4.812,1.000,0.000 +29.000,26.000,7.000,34.000,1.000,7.000,0.000,1.000,0.000,6.500,0.000,0.000,16.000,0.000,198.700,0.000,490.000,0.000,0.000,0.000,1.000,0.000,0.000,1.872,3.240,3.526,3.000,0.000 +64.000,55.000,28.000,104.000,1.000,26.000,0.000,1.000,0.000,15.000,0.000,0.000,39.250,0.000,960.950,0.000,2360.000,0.000,0.000,0.000,0.000,1.000,0.000,2.708,3.240,4.644,3.000,0.000 +22.000,34.000,1.000,46.000,3.000,1.000,1.000,0.000,0.000,7.100,0.000,23.400,0.000,0.000,125.050,0.000,0.000,0.000,0.000,1.000,0.000,0.000,0.000,1.960,3.240,3.829,2.000,0.000 +33.000,54.000,18.000,57.000,4.000,4.000,1.000,0.000,0.000,7.500,30.250,33.900,0.000,0.000,226.250,1105.750,0.000,0.000,0.000,1.000,1.000,0.000,0.000,2.015,3.409,4.043,3.000,1.000 +18.000,69.000,11.000,58.000,3.000,8.000,1.000,1.000,1.000,6.350,27.250,53.950,11.750,63.000,118.050,454.050,175.000,1.000,1.000,1.000,1.000,1.000,1.000,1.848,3.305,4.060,4.000,0.000 +65.000,65.000,27.000,128.000,3.000,24.000,0.000,1.000,0.000,21.200,24.000,0.000,14.500,0.000,1325.050,1483.550,940.000,0.000,0.000,0.000,1.000,1.000,0.000,3.054,3.178,4.852,3.000,0.000 +39.000,24.000,2.000,26.000,2.000,4.000,0.000,1.000,0.000,10.400,0.000,0.000,12.500,0.000,403.500,0.000,480.000,0.000,0.000,0.000,0.000,0.000,1.000,2.342,3.240,3.258,1.000,1.000 +28.000,29.000,4.000,23.000,3.000,5.000,0.000,0.000,0.000,3.700,0.000,0.000,0.000,0.000,91.950,0.000,0.000,0.000,0.000,1.000,0.000,1.000,1.000,1.308,3.240,3.135,2.000,0.000 +46.000,42.000,9.000,52.000,4.000,7.000,0.000,1.000,0.000,14.250,0.000,0.000,21.000,0.000,611.650,0.000,985.000,0.000,0.000,0.000,0.000,0.000,0.000,2.657,3.240,3.951,2.000,0.000 +43.000,43.000,3.000,55.000,4.000,18.000,1.000,1.000,1.000,9.100,40.750,48.400,16.000,50.600,422.700,1802.500,675.000,1.000,1.000,1.000,1.000,1.000,0.000,2.208,3.707,4.007,4.000,0.000 +21.000,29.000,7.000,40.000,4.000,2.000,1.000,1.000,1.000,4.500,17.000,36.200,19.250,33.400,89.100,386.800,395.000,0.000,0.000,1.000,1.000,0.000,0.000,1.504,2.833,3.689,1.000,0.000 +53.000,57.000,25.000,37.000,1.000,7.000,0.000,1.000,0.000,7.700,0.000,0.000,9.250,0.000,363.950,0.000,465.000,0.000,0.000,0.000,0.000,0.000,0.000,2.041,3.240,3.611,2.000,0.000 +50.000,52.000,17.000,36.000,4.000,16.000,0.000,1.000,1.000,11.950,55.000,0.000,48.000,85.850,616.250,2662.100,2330.000,1.000,1.000,0.000,1.000,1.000,1.000,2.481,4.007,3.584,4.000,0.000 +43.000,21.000,1.000,25.000,1.000,4.000,0.000,0.000,0.000,7.600,0.000,0.000,0.000,0.000,334.450,0.000,0.000,0.000,0.000,1.000,0.000,1.000,0.000,2.028,3.240,3.219,2.000,1.000 +33.000,33.000,12.000,42.000,4.000,7.000,1.000,1.000,1.000,8.800,0.000,30.950,23.000,23.350,305.750,0.000,730.000,1.000,0.000,0.000,0.000,0.000,0.000,2.175,3.240,3.738,2.000,0.000 +45.000,66.000,43.000,144.000,2.000,13.000,0.000,1.000,0.000,7.750,0.000,0.000,13.000,0.000,338.800,0.000,565.000,0.000,0.000,1.000,0.000,0.000,0.000,2.048,3.240,4.970,2.000,0.000 +28.000,57.000,33.000,82.000,4.000,22.000,1.000,0.000,0.000,4.050,0.000,31.450,0.000,0.000,71.500,0.000,0.000,1.000,0.000,1.000,0.000,0.000,1.000,1.399,3.240,4.407,2.000,1.000 +37.000,33.000,1.000,102.000,2.000,12.000,1.000,1.000,1.000,16.300,0.000,33.350,10.250,37.900,646.700,0.000,360.000,0.000,1.000,1.000,1.000,0.000,1.000,2.791,3.240,4.625,4.000,0.000 +71.000,56.000,23.000,170.000,1.000,30.000,0.000,1.000,0.000,14.200,27.000,0.000,30.000,0.000,1001.200,1840.650,2140.000,1.000,1.000,0.000,1.000,1.000,0.000,2.653,3.296,5.136,4.000,0.000 +58.000,58.000,10.000,96.000,2.000,17.000,0.000,0.000,0.000,12.500,23.000,0.000,0.000,0.000,710.800,1345.950,0.000,0.000,0.000,0.000,1.000,1.000,0.000,2.526,3.135,4.564,3.000,0.000 +36.000,58.000,34.000,80.000,1.000,21.000,0.000,1.000,0.000,8.500,0.000,0.000,8.500,0.000,298.250,0.000,260.000,0.000,0.000,0.000,1.000,0.000,0.000,2.140,3.240,4.382,2.000,0.000 +26.000,39.000,15.000,58.000,4.000,9.000,0.000,1.000,1.000,8.650,21.250,0.000,6.500,19.650,210.600,567.550,145.000,0.000,0.000,1.000,0.000,1.000,0.000,2.158,3.056,4.060,3.000,0.000 +13.000,43.000,1.000,123.000,3.000,21.000,1.000,1.000,0.000,3.850,23.000,33.050,6.750,0.000,55.050,317.500,75.000,0.000,1.000,1.000,1.000,0.000,1.000,1.348,3.135,4.812,4.000,0.000 +28.000,40.000,7.000,64.000,1.000,19.000,0.000,0.000,0.000,6.000,27.500,0.000,0.000,0.000,167.650,722.500,0.000,0.000,0.000,0.000,0.000,1.000,0.000,1.792,3.314,4.159,3.000,0.000 +1.000,21.000,1.000,18.000,3.000,0.000,1.000,0.000,0.000,2.700,0.000,32.700,0.000,0.000,2.700,0.000,0.000,0.000,0.000,1.000,0.000,1.000,1.000,0.993,3.240,2.890,1.000,1.000 +15.000,35.000,5.000,34.000,3.000,8.000,1.000,0.000,0.000,5.150,0.000,25.550,0.000,0.000,110.550,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.639,3.240,3.526,2.000,1.000 +12.000,64.000,13.000,9.000,2.000,6.000,1.000,1.000,0.000,3.800,30.000,32.800,8.500,0.000,52.850,317.750,95.000,0.000,0.000,1.000,1.000,1.000,1.000,1.335,3.401,2.197,3.000,0.000 +5.000,30.000,3.000,46.000,4.000,7.000,1.000,0.000,0.000,4.300,0.000,32.100,0.000,0.000,17.550,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.459,3.240,3.829,2.000,1.000 +32.000,27.000,3.000,91.000,4.000,1.000,1.000,1.000,1.000,5.500,16.000,42.650,3.750,41.300,189.050,543.150,100.000,1.000,1.000,1.000,0.000,1.000,1.000,1.705,2.773,4.511,4.000,1.000 +14.000,36.000,13.000,67.000,5.000,4.000,1.000,0.000,0.000,14.050,0.000,25.100,0.000,0.000,187.400,0.000,0.000,0.000,0.000,1.000,1.000,0.000,0.000,2.643,3.240,4.205,1.000,0.000 +67.000,60.000,32.000,93.000,1.000,21.000,1.000,1.000,0.000,18.850,0.000,32.000,42.750,0.000,1200.700,0.000,2665.000,0.000,0.000,0.000,0.000,0.000,1.000,2.937,3.240,4.533,2.000,0.000 +60.000,45.000,23.000,117.000,4.000,11.000,1.000,1.000,1.000,12.400,28.000,51.700,19.500,52.900,755.700,1721.250,1135.000,1.000,1.000,1.000,1.000,1.000,1.000,2.518,3.332,4.762,4.000,0.000 +70.000,55.000,12.000,65.000,3.000,24.000,0.000,1.000,0.000,26.700,42.750,0.000,20.500,0.000,1874.250,2921.350,1465.000,1.000,0.000,0.000,1.000,1.000,0.000,3.285,3.755,4.174,3.000,0.000 +6.000,24.000,2.000,28.000,1.000,5.000,0.000,1.000,0.000,4.400,9.000,0.000,28.250,0.000,35.100,57.800,155.000,0.000,0.000,0.000,1.000,1.000,0.000,1.482,2.197,3.332,3.000,1.000 +38.000,33.000,3.000,38.000,4.000,0.000,1.000,1.000,0.000,10.950,0.000,27.200,12.250,0.000,412.800,0.000,465.000,0.000,0.000,1.000,0.000,0.000,1.000,2.393,3.240,3.638,2.000,0.000 +53.000,35.000,15.000,59.000,3.000,5.000,0.000,1.000,0.000,16.850,23.250,0.000,18.500,0.000,888.450,1250.700,995.000,0.000,1.000,0.000,1.000,0.000,0.000,2.824,3.146,4.078,3.000,0.000 +37.000,76.000,38.000,117.000,4.000,21.000,0.000,1.000,0.000,7.500,0.000,0.000,6.250,0.000,273.700,0.000,230.000,0.000,0.000,0.000,0.000,0.000,0.000,2.015,3.240,4.762,1.000,0.000 +61.000,45.000,21.000,80.000,2.000,13.000,0.000,1.000,0.000,18.100,0.000,0.000,35.250,0.000,1114.750,0.000,2200.000,0.000,0.000,0.000,0.000,0.000,0.000,2.896,3.240,4.382,2.000,0.000 +20.000,31.000,10.000,39.000,2.000,3.000,0.000,0.000,0.000,7.750,0.000,0.000,0.000,0.000,148.750,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.048,3.240,3.664,1.000,0.000 +72.000,60.000,33.000,12.000,1.000,20.000,0.000,1.000,1.000,53.750,68.500,0.000,10.250,43.950,3776.100,4938.600,780.000,1.000,1.000,0.000,1.000,1.000,0.000,3.984,4.227,2.485,4.000,0.000 +61.000,43.000,6.000,34.000,5.000,6.000,1.000,1.000,1.000,25.050,39.000,56.800,32.750,51.000,1541.900,2536.100,1980.000,1.000,1.000,1.000,1.000,1.000,1.000,3.221,3.664,3.526,4.000,1.000 +54.000,27.000,3.000,27.000,2.000,6.000,1.000,1.000,1.000,12.400,35.000,48.300,5.750,43.500,660.850,1919.750,315.000,1.000,1.000,1.000,1.000,1.000,1.000,2.518,3.555,3.296,4.000,0.000 +28.000,36.000,3.000,42.000,3.000,7.000,0.000,1.000,0.000,12.900,28.250,0.000,14.000,0.000,363.650,820.150,370.000,0.000,0.000,1.000,1.000,1.000,0.000,2.557,3.341,3.738,3.000,0.000 +52.000,42.000,17.000,27.000,3.000,8.000,0.000,1.000,0.000,19.650,31.000,0.000,19.750,0.000,1008.800,1661.300,1050.000,0.000,0.000,1.000,1.000,1.000,0.000,2.978,3.434,3.296,3.000,0.000 +43.000,27.000,3.000,21.000,2.000,1.000,0.000,1.000,0.000,12.650,0.000,0.000,16.500,0.000,558.850,0.000,760.000,0.000,0.000,0.000,0.000,0.000,0.000,2.538,3.240,3.045,2.000,0.000 +46.000,45.000,12.000,96.000,3.000,17.000,1.000,1.000,0.000,10.950,0.000,24.500,9.750,0.000,504.300,0.000,410.000,0.000,0.000,1.000,0.000,0.000,1.000,2.393,3.240,4.564,2.000,0.000 +39.000,59.000,20.000,1668.000,4.000,27.000,0.000,0.000,0.000,8.200,15.000,0.000,0.000,0.000,303.950,595.600,0.000,1.000,0.000,1.000,1.000,0.000,0.000,2.104,2.708,7.419,2.000,0.000 +10.000,34.000,1.000,52.000,5.000,3.000,1.000,0.000,1.000,4.300,0.000,32.550,0.000,25.400,47.450,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.459,3.240,3.951,2.000,1.000 +69.000,46.000,18.000,66.000,2.000,19.000,0.000,1.000,0.000,21.850,0.000,0.000,46.500,0.000,1589.100,0.000,3265.000,0.000,0.000,0.000,0.000,0.000,0.000,3.084,3.240,4.190,2.000,0.000 +45.000,30.000,0.000,63.000,5.000,4.000,1.000,1.000,1.000,7.100,40.750,39.750,16.500,50.850,314.800,1849.500,775.000,1.000,1.000,1.000,1.000,1.000,1.000,1.960,3.707,4.143,4.000,1.000 +52.000,62.000,23.000,36.000,4.000,17.000,0.000,1.000,0.000,13.350,18.500,0.000,18.500,0.000,709.250,978.850,915.000,0.000,0.000,0.000,0.000,1.000,0.000,2.592,2.918,3.584,1.000,0.000 +42.000,36.000,14.000,44.000,2.000,11.000,0.000,0.000,1.000,7.000,26.500,0.000,0.000,26.100,321.950,1161.300,0.000,0.000,1.000,0.000,1.000,1.000,0.000,1.946,3.277,3.784,3.000,0.000 +5.000,44.000,5.000,83.000,1.000,16.000,1.000,0.000,0.000,4.650,0.000,25.250,0.000,0.000,12.300,0.000,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.537,3.240,4.419,2.000,1.000 +10.000,33.000,2.000,66.000,3.000,9.000,0.000,1.000,0.000,7.100,21.250,0.000,25.250,0.000,59.300,241.800,220.000,0.000,0.000,1.000,0.000,0.000,0.000,1.960,3.056,4.190,1.000,1.000 +26.000,30.000,9.000,18.000,4.000,1.000,0.000,1.000,0.000,7.250,25.500,0.000,32.500,0.000,171.850,688.350,840.000,1.000,1.000,0.000,1.000,1.000,0.000,1.981,3.239,2.890,4.000,1.000 +25.000,30.000,0.000,20.000,1.000,4.000,0.000,1.000,0.000,8.550,21.750,0.000,15.500,0.000,215.950,522.150,370.000,0.000,0.000,0.000,1.000,1.000,0.000,2.146,3.080,2.996,3.000,0.000 +30.000,23.000,4.000,19.000,3.000,1.000,1.000,1.000,0.000,7.900,0.000,35.200,27.500,0.000,253.050,0.000,840.000,0.000,0.000,1.000,0.000,0.000,1.000,2.067,3.240,2.944,2.000,0.000 +65.000,59.000,27.000,197.000,4.000,26.000,1.000,1.000,0.000,45.400,0.000,25.750,46.750,0.000,2973.550,0.000,3065.000,0.000,1.000,0.000,0.000,0.000,1.000,3.816,3.240,5.283,2.000,0.000 +5.000,32.000,6.000,33.000,4.000,3.000,1.000,0.000,0.000,3.200,0.000,21.600,0.000,0.000,24.550,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.163,3.240,3.497,1.000,1.000 +7.000,23.000,3.000,27.000,2.000,1.000,0.000,1.000,0.000,3.650,9.500,0.000,7.000,0.000,21.000,76.050,55.000,0.000,0.000,0.000,1.000,0.000,0.000,1.295,2.251,3.296,1.000,0.000 +25.000,29.000,9.000,55.000,4.000,1.000,0.000,0.000,0.000,5.250,24.750,0.000,0.000,0.000,147.950,612.450,0.000,0.000,0.000,0.000,0.000,0.000,1.000,1.658,3.209,4.007,1.000,1.000 +8.000,22.000,3.000,25.000,4.000,0.000,0.000,1.000,1.000,8.000,32.250,0.000,18.250,19.450,61.550,264.000,155.000,1.000,0.000,0.000,1.000,1.000,0.000,2.079,3.474,3.219,3.000,0.000 +39.000,47.000,1.000,68.000,4.000,10.000,0.000,0.000,0.000,8.300,0.000,0.000,0.000,0.000,308.550,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,2.116,3.240,4.220,2.000,1.000 +28.000,36.000,3.000,69.000,3.000,2.000,1.000,1.000,1.000,6.050,25.250,41.550,31.750,36.600,153.050,697.050,835.000,1.000,1.000,0.000,1.000,1.000,1.000,1.800,3.229,4.234,4.000,0.000 +55.000,52.000,22.000,127.000,1.000,28.000,0.000,1.000,0.000,7.050,0.000,0.000,20.250,0.000,400.550,0.000,1150.000,1.000,0.000,0.000,0.000,0.000,1.000,1.953,3.240,4.844,2.000,0.000 +11.000,63.000,9.000,41.000,3.000,3.000,1.000,0.000,0.000,4.150,0.000,29.900,0.000,0.000,46.350,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.423,3.240,3.714,1.000,1.000 +51.000,48.000,27.000,58.000,1.000,18.000,0.000,1.000,0.000,19.200,25.750,0.000,9.250,0.000,964.850,1320.050,390.000,0.000,0.000,0.000,0.000,1.000,0.000,2.955,3.248,4.060,3.000,1.000 +25.000,62.000,27.000,28.000,4.000,33.000,1.000,1.000,1.000,8.300,14.750,52.000,18.000,47.000,160.400,359.250,430.000,1.000,1.000,0.000,1.000,1.000,1.000,2.116,2.691,3.332,4.000,1.000 +62.000,76.000,20.000,35.000,3.000,18.000,0.000,1.000,0.000,17.250,0.000,0.000,17.750,0.000,1045.700,0.000,1085.000,0.000,0.000,0.000,0.000,0.000,1.000,2.848,3.240,3.555,2.000,0.000 +53.000,33.000,1.000,60.000,1.000,6.000,0.000,1.000,1.000,17.650,28.500,0.000,41.000,28.550,950.700,1502.200,2170.000,1.000,1.000,0.000,1.000,1.000,0.000,2.871,3.350,4.094,4.000,0.000 +1.000,30.000,3.000,135.000,4.000,3.000,1.000,1.000,0.000,1.100,5.750,22.800,2.750,0.000,1.100,5.750,2.750,0.000,0.000,1.000,0.000,0.000,1.000,0.095,1.749,4.905,1.000,1.000 +20.000,32.000,10.000,19.000,3.000,5.000,1.000,0.000,0.000,6.850,0.000,36.050,0.000,0.000,106.500,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.924,3.240,2.944,2.000,0.000 +34.000,63.000,10.000,23.000,2.000,0.000,1.000,1.000,1.000,14.300,19.500,39.600,15.250,28.950,459.050,616.500,495.000,1.000,1.000,1.000,1.000,1.000,1.000,2.660,2.970,3.135,4.000,0.000 +44.000,45.000,19.000,88.000,1.000,21.000,0.000,1.000,0.000,11.900,25.250,0.000,8.250,0.000,524.250,1108.400,305.000,0.000,0.000,0.000,1.000,1.000,0.000,2.477,3.229,4.477,3.000,0.000 +12.000,23.000,2.000,24.000,4.000,0.000,0.000,1.000,1.000,3.200,41.000,0.000,15.750,35.400,35.500,502.000,210.000,1.000,1.000,1.000,1.000,1.000,0.000,1.163,3.714,3.178,4.000,0.000 +39.000,34.000,4.000,20.000,5.000,3.000,1.000,1.000,1.000,9.550,21.250,59.200,10.000,79.200,375.400,872.500,385.000,1.000,1.000,1.000,1.000,1.000,1.000,2.257,3.056,2.996,4.000,0.000 +19.000,26.000,2.000,48.000,3.000,0.000,0.000,1.000,0.000,7.550,0.000,0.000,6.500,0.000,156.150,0.000,105.000,1.000,0.000,0.000,1.000,0.000,0.000,2.022,3.240,3.871,3.000,0.000 +7.000,27.000,3.000,39.000,3.000,2.000,0.000,0.000,0.000,3.550,0.000,0.000,0.000,0.000,19.700,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.267,3.240,3.664,1.000,1.000 +32.000,34.000,0.000,38.000,1.000,10.000,0.000,1.000,0.000,7.350,0.000,0.000,19.250,0.000,217.450,0.000,600.000,0.000,0.000,0.000,0.000,0.000,1.000,1.995,3.240,3.638,2.000,0.000 +35.000,34.000,7.000,78.000,4.000,10.000,0.000,1.000,0.000,13.900,0.000,0.000,4.500,0.000,556.200,0.000,135.000,0.000,0.000,0.000,0.000,0.000,0.000,2.632,3.240,4.357,1.000,0.000 +56.000,42.000,10.000,24.000,2.000,5.000,0.000,0.000,0.000,33.650,0.000,0.000,0.000,0.000,1871.200,0.000,0.000,0.000,0.000,0.000,1.000,1.000,0.000,3.516,3.240,3.178,3.000,0.000 +5.000,47.000,7.000,46.000,1.000,6.000,0.000,1.000,0.000,2.950,0.000,0.000,7.250,0.000,21.550,0.000,35.000,0.000,0.000,0.000,0.000,0.000,0.000,1.082,3.240,3.829,1.000,1.000 +16.000,50.000,5.000,263.000,2.000,29.000,1.000,0.000,1.000,3.750,17.000,31.950,0.000,21.900,59.750,253.350,0.000,0.000,0.000,0.000,1.000,1.000,1.000,1.322,2.833,5.572,3.000,0.000 +17.000,42.000,6.000,31.000,2.000,2.000,0.000,0.000,1.000,8.250,24.500,0.000,0.000,26.400,140.850,404.800,0.000,1.000,0.000,0.000,1.000,1.000,1.000,2.110,3.199,3.434,4.000,1.000 +9.000,24.000,3.000,26.000,4.000,1.000,1.000,0.000,0.000,7.650,0.000,23.250,0.000,0.000,75.250,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.035,3.240,3.258,1.000,0.000 +9.000,41.000,12.000,39.000,4.000,3.000,1.000,0.000,1.000,4.700,0.000,39.650,0.000,20.800,26.300,0.000,0.000,1.000,1.000,1.000,0.000,0.000,1.000,1.548,3.240,3.664,1.000,1.000 +71.000,41.000,10.000,73.000,2.000,23.000,0.000,1.000,0.000,32.650,0.000,0.000,41.750,0.000,2412.600,0.000,3085.000,0.000,0.000,0.000,1.000,0.000,0.000,3.486,3.240,4.290,3.000,0.000 +11.000,26.000,2.000,53.000,3.000,3.000,1.000,1.000,1.000,4.150,21.500,43.700,11.750,38.800,34.700,188.350,110.000,1.000,1.000,1.000,1.000,0.000,1.000,1.423,3.068,3.970,4.000,1.000 +23.000,50.000,1.000,151.000,4.000,8.000,0.000,0.000,0.000,8.250,21.750,0.000,0.000,0.000,186.500,438.400,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.110,3.080,5.017,1.000,0.000 +24.000,58.000,30.000,24.000,1.000,5.000,0.000,0.000,0.000,7.650,16.000,0.000,0.000,0.000,177.400,420.650,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.035,2.773,3.178,1.000,0.000 +4.000,24.000,1.000,17.000,2.000,2.000,0.000,0.000,0.000,3.200,0.000,0.000,0.000,0.000,9.900,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.163,3.240,2.833,1.000,1.000 +10.000,28.000,9.000,75.000,4.000,1.000,1.000,1.000,1.000,6.200,27.500,42.400,40.000,36.300,45.950,225.850,340.000,1.000,1.000,1.000,1.000,1.000,1.000,1.825,3.314,4.317,4.000,1.000 +24.000,35.000,10.000,41.000,5.000,6.000,1.000,0.000,0.000,3.300,0.000,30.300,0.000,0.000,88.650,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.194,3.240,3.714,2.000,0.000 +12.000,31.000,8.000,18.000,4.000,4.000,1.000,0.000,0.000,3.700,0.000,24.300,0.000,0.000,48.550,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.308,3.240,2.890,1.000,1.000 +59.000,55.000,29.000,42.000,3.000,21.000,0.000,1.000,0.000,8.950,0.000,0.000,15.250,0.000,492.350,0.000,855.000,0.000,0.000,0.000,0.000,0.000,0.000,2.192,3.240,3.738,2.000,0.000 +72.000,75.000,48.000,14.000,2.000,6.000,0.000,1.000,0.000,37.300,0.000,0.000,109.250,0.000,2686.250,0.000,7515.000,0.000,0.000,0.000,0.000,0.000,0.000,3.619,3.240,2.639,2.000,0.000 +67.000,40.000,14.000,59.000,3.000,11.000,0.000,1.000,0.000,27.000,30.000,0.000,19.750,0.000,1722.500,1959.950,1245.000,0.000,0.000,0.000,1.000,1.000,0.000,3.296,3.401,4.078,3.000,0.000 +10.000,40.000,6.000,22.000,3.000,6.000,0.000,0.000,0.000,5.050,0.000,0.000,0.000,0.000,59.950,0.000,0.000,0.000,0.000,1.000,0.000,0.000,0.000,1.619,3.240,3.091,1.000,1.000 +30.000,28.000,1.000,20.000,1.000,8.000,0.000,0.000,0.000,12.400,0.000,0.000,0.000,0.000,369.450,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.518,3.240,2.996,1.000,1.000 +24.000,46.000,12.000,43.000,2.000,6.000,0.000,1.000,1.000,12.050,48.250,0.000,33.000,28.150,307.750,1079.050,820.000,1.000,1.000,0.000,1.000,1.000,1.000,2.489,3.876,3.761,4.000,0.000 +72.000,75.000,37.000,33.000,1.000,44.000,0.000,1.000,0.000,49.300,31.750,0.000,26.000,0.000,3417.400,2254.150,1835.000,0.000,0.000,0.000,0.000,1.000,0.000,3.898,3.458,3.497,2.000,0.000 +26.000,43.000,23.000,51.000,5.000,4.000,1.000,0.000,0.000,7.900,0.000,21.950,0.000,0.000,267.600,0.000,0.000,0.000,0.000,1.000,0.000,0.000,0.000,2.067,3.240,3.932,2.000,1.000 +36.000,45.000,22.000,117.000,3.000,15.000,0.000,0.000,0.000,10.500,0.000,0.000,0.000,0.000,429.100,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.000,2.351,3.240,4.762,2.000,0.000 +16.000,54.000,20.000,147.000,1.000,29.000,0.000,1.000,0.000,6.950,23.250,0.000,6.500,0.000,98.500,357.950,90.000,0.000,0.000,0.000,1.000,1.000,0.000,1.939,3.146,4.990,3.000,0.000 +54.000,42.000,0.000,55.000,4.000,2.000,1.000,1.000,1.000,14.300,55.500,62.150,19.250,83.700,695.200,3086.350,1050.000,1.000,1.000,1.000,1.000,1.000,1.000,2.660,4.016,4.007,4.000,1.000 +72.000,62.000,35.000,163.000,5.000,31.000,1.000,1.000,1.000,28.350,32.750,45.150,39.750,56.550,2017.600,2276.300,2845.000,1.000,1.000,1.000,1.000,1.000,0.000,3.345,3.489,5.094,4.000,0.000 +19.000,32.000,12.000,71.000,4.000,5.000,1.000,1.000,1.000,5.250,21.500,62.400,17.000,47.800,97.400,419.250,275.000,1.000,1.000,1.000,1.000,1.000,1.000,1.658,3.068,4.263,4.000,1.000 +18.000,25.000,4.000,26.000,2.000,7.000,0.000,1.000,0.000,3.300,27.500,0.000,31.000,0.000,50.350,531.100,540.000,0.000,0.000,0.000,0.000,1.000,0.000,1.194,3.314,3.258,1.000,0.000 +45.000,34.000,14.000,43.000,4.000,0.000,1.000,0.000,0.000,6.550,0.000,32.350,0.000,0.000,315.200,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.879,3.240,3.761,2.000,1.000 +17.000,41.000,9.000,28.000,4.000,3.000,0.000,1.000,0.000,1.800,0.000,0.000,10.000,0.000,27.100,0.000,140.000,0.000,0.000,0.000,1.000,0.000,0.000,0.588,3.240,3.332,1.000,0.000 +8.000,42.000,2.000,129.000,4.000,17.000,0.000,0.000,0.000,6.100,0.000,0.000,0.000,0.000,63.800,0.000,0.000,0.000,0.000,1.000,0.000,1.000,1.000,1.808,3.240,4.860,1.000,0.000 +66.000,62.000,31.000,47.000,2.000,4.000,0.000,1.000,0.000,34.250,21.000,0.000,20.000,0.000,2298.250,1425.350,1355.000,0.000,0.000,0.000,0.000,0.000,0.000,3.534,3.045,3.850,2.000,0.000 +60.000,57.000,18.000,72.000,5.000,30.000,1.000,1.000,1.000,20.350,29.000,50.250,20.500,55.900,1263.900,1806.850,1140.000,1.000,1.000,1.000,1.000,1.000,1.000,3.013,3.367,4.277,4.000,0.000 +63.000,37.000,1.000,45.000,4.000,9.000,1.000,1.000,0.000,14.950,0.000,39.250,13.500,0.000,974.150,0.000,820.000,1.000,0.000,1.000,0.000,0.000,1.000,2.705,3.240,3.807,2.000,0.000 +45.000,27.000,3.000,39.000,3.000,2.000,0.000,0.000,0.000,13.450,0.000,0.000,0.000,0.000,583.900,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,2.599,3.240,3.664,2.000,0.000 +68.000,42.000,16.000,89.000,4.000,12.000,1.000,1.000,0.000,25.600,0.000,33.000,16.000,0.000,1759.600,0.000,1020.000,0.000,0.000,1.000,0.000,0.000,1.000,3.243,3.240,4.489,2.000,0.000 +6.000,29.000,4.000,19.000,2.000,5.000,0.000,0.000,0.000,4.200,0.000,0.000,0.000,0.000,25.250,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.435,3.240,2.944,1.000,0.000 +70.000,35.000,4.000,48.000,2.000,9.000,0.000,1.000,0.000,43.600,0.000,0.000,30.000,0.000,3040.800,0.000,2020.000,0.000,0.000,0.000,0.000,1.000,0.000,3.775,3.240,3.871,2.000,0.000 +24.000,25.000,3.000,28.000,4.000,0.000,1.000,1.000,1.000,10.600,0.000,40.400,25.250,23.400,267.300,0.000,530.000,0.000,1.000,1.000,0.000,0.000,1.000,2.361,3.240,3.332,2.000,0.000 +19.000,35.000,7.000,58.000,3.000,5.000,1.000,1.000,1.000,3.650,37.000,40.300,21.250,43.050,65.150,690.850,385.000,1.000,1.000,1.000,1.000,1.000,0.000,1.295,3.611,4.060,4.000,1.000 +5.000,43.000,16.000,72.000,3.000,17.000,0.000,1.000,0.000,5.550,15.750,0.000,6.500,0.000,23.900,62.250,25.000,0.000,0.000,0.000,1.000,1.000,0.000,1.714,2.757,4.277,3.000,0.000 +14.000,40.000,13.000,398.000,5.000,11.000,1.000,1.000,1.000,6.400,18.000,43.100,23.750,47.700,71.000,259.000,295.000,1.000,1.000,1.000,1.000,1.000,1.000,1.856,2.890,5.986,4.000,1.000 +17.000,39.000,12.000,45.000,4.000,10.000,1.000,0.000,0.000,8.650,0.000,28.950,0.000,0.000,133.100,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.000,2.158,3.240,3.807,1.000,1.000 +59.000,32.000,9.000,73.000,4.000,5.000,0.000,1.000,0.000,29.200,21.500,0.000,12.750,0.000,1726.600,1231.900,655.000,0.000,0.000,0.000,1.000,0.000,1.000,3.374,3.068,4.290,2.000,1.000 +60.000,53.000,22.000,171.000,1.000,37.000,0.000,1.000,0.000,9.900,31.750,0.000,18.000,0.000,608.650,1972.100,1070.000,0.000,0.000,0.000,1.000,1.000,0.000,2.293,3.458,5.142,3.000,0.000 +53.000,37.000,7.000,25.000,1.000,2.000,0.000,1.000,0.000,5.400,52.000,0.000,34.000,0.000,291.500,2794.950,1660.000,0.000,0.000,0.000,1.000,1.000,0.000,1.686,3.951,3.219,3.000,0.000 +14.000,26.000,1.000,25.000,2.000,0.000,0.000,0.000,0.000,4.400,0.000,0.000,0.000,0.000,71.200,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.482,3.240,3.219,3.000,0.000 +17.000,19.000,0.000,18.000,2.000,0.000,1.000,0.000,0.000,7.100,0.000,24.950,0.000,0.000,120.350,0.000,0.000,0.000,0.000,1.000,0.000,0.000,1.000,1.960,3.240,2.890,2.000,1.000 +69.000,42.000,23.000,19.000,3.000,0.000,1.000,1.000,0.000,25.950,0.000,36.900,18.750,0.000,1812.150,0.000,1270.000,0.000,0.000,1.000,0.000,0.000,1.000,3.256,3.240,2.944,1.000,0.000 +10.000,20.000,1.000,20.000,2.000,0.000,0.000,0.000,0.000,5.900,0.000,0.000,0.000,0.000,48.950,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.775,3.240,2.996,1.000,1.000 +21.000,43.000,13.000,41.000,2.000,1.000,1.000,1.000,1.000,6.150,23.750,45.400,12.250,37.250,118.150,497.150,195.000,1.000,1.000,1.000,1.000,1.000,1.000,1.816,3.168,3.714,4.000,1.000 +64.000,37.000,10.000,44.000,4.000,9.000,1.000,1.000,0.000,16.150,0.000,35.050,22.000,0.000,965.300,0.000,1350.000,1.000,0.000,0.000,0.000,0.000,1.000,2.782,3.240,3.784,2.000,0.000 +60.000,56.000,19.000,51.000,4.000,11.000,1.000,1.000,1.000,15.250,0.000,57.450,28.500,67.000,873.700,0.000,1630.000,1.000,1.000,1.000,1.000,1.000,1.000,2.725,3.240,3.932,4.000,0.000 +58.000,37.000,5.000,64.000,4.000,8.000,1.000,1.000,1.000,10.800,58.750,63.250,37.750,109.700,634.750,3525.550,2305.000,1.000,1.000,1.000,1.000,1.000,1.000,2.380,4.073,4.159,4.000,1.000 +72.000,61.000,34.000,61.000,1.000,8.000,0.000,1.000,0.000,27.350,0.000,0.000,13.250,0.000,1980.150,0.000,895.000,0.000,0.000,0.000,0.000,0.000,0.000,3.309,3.240,4.111,2.000,0.000 +18.000,34.000,4.000,42.000,2.000,14.000,0.000,1.000,0.000,6.450,19.000,0.000,17.000,0.000,104.050,318.750,240.000,1.000,1.000,0.000,1.000,1.000,0.000,1.864,2.944,3.738,4.000,0.000 +70.000,36.000,8.000,50.000,1.000,15.000,0.000,1.000,0.000,20.550,0.000,0.000,20.750,0.000,1407.150,0.000,1370.000,0.000,0.000,0.000,0.000,0.000,0.000,3.023,3.240,3.912,2.000,0.000 +7.000,38.000,4.000,70.000,4.000,4.000,1.000,1.000,1.000,3.850,19.250,38.350,7.000,17.700,26.650,127.500,40.000,1.000,1.000,1.000,1.000,0.000,1.000,1.348,2.958,4.248,4.000,1.000 +71.000,53.000,29.000,48.000,4.000,0.000,0.000,1.000,0.000,34.950,28.750,0.000,36.000,0.000,2506.050,2074.750,2560.000,0.000,0.000,0.000,1.000,1.000,0.000,3.554,3.359,3.871,3.000,0.000 +31.000,46.000,23.000,144.000,4.000,13.000,0.000,1.000,0.000,7.600,15.250,0.000,9.750,0.000,271.550,501.150,290.000,0.000,0.000,1.000,1.000,0.000,1.000,2.028,2.725,4.970,3.000,0.000 +16.000,49.000,17.000,41.000,2.000,5.000,1.000,0.000,1.000,4.100,14.000,39.150,0.000,31.800,62.450,260.050,0.000,1.000,1.000,1.000,0.000,0.000,0.000,1.411,2.639,3.714,4.000,0.000 +59.000,26.000,3.000,41.000,4.000,1.000,1.000,1.000,1.000,12.650,0.000,35.100,46.750,29.150,804.000,0.000,2710.000,0.000,0.000,1.000,0.000,0.000,0.000,2.538,3.240,3.714,2.000,1.000 +9.000,40.000,13.000,38.000,4.000,7.000,1.000,1.000,1.000,3.350,21.000,42.400,17.500,59.550,37.700,179.800,125.000,1.000,1.000,1.000,1.000,1.000,1.000,1.209,3.045,3.638,4.000,1.000 +12.000,55.000,13.000,36.000,1.000,5.000,1.000,0.000,0.000,5.950,0.000,26.550,0.000,0.000,73.350,0.000,0.000,0.000,0.000,1.000,0.000,0.000,0.000,1.783,3.240,3.584,2.000,1.000 +3.000,32.000,4.000,58.000,2.000,11.000,1.000,1.000,1.000,2.750,15.750,29.500,9.250,28.550,5.700,49.650,15.000,1.000,1.000,0.000,0.000,0.000,1.000,1.012,2.757,4.060,4.000,1.000 +52.000,39.000,6.000,119.000,3.000,18.000,0.000,1.000,0.000,10.500,25.000,0.000,8.250,0.000,556.500,1280.900,450.000,0.000,1.000,0.000,0.000,0.000,1.000,2.351,3.219,4.779,1.000,0.000 +18.000,69.000,28.000,11.000,1.000,17.000,0.000,0.000,0.000,3.850,0.000,0.000,0.000,0.000,62.750,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.348,3.240,2.398,1.000,0.000 +43.000,29.000,4.000,33.000,1.000,13.000,0.000,1.000,1.000,22.050,18.750,0.000,7.500,24.950,1042.950,830.750,345.000,0.000,0.000,0.000,1.000,1.000,0.000,3.093,2.931,3.497,3.000,0.000 +37.000,33.000,4.000,41.000,3.000,8.000,1.000,0.000,0.000,9.200,0.000,30.450,0.000,0.000,347.100,0.000,0.000,0.000,0.000,0.000,0.000,0.000,1.000,2.219,3.240,3.714,2.000,1.000 +51.000,46.000,8.000,107.000,2.000,21.000,0.000,1.000,1.000,17.300,25.750,0.000,23.000,37.400,840.000,1396.750,1155.000,0.000,1.000,0.000,1.000,1.000,0.000,2.851,3.248,4.673,3.000,0.000 +56.000,53.000,23.000,100.000,5.000,14.000,1.000,1.000,0.000,14.150,0.000,34.200,9.500,0.000,752.900,0.000,560.000,1.000,0.000,1.000,0.000,0.000,1.000,2.650,3.240,4.605,2.000,0.000 +72.000,55.000,24.000,82.000,3.000,25.000,1.000,1.000,0.000,62.300,0.000,35.650,65.250,0.000,4333.000,0.000,4915.000,0.000,0.000,0.000,1.000,0.000,1.000,4.132,3.240,4.407,2.000,0.000 +32.000,44.000,10.000,201.000,2.000,24.000,0.000,1.000,0.000,7.650,28.000,0.000,18.500,0.000,237.850,895.050,595.000,0.000,1.000,0.000,1.000,1.000,0.000,2.035,3.332,5.303,3.000,0.000 +51.000,49.000,29.000,45.000,1.000,16.000,0.000,1.000,0.000,15.700,0.000,0.000,8.500,0.000,815.050,0.000,400.000,0.000,0.000,0.000,1.000,0.000,0.000,2.754,3.240,3.807,1.000,0.000 +26.000,55.000,13.000,61.000,1.000,26.000,0.000,1.000,0.000,4.250,29.000,0.000,12.000,0.000,102.450,729.150,300.000,0.000,0.000,0.000,1.000,1.000,0.000,1.447,3.367,4.111,3.000,0.000 +34.000,40.000,21.000,23.000,4.000,9.000,1.000,1.000,1.000,5.950,25.750,45.400,16.750,37.700,207.700,805.850,540.000,0.000,1.000,1.000,1.000,1.000,1.000,1.783,3.248,3.135,4.000,0.000 +20.000,25.000,4.000,33.000,4.000,0.000,0.000,1.000,1.000,4.550,16.000,0.000,19.250,27.050,115.650,288.750,365.000,0.000,0.000,1.000,0.000,0.000,1.000,1.515,2.773,3.497,1.000,0.000 +58.000,36.000,13.000,39.000,2.000,8.000,0.000,1.000,1.000,16.400,38.250,0.000,55.500,57.050,933.100,2355.400,3145.000,1.000,1.000,1.000,1.000,1.000,1.000,2.797,3.644,3.664,4.000,1.000 +25.000,38.000,19.000,56.000,1.000,19.000,1.000,1.000,1.000,10.550,0.000,31.950,32.750,23.650,290.250,0.000,770.000,1.000,0.000,0.000,0.000,1.000,0.000,2.356,3.240,4.025,3.000,0.000 +66.000,50.000,2.000,333.000,5.000,24.000,0.000,1.000,0.000,10.300,0.000,0.000,14.250,0.000,659.550,0.000,975.000,0.000,1.000,1.000,0.000,0.000,0.000,2.332,3.240,5.808,2.000,0.000 +71.000,48.000,25.000,288.000,3.000,19.000,0.000,1.000,0.000,30.900,0.000,0.000,19.750,0.000,2123.600,0.000,1305.000,0.000,0.000,0.000,0.000,0.000,0.000,3.431,3.240,5.663,1.000,0.000 +6.000,20.000,0.000,25.000,2.000,0.000,0.000,1.000,0.000,1.900,20.750,0.000,15.500,0.000,19.300,114.400,95.000,0.000,0.000,0.000,1.000,1.000,0.000,0.642,3.033,3.219,3.000,0.000 +26.000,30.000,4.000,76.000,3.000,7.000,1.000,0.000,0.000,9.450,0.000,29.200,0.000,0.000,214.700,0.000,0.000,0.000,1.000,0.000,0.000,0.000,1.000,2.246,3.240,4.331,1.000,0.000 +61.000,52.000,21.000,82.000,1.000,18.000,0.000,1.000,0.000,12.100,0.000,0.000,15.750,0.000,751.750,0.000,910.000,0.000,0.000,0.000,0.000,1.000,0.000,2.493,3.240,4.407,3.000,0.000 +57.000,60.000,20.000,14.000,2.000,27.000,0.000,1.000,0.000,16.100,14.000,0.000,11.750,0.000,938.650,822.350,630.000,0.000,0.000,0.000,1.000,1.000,0.000,2.779,2.639,2.639,3.000,0.000 +55.000,44.000,24.000,83.000,1.000,23.000,0.000,1.000,0.000,17.350,24.500,0.000,14.250,0.000,973.100,1343.500,720.000,0.000,0.000,0.000,0.000,1.000,0.000,2.854,3.199,4.419,3.000,0.000 +34.000,23.000,3.000,24.000,1.000,7.000,0.000,1.000,0.000,6.000,28.000,0.000,12.750,0.000,203.250,959.400,435.000,0.000,0.000,0.000,1.000,1.000,0.000,1.792,3.332,3.178,3.000,0.000 +6.000,32.000,10.000,47.000,1.000,10.000,0.000,1.000,0.000,3.850,23.750,0.000,12.500,0.000,29.900,128.450,80.000,0.000,0.000,0.000,1.000,1.000,0.000,1.348,3.168,3.850,3.000,0.000 +24.000,30.000,0.000,25.000,4.000,5.000,0.000,1.000,1.000,8.700,47.750,0.000,32.750,64.000,186.600,1152.900,780.000,1.000,1.000,1.000,1.000,1.000,1.000,2.163,3.866,3.219,4.000,1.000 +61.000,50.000,16.000,190.000,2.000,22.000,1.000,1.000,1.000,16.850,0.000,42.550,26.500,44.100,1063.150,0.000,1600.000,0.000,0.000,1.000,0.000,0.000,1.000,2.824,3.240,5.247,2.000,0.000 diff --git a/lab-logistic-regression-with-python.ipynb b/lab-logistic-regression-with-python.ipynb index 05ead5e..5570244 100644 --- a/lab-logistic-regression-with-python.ipynb +++ b/lab-logistic-regression-with-python.ipynb @@ -150,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "button": false, "new_sheet": false, @@ -171,17 +171,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "from pyodide.http import pyfetch\n", + "import requests\n", "\n", - "async def download(url, filename):\n", - " response = await pyfetch(url)\n", - " if response.status == 200:\n", + "def download(url, filename):\n", + " response = requests.get(url)\n", + " if response.status_code == 200:\n", " with open(filename, \"wb\") as f:\n", - " f.write(await response.bytes())\n" + " f.write(response.content)\n", + " print(f\"Downloaded {filename} successfully!\")\n", + " else:\n", + " print(f\"Failed to download. Status code: {response.status_code}\")" ] }, { @@ -226,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "button": false, "new_sheet": false, @@ -262,18 +265,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded ChurnData.csv successfully!\n" + ] + } + ], "source": [ - "\n", - "await download(path, \"ChurnData.csv\")\n", - "path=\"ChurnData.csv\"\n" + "download(path, \"ChurnData.csv\")\n", + "path=\"ChurnData.csv\"" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "button": false, "new_sheet": false, @@ -281,7 +291,207 @@ "read_only": false } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tenureageaddressincomeedemployequipcallcardwirelesslongmon...pagerinternetcallwaitconferebillloglonglogtolllninccustcatchurn
011.033.07.0136.05.05.00.01.01.04.40...1.00.01.01.00.01.4823.0334.9134.01.0
133.033.012.033.02.00.00.00.00.09.45...0.00.00.00.00.02.2463.2403.4971.01.0
223.030.09.030.01.02.00.00.00.06.30...0.00.00.01.00.01.8413.2403.4013.00.0
338.035.05.076.02.010.01.01.01.06.05...1.01.01.01.01.01.8003.8074.3314.00.0
47.035.014.080.02.015.00.01.00.07.10...0.00.01.01.00.01.9603.0914.3823.00.0
\n", + "

5 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " tenure age address income ed employ equip callcard wireless \\\n", + "0 11.0 33.0 7.0 136.0 5.0 5.0 0.0 1.0 1.0 \n", + "1 33.0 33.0 12.0 33.0 2.0 0.0 0.0 0.0 0.0 \n", + "2 23.0 30.0 9.0 30.0 1.0 2.0 0.0 0.0 0.0 \n", + "3 38.0 35.0 5.0 76.0 2.0 10.0 1.0 1.0 1.0 \n", + "4 7.0 35.0 14.0 80.0 2.0 15.0 0.0 1.0 0.0 \n", + "\n", + " longmon ... pager internet callwait confer ebill loglong logtoll \\\n", + "0 4.40 ... 1.0 0.0 1.0 1.0 0.0 1.482 3.033 \n", + "1 9.45 ... 0.0 0.0 0.0 0.0 0.0 2.246 3.240 \n", + "2 6.30 ... 0.0 0.0 0.0 1.0 0.0 1.841 3.240 \n", + "3 6.05 ... 1.0 1.0 1.0 1.0 1.0 1.800 3.807 \n", + "4 7.10 ... 0.0 0.0 1.0 1.0 0.0 1.960 3.091 \n", + "\n", + " lninc custcat churn \n", + "0 4.913 4.0 1.0 \n", + "1 3.497 1.0 1.0 \n", + "2 3.401 3.0 0.0 \n", + "3 4.331 4.0 0.0 \n", + "4 4.382 3.0 0.0 \n", + "\n", + "[5 rows x 28 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "churn_df = pd.read_csv(path)\n", "churn_df.head()" @@ -303,9 +513,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tenureageaddressincomeedemployequipcallcardwirelesschurn
011.033.07.0136.05.05.00.01.01.01
133.033.012.033.02.00.00.00.00.01
223.030.09.030.01.02.00.00.00.00
338.035.05.076.02.010.01.01.01.00
47.035.014.080.02.015.00.01.00.00
\n", + "
" + ], + "text/plain": [ + " tenure age address income ed employ equip callcard wireless \\\n", + "0 11.0 33.0 7.0 136.0 5.0 5.0 0.0 1.0 1.0 \n", + "1 33.0 33.0 12.0 33.0 2.0 0.0 0.0 0.0 0.0 \n", + "2 23.0 30.0 9.0 30.0 1.0 2.0 0.0 0.0 0.0 \n", + "3 38.0 35.0 5.0 76.0 2.0 10.0 1.0 1.0 1.0 \n", + "4 7.0 35.0 14.0 80.0 2.0 15.0 0.0 1.0 0.0 \n", + "\n", + " churn \n", + "0 1 \n", + "1 1 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "churn_df = churn_df[['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip', 'callcard', 'wireless','churn']]\n", "churn_df['churn'] = churn_df['churn'].astype('int')\n", @@ -329,7 +663,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "button": false, "new_sheet": false, @@ -337,23 +671,19 @@ "read_only": false } }, - "outputs": [], - "source": [ - "# write your code here\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows and columns: (200, 10)\n", + "Column names: ['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip', 'callcard', 'wireless', 'churn']\n" + ] + } + ], "source": [ - "
Click here for the solution\n", - "\n", - "```python\n", - "churn_df.shape\n", - "\n", - "```\n", - "\n", - "
\n" + "print(\"Rows and columns:\", churn_df.shape)\n", + "print(\"Column names:\", churn_df.columns.tolist())" ] }, { @@ -365,9 +695,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 11., 33., 7., 136., 5., 5., 0.],\n", + " [ 33., 33., 12., 33., 2., 0., 0.],\n", + " [ 23., 30., 9., 30., 1., 2., 0.],\n", + " [ 38., 35., 5., 76., 2., 10., 1.],\n", + " [ 7., 35., 14., 80., 2., 15., 0.]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "X = np.asarray(churn_df[['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip']])\n", "X[0:5]" @@ -375,9 +720,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 0, 0, 0])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "y = np.asarray(churn_df['churn'])\n", "y [0:5]" @@ -392,9 +748,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.13518441, -0.62595491, -0.4588971 , 0.4751423 , 1.6961288 ,\n", + " -0.58477841, -0.85972695],\n", + " [-0.11604313, -0.62595491, 0.03454064, -0.32886061, -0.6433592 ,\n", + " -1.14437497, -0.85972695],\n", + " [-0.57928917, -0.85594447, -0.261522 , -0.35227817, -1.42318853,\n", + " -0.92053635, -0.85972695],\n", + " [ 0.11557989, -0.47262854, -0.65627219, 0.00679109, -0.6433592 ,\n", + " -0.02518185, 1.16316 ],\n", + " [-1.32048283, -0.47262854, 0.23191574, 0.03801451, -0.6433592 ,\n", + " 0.53441472, -0.85972695]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn import preprocessing\n", "X = preprocessing.StandardScaler().fit(X).transform(X)\n", @@ -417,9 +793,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (160, 7) (160,)\n", + "Test set: (40, 7) (40,)\n" + ] + } + ], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n", @@ -447,9 +832,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
LogisticRegression(C=0.01, solver='liblinear')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LogisticRegression(C=0.01, solver='liblinear')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import confusion_matrix\n", @@ -466,9 +865,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat = LR.predict(X_test)\n", "yhat" @@ -483,9 +894,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.54132919, 0.45867081],\n", + " [0.60593357, 0.39406643],\n", + " [0.56277713, 0.43722287],\n", + " [0.63432489, 0.36567511],\n", + " [0.56431839, 0.43568161],\n", + " [0.55386646, 0.44613354],\n", + " [0.52237207, 0.47762793],\n", + " [0.60514349, 0.39485651],\n", + " [0.41069572, 0.58930428],\n", + " [0.6333873 , 0.3666127 ],\n", + " [0.58068791, 0.41931209],\n", + " [0.62768628, 0.37231372],\n", + " [0.47559883, 0.52440117],\n", + " [0.4267593 , 0.5732407 ],\n", + " [0.66172417, 0.33827583],\n", + " [0.55092315, 0.44907685],\n", + " [0.51749946, 0.48250054],\n", + " [0.485743 , 0.514257 ],\n", + " [0.49011451, 0.50988549],\n", + " [0.52423349, 0.47576651],\n", + " [0.61619519, 0.38380481],\n", + " [0.52696302, 0.47303698],\n", + " [0.63957168, 0.36042832],\n", + " [0.52205164, 0.47794836],\n", + " [0.50572852, 0.49427148],\n", + " [0.70706202, 0.29293798],\n", + " [0.55266286, 0.44733714],\n", + " [0.52271594, 0.47728406],\n", + " [0.51638863, 0.48361137],\n", + " [0.71331391, 0.28668609],\n", + " [0.67862111, 0.32137889],\n", + " [0.50896403, 0.49103597],\n", + " [0.42348082, 0.57651918],\n", + " [0.71495838, 0.28504162],\n", + " [0.59711064, 0.40288936],\n", + " [0.63808839, 0.36191161],\n", + " [0.39957895, 0.60042105],\n", + " [0.52127638, 0.47872362],\n", + " [0.65975464, 0.34024536],\n", + " [0.5114172 , 0.4885828 ]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat_prob = LR.predict_proba(X_test)\n", "yhat_prob" @@ -509,9 +970,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.7058823529411765" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import jaccard_score\n", "jaccard_score(y_test, yhat,pos_label=0)" @@ -528,9 +1000,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 6 9]\n", + " [ 1 24]]\n" + ] + } + ], "source": [ "from sklearn.metrics import classification_report, confusion_matrix\n", "import itertools\n", @@ -572,9 +1053,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Confusion matrix, without normalization\n", + "[[ 6 9]\n", + " [ 1 24]]\n" + ] + }, + { + "data": { + "image/png": "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Hp+T188SERHh8jogIEDBwcEKDAzMsf7SpUvO12vWrFHfvn116623avny5UpISNDu3bv14IMPuuyXF+4kFw6HQwMGDNClS5fUqFEjdezY0a1zAUUJyQngQcWKFVOHDh20d+/eHANac5P9B/rHH3/Mse3kyZMqXbq0x2LL/qOdlpbmsv7341okqU2bNtqwYYPOnj2rXbt2qUWLFho9erTefPPNax6/VKlS1/wckjz6WfJj+fLlqly5slatWqUePXqoefPmatKkSY7fS164MzPnm2++0VNPPaWmTZvqiy++0OzZs90+H1BUkJwAHjZx4kSZpqnhw4fnOoD08uXL2rBhgyTpjjvukCTngNZsu3fv1qFDh9ShQwePxVWpUiVJV24Od7XsWHJTrFgxNWvWTM8//7wk6Ysvvrjmvh06dNDWrVudyUi21157TcHBwWrevPlNRu5ZhmEoICDAJbFITk7OMVtH8lxVKjU1VX369FGlSpW0bds2Pfroo/rrX/+qzz77LN/HBnxRcW8HAPiaFi1aaNGiRRo5cqQaN26sESNGqG7durp8+bL27dunl156SfXq1VO3bt1Us2ZNPfTQQ3ruuefk5+enLl26KCkpSZMnT1b58uX1l7/8xWNx3X333YqIiNDQoUP197//XcWLF9fSpUt14sQJl/1eeOEFbd26VV27dlWFChV06dIlvfrqq5KkO++885rHnzJlijZu3Kj27dvrqaeeUkREhN544w29++67mjVrlsLDwz32WfLjnnvu0Zo1azRy5Ej17t1bJ06c0NNPP63o6Gh9++23LvvWr19f27dv14YNGxQdHa3Q0FDVrFnT7XM+8sgjOn78uD7//HOFhITo2WefVUJCgvr37699+/apZMmSHvp0gG8gOQEKwPDhw3X77bdrzpw5mjlzppKTk+Xv768aNWpowIABevTRR537Llq0SFWrVtUrr7yi559/XuHh4brrrrsUHx+f6xiTmxUWFqZNmzZp9OjRGjhwoEqWLKlhw4apS5cuGjZsmHO/Ro0a6YMPPtCUKVOUnJysEiVKqF69enrnnXfUqVOnax6/Zs2a+vTTT/Xkk09q1KhRunjxomrXrq0lS5bkGPDrTUOGDNGpU6f0wgsv6NVXX1WVKlX017/+Vd9//72mTp3qsu+8efM0atQo9e/fXxcuXFDbtm21fft2t8738ssva/ny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c9b8m0NyYhHnzp2TJFWrXN7LkQAAbsa5c+cUHh5e4OcJCAhQVFSUqnvo70VUVJQCAgI8cixPMczCTvWQq6ysLJ08eVKhoaEyrDrx3IekpKSofPnyOnHihMLCwrwdDuBRXN+FyzRNnTt3TjExMfLzK5yhnJcuXVJ6umeqkQEBAQoMDPTIsTyFyolF+Pn5qVy5ct4Oo8gJCwvjyxs+i+u78BRGxeRqgYGBlksoPInZOgAAwFJITgAAgKWQnKBIcjgcmjJlihwOh7dDATyO6xt2x4BYAABgKVROAACApZCcAAAASyE5AQAAlkJyAgAALIXkBAAAWArJCQAAsBSSE+AmMQsfviQrK8vbIQBOPFsHyKOsrCz5+fnp0qVLCgwMlGEYMk2TBzXC9rKv7f/9739KSkpSVlaWKleurKioKEniOkeho3IC5EH2l/d//vMfPfroo/roo48kyZmgAHZlmqb8/Pz09ddfq2nTpnr44YfVtm1b9e3bV88884wkrnMUPionQB74+fnp6NGj6ty5s06cOKFz584pICBAzZs3p4ICWzMMQz/99JPuvfde9e7dW+PHj9fRo0e1fv16zZgxQydPntTs2bO5zlGoqJwAeZCenq6FCxeqWbNmWrt2rfbv369Zs2Zp165dkviXJezt5MmTcjgcGjVqlKKiotSyZUuNHz9e06ZN04svvqgnn3xSkkhMUGhIToA88PPz05133qnu3bure/fueuutt3TgwIHrJigkK7ALf39/JSUl6cCBA851pUqV0oABAxQfH68333xTa9as8WKEKGpIToA8KF68uNq1a6f77rtPktSwYUOtXLlSBw4c0MyZM10SlM8//9z5M2AHkZGRat26tTZs2KAffvjBuT40NFS9evVS1apVtXv3bi9GiKKG5AS4gewKSGBgoPN1VlaWbrvtNq1cuVIHDx7UrFmztHPnTj3++OMaMmSIfvnlF2+GDORJ9rUdERGhgQMHatWqVXrllVf0888/O/e59dZbVaNGDSUkJCgjI8NboaKIYUAscB0ZGRkqXtz1/yaGYcgwDGVmZjoTlIEDB6pnz546f/68du7cqVtuucVLEQN5k31tZ89Eu//++3XmzBmNHTtWly9f1n333adatWpJklJTU1W1alWqgSg0hkljHMjV1V/e/fr10/33368//vGPkv7/vg/ZX+x9+/bVhx9+qI8+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Compute confusion matrix\n", "cnf_matrix = confusion_matrix(y_test, yhat, labels=[1,0])\n", @@ -604,11 +1105,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.73 0.96 0.83 25\n", + " 1 0.86 0.40 0.55 15\n", + "\n", + " accuracy 0.75 40\n", + " macro avg 0.79 0.68 0.69 40\n", + "weighted avg 0.78 0.75 0.72 40\n", + "\n" + ] + } + ], "source": [ - "print (classification_report(y_test, yhat))\n" + "print (classification_report(y_test, yhat))" ] }, { @@ -643,9 +1160,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.6017092478101187" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import log_loss\n", "log_loss(y_test, yhat_prob)" @@ -663,26 +1191,23 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], - "source": [ - "# write your code here\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LogLoss: : 0.61\n" + ] + } + ], "source": [ - "
Click here for the solution\n", - "\n", - "```python\n", + "# Model 2: LogisticRegression(C=0.01, solver='sag')\n", + "# - Regularization: C=0.01 (stronger), balances fit and generalization\n", + "# - Solver: 'sag', suited for large datasets; may under-converge on 200 rows without tuning\n", + "# - Test Log Loss: 0.61, solid performance for small dataset with stronger regularization\n", "LR2 = LogisticRegression(C=0.01, solver='sag').fit(X_train,y_train)\n", "yhat_prob2 = LR2.predict_proba(X_test)\n", - "print (\"LogLoss: : %.2f\" % log_loss(y_test, yhat_prob2))\n", - "\n", - "```\n", - "\n", - "
\n" + "print (\"LogLoss: : %.2f\" % log_loss(y_test, yhat_prob2))" ] }, { @@ -695,7 +1220,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -709,7 +1234,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.11.5" }, "widgets": { "state": {},