From 0dec9fb5f6c23f08d762e972d392e910f21ee8b5 Mon Sep 17 00:00:00 2001 From: Jeanlebaptist Date: Fri, 1 Aug 2025 17:49:14 +0200 Subject: [PATCH] lab support vector machines(svn) --- cell_samples.csv | 700 +++++++++++++++++++++++++++ lab-svm.ipynb | 1201 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 1849 insertions(+), 52 deletions(-) create mode 100644 cell_samples.csv diff --git a/cell_samples.csv b/cell_samples.csv new file mode 100644 index 0000000..66a12f1 --- /dev/null +++ b/cell_samples.csv @@ -0,0 +1,700 @@ +ID,Clump,UnifSize,UnifShape,MargAdh,SingEpiSize,BareNuc,BlandChrom,NormNucl,Mit,Class +1000025,5,1,1,1,2,1,3,1,1,2 +1002945,5,4,4,5,7,10,3,2,1,2 +1015425,3,1,1,1,2,2,3,1,1,2 +1016277,6,8,8,1,3,4,3,7,1,2 +1017023,4,1,1,3,2,1,3,1,1,2 +1017122,8,10,10,8,7,10,9,7,1,4 +1018099,1,1,1,1,2,10,3,1,1,2 +1018561,2,1,2,1,2,1,3,1,1,2 +1033078,2,1,1,1,2,1,1,1,5,2 +1033078,4,2,1,1,2,1,2,1,1,2 +1035283,1,1,1,1,1,1,3,1,1,2 +1036172,2,1,1,1,2,1,2,1,1,2 +1041801,5,3,3,3,2,3,4,4,1,4 +1043999,1,1,1,1,2,3,3,1,1,2 +1044572,8,7,5,10,7,9,5,5,4,4 +1047630,7,4,6,4,6,1,4,3,1,4 +1048672,4,1,1,1,2,1,2,1,1,2 +1049815,4,1,1,1,2,1,3,1,1,2 +1050670,10,7,7,6,4,10,4,1,2,4 +1050718,6,1,1,1,2,1,3,1,1,2 +1054590,7,3,2,10,5,10,5,4,4,4 +1054593,10,5,5,3,6,7,7,10,1,4 +1056784,3,1,1,1,2,1,2,1,1,2 +1057013,8,4,5,1,2,?,7,3,1,4 +1059552,1,1,1,1,2,1,3,1,1,2 +1065726,5,2,3,4,2,7,3,6,1,4 +1066373,3,2,1,1,1,1,2,1,1,2 +1066979,5,1,1,1,2,1,2,1,1,2 +1067444,2,1,1,1,2,1,2,1,1,2 +1070935,1,1,3,1,2,1,1,1,1,2 +1070935,3,1,1,1,1,1,2,1,1,2 +1071760,2,1,1,1,2,1,3,1,1,2 +1072179,10,7,7,3,8,5,7,4,3,4 +1074610,2,1,1,2,2,1,3,1,1,2 +1075123,3,1,2,1,2,1,2,1,1,2 +1079304,2,1,1,1,2,1,2,1,1,2 +1080185,10,10,10,8,6,1,8,9,1,4 +1081791,6,2,1,1,1,1,7,1,1,2 +1084584,5,4,4,9,2,10,5,6,1,4 +1091262,2,5,3,3,6,7,7,5,1,4 +1096800,6,6,6,9,6,?,7,8,1,2 +1099510,10,4,3,1,3,3,6,5,2,4 +1100524,6,10,10,2,8,10,7,3,3,4 +1102573,5,6,5,6,10,1,3,1,1,4 +1103608,10,10,10,4,8,1,8,10,1,4 +1103722,1,1,1,1,2,1,2,1,2,2 +1105257,3,7,7,4,4,9,4,8,1,4 +1105524,1,1,1,1,2,1,2,1,1,2 +1106095,4,1,1,3,2,1,3,1,1,2 +1106829,7,8,7,2,4,8,3,8,2,4 +1108370,9,5,8,1,2,3,2,1,5,4 +1108449,5,3,3,4,2,4,3,4,1,4 +1110102,10,3,6,2,3,5,4,10,2,4 +1110503,5,5,5,8,10,8,7,3,7,4 +1110524,10,5,5,6,8,8,7,1,1,4 +1111249,10,6,6,3,4,5,3,6,1,4 +1112209,8,10,10,1,3,6,3,9,1,4 +1113038,8,2,4,1,5,1,5,4,4,4 +1113483,5,2,3,1,6,10,5,1,1,4 +1113906,9,5,5,2,2,2,5,1,1,4 +1115282,5,3,5,5,3,3,4,10,1,4 +1115293,1,1,1,1,2,2,2,1,1,2 +1116116,9,10,10,1,10,8,3,3,1,4 +1116132,6,3,4,1,5,2,3,9,1,4 +1116192,1,1,1,1,2,1,2,1,1,2 +1116998,10,4,2,1,3,2,4,3,10,4 +1117152,4,1,1,1,2,1,3,1,1,2 +1118039,5,3,4,1,8,10,4,9,1,4 +1120559,8,3,8,3,4,9,8,9,8,4 +1121732,1,1,1,1,2,1,3,2,1,2 +1121919,5,1,3,1,2,1,2,1,1,2 +1123061,6,10,2,8,10,2,7,8,10,4 +1124651,1,3,3,2,2,1,7,2,1,2 +1125035,9,4,5,10,6,10,4,8,1,4 +1126417,10,6,4,1,3,4,3,2,3,4 +1131294,1,1,2,1,2,2,4,2,1,2 +1132347,1,1,4,1,2,1,2,1,1,2 +1133041,5,3,1,2,2,1,2,1,1,2 +1133136,3,1,1,1,2,3,3,1,1,2 +1136142,2,1,1,1,3,1,2,1,1,2 +1137156,2,2,2,1,1,1,7,1,1,2 +1143978,4,1,1,2,2,1,2,1,1,2 +1143978,5,2,1,1,2,1,3,1,1,2 +1147044,3,1,1,1,2,2,7,1,1,2 +1147699,3,5,7,8,8,9,7,10,7,4 +1147748,5,10,6,1,10,4,4,10,10,4 +1148278,3,3,6,4,5,8,4,4,1,4 +1148873,3,6,6,6,5,10,6,8,3,4 +1152331,4,1,1,1,2,1,3,1,1,2 +1155546,2,1,1,2,3,1,2,1,1,2 +1156272,1,1,1,1,2,1,3,1,1,2 +1156948,3,1,1,2,2,1,1,1,1,2 +1157734,4,1,1,1,2,1,3,1,1,2 +1158247,1,1,1,1,2,1,2,1,1,2 +1160476,2,1,1,1,2,1,3,1,1,2 +1164066,1,1,1,1,2,1,3,1,1,2 +1165297,2,1,1,2,2,1,1,1,1,2 +1165790,5,1,1,1,2,1,3,1,1,2 +1165926,9,6,9,2,10,6,2,9,10,4 +1166630,7,5,6,10,5,10,7,9,4,4 +1166654,10,3,5,1,10,5,3,10,2,4 +1167439,2,3,4,4,2,5,2,5,1,4 +1167471,4,1,2,1,2,1,3,1,1,2 +1168359,8,2,3,1,6,3,7,1,1,4 +1168736,10,10,10,10,10,1,8,8,8,4 +1169049,7,3,4,4,3,3,3,2,7,4 +1170419,10,10,10,8,2,10,4,1,1,4 +1170420,1,6,8,10,8,10,5,7,1,4 +1171710,1,1,1,1,2,1,2,3,1,2 +1171710,6,5,4,4,3,9,7,8,3,4 +1171795,1,3,1,2,2,2,5,3,2,2 +1171845,8,6,4,3,5,9,3,1,1,4 +1172152,10,3,3,10,2,10,7,3,3,4 +1173216,10,10,10,3,10,8,8,1,1,4 +1173235,3,3,2,1,2,3,3,1,1,2 +1173347,1,1,1,1,2,5,1,1,1,2 +1173347,8,3,3,1,2,2,3,2,1,2 +1173509,4,5,5,10,4,10,7,5,8,4 +1173514,1,1,1,1,4,3,1,1,1,2 +1173681,3,2,1,1,2,2,3,1,1,2 +1174057,1,1,2,2,2,1,3,1,1,2 +1174057,4,2,1,1,2,2,3,1,1,2 +1174131,10,10,10,2,10,10,5,3,3,4 +1174428,5,3,5,1,8,10,5,3,1,4 +1175937,5,4,6,7,9,7,8,10,1,4 +1176406,1,1,1,1,2,1,2,1,1,2 +1176881,7,5,3,7,4,10,7,5,5,4 +1177027,3,1,1,1,2,1,3,1,1,2 +1177399,8,3,5,4,5,10,1,6,2,4 +1177512,1,1,1,1,10,1,1,1,1,2 +1178580,5,1,3,1,2,1,2,1,1,2 +1179818,2,1,1,1,2,1,3,1,1,2 +1180194,5,10,8,10,8,10,3,6,3,4 +1180523,3,1,1,1,2,1,2,2,1,2 +1180831,3,1,1,1,3,1,2,1,1,2 +1181356,5,1,1,1,2,2,3,3,1,2 +1182404,4,1,1,1,2,1,2,1,1,2 +1182410,3,1,1,1,2,1,1,1,1,2 +1183240,4,1,2,1,2,1,2,1,1,2 +1183246,1,1,1,1,1,?,2,1,1,2 +1183516,3,1,1,1,2,1,1,1,1,2 +1183911,2,1,1,1,2,1,1,1,1,2 +1183983,9,5,5,4,4,5,4,3,3,4 +1184184,1,1,1,1,2,5,1,1,1,2 +1184241,2,1,1,1,2,1,2,1,1,2 +1184840,1,1,3,1,2,?,2,1,1,2 +1185609,3,4,5,2,6,8,4,1,1,4 +1185610,1,1,1,1,3,2,2,1,1,2 +1187457,3,1,1,3,8,1,5,8,1,2 +1187805,8,8,7,4,10,10,7,8,7,4 +1188472,1,1,1,1,1,1,3,1,1,2 +1189266,7,2,4,1,6,10,5,4,3,4 +1189286,10,10,8,6,4,5,8,10,1,4 +1190394,4,1,1,1,2,3,1,1,1,2 +1190485,1,1,1,1,2,1,1,1,1,2 +1192325,5,5,5,6,3,10,3,1,1,4 +1193091,1,2,2,1,2,1,2,1,1,2 +1193210,2,1,1,1,2,1,3,1,1,2 +1193683,1,1,2,1,3,?,1,1,1,2 +1196295,9,9,10,3,6,10,7,10,6,4 +1196915,10,7,7,4,5,10,5,7,2,4 +1197080,4,1,1,1,2,1,3,2,1,2 +1197270,3,1,1,1,2,1,3,1,1,2 +1197440,1,1,1,2,1,3,1,1,7,2 +1197510,5,1,1,1,2,?,3,1,1,2 +1197979,4,1,1,1,2,2,3,2,1,2 +1197993,5,6,7,8,8,10,3,10,3,4 +1198128,10,8,10,10,6,1,3,1,10,4 +1198641,3,1,1,1,2,1,3,1,1,2 +1199219,1,1,1,2,1,1,1,1,1,2 +1199731,3,1,1,1,2,1,1,1,1,2 +1199983,1,1,1,1,2,1,3,1,1,2 +1200772,1,1,1,1,2,1,2,1,1,2 +1200847,6,10,10,10,8,10,10,10,7,4 +1200892,8,6,5,4,3,10,6,1,1,4 +1200952,5,8,7,7,10,10,5,7,1,4 +1201834,2,1,1,1,2,1,3,1,1,2 +1201936,5,10,10,3,8,1,5,10,3,4 +1202125,4,1,1,1,2,1,3,1,1,2 +1202812,5,3,3,3,6,10,3,1,1,4 +1203096,1,1,1,1,1,1,3,1,1,2 +1204242,1,1,1,1,2,1,1,1,1,2 +1204898,6,1,1,1,2,1,3,1,1,2 +1205138,5,8,8,8,5,10,7,8,1,4 +1205579,8,7,6,4,4,10,5,1,1,4 +1206089,2,1,1,1,1,1,3,1,1,2 +1206695,1,5,8,6,5,8,7,10,1,4 +1206841,10,5,6,10,6,10,7,7,10,4 +1207986,5,8,4,10,5,8,9,10,1,4 +1208301,1,2,3,1,2,1,3,1,1,2 +1210963,10,10,10,8,6,8,7,10,1,4 +1211202,7,5,10,10,10,10,4,10,3,4 +1212232,5,1,1,1,2,1,2,1,1,2 +1212251,1,1,1,1,2,1,3,1,1,2 +1212422,3,1,1,1,2,1,3,1,1,2 +1212422,4,1,1,1,2,1,3,1,1,2 +1213375,8,4,4,5,4,7,7,8,2,2 +1213383,5,1,1,4,2,1,3,1,1,2 +1214092,1,1,1,1,2,1,1,1,1,2 +1214556,3,1,1,1,2,1,2,1,1,2 +1214966,9,7,7,5,5,10,7,8,3,4 +1216694,10,8,8,4,10,10,8,1,1,4 +1216947,1,1,1,1,2,1,3,1,1,2 +1217051,5,1,1,1,2,1,3,1,1,2 +1217264,1,1,1,1,2,1,3,1,1,2 +1218105,5,10,10,9,6,10,7,10,5,4 +1218741,10,10,9,3,7,5,3,5,1,4 +1218860,1,1,1,1,1,1,3,1,1,2 +1218860,1,1,1,1,1,1,3,1,1,2 +1219406,5,1,1,1,1,1,3,1,1,2 +1219525,8,10,10,10,5,10,8,10,6,4 +1219859,8,10,8,8,4,8,7,7,1,4 +1220330,1,1,1,1,2,1,3,1,1,2 +1221863,10,10,10,10,7,10,7,10,4,4 +1222047,10,10,10,10,3,10,10,6,1,4 +1222936,8,7,8,7,5,5,5,10,2,4 +1223282,1,1,1,1,2,1,2,1,1,2 +1223426,1,1,1,1,2,1,3,1,1,2 +1223793,6,10,7,7,6,4,8,10,2,4 +1223967,6,1,3,1,2,1,3,1,1,2 +1224329,1,1,1,2,2,1,3,1,1,2 +1225799,10,6,4,3,10,10,9,10,1,4 +1226012,4,1,1,3,1,5,2,1,1,4 +1226612,7,5,6,3,3,8,7,4,1,4 +1227210,10,5,5,6,3,10,7,9,2,4 +1227244,1,1,1,1,2,1,2,1,1,2 +1227481,10,5,7,4,4,10,8,9,1,4 +1228152,8,9,9,5,3,5,7,7,1,4 +1228311,1,1,1,1,1,1,3,1,1,2 +1230175,10,10,10,3,10,10,9,10,1,4 +1230688,7,4,7,4,3,7,7,6,1,4 +1231387,6,8,7,5,6,8,8,9,2,4 +1231706,8,4,6,3,3,1,4,3,1,2 +1232225,10,4,5,5,5,10,4,1,1,4 +1236043,3,3,2,1,3,1,3,6,1,2 +1241232,3,1,4,1,2,?,3,1,1,2 +1241559,10,8,8,2,8,10,4,8,10,4 +1241679,9,8,8,5,6,2,4,10,4,4 +1242364,8,10,10,8,6,9,3,10,10,4 +1243256,10,4,3,2,3,10,5,3,2,4 +1270479,5,1,3,3,2,2,2,3,1,2 +1276091,3,1,1,3,1,1,3,1,1,2 +1277018,2,1,1,1,2,1,3,1,1,2 +128059,1,1,1,1,2,5,5,1,1,2 +1285531,1,1,1,1,2,1,3,1,1,2 +1287775,5,1,1,2,2,2,3,1,1,2 +144888,8,10,10,8,5,10,7,8,1,4 +145447,8,4,4,1,2,9,3,3,1,4 +167528,4,1,1,1,2,1,3,6,1,2 +169356,3,1,1,1,2,?,3,1,1,2 +183913,1,2,2,1,2,1,1,1,1,2 +191250,10,4,4,10,2,10,5,3,3,4 +1017023,6,3,3,5,3,10,3,5,3,2 +1100524,6,10,10,2,8,10,7,3,3,4 +1116116,9,10,10,1,10,8,3,3,1,4 +1168736,5,6,6,2,4,10,3,6,1,4 +1182404,3,1,1,1,2,1,1,1,1,2 +1182404,3,1,1,1,2,1,2,1,1,2 +1198641,3,1,1,1,2,1,3,1,1,2 +242970,5,7,7,1,5,8,3,4,1,2 +255644,10,5,8,10,3,10,5,1,3,4 +263538,5,10,10,6,10,10,10,6,5,4 +274137,8,8,9,4,5,10,7,8,1,4 +303213,10,4,4,10,6,10,5,5,1,4 +314428,7,9,4,10,10,3,5,3,3,4 +1182404,5,1,4,1,2,1,3,2,1,2 +1198641,10,10,6,3,3,10,4,3,2,4 +320675,3,3,5,2,3,10,7,1,1,4 +324427,10,8,8,2,3,4,8,7,8,4 +385103,1,1,1,1,2,1,3,1,1,2 +390840,8,4,7,1,3,10,3,9,2,4 +411453,5,1,1,1,2,1,3,1,1,2 +320675,3,3,5,2,3,10,7,1,1,4 +428903,7,2,4,1,3,4,3,3,1,4 +431495,3,1,1,1,2,1,3,2,1,2 +432809,3,1,3,1,2,?,2,1,1,2 +434518,3,1,1,1,2,1,2,1,1,2 +452264,1,1,1,1,2,1,2,1,1,2 +456282,1,1,1,1,2,1,3,1,1,2 +476903,10,5,7,3,3,7,3,3,8,4 +486283,3,1,1,1,2,1,3,1,1,2 +486662,2,1,1,2,2,1,3,1,1,2 +488173,1,4,3,10,4,10,5,6,1,4 +492268,10,4,6,1,2,10,5,3,1,4 +508234,7,4,5,10,2,10,3,8,2,4 +527363,8,10,10,10,8,10,10,7,3,4 +529329,10,10,10,10,10,10,4,10,10,4 +535331,3,1,1,1,3,1,2,1,1,2 +543558,6,1,3,1,4,5,5,10,1,4 +555977,5,6,6,8,6,10,4,10,4,4 +560680,1,1,1,1,2,1,1,1,1,2 +561477,1,1,1,1,2,1,3,1,1,2 +563649,8,8,8,1,2,?,6,10,1,4 +601265,10,4,4,6,2,10,2,3,1,4 +606140,1,1,1,1,2,?,2,1,1,2 +606722,5,5,7,8,6,10,7,4,1,4 +616240,5,3,4,3,4,5,4,7,1,2 +61634,5,4,3,1,2,?,2,3,1,2 +625201,8,2,1,1,5,1,1,1,1,2 +63375,9,1,2,6,4,10,7,7,2,4 +635844,8,4,10,5,4,4,7,10,1,4 +636130,1,1,1,1,2,1,3,1,1,2 +640744,10,10,10,7,9,10,7,10,10,4 +646904,1,1,1,1,2,1,3,1,1,2 +653777,8,3,4,9,3,10,3,3,1,4 +659642,10,8,4,4,4,10,3,10,4,4 +666090,1,1,1,1,2,1,3,1,1,2 +666942,1,1,1,1,2,1,3,1,1,2 +667204,7,8,7,6,4,3,8,8,4,4 +673637,3,1,1,1,2,5,5,1,1,2 +684955,2,1,1,1,3,1,2,1,1,2 +688033,1,1,1,1,2,1,1,1,1,2 +691628,8,6,4,10,10,1,3,5,1,4 +693702,1,1,1,1,2,1,1,1,1,2 +704097,1,1,1,1,1,1,2,1,1,2 +704168,4,6,5,6,7,?,4,9,1,2 +706426,5,5,5,2,5,10,4,3,1,4 +709287,6,8,7,8,6,8,8,9,1,4 +718641,1,1,1,1,5,1,3,1,1,2 +721482,4,4,4,4,6,5,7,3,1,2 +730881,7,6,3,2,5,10,7,4,6,4 +733639,3,1,1,1,2,?,3,1,1,2 +733639,3,1,1,1,2,1,3,1,1,2 +733823,5,4,6,10,2,10,4,1,1,4 +740492,1,1,1,1,2,1,3,1,1,2 +743348,3,2,2,1,2,1,2,3,1,2 +752904,10,1,1,1,2,10,5,4,1,4 +756136,1,1,1,1,2,1,2,1,1,2 +760001,8,10,3,2,6,4,3,10,1,4 +760239,10,4,6,4,5,10,7,1,1,4 +76389,10,4,7,2,2,8,6,1,1,4 +764974,5,1,1,1,2,1,3,1,2,2 +770066,5,2,2,2,2,1,2,2,1,2 +785208,5,4,6,6,4,10,4,3,1,4 +785615,8,6,7,3,3,10,3,4,2,4 +792744,1,1,1,1,2,1,1,1,1,2 +797327,6,5,5,8,4,10,3,4,1,4 +798429,1,1,1,1,2,1,3,1,1,2 +704097,1,1,1,1,1,1,2,1,1,2 +806423,8,5,5,5,2,10,4,3,1,4 +809912,10,3,3,1,2,10,7,6,1,4 +810104,1,1,1,1,2,1,3,1,1,2 +814265,2,1,1,1,2,1,1,1,1,2 +814911,1,1,1,1,2,1,1,1,1,2 +822829,7,6,4,8,10,10,9,5,3,4 +826923,1,1,1,1,2,1,1,1,1,2 +830690,5,2,2,2,3,1,1,3,1,2 +831268,1,1,1,1,1,1,1,3,1,2 +832226,3,4,4,10,5,1,3,3,1,4 +832567,4,2,3,5,3,8,7,6,1,4 +836433,5,1,1,3,2,1,1,1,1,2 +837082,2,1,1,1,2,1,3,1,1,2 +846832,3,4,5,3,7,3,4,6,1,2 +850831,2,7,10,10,7,10,4,9,4,4 +855524,1,1,1,1,2,1,2,1,1,2 +857774,4,1,1,1,3,1,2,2,1,2 +859164,5,3,3,1,3,3,3,3,3,4 +859350,8,10,10,7,10,10,7,3,8,4 +866325,8,10,5,3,8,4,4,10,3,4 +873549,10,3,5,4,3,7,3,5,3,4 +877291,6,10,10,10,10,10,8,10,10,4 +877943,3,10,3,10,6,10,5,1,4,4 +888169,3,2,2,1,4,3,2,1,1,2 +888523,4,4,4,2,2,3,2,1,1,2 +896404,2,1,1,1,2,1,3,1,1,2 +897172,2,1,1,1,2,1,2,1,1,2 +95719,6,10,10,10,8,10,7,10,7,4 +160296,5,8,8,10,5,10,8,10,3,4 +342245,1,1,3,1,2,1,1,1,1,2 +428598,1,1,3,1,1,1,2,1,1,2 +492561,4,3,2,1,3,1,2,1,1,2 +493452,1,1,3,1,2,1,1,1,1,2 +493452,4,1,2,1,2,1,2,1,1,2 +521441,5,1,1,2,2,1,2,1,1,2 +560680,3,1,2,1,2,1,2,1,1,2 +636437,1,1,1,1,2,1,1,1,1,2 +640712,1,1,1,1,2,1,2,1,1,2 +654244,1,1,1,1,1,1,2,1,1,2 +657753,3,1,1,4,3,1,2,2,1,2 +685977,5,3,4,1,4,1,3,1,1,2 +805448,1,1,1,1,2,1,1,1,1,2 +846423,10,6,3,6,4,10,7,8,4,4 +1002504,3,2,2,2,2,1,3,2,1,2 +1022257,2,1,1,1,2,1,1,1,1,2 +1026122,2,1,1,1,2,1,1,1,1,2 +1071084,3,3,2,2,3,1,1,2,3,2 +1080233,7,6,6,3,2,10,7,1,1,4 +1114570,5,3,3,2,3,1,3,1,1,2 +1114570,2,1,1,1,2,1,2,2,1,2 +1116715,5,1,1,1,3,2,2,2,1,2 +1131411,1,1,1,2,2,1,2,1,1,2 +1151734,10,8,7,4,3,10,7,9,1,4 +1156017,3,1,1,1,2,1,2,1,1,2 +1158247,1,1,1,1,1,1,1,1,1,2 +1158405,1,2,3,1,2,1,2,1,1,2 +1168278,3,1,1,1,2,1,2,1,1,2 +1176187,3,1,1,1,2,1,3,1,1,2 +1196263,4,1,1,1,2,1,1,1,1,2 +1196475,3,2,1,1,2,1,2,2,1,2 +1206314,1,2,3,1,2,1,1,1,1,2 +1211265,3,10,8,7,6,9,9,3,8,4 +1213784,3,1,1,1,2,1,1,1,1,2 +1223003,5,3,3,1,2,1,2,1,1,2 +1223306,3,1,1,1,2,4,1,1,1,2 +1223543,1,2,1,3,2,1,1,2,1,2 +1229929,1,1,1,1,2,1,2,1,1,2 +1231853,4,2,2,1,2,1,2,1,1,2 +1234554,1,1,1,1,2,1,2,1,1,2 +1236837,2,3,2,2,2,2,3,1,1,2 +1237674,3,1,2,1,2,1,2,1,1,2 +1238021,1,1,1,1,2,1,2,1,1,2 +1238464,1,1,1,1,1,?,2,1,1,2 +1238633,10,10,10,6,8,4,8,5,1,4 +1238915,5,1,2,1,2,1,3,1,1,2 +1238948,8,5,6,2,3,10,6,6,1,4 +1239232,3,3,2,6,3,3,3,5,1,2 +1239347,8,7,8,5,10,10,7,2,1,4 +1239967,1,1,1,1,2,1,2,1,1,2 +1240337,5,2,2,2,2,2,3,2,2,2 +1253505,2,3,1,1,5,1,1,1,1,2 +1255384,3,2,2,3,2,3,3,1,1,2 +1257200,10,10,10,7,10,10,8,2,1,4 +1257648,4,3,3,1,2,1,3,3,1,2 +1257815,5,1,3,1,2,1,2,1,1,2 +1257938,3,1,1,1,2,1,1,1,1,2 +1258549,9,10,10,10,10,10,10,10,1,4 +1258556,5,3,6,1,2,1,1,1,1,2 +1266154,8,7,8,2,4,2,5,10,1,4 +1272039,1,1,1,1,2,1,2,1,1,2 +1276091,2,1,1,1,2,1,2,1,1,2 +1276091,1,3,1,1,2,1,2,2,1,2 +1276091,5,1,1,3,4,1,3,2,1,2 +1277629,5,1,1,1,2,1,2,2,1,2 +1293439,3,2,2,3,2,1,1,1,1,2 +1293439,6,9,7,5,5,8,4,2,1,2 +1294562,10,8,10,1,3,10,5,1,1,4 +1295186,10,10,10,1,6,1,2,8,1,4 +527337,4,1,1,1,2,1,1,1,1,2 +558538,4,1,3,3,2,1,1,1,1,2 +566509,5,1,1,1,2,1,1,1,1,2 +608157,10,4,3,10,4,10,10,1,1,4 +677910,5,2,2,4,2,4,1,1,1,2 +734111,1,1,1,3,2,3,1,1,1,2 +734111,1,1,1,1,2,2,1,1,1,2 +780555,5,1,1,6,3,1,2,1,1,2 +827627,2,1,1,1,2,1,1,1,1,2 +1049837,1,1,1,1,2,1,1,1,1,2 +1058849,5,1,1,1,2,1,1,1,1,2 +1182404,1,1,1,1,1,1,1,1,1,2 +1193544,5,7,9,8,6,10,8,10,1,4 +1201870,4,1,1,3,1,1,2,1,1,2 +1202253,5,1,1,1,2,1,1,1,1,2 +1227081,3,1,1,3,2,1,1,1,1,2 +1230994,4,5,5,8,6,10,10,7,1,4 +1238410,2,3,1,1,3,1,1,1,1,2 +1246562,10,2,2,1,2,6,1,1,2,4 +1257470,10,6,5,8,5,10,8,6,1,4 +1259008,8,8,9,6,6,3,10,10,1,4 +1266124,5,1,2,1,2,1,1,1,1,2 +1267898,5,1,3,1,2,1,1,1,1,2 +1268313,5,1,1,3,2,1,1,1,1,2 +1268804,3,1,1,1,2,5,1,1,1,2 +1276091,6,1,1,3,2,1,1,1,1,2 +1280258,4,1,1,1,2,1,1,2,1,2 +1293966,4,1,1,1,2,1,1,1,1,2 +1296572,10,9,8,7,6,4,7,10,3,4 +1298416,10,6,6,2,4,10,9,7,1,4 +1299596,6,6,6,5,4,10,7,6,2,4 +1105524,4,1,1,1,2,1,1,1,1,2 +1181685,1,1,2,1,2,1,2,1,1,2 +1211594,3,1,1,1,1,1,2,1,1,2 +1238777,6,1,1,3,2,1,1,1,1,2 +1257608,6,1,1,1,1,1,1,1,1,2 +1269574,4,1,1,1,2,1,1,1,1,2 +1277145,5,1,1,1,2,1,1,1,1,2 +1287282,3,1,1,1,2,1,1,1,1,2 +1296025,4,1,2,1,2,1,1,1,1,2 +1296263,4,1,1,1,2,1,1,1,1,2 +1296593,5,2,1,1,2,1,1,1,1,2 +1299161,4,8,7,10,4,10,7,5,1,4 +1301945,5,1,1,1,1,1,1,1,1,2 +1302428,5,3,2,4,2,1,1,1,1,2 +1318169,9,10,10,10,10,5,10,10,10,4 +474162,8,7,8,5,5,10,9,10,1,4 +787451,5,1,2,1,2,1,1,1,1,2 +1002025,1,1,1,3,1,3,1,1,1,2 +1070522,3,1,1,1,1,1,2,1,1,2 +1073960,10,10,10,10,6,10,8,1,5,4 +1076352,3,6,4,10,3,3,3,4,1,4 +1084139,6,3,2,1,3,4,4,1,1,4 +1115293,1,1,1,1,2,1,1,1,1,2 +1119189,5,8,9,4,3,10,7,1,1,4 +1133991,4,1,1,1,1,1,2,1,1,2 +1142706,5,10,10,10,6,10,6,5,2,4 +1155967,5,1,2,10,4,5,2,1,1,2 +1170945,3,1,1,1,1,1,2,1,1,2 +1181567,1,1,1,1,1,1,1,1,1,2 +1182404,4,2,1,1,2,1,1,1,1,2 +1204558,4,1,1,1,2,1,2,1,1,2 +1217952,4,1,1,1,2,1,2,1,1,2 +1224565,6,1,1,1,2,1,3,1,1,2 +1238186,4,1,1,1,2,1,2,1,1,2 +1253917,4,1,1,2,2,1,2,1,1,2 +1265899,4,1,1,1,2,1,3,1,1,2 +1268766,1,1,1,1,2,1,1,1,1,2 +1277268,3,3,1,1,2,1,1,1,1,2 +1286943,8,10,10,10,7,5,4,8,7,4 +1295508,1,1,1,1,2,4,1,1,1,2 +1297327,5,1,1,1,2,1,1,1,1,2 +1297522,2,1,1,1,2,1,1,1,1,2 +1298360,1,1,1,1,2,1,1,1,1,2 +1299924,5,1,1,1,2,1,2,1,1,2 +1299994,5,1,1,1,2,1,1,1,1,2 +1304595,3,1,1,1,1,1,2,1,1,2 +1306282,6,6,7,10,3,10,8,10,2,4 +1313325,4,10,4,7,3,10,9,10,1,4 +1320077,1,1,1,1,1,1,1,1,1,2 +1320077,1,1,1,1,1,1,2,1,1,2 +1320304,3,1,2,2,2,1,1,1,1,2 +1330439,4,7,8,3,4,10,9,1,1,4 +333093,1,1,1,1,3,1,1,1,1,2 +369565,4,1,1,1,3,1,1,1,1,2 +412300,10,4,5,4,3,5,7,3,1,4 +672113,7,5,6,10,4,10,5,3,1,4 +749653,3,1,1,1,2,1,2,1,1,2 +769612,3,1,1,2,2,1,1,1,1,2 +769612,4,1,1,1,2,1,1,1,1,2 +798429,4,1,1,1,2,1,3,1,1,2 +807657,6,1,3,2,2,1,1,1,1,2 +8233704,4,1,1,1,1,1,2,1,1,2 +837480,7,4,4,3,4,10,6,9,1,4 +867392,4,2,2,1,2,1,2,1,1,2 +869828,1,1,1,1,1,1,3,1,1,2 +1043068,3,1,1,1,2,1,2,1,1,2 +1056171,2,1,1,1,2,1,2,1,1,2 +1061990,1,1,3,2,2,1,3,1,1,2 +1113061,5,1,1,1,2,1,3,1,1,2 +1116192,5,1,2,1,2,1,3,1,1,2 +1135090,4,1,1,1,2,1,2,1,1,2 +1145420,6,1,1,1,2,1,2,1,1,2 +1158157,5,1,1,1,2,2,2,1,1,2 +1171578,3,1,1,1,2,1,1,1,1,2 +1174841,5,3,1,1,2,1,1,1,1,2 +1184586,4,1,1,1,2,1,2,1,1,2 +1186936,2,1,3,2,2,1,2,1,1,2 +1197527,5,1,1,1,2,1,2,1,1,2 +1222464,6,10,10,10,4,10,7,10,1,4 +1240603,2,1,1,1,1,1,1,1,1,2 +1240603,3,1,1,1,1,1,1,1,1,2 +1241035,7,8,3,7,4,5,7,8,2,4 +1287971,3,1,1,1,2,1,2,1,1,2 +1289391,1,1,1,1,2,1,3,1,1,2 +1299924,3,2,2,2,2,1,4,2,1,2 +1306339,4,4,2,1,2,5,2,1,2,2 +1313658,3,1,1,1,2,1,1,1,1,2 +1313982,4,3,1,1,2,1,4,8,1,2 +1321264,5,2,2,2,1,1,2,1,1,2 +1321321,5,1,1,3,2,1,1,1,1,2 +1321348,2,1,1,1,2,1,2,1,1,2 +1321931,5,1,1,1,2,1,2,1,1,2 +1321942,5,1,1,1,2,1,3,1,1,2 +1321942,5,1,1,1,2,1,3,1,1,2 +1328331,1,1,1,1,2,1,3,1,1,2 +1328755,3,1,1,1,2,1,2,1,1,2 +1331405,4,1,1,1,2,1,3,2,1,2 +1331412,5,7,10,10,5,10,10,10,1,4 +1333104,3,1,2,1,2,1,3,1,1,2 +1334071,4,1,1,1,2,3,2,1,1,2 +1343068,8,4,4,1,6,10,2,5,2,4 +1343374,10,10,8,10,6,5,10,3,1,4 +1344121,8,10,4,4,8,10,8,2,1,4 +142932,7,6,10,5,3,10,9,10,2,4 +183936,3,1,1,1,2,1,2,1,1,2 +324382,1,1,1,1,2,1,2,1,1,2 +378275,10,9,7,3,4,2,7,7,1,4 +385103,5,1,2,1,2,1,3,1,1,2 +690557,5,1,1,1,2,1,2,1,1,2 +695091,1,1,1,1,2,1,2,1,1,2 +695219,1,1,1,1,2,1,2,1,1,2 +824249,1,1,1,1,2,1,3,1,1,2 +871549,5,1,2,1,2,1,2,1,1,2 +878358,5,7,10,6,5,10,7,5,1,4 +1107684,6,10,5,5,4,10,6,10,1,4 +1115762,3,1,1,1,2,1,1,1,1,2 +1217717,5,1,1,6,3,1,1,1,1,2 +1239420,1,1,1,1,2,1,1,1,1,2 +1254538,8,10,10,10,6,10,10,10,1,4 +1261751,5,1,1,1,2,1,2,2,1,2 +1268275,9,8,8,9,6,3,4,1,1,4 +1272166,5,1,1,1,2,1,1,1,1,2 +1294261,4,10,8,5,4,1,10,1,1,4 +1295529,2,5,7,6,4,10,7,6,1,4 +1298484,10,3,4,5,3,10,4,1,1,4 +1311875,5,1,2,1,2,1,1,1,1,2 +1315506,4,8,6,3,4,10,7,1,1,4 +1320141,5,1,1,1,2,1,2,1,1,2 +1325309,4,1,2,1,2,1,2,1,1,2 +1333063,5,1,3,1,2,1,3,1,1,2 +1333495,3,1,1,1,2,1,2,1,1,2 +1334659,5,2,4,1,1,1,1,1,1,2 +1336798,3,1,1,1,2,1,2,1,1,2 +1344449,1,1,1,1,1,1,2,1,1,2 +1350568,4,1,1,1,2,1,2,1,1,2 +1352663,5,4,6,8,4,1,8,10,1,4 +188336,5,3,2,8,5,10,8,1,2,4 +352431,10,5,10,3,5,8,7,8,3,4 +353098,4,1,1,2,2,1,1,1,1,2 +411453,1,1,1,1,2,1,1,1,1,2 +557583,5,10,10,10,10,10,10,1,1,4 +636375,5,1,1,1,2,1,1,1,1,2 +736150,10,4,3,10,3,10,7,1,2,4 +803531,5,10,10,10,5,2,8,5,1,4 +822829,8,10,10,10,6,10,10,10,10,4 +1016634,2,3,1,1,2,1,2,1,1,2 +1031608,2,1,1,1,1,1,2,1,1,2 +1041043,4,1,3,1,2,1,2,1,1,2 +1042252,3,1,1,1,2,1,2,1,1,2 +1057067,1,1,1,1,1,?,1,1,1,2 +1061990,4,1,1,1,2,1,2,1,1,2 +1073836,5,1,1,1,2,1,2,1,1,2 +1083817,3,1,1,1,2,1,2,1,1,2 +1096352,6,3,3,3,3,2,6,1,1,2 +1140597,7,1,2,3,2,1,2,1,1,2 +1149548,1,1,1,1,2,1,1,1,1,2 +1174009,5,1,1,2,1,1,2,1,1,2 +1183596,3,1,3,1,3,4,1,1,1,2 +1190386,4,6,6,5,7,6,7,7,3,4 +1190546,2,1,1,1,2,5,1,1,1,2 +1213273,2,1,1,1,2,1,1,1,1,2 +1218982,4,1,1,1,2,1,1,1,1,2 +1225382,6,2,3,1,2,1,1,1,1,2 +1235807,5,1,1,1,2,1,2,1,1,2 +1238777,1,1,1,1,2,1,1,1,1,2 +1253955,8,7,4,4,5,3,5,10,1,4 +1257366,3,1,1,1,2,1,1,1,1,2 +1260659,3,1,4,1,2,1,1,1,1,2 +1268952,10,10,7,8,7,1,10,10,3,4 +1275807,4,2,4,3,2,2,2,1,1,2 +1277792,4,1,1,1,2,1,1,1,1,2 +1277792,5,1,1,3,2,1,1,1,1,2 +1285722,4,1,1,3,2,1,1,1,1,2 +1288608,3,1,1,1,2,1,2,1,1,2 +1290203,3,1,1,1,2,1,2,1,1,2 +1294413,1,1,1,1,2,1,1,1,1,2 +1299596,2,1,1,1,2,1,1,1,1,2 +1303489,3,1,1,1,2,1,2,1,1,2 +1311033,1,2,2,1,2,1,1,1,1,2 +1311108,1,1,1,3,2,1,1,1,1,2 +1315807,5,10,10,10,10,2,10,10,10,4 +1318671,3,1,1,1,2,1,2,1,1,2 +1319609,3,1,1,2,3,4,1,1,1,2 +1323477,1,2,1,3,2,1,2,1,1,2 +1324572,5,1,1,1,2,1,2,2,1,2 +1324681,4,1,1,1,2,1,2,1,1,2 +1325159,3,1,1,1,2,1,3,1,1,2 +1326892,3,1,1,1,2,1,2,1,1,2 +1330361,5,1,1,1,2,1,2,1,1,2 +1333877,5,4,5,1,8,1,3,6,1,2 +1334015,7,8,8,7,3,10,7,2,3,4 +1334667,1,1,1,1,2,1,1,1,1,2 +1339781,1,1,1,1,2,1,2,1,1,2 +1339781,4,1,1,1,2,1,3,1,1,2 +13454352,1,1,3,1,2,1,2,1,1,2 +1345452,1,1,3,1,2,1,2,1,1,2 +1345593,3,1,1,3,2,1,2,1,1,2 +1347749,1,1,1,1,2,1,1,1,1,2 +1347943,5,2,2,2,2,1,1,1,2,2 +1348851,3,1,1,1,2,1,3,1,1,2 +1350319,5,7,4,1,6,1,7,10,3,4 +1350423,5,10,10,8,5,5,7,10,1,4 +1352848,3,10,7,8,5,8,7,4,1,4 +1353092,3,2,1,2,2,1,3,1,1,2 +1354840,2,1,1,1,2,1,3,1,1,2 +1354840,5,3,2,1,3,1,1,1,1,2 +1355260,1,1,1,1,2,1,2,1,1,2 +1365075,4,1,4,1,2,1,1,1,1,2 +1365328,1,1,2,1,2,1,2,1,1,2 +1368267,5,1,1,1,2,1,1,1,1,2 +1368273,1,1,1,1,2,1,1,1,1,2 +1368882,2,1,1,1,2,1,1,1,1,2 +1369821,10,10,10,10,5,10,10,10,7,4 +1371026,5,10,10,10,4,10,5,6,3,4 +1371920,5,1,1,1,2,1,3,2,1,2 +466906,1,1,1,1,2,1,1,1,1,2 +466906,1,1,1,1,2,1,1,1,1,2 +534555,1,1,1,1,2,1,1,1,1,2 +536708,1,1,1,1,2,1,1,1,1,2 +566346,3,1,1,1,2,1,2,3,1,2 +603148,4,1,1,1,2,1,1,1,1,2 +654546,1,1,1,1,2,1,1,1,8,2 +654546,1,1,1,3,2,1,1,1,1,2 +695091,5,10,10,5,4,5,4,4,1,4 +714039,3,1,1,1,2,1,1,1,1,2 +763235,3,1,1,1,2,1,2,1,2,2 +776715,3,1,1,1,3,2,1,1,1,2 +841769,2,1,1,1,2,1,1,1,1,2 +888820,5,10,10,3,7,3,8,10,2,4 +897471,4,8,6,4,3,4,10,6,1,4 +897471,4,8,8,5,4,5,10,4,1,4 diff --git a/lab-svm.ipynb b/lab-svm.ipynb index bbbfd6b..695f6a5 100644 --- a/lab-svm.ipynb +++ b/lab-svm.ipynb @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -53,21 +53,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "import piplite\n", - "await piplite.install(['pandas'])\n", - "await piplite.install(['matplotlib'])\n", - "await piplite.install(['numpy'])\n", - "await piplite.install(['scikit-learn'])\n", - "await piplite.install(['scipy'])\n" + "# import piplite\n", + "# await piplite.install(['pandas'])\n", + "# await piplite.install(['matplotlib'])\n", + "# await piplite.install(['numpy'])\n", + "# await piplite.install(['scikit-learn'])\n", + "# await piplite.install(['scipy'])\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -83,17 +83,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ - "from pyodide.http import pyfetch\n", + "# from pyodide.http import pyfetch\n", "\n", - "async def download(url, filename):\n", - " response = await pyfetch(url)\n", - " if response.status == 200:\n", - " with open(filename, \"wb\") as f:\n", - " f.write(await response.bytes())\n" + "# async def download(url, filename):\n", + "# response = await pyfetch(url)\n", + "# if response.status == 200:\n", + "# with open(filename, \"wb\") as f:\n", + "# f.write(await response.bytes())\n" ] }, { @@ -131,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "button": false, "new_sheet": false, @@ -141,8 +141,36 @@ }, "outputs": [], "source": [ - "#Click here and press Shift+Enter\n", - "path=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/cell_samples.csv\"" + "# #Click here and press Shift+Enter\n", + "# path=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/cell_samples.csv\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Download completed.\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "url = \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/cell_samples.csv\"\n", + "filename = \"cell_samples.csv\"\n", + "\n", + "response = requests.get(url)\n", + "\n", + "# Save the file\n", + "with open(filename, \"wb\") as file:\n", + " file.write(response.content)\n", + "\n", + "print(\"Download completed.\")\n" ] }, { @@ -160,16 +188,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "await download(path, \"cell_samples.csv\")" + "# await download(path,\"cell_samples.csv\")\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "button": false, "new_sheet": false, @@ -177,7 +205,137 @@ "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", + "
IDClumpUnifSizeUnifShapeMargAdhSingEpiSizeBareNucBlandChromNormNuclMitClass
010000255111213112
1100294554457103212
210154253111223112
310162776881343712
410170234113213112
\n", + "
" + ], + "text/plain": [ + " ID Clump UnifSize UnifShape MargAdh SingEpiSize BareNuc \\\n", + "0 1000025 5 1 1 1 2 1 \n", + "1 1002945 5 4 4 5 7 10 \n", + "2 1015425 3 1 1 1 2 2 \n", + "3 1016277 6 8 8 1 3 4 \n", + "4 1017023 4 1 1 3 2 1 \n", + "\n", + " BlandChrom NormNucl Mit Class \n", + "0 3 1 1 2 \n", + "1 3 2 1 2 \n", + "2 3 1 1 2 \n", + "3 3 7 1 2 \n", + "4 3 1 1 2 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = pd.read_csv(\"cell_samples.csv\")\n", "cell_df.head()" @@ -196,9 +354,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "ax = cell_df[cell_df['Class'] == 4][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='DarkBlue', label='malignant');\n", "cell_df[cell_df['Class'] == 2][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='Yellow', label='benign', ax=ax);\n", @@ -221,9 +390,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc object\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df.dtypes" ] @@ -237,9 +428,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc int64\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = cell_df[pd.to_numeric(cell_df['BareNuc'], errors='coerce').notnull()]\n", "cell_df['BareNuc'] = cell_df['BareNuc'].astype('int')\n", @@ -248,9 +461,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, 1, 1, 2, 1, 3, 1, 1],\n", + " [ 5, 4, 4, 5, 7, 10, 3, 2, 1],\n", + " [ 3, 1, 1, 1, 2, 2, 3, 1, 1],\n", + " [ 6, 8, 8, 1, 3, 4, 3, 7, 1],\n", + " [ 4, 1, 1, 3, 2, 1, 3, 1, 1]])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "feature_df = cell_df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh', 'SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']]\n", "X = np.asarray(feature_df)\n", @@ -266,9 +494,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 2, 2, 2, 2])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df['Class'] = cell_df['Class'].astype('int')\n", "y = np.asarray(cell_df['Class'])\n", @@ -291,9 +530,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (546, 9) (546,)\n", + "Test set: (137, 9) (137,)\n" + ] + } + ], "source": [ "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n", "print ('Train set:', X_train.shape, y_train.shape)\n", @@ -325,15 +573,729 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
SVC()
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": [ + "SVC()" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn import svm\n", "clf = svm.SVC(kernel='rbf')\n", "clf.fit(X_train, y_train) " ] }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "šŸ”® Predicted labels: [2 4 2 4 2 2 2 2 4 2]\n" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "y_pred = clf.predict(X_test)\n", + "\n", + "# Preview predictions\n", + "print(\"šŸ”® Predicted labels:\", y_pred[0:10])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -343,9 +1305,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4, 2, 4, 2])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat = clf.predict(X_test)\n", "yhat [0:5]" @@ -360,7 +1333,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -370,7 +1343,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -411,9 +1384,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 2 1.00 0.94 0.97 90\n", + " 4 0.90 1.00 0.95 47\n", + "\n", + " accuracy 0.96 137\n", + " macro avg 0.95 0.97 0.96 137\n", + "weighted avg 0.97 0.96 0.96 137\n", + "\n", + "Confusion matrix, without normalization\n", + "[[85 5]\n", + " [ 0 47]]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHpCAYAAACspBc0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVDRJREFUeJzt3Qm8jHX7x/HrPpZjJ7IWSXZZikipkEgl0p4iScsjhaQ8ZaukqEhZWpWiQlFa+MuaLaW04rFlyVqyZ4nzf31/PTPPnOPgzJztdp/Pu9f9OmfuuWfmnmOaueb6Xb/r5yUkJCQYAACAD8Vl9gkAAAAcC4EKAADwLQIVAADgWwQqAADAtwhUAACAbxGoAAAA3yJQAQAAvkWgAgAAfItABQAA+BaBCoBjWrFihTVt2tQKFixonufZpEmT0vT+f/31V3e/b775ZprebxCULVvWbr/99sw+DSDTEagAPrdq1Sq7++67rVy5cpYrVy4rUKCAXXjhhfbCCy/YX3/9la6P3a5dO/vxxx+tf//+9vbbb1udOnXS9fGC6JdffrG+ffu6oAxA9DzW+gH869NPP7Xrr7/e4uPjrW3btnb22WfbwYMHbe7cufbBBx+4b9yvvPJKujy2gqA8efLYo48+ak8++WS6PIbefg4cOGA5cuSwbNmyWRBNmDDB/RvOnDnTGjZsmOLb6e8SFxfn/jZAVpY9s08AQPLWrFljN910k51xxhk2Y8YMK1myZPi6Tp062cqVK10gk162bdvmfhYqVCjdHkPDPsoS4X+B2/79+y137twuOAXA0A/gWwMHDrQ9e/bY66+/nihICSlfvrw98MAD4ct///23PfHEE3bWWWe5DznVOPz73/9238wjaf9VV13lsjJ169Z1gYKGlUaPHh0+RkMVCpDkoYcecgGFbifK4oR+j6Tb6LhI06ZNswYNGrhgJ1++fFapUiV3TieqUVFgdtFFF1nevHndbVu2bGlLly5N9vEUsOmcdJxqadq3b2/79u074d9X2Q1lqH744Qe75JJLXPZIf1NlQGT27NlWr149FzTovL/44otEt1+7dq3961//ctfpmCJFirjMSeQQj56X9kmjRo3c+WqbNWtWon+LqVOnumE13c/LL798VI2KAhjdvmjRorZ169bw/Su7Vr16dfdvvnfv3hM+Z+BkRKAC+NTkyZNdAHHBBRek6Pg777zTevfubeeee64NHjzYffgOGDDAZWWS0of7ddddZ5dddpk999xzdsopp7gPxZ9//tld37p1a3cfcvPNN7v6lCFDhkR1/rovfQgrUHr88cfd41x99dU2b968495OAUGzZs3cB7KCkW7dutn8+fNdXU5ydR433HCD7d692z1X/a7goF+/fik6xz///NOdowISBYYK8PT3ev/9993PK664wp5++mkXBOjvpccJ+frrr9156bihQ4faPffcY9OnT3cBUChQuvjii+3+++93vytA099RW5UqVcL3s3z5cvc31r+F6o5q1ap11HkquHnjjTdctkWPE9KnTx/3dx41apQL6oBAUo0KAH/ZuXOnascSWrZsmaLjlyxZ4o6/8847E+3v3r272z9jxozwvjPOOMPtmzNnTnjf1q1bE+Lj4xMefPDB8L41a9a44wYNGpToPtu1a+fuI6k+ffq440MGDx7sLm/btu2Y5x16jFGjRoX31apVK6FYsWIJf/zxR3jf999/nxAXF5fQtm3box7vjjvuSHSf11xzTUKRIkUSTuSSSy5xtx87dmx437Jly9w+PdbChQvD+6dOnXrUee7bt++o+1ywYIE7bvTo0eF948ePd/tmzpx51PGhf4spU6Yke53+1pFefvlld/w777zjzi9btmwJXbp0OeFzBU5mZFQAH9q1a5f7mT9//hQd/9lnn7mfyj5EevDBB93PpLUsVatWdUMrIRpS0BDG6tWrLa2Eals++ugjO3LkSIpus2nTJluyZInL7hQuXDi8v0aNGi7jEHqekSIzDKLn9ccff4T/hsej4ajIjJP+BjpvZTyUZQkJ/R7599EwTcihQ4fcY2roSLf/9ttvLaXOPPNMl0FKibvuussd27lzZ7vtttvckM9TTz2V4scCTkYEKoAPaQqyRA41HI/qJTRDRB+UkUqUKOE+OHV9pDJlyhx1Hxr+0VBIWrnxxhvdcI2GpIoXL+4CgnHjxh03aAmdpwKGpBQ8/P7770fVYiR9LnoekpLncvrppx9VV6M6l9KlSx+1L+l9alaUhtp0rIaMTj31VBfw7dixw3bu3GnRBCrRUM2ShpbU40bDXJEBExBEBCqATwOVUqVK2U8//RTV7ZJ+6B7LsaYCp6RbwbEe4/Dhw4ku6wN0zpw5ruZE3/5VtKrgRZmRpMemRmqey7Fum5L7VFZD/WVUF6MA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E6OZQKEaGwBAVg5UvBg386XABSpTpkxx9R/a6tWr57Ib48ePd9kGzcyZM2eOlSlTxlq3bu06wHbo0MHVqMSaYVEti6YhKxg677zz7M477wzP+tF05WjotpHDUr/99pt9/PHHLohSliX0vLTNnz8/fNxHH33kntNFF10U03MAAMCvvARVZyJNKauivioq3FW2JaU0PKWhJA1P1a9fP8W3U38VZYVuueWWqM5TxbSq34mv3tG8bInrYgC/Wv/l/3oYAX62e9cuK3daEddWIq3KDU70fl7u/gmWLT62NcUOH9hrq4delyHnG43A16hkBDVa05ToChUquODkgQcesAsvvDCqICU0c2f06NFu/Z6U0rHKDmnKMgAga/OY9YPk7N692/U3UbdY1cA0adLEnnvuuZjuK9qCWD1ejx49YnosAECweAEspiVQSQNaFFAbAABIWwQqAAAERFycWnLElhpJiPF26S1ws34AAMjqQz9ejFu0NDv11ltvdT2+VGdZvXp111IjRPN1evfu7War6nqVRqgvWDQIVAAACAgv5h4q0RfhapkaTRxR1/XPP//cNSxVfabWywsZOHCgDR061EaOHOkW7lX3eC0OrLYgKcXQDwAAiNozzzzj1ovT4r4hZ555ZqJsypAhQ1wTVDVaFc1sVRd39R+76aaUrdJNRgUAgIDw0mDoRz1ZIjd1fE+OGpLWqVPHrr/+erc0zTnnnOPW1QtR93d1UtdwT4h6vagZ64IFC1L8nAhUAAAICC8Nhn6UJVFAEdoGDBiQ7GOtXr3aRowY4XqITZ061e69917XfPStt95y1ytIkdA6eCG6HLouJRj6AQAgILw0aPimhXYjO9PGx8cne/yRI0dcRuWpp55yl5VR0QK5qkfR+ndphYwKAAAIU5ASuR0rUNFMnqpVqybapzX01PxUSpQo4X5u2bIl0TG6HLouJQhUAAAICC8Dpydrxs/y5csT7fvPf/5jZ5xxRriwVgHJ9OnTw9er5kWzf6JZz46hHwAAAsKzVAz9WHS369q1q11wwQVu6OeGG26wRYsW2SuvvOI2d3+eZ126dLEnn3zS1bEocOnVq5eVKlXKWrVqleLHIVABACAgvAxc6+e8885zi/L27NnTHn/8cReIaDpymzZtwsdoLbq9e/faXXfdZTt27LAGDRrYlClTLFeuXCl+HAIVAAAQk6uuusptx6KsioIYbbEiUAEAICC8NJj14zcEKgAABISXgUM/GYVABQCAgPACmFFhejIAAPAtMioAAASEx9APAADwKy+AQz8EKgAABIWXisyIP+MUalQAAIB/kVEBACAgPIZ+AACAX3kBLKZl6AcAAPgWGRUAAALCY+gHAAD4lRfAoR8CFQAAAsILYEaFGhUAAOBbZFQAAAgIL4AZFQIVAAACwqNGBQAA+JUXwIwKNSoAAMC3yKgAABAQHkM/AADAr7wADv0QqAAAEBBeKjIj/gxTqFEBAAA+RkYFAICAiPM8t8V6Wz8iUAEAICA8imkBAIBfeQEspqVGBQAA+BYZFQAAAiLO+2eL9bZ+RKACAEBQeKkYwiFQAQAA6ckLYDEtNSoAACBqffv2DRfvhrbKlSuHr9+/f7916tTJihQpYvny5bNrr73WtmzZEvXjEKgAABAQXir/i1a1atVs06ZN4W3u3Lnh67p27WqTJ0+28ePH2+zZs23jxo3WunXrqB+DoR8AAAIiLoOLabNnz24lSpQ4av/OnTvt9ddft7Fjx1rjxo3dvlGjRlmVKlVs4cKFdv7556f8MVJy0Mcff5ziO7z66qtTfCwAAPBXH5Vdu3Yl2h8fH++25KxYscJKlSpluXLlsvr169uAAQOsTJkytnjxYjt06JA1adIkfKyGhXTdggUL0j5QadWqVYqf5OHDh1P84AAAwF9Kly6d6HKfPn1cPUpS9erVszfffNMqVarkhn369etnF110kf3000+2efNmy5kzpxUqVCjRbYoXL+6ui0aKApUjR45EdacAAODknPWzfv16K1CgQHj/sbIpzZs3D/9eo0YNF7icccYZNm7cOMudO7ellVQV06qiFwAA+GtRwrgYN1GQErkdK1BJStmTihUr2sqVK13dysGDB23Hjh2JjtGsn+RqWo77nKI62swN7TzxxBN22mmnuelGq1evdvt79erlCmcAAEDWs2fPHlu1apWVLFnSateubTly5LDp06eHr1++fLmtW7fO1bKka6DSv39/NyY1cOBAN/4UcvbZZ9trr70W7d0BAIA0HvrxYtyi0b17dzft+Ndff7X58+fbNddcY9myZbObb77ZChYsaB06dLBu3brZzJkzXXFt+/btXZASTSFtTNOTR48eba+88opdeumlds8994T316xZ05YtWxbt3QEAgJNw9eQNGza4oOSP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AJnD87xUbSd1jYqKZR988EG74oor3OWrr7460ZPS7B9dVh0LAABAhgYq/fr1s3vuucdmzpyZJg8MAADSVlwAi2lTHKgoYyKXXHJJep4PAAA4CVZP9uX0ZL+OXwEAAHPr/MS61k+st/NVoFKxYsUTBivbt29P7TkBAABEH6ioTiVpZ1oAAOAPcVm5RkVuuukmK1asWPqdDQAAiJ2XilqTkz1QoT4FAAB/izPPbbHe9qRu+Baa9QMAAOC7jMqRI0fS90wAAECqeFl9ejIAAPCvuKxeTAsAAPwrLoB9VKJelBAAACCjkFEBACAgPGpUAACAr6cne8GankygAgBAQHgBzKhQowIAAHyLjAoAAAERl4oMhF8zFwQqAAAEhOd5MS9549elcghUAAAICC8Vawv6M0zxb6YHAAD42IgRI6xGjRpWoEABt9WvX98+//zz8PX79++3Tp06WZEiRSxfvnx27bXX2pYtW6J+HAIVAAAC1pk2LsYtGqeffro9/fTTtnjxYvvmm2+scePG1rJlS/v555/d9V27drXJkyfb+PHjbfbs2bZx40Zr3bp11M+JoR8AAALEy6DHadGiRaLL/fv3d1mWhQsXuiDm9ddft7Fjx7oARkaNGmVVqlRx159//vkpfhwyKgAABKyPihfjJrt27Uq0HThw4ISPe/jwYXvvvfds7969bghIWZZDhw5ZkyZNwsdUrlzZypQpYwsWLIjqORGoAACAsNKlS1vBggXD24ABA+xYfvzxR1d/Eh8fb/fcc49NnDjRqlataps3b7acOXNaoUKFEh1fvHhxd100GPoBACAgvDSYnrx+/XpXHBuiIORYKlWqZEuWLLGdO3fahAkTrF27dq4eJS0RqAAAEBBxadDwLTSLJyWUNSlfvrz7vXbt2vb111/bCy+8YDfeeKMdPHjQduzYkSirolk/JUqUiOm8AABAQDIqXoxbah05csTVtChoyZEjh02fPj183fLly23dunWuhiUaZFQAAEDUevbsac2bN3cFsrt373YzfGbNmmVTp051tS0dOnSwbt26WeHChV2GpnPnzi5IiWbGjxCoAAAQEF4GdqbdunWrtW3b1jZt2uQCEzV/U5By2WWXuesHDx5scXFxrtGbsizNmjWz4cOHR31eBCoAAASEl4Fr/ahPyvHkypXLhg0b5rbUoEYFAAD4FhkVAAACIi4NZv34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ACAgPFroAwAAv/ICOPRDoAIAQEB4AexMS40KAADwLTIqAAAEhRe8lAqBCgAAAeFRTAsAAPzKC2AxLTUqAADAt8ioAAAQEF7wSlTIqAAAELhIxYtxi8GwYcOsbNmylitXLqtXr54tWrQoTZ8SgQoAAIjJ+++/b926dbM+ffrYt99+azVr1rRmzZrZ1q1bLa0QqAAAELBZP16M/0Xr+eeft44dO1r79u2tatWqNnLkSMuTJ4+98cYbafacqFHJwhISEtzP3bt2ZfapACl26K89mX0KQIoc+mtvovfajLB7966YZ+/otrIryWdCfHy825I6ePCgLV682Hr27BneFxcXZ02aNLEFCxZYWiFQycJ2797tfpY/s3RmnwoABPq9tmDBgun6GDlz5rQSJUpYhVS+n+fLl89Kl058HxrW6du371HH/v7773b48GErXrx4ov26vGzZMksrBCpZWKlSpWz9+vWWP39+8/w6gf4kpG8j+h9df9sCBQpk9ukAJ8RrNn0ok6IgRe+16S1Xrly2Zs0al+VI7Tkn/TxILpuSkQhUsjCl6E4//fTMPo3A0hs+b/o4mfCaTXvpnUlJGqxoyyinnnqqZcuWzbZs2ZJovy4ru5NWKKYFAAAxDTfVrl3bpk+fHt535MgRd7l+/fqWVsioAACAmGhqcrt27axOnTpWt25dGzJkiO3du9fNAkorBCpAGtN4rorPMntcF0gpXrOI1Y033mjbtm2z3r172+bNm61WrVo2ZcqUowpsU8NLyMh5UwAAAFGgRgUAAPgWgQoAAPAtAhUAAOBbBCoAAMC3CFQAAIBvEagAAADfIlABfIrOAQgqXtuIBoEK4FOhhcHUkho4mb3zzjuuCVjka5vXNVKKQAXwmc6dO1vjxo3dz+XLl7vFI4GT1aJFi2zhwoV2yy23WJs2baxfv35uP69rpBSdaQGf2b59u33++ec2bdo0mzhxot19993WokULu+iiizL71ICYrVixwj744AN766233ArN+lmpUqVw5hA4FgIVwEcOHz7slk0PGT16tI0ZM8b2799vnTp1shtuuCFTzw+IloZ4tGXPnt0OHTpkv/32m9100022detW9/pu0KBBZp8ifI5ABfChv//+272xi9Lmr7zyin3zzTcubX7NNddk9ukBJ6RsYOHChe2SSy4J16NEDvdoeHPDhg02f/58O/XUU90x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p58efiy55JJLEh544AH3+/Lly5VucY+fnJkzZ7rr//zzz/C+/fv3J+TJkydh/vz5iY7t0KFDws033+x+79mzZ0LVqlUTXf/www8fdV9J6fqJEyce8/pBgwYl1K5dO3y5T58+CdmyZUvYsGFDeN/nn3+eEBcXl7Bp0yZ3+ayzzkoYO3Zsovt54oknEurXr+9+X7NmjXvc77777piPC+B/qFEBsghlSZS5UKZEQym33HKLm8USUr169UR1Kd9//73LHijLEGn//v22atUqN9yhrEe9evXC12XPnt3q1Klz1PBPiLId2bJls0suuSTF561z2Ldvn1122WWJ9iurc84557jflbmIPA+pX7++Rev99993mR49vz179rhi4wIFCiQ6pkyZMnbaaaclehz9PZUF0t9Kt+3QoYN17NgxfIzup2DBglGfDwCKaYEsQ3UbI0aMcMGI6lAUVETKmzdvosv6oK5du7YbykiqaNGiMQ83RUvnIZ9++mmiAEFU45JWFixYYG3atLF+/fq5IS8FFu+9954b3or2XDVklDRwUoAGIHoEKkAWoUBEhaspde6557oMQ7FixY7KKoSULFnSvvrqK7v44ovDmYPFixe72yZHWRtlH1RbomLepEIZHRXphlStWtUFJOvWrTtmJkaFq6HC4JCFCxdaNObPn+8KjR999NHwvrVr1x51nM5j48aNLtgLPU5cXJwrQC5evLjbv3r1ahf0AEg9imkBJEsftKeeeqqb6aNi2jVr1rg+J/fff79t2LDBHfPAAw/Y008/7ZqmLVu2zBWVHq8HStmyZa1du3Z2xx13uNuE7lPFqaJAQbN9NEy1bds2l6HQcEr37t1dAa0KUjW08u2339qLL74YLlC95557bMWKFfbQQw+5IZixY8e6othoVKhQwQUhyqLoMTQElFxhsGby6DloaEx/F/09NPNHM6pEGRkV/+r2//nPf+zHH39008Kff/75qM4HwD8IVAAkS1Nv58yZ42oyNKNGWQvVXqhGJZRhefDBB+22225zH9yq1VBQcc011xz3fjX8dN1117mgRlN3Vcuxd+9ed52GdvRBrxk7yk7cd999br8axmnmjAIAnYdmHmkoSNOVReeoGUMKfjR1WbODNNsmGldffbULhvSY6j6rDIseMyllpfT3uOKKK6xp06ZWo0aNRNOPNeNI05MVnCiDpCyQgqbQuQKIjqeK2ihvAwAAkCHIqAAAAN8iUAEAAL5FoAIAAHyLQAUAAPgWgQoAAPAtAhUAAOBbBCoAAMC3CFQAAIBvEagAAADfIlABAAC+RaACAADMr/4fbOi8NXQ1rIUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Compute confusion matrix\n", "cnf_matrix = confusion_matrix(y_test, yhat, labels=[2,4])\n", @@ -435,9 +1437,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.9639038982104676" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import f1_score\n", "f1_score(y_test, yhat, average='weighted') " @@ -452,9 +1465,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.9444444444444444" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import jaccard_score\n", "jaccard_score(y_test, yhat,pos_label=2)" @@ -470,11 +1494,62 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "šŸ“ˆ Evaluation: SVM with Linear Kernel\n", + "šŸ”¹ Accuracy: 0.9635036496350365\n", + "šŸ”¹ F1 Score: 0.9494949494949495\n", + "šŸ”¹ Jaccard Index: 0.9038461538461539\n", + "\n", + "šŸ“„ Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " 0 1.00 0.94 0.97 90\n", + " 1 0.90 1.00 0.95 47\n", + "\n", + " accuracy 0.96 137\n", + " macro avg 0.95 0.97 0.96 137\n", + "weighted avg 0.97 0.96 0.96 137\n", + "\n" + ] + } + ], "source": [ - "# write your code here\n" + "# write your code here\n", + "\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.svm import SVC\n", + "from sklearn.metrics import accuracy_score, f1_score, jaccard_score, classification_report\n", + "\n", + "# 1ļøāƒ£ Prepare features and binary target\n", + "X = np.asarray(cell_df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh',\n", + " 'SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']])\n", + "y = np.where(cell_df['Class'] == 2, 0, 1) # 0 = benign, 1 = malignant\n", + "\n", + "# 2ļøāƒ£ Split data\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=4)\n", + "\n", + "# 3ļøāƒ£ Define and train linear SVM\n", + "linear_clf = SVC(kernel='linear')\n", + "linear_clf.fit(X_train, y_train)\n", + "\n", + "# 4ļøāƒ£ Predict\n", + "y_pred_linear = linear_clf.predict(X_test)\n", + "\n", + "# 5ļøāƒ£ Evaluate\n", + "print(\"šŸ“ˆ Evaluation: SVM with Linear Kernel\")\n", + "print(\"šŸ”¹ Accuracy: \", accuracy_score(y_test, y_pred_linear))\n", + "print(\"šŸ”¹ F1 Score: \", f1_score(y_test, y_pred_linear))\n", + "print(\"šŸ”¹ Jaccard Index:\", jaccard_score(y_test, y_pred_linear))\n", + "print(\"\\nšŸ“„ Classification Report:\")\n", + "print(classification_report(y_test, y_pred_linear))\n", + "\n" ] }, { @@ -495,6 +1570,28 @@ "\n" ] }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Avg F1-score: 0.9639\n", + "Jaccard score: 0.9038\n" + ] + } + ], + "source": [ + "clf2 = svm.SVC(kernel='linear')\n", + "clf2.fit(X_train, y_train) \n", + "yhat2 = clf2.predict(X_test)\n", + "print(\"Avg F1-score: %.4f\" % f1_score(y_test, yhat2, average='weighted'))\n", + "print(\"Jaccard score: %.4f\" % jaccard_score(y_test, yhat2,pos_label=1))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -505,7 +1602,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -519,7 +1616,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.13.5" } }, "nbformat": 4,