From 4051b46191d1efb95a49a59092c1bf60bd06c9c1 Mon Sep 17 00:00:00 2001 From: raneemalshehri <150331204+raneemalshehri@users.noreply.github.com> Date: Mon, 3 Mar 2025 15:11:07 +0300 Subject: [PATCH] Add files via upload --- ChurnData.csv | 201 ++++ lab-logistic-regression-with-python.ipynb | 1077 ++++++++++++++++++++- 2 files changed, 1231 insertions(+), 47 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..274abf1 100644 --- a/lab-logistic-regression-with-python.ipynb +++ b/lab-logistic-regression-with-python.ipynb @@ -123,9 +123,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'piplite'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[11], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpiplite\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m piplite\u001b[38;5;241m.\u001b[39minstall([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpandas\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m piplite\u001b[38;5;241m.\u001b[39minstall([\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmatplotlib\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'piplite'" + ] + } + ], "source": [ "import piplite\n", "await piplite.install(['pandas'])\n", @@ -150,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "button": false, "new_sheet": false, @@ -171,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -184,6 +196,24 @@ " f.write(await response.bytes())\n" ] }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\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(response.content)\n", + " print(f\"File '{filename}' downloaded successfully.\")\n", + " else:\n", + " print(f\"Failed to download file: {response.status}\")" + ] + }, { "cell_type": "markdown", "metadata": { @@ -226,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "button": false, "new_sheet": false, @@ -262,18 +292,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File 'ChurnData.csv' downloaded successfully.\n" + ] + } + ], "source": [ - "\n", - "await download(path, \"ChurnData.csv\")\n", - "path=\"ChurnData.csv\"\n" + "download(path, \"ChurnData.csv\")\n", + "path = \"ChurnData.csv\"\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "button": false, "new_sheet": false, @@ -281,7 +318,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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "churn_df = pd.read_csv(path)\n", "churn_df.head()" @@ -303,9 +540,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "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": 20, + "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 +690,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "button": false, "new_sheet": false, @@ -337,9 +698,20 @@ "read_only": false } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(200, 10)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# write your code here\n" + "churn_df.shape\n" ] }, { @@ -365,9 +737,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "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": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "X = np.asarray(churn_df[['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip']])\n", "X[0:5]" @@ -375,9 +762,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 0, 0, 0])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "y = np.asarray(churn_df['churn'])\n", "y [0:5]" @@ -392,9 +790,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "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": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn import preprocessing\n", "X = preprocessing.StandardScaler().fit(X).transform(X)\n", @@ -417,9 +835,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "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 +874,427 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "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": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import confusion_matrix\n", @@ -466,9 +1311,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "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": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat = LR.predict(X_test)\n", "yhat" @@ -483,9 +1340,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "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": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat_prob = LR.predict_proba(X_test)\n", "yhat_prob" @@ -509,9 +1416,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.7058823529411765" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import jaccard_score\n", "jaccard_score(y_test, yhat,pos_label=0)" @@ -528,9 +1446,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "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 +1499,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Confusion matrix, without normalization\n", + "[[ 6 9]\n", + " [ 1 24]]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiQAAAHpCAYAAACybSeHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABArElEQVR4nO3dd3wUdf7H8fdsIIWQBEILkVBDCQKBgxMREDiQYgOReiABAXuhCQI/qkIUVIoiFpQIioIiKHjiQeiC3oFixRyBICBVEEJNQjK/PzCrayi7ZMPsbF5PH/N4sDOz3/ksN7d+/Hy+31nDNE1TAAAAFnJYHQAAAAAJCQAAsBwJCQAAsBwJCQAAsBwJCQAAsBwJCQAAsBwJCQAAsBwJCQAAsBwJCQAAsBwJCeBnduzYobZt2yoiIkKGYWjp0qVeHX/37t0yDENJSUleHdcfVK5cWX379rU6DMCWSEiAArBz507df//9qlq1qoKDgxUeHq6mTZtqxowZOnv2bIFeOyEhQd99950mTZqk+fPnq1GjRgV6PX/0448/avz48dq9e7fVoQCFhsFv2QDe9cknn6hr164KCgpSnz59VKdOHWVmZmrjxo1avHix+vbtq9dee61Arn327FkVK1ZMo0eP1tNPP10g1zBNUxkZGSpatKgCAgIK5BpW++CDD9S1a1etWbNGLVu2dPt9GRkZcjgcKlq0aMEFB/ipIlYHAPiTtLQ09ejRQ5UqVdLq1atVvnx557GHH35Yqamp+uSTTwrs+keOHJEklShRosCuYRiGgoODC2x8uzFNU+fOnVNISIiCgoKsDgewLVo2gBdNmTJFp06d0htvvOGSjOSKjY3V448/7nx9/vx5PfXUU6pWrZqCgoJUuXJljRo1ShkZGS7vq1y5sm6//XZt3LhRN9xwg4KDg1W1alXNmzfPec748eNVqVIlSdITTzwhwzBUuXJlSVLfvn2df/6z8ePHyzAMl30rV65Us2bNVKJECRUvXlw1a9bUqFGjnMcvNYdk9erVat68uUJDQ1WiRAl17NhR27dvv+j1UlNT1bdvX5UoUUIRERHq16+fzpw5c+m/2N+1bNlSderU0bfffqsWLVqoWLFiio2N1QcffCBJWrdunRo3bqyQkBDVrFlTq1atcnn/zz//rIceekg1a9ZUSEiISpUqpa5du7q0ZpKSktS1a1dJUqtWrWQYhgzD0Nq1ayX98b/FZ599pkaNGikkJESvvvqq81juHBLTNNWqVSuVKVNGhw8fdo6fmZmpunXrqlq1ajp9+vQVPzNQWJCQAF60bNkyVa1aVTfddJNb5w8YMEBjx47V3/72N02bNk0tWrRQYmKievTokefc1NRUdenSRbfccouef/55lSxZUn379tUPP/wgSercubOmTZsmSerZs6fmz5+v6dOnexT/Dz/8oNtvv10ZGRmaOHGinn/+ed155536/PPPL/u+VatWqV27djp8+LDGjx+vIUOGaNOmTWratOlF52F069ZNJ0+eVGJiorp166akpCRNmDDBrRh/++033X777WrcuLGmTJmioKAg9ejRQwsXLlSPHj1066236plnntHp06fVpUsXnTx50vne//73v9q0aZN69OihmTNn6oEHHlBycrJatmzpTIhuvvlmPfbYY5KkUaNGaf78+Zo/f77i4uKc46SkpKhnz5665ZZbNGPGDNWvXz9PnIZh6M0339S5c+f0wAMPOPePGzdOP/zwg+bOnavQ0FC3PjNQKJgAvOLEiROmJLNjx45unb9t2zZTkjlgwACX/cOGDTMlmatXr3buq1SpkinJXL9+vXPf4cOHzaCgIHPo0KHOfWlpaaYkc+rUqS5jJiQkmJUqVcoTw7hx48w/fw1MmzbNlGQeOXLkknHnXmPu3LnOffXr1zfLli1rHj161Lnvm2++MR0Oh9mnT58817v33ntdxrzrrrvMUqVKXfKauVq0aGFKMhcsWODc99NPP5mSTIfDYX7xxRfO/Z999lmeOM+cOZNnzM2bN5uSzHnz5jn3vf/++6Ykc82aNXnOz/3fYsWKFRc9lpCQ4LLv1VdfNSWZb7/9tvnFF1+YAQEB5qBBg674WYHChgoJ4CXp6emSpLCwMLfO/9e//iVJGjJkiMv+oUOHSlKeuSa1a9dW8+bNna/LlCmjmjVrateuXVcd81/lzj356KOPlJOT49Z7Dhw4oG3btqlv376KjIx07q9Xr55uueUW5+f8sz9XDCSpefPmOnr0qPPv8HKKFy/uUkGqWbOmSpQoobi4ODVu3Ni5P/fPf/77CQkJcf45KytLR48eVWxsrEqUKKGvvvrKjU97QZUqVdSuXTu3zr3vvvvUrl07Pfroo7rnnntUrVo1TZ482e1rAYUFCQngJeHh4ZLk0iK4nJ9//lkOh0OxsbEu+6OiolSiRAn9/PPPLvsrVqyYZ4ySJUvqt99+u8qI8+revbuaNm2qAQMGqFy5curRo4cWLVp02eQkN86aNWvmORYXF6dff/01z1yJv36WkiVLSpJbn6VChQp55r1EREQoJiYmz76/jnn27FmNHTtWMTExCgoKUunSpVWmTBkdP35cJ06cuOK1c1WpUsXtcyXpjTfe0JkzZ7Rjxw4lJSW5JEYALiAhAbwkPDxc0dHR+v777z1631//5Xopl1pia7qxcv9S18jOznZ5HRISovXr12vVqlW655579O2336p79+665ZZb8pybH/n5LJd6rztjPvroo5o0aZK6deumRYsW6d///rdWrlypUqVKuV0RkuRxQrF27VrnROXvvvvOo/cChQUJCeBFt99+u3bu3KnNmzdf8dxKlSopJydHO3bscNl/6NAhHT9+3LlixhtKliyp48eP59n/1yqMJDkcDrVu3VovvPCCfvzxR02aNEmrV6/WmjVrLjp2bpwpKSl5jv30008qXbq0z0ze/OCDD5SQkKDnn3/eOUG4WbNmef5u3E0S3XHgwAE9+uijatu2rW6//XYNGzbson/vQGFHQgJ40fDhwxUaGqoBAwbo0KFDeY7v3LlTM2bMkCTdeuutkpRnJcwLL7wgSbrtttu8Fle1atV04sQJffvtt859Bw4c0JIlS1zOO3bsWJ735q4g+etS5Fzly5dX/fr19dZbb7n8i/3777/Xv//9b+fn9AUBAQF5qjAvvvhinupPbgJ1sSTOUwMHDlROTo7eeOMNvfbaaypSpIj69+/vVjUIKEx4MBrgRdWqVdOCBQvUvXt3xcXFuTypddOmTXr//fedz6mIj49XQkKCXnvtNR0/flwtWrTQf/7zH7311lvq1KmTWrVq5bW4evTooREjRuiuu+7SY489pjNnzmj27NmqUaOGy2TOiRMnav369brttttUqVIlHT58WC+//LIqVKigZs2aXXL8qVOnqkOHDmrSpIn69++vs2fP6sUXX1RERITGjx/vtc+RX7fffrvmz5+viIgI1a5dW5s3b9aqVatUqlQpl/Pq16+vgIAAPfvsszpx4oSCgoL0j3/8Q2XLlvXoenPnztUnn3yipKQkVahQQdKFBKh3796aPXu2HnroIa99NsDuSEgAL7vzzjv17bffaurUqfroo480e/ZsBQUF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e2vdunWSLiROnTt31h133KFt27ZpwIABevLJJz3+OwkLC1NSUpJ+/PFHzZgxQ6+//rqmTZvmck5qaqoWLVqkZcuWacWKFfr666/10EMPOY+/8847Gjt2rCZNmqTt27dr8uTJGjNmjN566y2P4wFwlUwAPikhIcHs2LGjaZqmmZOTY65cudIMCgoyhw0b5jxerlw5MyMjw/me+fPnmzVr1jRzcnKc+zIyMsyQkBDzs88+M03TNMuXL29OmTLFeTwrK8usUKGC81qmaZotWrQwH3/8cdM0TTMlJcWUZK5cufKica5Zs8aUZP7222/OfefOnTOLFStmbtq0yeXc/v37mz179jRN0zRHjhxp1q5d2+X4iBEj8oz1V5LMJUuWXPL41KlTzYYNGzpfjxs3zgwICDD37dvn3Pfpp5+aDofDPHDggGmaplmtWjVzwYIFLuM89dRTZpMmTUzTNM20tDRTkvn1119f8roA8oc5JIAPW758uYoXL66srCzl5OTon//8p8aPH+88XrduXZd5I998841SU1MVFhbmMs65c+e0c+dOnThxQgcOHFDjxo2dx4oUKaJGjRrladvk2rZtmwICAtSiRQu3405NTdWZM2d0yy23uOzPzMxUgwYNJEnbt293iUOSmjRp4vY1ci1cuFAzZ87Uzp07derUKZ0/f17h4eEu51SsWFHXXXedy3VycnKUkpKisLAw7dy5U/3799fAgQOd55w/f14REREexwPg6pCQAD6sVatWmj17tgIDAxUdHa0iRVz/LxsaGury+tSpU2rYsKHeeeedPGOVKVPmqmIICQnx+D2nTp2SJH3yyScuiYB0YV6Mt2zevFm9evXShAkT1K5dO0VEROi9997T888/73Gsr7/+ep4EKSAgwGuxArg8EhLAh4WGhio2Ntbt8//2t79p4cKFKlu2bJ4qQa7y5cvryy+/1M033yzpQiVg69at+tvf/nbR8+vWraucnBytW7dObdq0yXM8t0KTnZ3t3Fe7dm0FBQVpz549l6ysxMXFOSfo5vriiy+u/CH/ZNOmTapUqZJGjx7t3Pfzzz/nOW/Pnj3av3+/oqOjnddxOByqWbOmypUrp+joaO3atUu9evXy6PoAvIdJrYAf6dWrl0qXLq2OHTtqw4YNSktL09q1a/XYY49p3759kqTHH39czzzzjJYuXaqffvpJDz300GWfIVK5cmUlJCTo3nvv1dKlS51jLlq0SJJUqVIlGYah5cuX68iRIzp16pTCwsI0bNgwDR48WG+99ZZ27typr776Si+++KJzougDDzygHTt26IknnlBKSooWLFigpKQkjz5v9erVtWfPHr333nvauXOnZs6cedEJusHBwUpISNA333yjDRs26LHHHlO3bt0UFRUlSZowYYISExM1c+ZM/e9//9N3332nuXPn6oUXXvAoHgBXj4QE8CPFihXT+vXrVbFiRXXu3FlxcXHq37+/zp0756yYDB06VPfcc48SEhLUpEkThYWF6a677rrsuLNnz1aXLl300EMPqVatWho4cKBOnz4tSbruuus0YcIEPfnkkypXrpweeeQRSdJTTz2lMWPGKDExUXFxcWrfvr0++eQTValSRdKFeR2LFy/W0qVLFR8fr1deeUWTJ0/26PPeeeedGjx4sB555BHVr19fmzZt0pgxY/KcFxsbq86dO+vWW29V27ZtVa9ePZdlvQMGDNCcOXM0d+5c1a1bVy1atFBSUpIzVgAFzzAvNZMNAADgGqFCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALEdCAgAALPf/LUev8fM1Hn8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Compute confusion matrix\n", "cnf_matrix = confusion_matrix(y_test, yhat, labels=[1,0])\n", @@ -604,9 +1551,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "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" ] @@ -643,9 +1606,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.6017092478101185" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import log_loss\n", "log_loss(y_test, yhat_prob)" @@ -661,12 +1635,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LogLoss: : 0.61\n" + ] + } + ], "source": [ - "# write your code here\n", - "\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))" ] }, { @@ -695,7 +1678,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -709,7 +1692,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.11.5" }, "widgets": { "state": {},