From 3f6b84ddf954572072a5d1d03d6662c75c07636f Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 15:30:24 +0200 Subject: [PATCH 01/33] Add .gitignore to exclude virtual environment directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76cd821 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.venv/ \ No newline at end of file From 659b24cfbb8a1b1a780105f73b00a3b1b25a4328 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 16:09:47 +0200 Subject: [PATCH 02/33] add lab1 dataset --- .gitignore | 3 +- data/lab-01/Titanic-Dataset.csv | 892 ++++++++++++++++++++++++++++++++ 2 files changed, 894 insertions(+), 1 deletion(-) create mode 100644 data/lab-01/Titanic-Dataset.csv diff --git a/.gitignore b/.gitignore index 76cd821..4da1a8c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/.venv/ \ No newline at end of file +/.venv/ +requirements.txt \ No newline at end of file diff --git a/data/lab-01/Titanic-Dataset.csv b/data/lab-01/Titanic-Dataset.csv new file mode 100644 index 0000000..5cc466e --- /dev/null +++ b/data/lab-01/Titanic-Dataset.csv @@ -0,0 +1,892 @@ +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S +12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S +13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S +14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S +15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S +16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S +17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q +18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S +19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S +20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C +21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S +22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S +23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q +24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S +25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S +26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S +27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C +28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S +29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q +30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S +31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C +32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C +33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q +34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S +35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C +36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S +37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C +38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S +39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S +40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C +41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S +42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S +43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C +44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C +45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q +46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S +47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q +48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q +49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C +50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S +51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S +52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S +53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C +54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S +55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C +56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S +57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S +58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C +59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S +60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S +61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C +62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, +63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S +64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S +65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C +66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C +67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S +68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S +69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S +70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S +71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S +72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S +73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S +74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C +75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S +76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S +77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S +78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S +79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S +80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S +81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S +82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S +83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q +84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S +85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S +86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S +87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S +88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S +89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S +90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S +91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S +92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S +93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S +94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S +95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S +96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S +97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C +98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C +99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S +100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S +101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S +102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S +103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S +104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S +105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S +106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S +107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S +108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S +109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S +110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q +111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S +112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C +113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S +114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S +115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C +116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S +117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q +118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S +119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C +120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S +121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S +122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S +123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C +124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S +125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S +126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C +127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q +128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S +129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C +130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S +131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C +132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S +133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S +134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S +135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S +136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C +137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S +138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S +139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S +140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C +141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C +142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S +143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S +144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q +145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S +146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S +147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S +148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S +149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S +150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S +151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S +152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S +153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S +154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S +155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S +156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C +157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q +158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S +159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S +160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S +161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S +162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S +163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S +164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S +165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S +166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S +167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S +168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S +169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S +170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S +171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S +172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q +173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S +174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S +175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C +176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S +177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S +178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C +179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S +180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S +181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S +182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C +183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S +184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S +185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S +186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S +187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q +188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S +189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q +190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S +191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S +192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S +193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S +194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S +195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C +196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C +197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q +198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S +199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q +200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S +201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S +202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S +203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S +204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C +205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S +206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S +207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S +208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C +209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q +210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C +211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S +212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S +213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S +214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S +215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q +216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C +217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S +218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S +219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C +220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S +221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S +222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S +223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S +224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S +225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S +226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S +227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S +228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S +229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S +230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S +231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S +232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S +233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S +234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S +235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S +236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S +237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S +238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S +239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S +240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S +241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C +242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q +243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S +244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S +245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C +246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q +247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S +248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S +249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S +250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S +251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S +252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S +253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S +254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S +255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S +256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C +257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C +258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S +259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C +260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S +261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q +262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S +263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S +264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S +265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q +266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S +267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S +268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S +269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S +270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S +271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S +272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S +273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S +274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C +275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q +276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S +277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S +278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S +279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q +280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S +281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q +282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S +283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S +284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S +285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S +286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C +287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S +288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S +289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S +290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q +291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S +292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C +293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C +294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S +295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S +296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C +297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C +298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S +299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S +300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C +301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q +302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q +303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S +304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q +305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S +306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S +307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C +308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C +309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C +310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C +311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C +312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C +313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S +314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S +315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S +316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S +317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S +318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S +319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S +320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C +321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S +322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S +323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q +324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S +325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S +326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C +327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S +328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S +329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S +330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C +331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q +332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S +333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S +334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S +335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S +336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S +337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S +338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C +339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S +340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S +341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S +342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S +343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S +344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S +345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S +346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S +347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S +348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S +349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S +350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S +351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S +352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S +353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C +354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S +355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C +356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S +357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S +358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S +359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q +360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q +361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S +362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C +363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C +364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S +365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q +366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S +367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C +368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C +369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q +370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C +371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C +372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S +373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S +374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C +375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S +376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C +377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S +378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C +379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C +380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S +381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C +382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C +383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S +384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S +385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S +386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S +387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S +388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S +389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q +390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C +391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S +392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S +393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S +394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C +395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S +396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S +397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S +398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S +399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S +400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S +401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S +402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S +403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S +404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S +405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S +406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S +407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S +408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S +409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S +410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S +411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S +412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q +413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q +414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S +415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S +416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S +417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S +418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S +419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S +420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S +421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C +422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q +423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S +424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S +425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S +426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S +427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S +428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S +429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q +430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S +431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S +432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S +433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S +434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S +435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S +436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S +437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S +438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S +439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S +440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S +441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S +442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S +443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S +444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S +445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S +446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S +447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S +448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S +449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C +450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S +451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S +452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S +453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C +454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C +455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S +456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C +457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S +458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S +459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S +460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q +461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S +462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S +463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S +464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S +465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S +466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S +467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S +468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S +469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q +470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C +471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S +472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S +473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S +474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C +475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S +476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S +477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S +478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S +479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S +480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S +481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S +482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S +483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S +484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S +485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C +486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S +487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S +488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C +489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S +490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S +491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S +492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S +493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S +494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C +495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S +496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C +497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C +498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S +499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S +500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S +501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S +502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q +503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q +504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S +505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S +506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C +507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S +508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S +509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S +510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S +511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q +512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S +513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S +514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C +515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S +516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S +517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S +518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q +519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S +520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S +521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S +522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S +523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C +524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C +525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C +526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q +527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S +528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S +529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S +530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S +531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S +532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C +533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C +534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C +535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S +536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S +537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S +538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C +539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S +540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C +541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S +542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S +543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S +544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S +545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C +546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S +547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S +548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C +549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S +550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S +551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C +552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S +553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q +554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C +555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S +556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S +557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C +558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C +559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S +560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S +561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q +562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S +563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S +564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S +565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S +566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S +567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S +568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S +569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C +570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S +571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S +572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S +573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S +574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q +575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S +576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S +577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S +578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S +579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C +580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S +581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S +582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C +583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S +584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C +585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C +586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S +587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S +588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C +589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S +590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S +591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S +592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C +593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S +594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q +595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S +596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S +597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S +598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S +599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C +600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C +601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S +602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S +603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S +604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S +605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C +606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S +607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S +608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S +609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C +610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S +611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S +612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S +613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q +614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q +615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S +616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S +617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S +618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S +619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S +620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S +621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C +622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S +623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C +624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S +625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S +626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S +627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q +628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S +629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S +630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q +631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S +632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S +633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C +634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S +635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S +636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S +637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S +638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S +639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S +640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S +641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S +642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C +643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S +644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S +645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C +646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C +647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S +648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C +649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S +650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S +651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S +652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S +653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S +654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q +655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q +656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S +657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S +658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q +659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S +660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C +661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S +662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C +663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S +664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S +665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S +666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S +667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S +668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S +669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S +670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S +671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S +672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S +673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S +674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S +675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S +676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S +677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S +678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S +679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S +680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C +681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q +682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C +683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S +684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S +685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S +686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C +687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S +688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S +689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S +690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S +691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S +692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C +693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S +694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C +695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S +696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S +697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S +698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q +699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C +700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S +701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C +702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S +703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C +704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q +705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S +706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S +707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S +708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S +709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S +710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C +711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C +712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S +713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S +714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S +715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S +716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S +717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C +718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S +719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q +720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S +721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S +722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S +723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S +724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S +725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S +726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S +727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S +728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q +729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S +730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S +731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S +732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C +733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S +734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S +735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S +736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S +737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S +738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C +739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S +740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S +741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S +742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S +743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C +744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S +745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S +746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S +747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S +748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S +749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S +750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q +751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S +752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S +753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S +754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S +755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S +756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S +757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S +758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S +759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S +760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S +761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S +762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S +763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C +764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S +765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S +766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S +767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C +768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q +769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q +770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S +771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S +772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S +773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S +774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C +775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S +776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S +777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q +778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S +779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q +780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S +781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C +782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S +783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S +784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S +785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S +786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S +787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S +788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q +789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S +790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C +791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q +792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S +793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S +794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C +795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S +796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S +797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S +798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S +799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C +800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S +801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S +802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S +803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S +804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C +805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S +806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S +807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S +808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S +809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S +810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S +811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S +812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S +813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S +814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S +815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S +816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S +817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S +818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C +819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S +820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S +821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S +822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S +823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S +824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S +825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S +826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q +827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S +828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C +829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q +830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, +831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C +832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S +833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C +834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S +835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S +836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C +837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S +838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S +839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S +840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C +841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S +842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S +843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C +844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C +845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S +846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S +847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S +848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C +849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S +850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C +851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S +852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S +853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C +854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S +855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S +856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S +857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S +858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S +859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C +860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C +861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S +862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S +863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S +864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S +865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S +866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S +867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C +868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S +869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S +870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S +871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S +872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S +873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S +874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S +875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C +876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C +877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S +878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S +879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S +880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C +881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S +882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S +883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S +884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S +885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S +886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q +887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S +888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S +889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S +890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C +891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q From 25c297c97bf60a55b5906faa4c96d2cae60ca728 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 16:10:45 +0200 Subject: [PATCH 03/33] add initial Jupyter notebook for Lab 01 - Data exploration and preprocessing --- lab-01.ipynb | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 lab-01.ipynb diff --git a/lab-01.ipynb b/lab-01.ipynb new file mode 100644 index 0000000..d9c420e --- /dev/null +++ b/lab-01.ipynb @@ -0,0 +1,113 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fd487d21", + "metadata": {}, + "source": [ + "# Lab 01 - Data exploration and preprocessing" + ] + }, + { + "cell_type": "markdown", + "id": "2c858f34", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "id": "5b35bcc3", + "metadata": {}, + "source": [ + "## Dataset Loading" + ] + }, + { + "cell_type": "markdown", + "id": "d4b7cb1f", + "metadata": {}, + "source": [ + "## Dataset Overview" + ] + }, + { + "cell_type": "markdown", + "id": "d54d8a85", + "metadata": {}, + "source": [ + "## Data Quality Check" + ] + }, + { + "cell_type": "markdown", + "id": "2a86fdb7", + "metadata": {}, + "source": [ + "## Descriptive Statistics" + ] + }, + { + "cell_type": "markdown", + "id": "da3dba6c", + "metadata": {}, + "source": [ + "## Data Visualization" + ] + }, + { + "cell_type": "markdown", + "id": "0224a37f", + "metadata": {}, + "source": [ + "## Exploring Feature Relationships" + ] + }, + { + "cell_type": "markdown", + "id": "3600768d", + "metadata": {}, + "source": [ + "## Handling Missing Values" + ] + }, + { + "cell_type": "markdown", + "id": "9489ec02", + "metadata": {}, + "source": [ + "## Feature Engineering" + ] + }, + { + "cell_type": "markdown", + "id": "40060b97", + "metadata": {}, + "source": [ + "## Final Summary" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c65e7bff0339a896350a433a449e332727639be8 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 16:14:51 +0200 Subject: [PATCH 04/33] added split dataset --- data/lab-01/gender_submission.csv | 419 ++++++++++++++++++ data/lab-01/test.csv | 419 ++++++++++++++++++ .../lab-01/{Titanic-Dataset.csv => train.csv} | 0 3 files changed, 838 insertions(+) create mode 100644 data/lab-01/gender_submission.csv create mode 100644 data/lab-01/test.csv rename data/lab-01/{Titanic-Dataset.csv => train.csv} (100%) diff --git a/data/lab-01/gender_submission.csv b/data/lab-01/gender_submission.csv new file mode 100644 index 0000000..80bbbd8 --- /dev/null +++ b/data/lab-01/gender_submission.csv @@ -0,0 +1,419 @@ +PassengerId,Survived +892,0 +893,1 +894,0 +895,0 +896,1 +897,0 +898,1 +899,0 +900,1 +901,0 +902,0 +903,0 +904,1 +905,0 +906,1 +907,1 +908,0 +909,0 +910,1 +911,1 +912,0 +913,0 +914,1 +915,0 +916,1 +917,0 +918,1 +919,0 +920,0 +921,0 +922,0 +923,0 +924,1 +925,1 +926,0 +927,0 +928,1 +929,1 +930,0 +931,0 +932,0 +933,0 +934,0 +935,1 +936,1 +937,0 +938,0 +939,0 +940,1 +941,1 +942,0 +943,0 +944,1 +945,1 +946,0 +947,0 +948,0 +949,0 +950,0 +951,1 +952,0 +953,0 +954,0 +955,1 +956,0 +957,1 +958,1 +959,0 +960,0 +961,1 +962,1 +963,0 +964,1 +965,0 +966,1 +967,0 +968,0 +969,1 +970,0 +971,1 +972,0 +973,0 +974,0 +975,0 +976,0 +977,0 +978,1 +979,1 +980,1 +981,0 +982,1 +983,0 +984,1 +985,0 +986,0 +987,0 +988,1 +989,0 +990,1 +991,0 +992,1 +993,0 +994,0 +995,0 +996,1 +997,0 +998,0 +999,0 +1000,0 +1001,0 +1002,0 +1003,1 +1004,1 +1005,1 +1006,1 +1007,0 +1008,0 +1009,1 +1010,0 +1011,1 +1012,1 +1013,0 +1014,1 +1015,0 +1016,0 +1017,1 +1018,0 +1019,1 +1020,0 +1021,0 +1022,0 +1023,0 +1024,1 +1025,0 +1026,0 +1027,0 +1028,0 +1029,0 +1030,1 +1031,0 +1032,1 +1033,1 +1034,0 +1035,0 +1036,0 +1037,0 +1038,0 +1039,0 +1040,0 +1041,0 +1042,1 +1043,0 +1044,0 +1045,1 +1046,0 +1047,0 +1048,1 +1049,1 +1050,0 +1051,1 +1052,1 +1053,0 +1054,1 +1055,0 +1056,0 +1057,1 +1058,0 +1059,0 +1060,1 +1061,1 +1062,0 +1063,0 +1064,0 +1065,0 +1066,0 +1067,1 +1068,1 +1069,0 +1070,1 +1071,1 +1072,0 +1073,0 +1074,1 +1075,0 +1076,1 +1077,0 +1078,1 +1079,0 +1080,1 +1081,0 +1082,0 +1083,0 +1084,0 +1085,0 +1086,0 +1087,0 +1088,0 +1089,1 +1090,0 +1091,1 +1092,1 +1093,0 +1094,0 +1095,1 +1096,0 +1097,0 +1098,1 +1099,0 +1100,1 +1101,0 +1102,0 +1103,0 +1104,0 +1105,1 +1106,1 +1107,0 +1108,1 +1109,0 +1110,1 +1111,0 +1112,1 +1113,0 +1114,1 +1115,0 +1116,1 +1117,1 +1118,0 +1119,1 +1120,0 +1121,0 +1122,0 +1123,1 +1124,0 +1125,0 +1126,0 +1127,0 +1128,0 +1129,0 +1130,1 +1131,1 +1132,1 +1133,1 +1134,0 +1135,0 +1136,0 +1137,0 +1138,1 +1139,0 +1140,1 +1141,1 +1142,1 +1143,0 +1144,0 +1145,0 +1146,0 +1147,0 +1148,0 +1149,0 +1150,1 +1151,0 +1152,0 +1153,0 +1154,1 +1155,1 +1156,0 +1157,0 +1158,0 +1159,0 +1160,1 +1161,0 +1162,0 +1163,0 +1164,1 +1165,1 +1166,0 +1167,1 +1168,0 +1169,0 +1170,0 +1171,0 +1172,1 +1173,0 +1174,1 +1175,1 +1176,1 +1177,0 +1178,0 +1179,0 +1180,0 +1181,0 +1182,0 +1183,1 +1184,0 +1185,0 +1186,0 +1187,0 +1188,1 +1189,0 +1190,0 +1191,0 +1192,0 +1193,0 +1194,0 +1195,0 +1196,1 +1197,1 +1198,0 +1199,0 +1200,0 +1201,1 +1202,0 +1203,0 +1204,0 +1205,1 +1206,1 +1207,1 +1208,0 +1209,0 +1210,0 +1211,0 +1212,0 +1213,0 +1214,0 +1215,0 +1216,1 +1217,0 +1218,1 +1219,0 +1220,0 +1221,0 +1222,1 +1223,0 +1224,0 +1225,1 +1226,0 +1227,0 +1228,0 +1229,0 +1230,0 +1231,0 +1232,0 +1233,0 +1234,0 +1235,1 +1236,0 +1237,1 +1238,0 +1239,1 +1240,0 +1241,1 +1242,1 +1243,0 +1244,0 +1245,0 +1246,1 +1247,0 +1248,1 +1249,0 +1250,0 +1251,1 +1252,0 +1253,1 +1254,1 +1255,0 +1256,1 +1257,1 +1258,0 +1259,1 +1260,1 +1261,0 +1262,0 +1263,1 +1264,0 +1265,0 +1266,1 +1267,1 +1268,1 +1269,0 +1270,0 +1271,0 +1272,0 +1273,0 +1274,1 +1275,1 +1276,0 +1277,1 +1278,0 +1279,0 +1280,0 +1281,0 +1282,0 +1283,1 +1284,0 +1285,0 +1286,0 +1287,1 +1288,0 +1289,1 +1290,0 +1291,0 +1292,1 +1293,0 +1294,1 +1295,0 +1296,0 +1297,0 +1298,0 +1299,0 +1300,1 +1301,1 +1302,1 +1303,1 +1304,1 +1305,0 +1306,1 +1307,0 +1308,0 +1309,0 diff --git a/data/lab-01/test.csv b/data/lab-01/test.csv new file mode 100644 index 0000000..2ed7ef4 --- /dev/null +++ b/data/lab-01/test.csv @@ -0,0 +1,419 @@ +PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q +893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S +894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q +895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S +896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S +897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S +898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q +899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S +900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C +901,3,"Davies, Mr. John Samuel",male,21,2,0,A/4 48871,24.15,,S +902,3,"Ilieff, Mr. Ylio",male,,0,0,349220,7.8958,,S +903,1,"Jones, Mr. Charles Cresson",male,46,0,0,694,26,,S +904,1,"Snyder, Mrs. John Pillsbury (Nelle Stevenson)",female,23,1,0,21228,82.2667,B45,S +905,2,"Howard, Mr. Benjamin",male,63,1,0,24065,26,,S +906,1,"Chaffee, Mrs. Herbert Fuller (Carrie Constance Toogood)",female,47,1,0,W.E.P. 5734,61.175,E31,S +907,2,"del Carlo, Mrs. Sebastiano (Argenia Genovesi)",female,24,1,0,SC/PARIS 2167,27.7208,,C +908,2,"Keane, Mr. Daniel",male,35,0,0,233734,12.35,,Q +909,3,"Assaf, Mr. Gerios",male,21,0,0,2692,7.225,,C +910,3,"Ilmakangas, Miss. Ida Livija",female,27,1,0,STON/O2. 3101270,7.925,,S +911,3,"Assaf Khalil, Mrs. Mariana (Miriam"")""",female,45,0,0,2696,7.225,,C +912,1,"Rothschild, Mr. Martin",male,55,1,0,PC 17603,59.4,,C +913,3,"Olsen, Master. Artur Karl",male,9,0,1,C 17368,3.1708,,S +914,1,"Flegenheim, Mrs. Alfred (Antoinette)",female,,0,0,PC 17598,31.6833,,S +915,1,"Williams, Mr. Richard Norris II",male,21,0,1,PC 17597,61.3792,,C +916,1,"Ryerson, Mrs. Arthur Larned (Emily Maria Borie)",female,48,1,3,PC 17608,262.375,B57 B59 B63 B66,C +917,3,"Robins, Mr. Alexander A",male,50,1,0,A/5. 3337,14.5,,S +918,1,"Ostby, Miss. Helene Ragnhild",female,22,0,1,113509,61.9792,B36,C +919,3,"Daher, Mr. Shedid",male,22.5,0,0,2698,7.225,,C +920,1,"Brady, Mr. John Bertram",male,41,0,0,113054,30.5,A21,S +921,3,"Samaan, Mr. Elias",male,,2,0,2662,21.6792,,C +922,2,"Louch, Mr. Charles Alexander",male,50,1,0,SC/AH 3085,26,,S +923,2,"Jefferys, Mr. Clifford Thomas",male,24,2,0,C.A. 31029,31.5,,S +924,3,"Dean, Mrs. Bertram (Eva Georgetta Light)",female,33,1,2,C.A. 2315,20.575,,S +925,3,"Johnston, Mrs. Andrew G (Elizabeth Lily"" Watson)""",female,,1,2,W./C. 6607,23.45,,S +926,1,"Mock, Mr. Philipp Edmund",male,30,1,0,13236,57.75,C78,C +927,3,"Katavelas, Mr. Vassilios (Catavelas Vassilios"")""",male,18.5,0,0,2682,7.2292,,C +928,3,"Roth, Miss. Sarah A",female,,0,0,342712,8.05,,S +929,3,"Cacic, Miss. Manda",female,21,0,0,315087,8.6625,,S +930,3,"Sap, Mr. Julius",male,25,0,0,345768,9.5,,S +931,3,"Hee, Mr. Ling",male,,0,0,1601,56.4958,,S +932,3,"Karun, Mr. Franz",male,39,0,1,349256,13.4167,,C +933,1,"Franklin, Mr. Thomas Parham",male,,0,0,113778,26.55,D34,S +934,3,"Goldsmith, Mr. Nathan",male,41,0,0,SOTON/O.Q. 3101263,7.85,,S +935,2,"Corbett, Mrs. Walter H (Irene Colvin)",female,30,0,0,237249,13,,S +936,1,"Kimball, Mrs. Edwin Nelson Jr (Gertrude Parsons)",female,45,1,0,11753,52.5542,D19,S +937,3,"Peltomaki, Mr. Nikolai Johannes",male,25,0,0,STON/O 2. 3101291,7.925,,S +938,1,"Chevre, Mr. Paul Romaine",male,45,0,0,PC 17594,29.7,A9,C +939,3,"Shaughnessy, Mr. Patrick",male,,0,0,370374,7.75,,Q +940,1,"Bucknell, Mrs. William Robert (Emma Eliza Ward)",female,60,0,0,11813,76.2917,D15,C +941,3,"Coutts, Mrs. William (Winnie Minnie"" Treanor)""",female,36,0,2,C.A. 37671,15.9,,S +942,1,"Smith, Mr. Lucien Philip",male,24,1,0,13695,60,C31,S +943,2,"Pulbaum, Mr. Franz",male,27,0,0,SC/PARIS 2168,15.0333,,C +944,2,"Hocking, Miss. Ellen Nellie""""",female,20,2,1,29105,23,,S +945,1,"Fortune, Miss. Ethel Flora",female,28,3,2,19950,263,C23 C25 C27,S +946,2,"Mangiavacchi, Mr. Serafino Emilio",male,,0,0,SC/A.3 2861,15.5792,,C +947,3,"Rice, Master. Albert",male,10,4,1,382652,29.125,,Q +948,3,"Cor, Mr. Bartol",male,35,0,0,349230,7.8958,,S +949,3,"Abelseth, Mr. Olaus Jorgensen",male,25,0,0,348122,7.65,F G63,S +950,3,"Davison, Mr. Thomas Henry",male,,1,0,386525,16.1,,S +951,1,"Chaudanson, Miss. Victorine",female,36,0,0,PC 17608,262.375,B61,C +952,3,"Dika, Mr. Mirko",male,17,0,0,349232,7.8958,,S +953,2,"McCrae, Mr. Arthur Gordon",male,32,0,0,237216,13.5,,S +954,3,"Bjorklund, Mr. Ernst Herbert",male,18,0,0,347090,7.75,,S +955,3,"Bradley, Miss. Bridget Delia",female,22,0,0,334914,7.725,,Q +956,1,"Ryerson, Master. John Borie",male,13,2,2,PC 17608,262.375,B57 B59 B63 B66,C +957,2,"Corey, Mrs. Percy C (Mary Phyllis Elizabeth Miller)",female,,0,0,F.C.C. 13534,21,,S +958,3,"Burns, Miss. Mary Delia",female,18,0,0,330963,7.8792,,Q +959,1,"Moore, Mr. Clarence Bloomfield",male,47,0,0,113796,42.4,,S +960,1,"Tucker, Mr. Gilbert Milligan Jr",male,31,0,0,2543,28.5375,C53,C +961,1,"Fortune, Mrs. Mark (Mary McDougald)",female,60,1,4,19950,263,C23 C25 C27,S +962,3,"Mulvihill, Miss. Bertha E",female,24,0,0,382653,7.75,,Q +963,3,"Minkoff, Mr. Lazar",male,21,0,0,349211,7.8958,,S +964,3,"Nieminen, Miss. Manta Josefina",female,29,0,0,3101297,7.925,,S +965,1,"Ovies y Rodriguez, Mr. Servando",male,28.5,0,0,PC 17562,27.7208,D43,C +966,1,"Geiger, Miss. Amalie",female,35,0,0,113503,211.5,C130,C +967,1,"Keeping, Mr. Edwin",male,32.5,0,0,113503,211.5,C132,C +968,3,"Miles, Mr. Frank",male,,0,0,359306,8.05,,S +969,1,"Cornell, Mrs. Robert Clifford (Malvina Helen Lamson)",female,55,2,0,11770,25.7,C101,S +970,2,"Aldworth, Mr. Charles Augustus",male,30,0,0,248744,13,,S +971,3,"Doyle, Miss. Elizabeth",female,24,0,0,368702,7.75,,Q +972,3,"Boulos, Master. Akar",male,6,1,1,2678,15.2458,,C +973,1,"Straus, Mr. Isidor",male,67,1,0,PC 17483,221.7792,C55 C57,S +974,1,"Case, Mr. Howard Brown",male,49,0,0,19924,26,,S +975,3,"Demetri, Mr. Marinko",male,,0,0,349238,7.8958,,S +976,2,"Lamb, Mr. John Joseph",male,,0,0,240261,10.7083,,Q +977,3,"Khalil, Mr. Betros",male,,1,0,2660,14.4542,,C +978,3,"Barry, Miss. Julia",female,27,0,0,330844,7.8792,,Q +979,3,"Badman, Miss. Emily Louisa",female,18,0,0,A/4 31416,8.05,,S +980,3,"O'Donoghue, Ms. Bridget",female,,0,0,364856,7.75,,Q +981,2,"Wells, Master. Ralph Lester",male,2,1,1,29103,23,,S +982,3,"Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judith Andersson)",female,22,1,0,347072,13.9,,S +983,3,"Pedersen, Mr. Olaf",male,,0,0,345498,7.775,,S +984,1,"Davidson, Mrs. Thornton (Orian Hays)",female,27,1,2,F.C. 12750,52,B71,S +985,3,"Guest, Mr. Robert",male,,0,0,376563,8.05,,S +986,1,"Birnbaum, Mr. Jakob",male,25,0,0,13905,26,,C +987,3,"Tenglin, Mr. Gunnar Isidor",male,25,0,0,350033,7.7958,,S +988,1,"Cavendish, Mrs. Tyrell William (Julia Florence Siegel)",female,76,1,0,19877,78.85,C46,S +989,3,"Makinen, Mr. Kalle Edvard",male,29,0,0,STON/O 2. 3101268,7.925,,S +990,3,"Braf, Miss. Elin Ester Maria",female,20,0,0,347471,7.8542,,S +991,3,"Nancarrow, Mr. William Henry",male,33,0,0,A./5. 3338,8.05,,S +992,1,"Stengel, Mrs. Charles Emil Henry (Annie May Morris)",female,43,1,0,11778,55.4417,C116,C +993,2,"Weisz, Mr. Leopold",male,27,1,0,228414,26,,S +994,3,"Foley, Mr. William",male,,0,0,365235,7.75,,Q +995,3,"Johansson Palmquist, Mr. Oskar Leander",male,26,0,0,347070,7.775,,S +996,3,"Thomas, Mrs. Alexander (Thamine Thelma"")""",female,16,1,1,2625,8.5167,,C +997,3,"Holthen, Mr. Johan Martin",male,28,0,0,C 4001,22.525,,S +998,3,"Buckley, Mr. Daniel",male,21,0,0,330920,7.8208,,Q +999,3,"Ryan, Mr. Edward",male,,0,0,383162,7.75,,Q +1000,3,"Willer, Mr. Aaron (Abi Weller"")""",male,,0,0,3410,8.7125,,S +1001,2,"Swane, Mr. George",male,18.5,0,0,248734,13,F,S +1002,2,"Stanton, Mr. Samuel Ward",male,41,0,0,237734,15.0458,,C +1003,3,"Shine, Miss. Ellen Natalia",female,,0,0,330968,7.7792,,Q +1004,1,"Evans, Miss. Edith Corse",female,36,0,0,PC 17531,31.6792,A29,C +1005,3,"Buckley, Miss. Katherine",female,18.5,0,0,329944,7.2833,,Q +1006,1,"Straus, Mrs. Isidor (Rosalie Ida Blun)",female,63,1,0,PC 17483,221.7792,C55 C57,S +1007,3,"Chronopoulos, Mr. Demetrios",male,18,1,0,2680,14.4542,,C +1008,3,"Thomas, Mr. John",male,,0,0,2681,6.4375,,C +1009,3,"Sandstrom, Miss. Beatrice Irene",female,1,1,1,PP 9549,16.7,G6,S +1010,1,"Beattie, Mr. Thomson",male,36,0,0,13050,75.2417,C6,C +1011,2,"Chapman, Mrs. John Henry (Sara Elizabeth Lawry)",female,29,1,0,SC/AH 29037,26,,S +1012,2,"Watt, Miss. Bertha J",female,12,0,0,C.A. 33595,15.75,,S +1013,3,"Kiernan, Mr. John",male,,1,0,367227,7.75,,Q +1014,1,"Schabert, Mrs. Paul (Emma Mock)",female,35,1,0,13236,57.75,C28,C +1015,3,"Carver, Mr. Alfred John",male,28,0,0,392095,7.25,,S +1016,3,"Kennedy, Mr. John",male,,0,0,368783,7.75,,Q +1017,3,"Cribb, Miss. Laura Alice",female,17,0,1,371362,16.1,,S +1018,3,"Brobeck, Mr. Karl Rudolf",male,22,0,0,350045,7.7958,,S +1019,3,"McCoy, Miss. Alicia",female,,2,0,367226,23.25,,Q +1020,2,"Bowenur, Mr. Solomon",male,42,0,0,211535,13,,S +1021,3,"Petersen, Mr. Marius",male,24,0,0,342441,8.05,,S +1022,3,"Spinner, Mr. Henry John",male,32,0,0,STON/OQ. 369943,8.05,,S +1023,1,"Gracie, Col. Archibald IV",male,53,0,0,113780,28.5,C51,C +1024,3,"Lefebre, Mrs. Frank (Frances)",female,,0,4,4133,25.4667,,S +1025,3,"Thomas, Mr. Charles P",male,,1,0,2621,6.4375,,C +1026,3,"Dintcheff, Mr. Valtcho",male,43,0,0,349226,7.8958,,S +1027,3,"Carlsson, Mr. Carl Robert",male,24,0,0,350409,7.8542,,S +1028,3,"Zakarian, Mr. Mapriededer",male,26.5,0,0,2656,7.225,,C +1029,2,"Schmidt, Mr. August",male,26,0,0,248659,13,,S +1030,3,"Drapkin, Miss. Jennie",female,23,0,0,SOTON/OQ 392083,8.05,,S +1031,3,"Goodwin, Mr. Charles Frederick",male,40,1,6,CA 2144,46.9,,S +1032,3,"Goodwin, Miss. Jessie Allis",female,10,5,2,CA 2144,46.9,,S +1033,1,"Daniels, Miss. Sarah",female,33,0,0,113781,151.55,,S +1034,1,"Ryerson, Mr. Arthur Larned",male,61,1,3,PC 17608,262.375,B57 B59 B63 B66,C +1035,2,"Beauchamp, Mr. Henry James",male,28,0,0,244358,26,,S +1036,1,"Lindeberg-Lind, Mr. Erik Gustaf (Mr Edward Lingrey"")""",male,42,0,0,17475,26.55,,S +1037,3,"Vander Planke, Mr. Julius",male,31,3,0,345763,18,,S +1038,1,"Hilliard, Mr. Herbert Henry",male,,0,0,17463,51.8625,E46,S +1039,3,"Davies, Mr. Evan",male,22,0,0,SC/A4 23568,8.05,,S +1040,1,"Crafton, Mr. John Bertram",male,,0,0,113791,26.55,,S +1041,2,"Lahtinen, Rev. William",male,30,1,1,250651,26,,S +1042,1,"Earnshaw, Mrs. Boulton (Olive Potter)",female,23,0,1,11767,83.1583,C54,C +1043,3,"Matinoff, Mr. Nicola",male,,0,0,349255,7.8958,,C +1044,3,"Storey, Mr. Thomas",male,60.5,0,0,3701,,,S +1045,3,"Klasen, Mrs. (Hulda Kristina Eugenia Lofqvist)",female,36,0,2,350405,12.1833,,S +1046,3,"Asplund, Master. Filip Oscar",male,13,4,2,347077,31.3875,,S +1047,3,"Duquemin, Mr. Joseph",male,24,0,0,S.O./P.P. 752,7.55,,S +1048,1,"Bird, Miss. Ellen",female,29,0,0,PC 17483,221.7792,C97,S +1049,3,"Lundin, Miss. Olga Elida",female,23,0,0,347469,7.8542,,S +1050,1,"Borebank, Mr. John James",male,42,0,0,110489,26.55,D22,S +1051,3,"Peacock, Mrs. Benjamin (Edith Nile)",female,26,0,2,SOTON/O.Q. 3101315,13.775,,S +1052,3,"Smyth, Miss. Julia",female,,0,0,335432,7.7333,,Q +1053,3,"Touma, Master. Georges Youssef",male,7,1,1,2650,15.2458,,C +1054,2,"Wright, Miss. Marion",female,26,0,0,220844,13.5,,S +1055,3,"Pearce, Mr. Ernest",male,,0,0,343271,7,,S +1056,2,"Peruschitz, Rev. Joseph Maria",male,41,0,0,237393,13,,S +1057,3,"Kink-Heilmann, Mrs. Anton (Luise Heilmann)",female,26,1,1,315153,22.025,,S +1058,1,"Brandeis, Mr. Emil",male,48,0,0,PC 17591,50.4958,B10,C +1059,3,"Ford, Mr. Edward Watson",male,18,2,2,W./C. 6608,34.375,,S +1060,1,"Cassebeer, Mrs. Henry Arthur Jr (Eleanor Genevieve Fosdick)",female,,0,0,17770,27.7208,,C +1061,3,"Hellstrom, Miss. Hilda Maria",female,22,0,0,7548,8.9625,,S +1062,3,"Lithman, Mr. Simon",male,,0,0,S.O./P.P. 251,7.55,,S +1063,3,"Zakarian, Mr. Ortin",male,27,0,0,2670,7.225,,C +1064,3,"Dyker, Mr. Adolf Fredrik",male,23,1,0,347072,13.9,,S +1065,3,"Torfa, Mr. Assad",male,,0,0,2673,7.2292,,C +1066,3,"Asplund, Mr. Carl Oscar Vilhelm Gustafsson",male,40,1,5,347077,31.3875,,S +1067,2,"Brown, Miss. Edith Eileen",female,15,0,2,29750,39,,S +1068,2,"Sincock, Miss. Maude",female,20,0,0,C.A. 33112,36.75,,S +1069,1,"Stengel, Mr. Charles Emil Henry",male,54,1,0,11778,55.4417,C116,C +1070,2,"Becker, Mrs. Allen Oliver (Nellie E Baumgardner)",female,36,0,3,230136,39,F4,S +1071,1,"Compton, Mrs. Alexander Taylor (Mary Eliza Ingersoll)",female,64,0,2,PC 17756,83.1583,E45,C +1072,2,"McCrie, Mr. James Matthew",male,30,0,0,233478,13,,S +1073,1,"Compton, Mr. Alexander Taylor Jr",male,37,1,1,PC 17756,83.1583,E52,C +1074,1,"Marvin, Mrs. Daniel Warner (Mary Graham Carmichael Farquarson)",female,18,1,0,113773,53.1,D30,S +1075,3,"Lane, Mr. Patrick",male,,0,0,7935,7.75,,Q +1076,1,"Douglas, Mrs. Frederick Charles (Mary Helene Baxter)",female,27,1,1,PC 17558,247.5208,B58 B60,C +1077,2,"Maybery, Mr. Frank Hubert",male,40,0,0,239059,16,,S +1078,2,"Phillips, Miss. Alice Frances Louisa",female,21,0,1,S.O./P.P. 2,21,,S +1079,3,"Davies, Mr. Joseph",male,17,2,0,A/4 48873,8.05,,S +1080,3,"Sage, Miss. Ada",female,,8,2,CA. 2343,69.55,,S +1081,2,"Veal, Mr. James",male,40,0,0,28221,13,,S +1082,2,"Angle, Mr. William A",male,34,1,0,226875,26,,S +1083,1,"Salomon, Mr. Abraham L",male,,0,0,111163,26,,S +1084,3,"van Billiard, Master. Walter John",male,11.5,1,1,A/5. 851,14.5,,S +1085,2,"Lingane, Mr. John",male,61,0,0,235509,12.35,,Q +1086,2,"Drew, Master. Marshall Brines",male,8,0,2,28220,32.5,,S +1087,3,"Karlsson, Mr. Julius Konrad Eugen",male,33,0,0,347465,7.8542,,S +1088,1,"Spedden, Master. Robert Douglas",male,6,0,2,16966,134.5,E34,C +1089,3,"Nilsson, Miss. Berta Olivia",female,18,0,0,347066,7.775,,S +1090,2,"Baimbrigge, Mr. Charles Robert",male,23,0,0,C.A. 31030,10.5,,S +1091,3,"Rasmussen, Mrs. (Lena Jacobsen Solvang)",female,,0,0,65305,8.1125,,S +1092,3,"Murphy, Miss. Nora",female,,0,0,36568,15.5,,Q +1093,3,"Danbom, Master. Gilbert Sigvard Emanuel",male,0.33,0,2,347080,14.4,,S +1094,1,"Astor, Col. John Jacob",male,47,1,0,PC 17757,227.525,C62 C64,C +1095,2,"Quick, Miss. Winifred Vera",female,8,1,1,26360,26,,S +1096,2,"Andrew, Mr. Frank Thomas",male,25,0,0,C.A. 34050,10.5,,S +1097,1,"Omont, Mr. Alfred Fernand",male,,0,0,F.C. 12998,25.7417,,C +1098,3,"McGowan, Miss. Katherine",female,35,0,0,9232,7.75,,Q +1099,2,"Collett, Mr. Sidney C Stuart",male,24,0,0,28034,10.5,,S +1100,1,"Rosenbaum, Miss. Edith Louise",female,33,0,0,PC 17613,27.7208,A11,C +1101,3,"Delalic, Mr. Redjo",male,25,0,0,349250,7.8958,,S +1102,3,"Andersen, Mr. Albert Karvin",male,32,0,0,C 4001,22.525,,S +1103,3,"Finoli, Mr. Luigi",male,,0,0,SOTON/O.Q. 3101308,7.05,,S +1104,2,"Deacon, Mr. Percy William",male,17,0,0,S.O.C. 14879,73.5,,S +1105,2,"Howard, Mrs. Benjamin (Ellen Truelove Arman)",female,60,1,0,24065,26,,S +1106,3,"Andersson, Miss. Ida Augusta Margareta",female,38,4,2,347091,7.775,,S +1107,1,"Head, Mr. Christopher",male,42,0,0,113038,42.5,B11,S +1108,3,"Mahon, Miss. Bridget Delia",female,,0,0,330924,7.8792,,Q +1109,1,"Wick, Mr. George Dennick",male,57,1,1,36928,164.8667,,S +1110,1,"Widener, Mrs. George Dunton (Eleanor Elkins)",female,50,1,1,113503,211.5,C80,C +1111,3,"Thomson, Mr. Alexander Morrison",male,,0,0,32302,8.05,,S +1112,2,"Duran y More, Miss. Florentina",female,30,1,0,SC/PARIS 2148,13.8583,,C +1113,3,"Reynolds, Mr. Harold J",male,21,0,0,342684,8.05,,S +1114,2,"Cook, Mrs. (Selena Rogers)",female,22,0,0,W./C. 14266,10.5,F33,S +1115,3,"Karlsson, Mr. Einar Gervasius",male,21,0,0,350053,7.7958,,S +1116,1,"Candee, Mrs. Edward (Helen Churchill Hungerford)",female,53,0,0,PC 17606,27.4458,,C +1117,3,"Moubarek, Mrs. George (Omine Amenia"" Alexander)""",female,,0,2,2661,15.2458,,C +1118,3,"Asplund, Mr. Johan Charles",male,23,0,0,350054,7.7958,,S +1119,3,"McNeill, Miss. Bridget",female,,0,0,370368,7.75,,Q +1120,3,"Everett, Mr. Thomas James",male,40.5,0,0,C.A. 6212,15.1,,S +1121,2,"Hocking, Mr. Samuel James Metcalfe",male,36,0,0,242963,13,,S +1122,2,"Sweet, Mr. George Frederick",male,14,0,0,220845,65,,S +1123,1,"Willard, Miss. Constance",female,21,0,0,113795,26.55,,S +1124,3,"Wiklund, Mr. Karl Johan",male,21,1,0,3101266,6.4958,,S +1125,3,"Linehan, Mr. Michael",male,,0,0,330971,7.8792,,Q +1126,1,"Cumings, Mr. John Bradley",male,39,1,0,PC 17599,71.2833,C85,C +1127,3,"Vendel, Mr. Olof Edvin",male,20,0,0,350416,7.8542,,S +1128,1,"Warren, Mr. Frank Manley",male,64,1,0,110813,75.25,D37,C +1129,3,"Baccos, Mr. Raffull",male,20,0,0,2679,7.225,,C +1130,2,"Hiltunen, Miss. Marta",female,18,1,1,250650,13,,S +1131,1,"Douglas, Mrs. Walter Donald (Mahala Dutton)",female,48,1,0,PC 17761,106.425,C86,C +1132,1,"Lindstrom, Mrs. Carl Johan (Sigrid Posse)",female,55,0,0,112377,27.7208,,C +1133,2,"Christy, Mrs. (Alice Frances)",female,45,0,2,237789,30,,S +1134,1,"Spedden, Mr. Frederic Oakley",male,45,1,1,16966,134.5,E34,C +1135,3,"Hyman, Mr. Abraham",male,,0,0,3470,7.8875,,S +1136,3,"Johnston, Master. William Arthur Willie""""",male,,1,2,W./C. 6607,23.45,,S +1137,1,"Kenyon, Mr. Frederick R",male,41,1,0,17464,51.8625,D21,S +1138,2,"Karnes, Mrs. J Frank (Claire Bennett)",female,22,0,0,F.C.C. 13534,21,,S +1139,2,"Drew, Mr. James Vivian",male,42,1,1,28220,32.5,,S +1140,2,"Hold, Mrs. Stephen (Annie Margaret Hill)",female,29,1,0,26707,26,,S +1141,3,"Khalil, Mrs. Betros (Zahie Maria"" Elias)""",female,,1,0,2660,14.4542,,C +1142,2,"West, Miss. Barbara J",female,0.92,1,2,C.A. 34651,27.75,,S +1143,3,"Abrahamsson, Mr. Abraham August Johannes",male,20,0,0,SOTON/O2 3101284,7.925,,S +1144,1,"Clark, Mr. Walter Miller",male,27,1,0,13508,136.7792,C89,C +1145,3,"Salander, Mr. Karl Johan",male,24,0,0,7266,9.325,,S +1146,3,"Wenzel, Mr. Linhart",male,32.5,0,0,345775,9.5,,S +1147,3,"MacKay, Mr. George William",male,,0,0,C.A. 42795,7.55,,S +1148,3,"Mahon, Mr. John",male,,0,0,AQ/4 3130,7.75,,Q +1149,3,"Niklasson, Mr. Samuel",male,28,0,0,363611,8.05,,S +1150,2,"Bentham, Miss. Lilian W",female,19,0,0,28404,13,,S +1151,3,"Midtsjo, Mr. Karl Albert",male,21,0,0,345501,7.775,,S +1152,3,"de Messemaeker, Mr. Guillaume Joseph",male,36.5,1,0,345572,17.4,,S +1153,3,"Nilsson, Mr. August Ferdinand",male,21,0,0,350410,7.8542,,S +1154,2,"Wells, Mrs. Arthur Henry (Addie"" Dart Trevaskis)""",female,29,0,2,29103,23,,S +1155,3,"Klasen, Miss. Gertrud Emilia",female,1,1,1,350405,12.1833,,S +1156,2,"Portaluppi, Mr. Emilio Ilario Giuseppe",male,30,0,0,C.A. 34644,12.7375,,C +1157,3,"Lyntakoff, Mr. Stanko",male,,0,0,349235,7.8958,,S +1158,1,"Chisholm, Mr. Roderick Robert Crispin",male,,0,0,112051,0,,S +1159,3,"Warren, Mr. Charles William",male,,0,0,C.A. 49867,7.55,,S +1160,3,"Howard, Miss. May Elizabeth",female,,0,0,A. 2. 39186,8.05,,S +1161,3,"Pokrnic, Mr. Mate",male,17,0,0,315095,8.6625,,S +1162,1,"McCaffry, Mr. Thomas Francis",male,46,0,0,13050,75.2417,C6,C +1163,3,"Fox, Mr. Patrick",male,,0,0,368573,7.75,,Q +1164,1,"Clark, Mrs. Walter Miller (Virginia McDowell)",female,26,1,0,13508,136.7792,C89,C +1165,3,"Lennon, Miss. Mary",female,,1,0,370371,15.5,,Q +1166,3,"Saade, Mr. Jean Nassr",male,,0,0,2676,7.225,,C +1167,2,"Bryhl, Miss. Dagmar Jenny Ingeborg ",female,20,1,0,236853,26,,S +1168,2,"Parker, Mr. Clifford Richard",male,28,0,0,SC 14888,10.5,,S +1169,2,"Faunthorpe, Mr. Harry",male,40,1,0,2926,26,,S +1170,2,"Ware, Mr. John James",male,30,1,0,CA 31352,21,,S +1171,2,"Oxenham, Mr. Percy Thomas",male,22,0,0,W./C. 14260,10.5,,S +1172,3,"Oreskovic, Miss. Jelka",female,23,0,0,315085,8.6625,,S +1173,3,"Peacock, Master. Alfred Edward",male,0.75,1,1,SOTON/O.Q. 3101315,13.775,,S +1174,3,"Fleming, Miss. Honora",female,,0,0,364859,7.75,,Q +1175,3,"Touma, Miss. Maria Youssef",female,9,1,1,2650,15.2458,,C +1176,3,"Rosblom, Miss. Salli Helena",female,2,1,1,370129,20.2125,,S +1177,3,"Dennis, Mr. William",male,36,0,0,A/5 21175,7.25,,S +1178,3,"Franklin, Mr. Charles (Charles Fardon)",male,,0,0,SOTON/O.Q. 3101314,7.25,,S +1179,1,"Snyder, Mr. John Pillsbury",male,24,1,0,21228,82.2667,B45,S +1180,3,"Mardirosian, Mr. Sarkis",male,,0,0,2655,7.2292,F E46,C +1181,3,"Ford, Mr. Arthur",male,,0,0,A/5 1478,8.05,,S +1182,1,"Rheims, Mr. George Alexander Lucien",male,,0,0,PC 17607,39.6,,S +1183,3,"Daly, Miss. Margaret Marcella Maggie""""",female,30,0,0,382650,6.95,,Q +1184,3,"Nasr, Mr. Mustafa",male,,0,0,2652,7.2292,,C +1185,1,"Dodge, Dr. Washington",male,53,1,1,33638,81.8583,A34,S +1186,3,"Wittevrongel, Mr. Camille",male,36,0,0,345771,9.5,,S +1187,3,"Angheloff, Mr. Minko",male,26,0,0,349202,7.8958,,S +1188,2,"Laroche, Miss. Louise",female,1,1,2,SC/Paris 2123,41.5792,,C +1189,3,"Samaan, Mr. Hanna",male,,2,0,2662,21.6792,,C +1190,1,"Loring, Mr. Joseph Holland",male,30,0,0,113801,45.5,,S +1191,3,"Johansson, Mr. Nils",male,29,0,0,347467,7.8542,,S +1192,3,"Olsson, Mr. Oscar Wilhelm",male,32,0,0,347079,7.775,,S +1193,2,"Malachard, Mr. Noel",male,,0,0,237735,15.0458,D,C +1194,2,"Phillips, Mr. Escott Robert",male,43,0,1,S.O./P.P. 2,21,,S +1195,3,"Pokrnic, Mr. Tome",male,24,0,0,315092,8.6625,,S +1196,3,"McCarthy, Miss. Catherine Katie""""",female,,0,0,383123,7.75,,Q +1197,1,"Crosby, Mrs. Edward Gifford (Catherine Elizabeth Halstead)",female,64,1,1,112901,26.55,B26,S +1198,1,"Allison, Mr. Hudson Joshua Creighton",male,30,1,2,113781,151.55,C22 C26,S +1199,3,"Aks, Master. Philip Frank",male,0.83,0,1,392091,9.35,,S +1200,1,"Hays, Mr. Charles Melville",male,55,1,1,12749,93.5,B69,S +1201,3,"Hansen, Mrs. Claus Peter (Jennie L Howard)",female,45,1,0,350026,14.1083,,S +1202,3,"Cacic, Mr. Jego Grga",male,18,0,0,315091,8.6625,,S +1203,3,"Vartanian, Mr. David",male,22,0,0,2658,7.225,,C +1204,3,"Sadowitz, Mr. Harry",male,,0,0,LP 1588,7.575,,S +1205,3,"Carr, Miss. Jeannie",female,37,0,0,368364,7.75,,Q +1206,1,"White, Mrs. John Stuart (Ella Holmes)",female,55,0,0,PC 17760,135.6333,C32,C +1207,3,"Hagardon, Miss. Kate",female,17,0,0,AQ/3. 30631,7.7333,,Q +1208,1,"Spencer, Mr. William Augustus",male,57,1,0,PC 17569,146.5208,B78,C +1209,2,"Rogers, Mr. Reginald Harry",male,19,0,0,28004,10.5,,S +1210,3,"Jonsson, Mr. Nils Hilding",male,27,0,0,350408,7.8542,,S +1211,2,"Jefferys, Mr. Ernest Wilfred",male,22,2,0,C.A. 31029,31.5,,S +1212,3,"Andersson, Mr. Johan Samuel",male,26,0,0,347075,7.775,,S +1213,3,"Krekorian, Mr. Neshan",male,25,0,0,2654,7.2292,F E57,C +1214,2,"Nesson, Mr. Israel",male,26,0,0,244368,13,F2,S +1215,1,"Rowe, Mr. Alfred G",male,33,0,0,113790,26.55,,S +1216,1,"Kreuchen, Miss. Emilie",female,39,0,0,24160,211.3375,,S +1217,3,"Assam, Mr. Ali",male,23,0,0,SOTON/O.Q. 3101309,7.05,,S +1218,2,"Becker, Miss. Ruth Elizabeth",female,12,2,1,230136,39,F4,S +1219,1,"Rosenshine, Mr. George (Mr George Thorne"")""",male,46,0,0,PC 17585,79.2,,C +1220,2,"Clarke, Mr. Charles Valentine",male,29,1,0,2003,26,,S +1221,2,"Enander, Mr. Ingvar",male,21,0,0,236854,13,,S +1222,2,"Davies, Mrs. John Morgan (Elizabeth Agnes Mary White) ",female,48,0,2,C.A. 33112,36.75,,S +1223,1,"Dulles, Mr. William Crothers",male,39,0,0,PC 17580,29.7,A18,C +1224,3,"Thomas, Mr. Tannous",male,,0,0,2684,7.225,,C +1225,3,"Nakid, Mrs. Said (Waika Mary"" Mowad)""",female,19,1,1,2653,15.7417,,C +1226,3,"Cor, Mr. Ivan",male,27,0,0,349229,7.8958,,S +1227,1,"Maguire, Mr. John Edward",male,30,0,0,110469,26,C106,S +1228,2,"de Brito, Mr. Jose Joaquim",male,32,0,0,244360,13,,S +1229,3,"Elias, Mr. Joseph",male,39,0,2,2675,7.2292,,C +1230,2,"Denbury, Mr. Herbert",male,25,0,0,C.A. 31029,31.5,,S +1231,3,"Betros, Master. Seman",male,,0,0,2622,7.2292,,C +1232,2,"Fillbrook, Mr. Joseph Charles",male,18,0,0,C.A. 15185,10.5,,S +1233,3,"Lundstrom, Mr. Thure Edvin",male,32,0,0,350403,7.5792,,S +1234,3,"Sage, Mr. John George",male,,1,9,CA. 2343,69.55,,S +1235,1,"Cardeza, Mrs. James Warburton Martinez (Charlotte Wardle Drake)",female,58,0,1,PC 17755,512.3292,B51 B53 B55,C +1236,3,"van Billiard, Master. James William",male,,1,1,A/5. 851,14.5,,S +1237,3,"Abelseth, Miss. Karen Marie",female,16,0,0,348125,7.65,,S +1238,2,"Botsford, Mr. William Hull",male,26,0,0,237670,13,,S +1239,3,"Whabee, Mrs. George Joseph (Shawneene Abi-Saab)",female,38,0,0,2688,7.2292,,C +1240,2,"Giles, Mr. Ralph",male,24,0,0,248726,13.5,,S +1241,2,"Walcroft, Miss. Nellie",female,31,0,0,F.C.C. 13528,21,,S +1242,1,"Greenfield, Mrs. Leo David (Blanche Strouse)",female,45,0,1,PC 17759,63.3583,D10 D12,C +1243,2,"Stokes, Mr. Philip Joseph",male,25,0,0,F.C.C. 13540,10.5,,S +1244,2,"Dibden, Mr. William",male,18,0,0,S.O.C. 14879,73.5,,S +1245,2,"Herman, Mr. Samuel",male,49,1,2,220845,65,,S +1246,3,"Dean, Miss. Elizabeth Gladys Millvina""""",female,0.17,1,2,C.A. 2315,20.575,,S +1247,1,"Julian, Mr. Henry Forbes",male,50,0,0,113044,26,E60,S +1248,1,"Brown, Mrs. John Murray (Caroline Lane Lamson)",female,59,2,0,11769,51.4792,C101,S +1249,3,"Lockyer, Mr. Edward",male,,0,0,1222,7.8792,,S +1250,3,"O'Keefe, Mr. Patrick",male,,0,0,368402,7.75,,Q +1251,3,"Lindell, Mrs. Edvard Bengtsson (Elin Gerda Persson)",female,30,1,0,349910,15.55,,S +1252,3,"Sage, Master. William Henry",male,14.5,8,2,CA. 2343,69.55,,S +1253,2,"Mallet, Mrs. Albert (Antoinette Magnin)",female,24,1,1,S.C./PARIS 2079,37.0042,,C +1254,2,"Ware, Mrs. John James (Florence Louise Long)",female,31,0,0,CA 31352,21,,S +1255,3,"Strilic, Mr. Ivan",male,27,0,0,315083,8.6625,,S +1256,1,"Harder, Mrs. George Achilles (Dorothy Annan)",female,25,1,0,11765,55.4417,E50,C +1257,3,"Sage, Mrs. John (Annie Bullen)",female,,1,9,CA. 2343,69.55,,S +1258,3,"Caram, Mr. Joseph",male,,1,0,2689,14.4583,,C +1259,3,"Riihivouri, Miss. Susanna Juhantytar Sanni""""",female,22,0,0,3101295,39.6875,,S +1260,1,"Gibson, Mrs. Leonard (Pauline C Boeson)",female,45,0,1,112378,59.4,,C +1261,2,"Pallas y Castello, Mr. Emilio",male,29,0,0,SC/PARIS 2147,13.8583,,C +1262,2,"Giles, Mr. Edgar",male,21,1,0,28133,11.5,,S +1263,1,"Wilson, Miss. Helen Alice",female,31,0,0,16966,134.5,E39 E41,C +1264,1,"Ismay, Mr. Joseph Bruce",male,49,0,0,112058,0,B52 B54 B56,S +1265,2,"Harbeck, Mr. William H",male,44,0,0,248746,13,,S +1266,1,"Dodge, Mrs. Washington (Ruth Vidaver)",female,54,1,1,33638,81.8583,A34,S +1267,1,"Bowen, Miss. Grace Scott",female,45,0,0,PC 17608,262.375,,C +1268,3,"Kink, Miss. Maria",female,22,2,0,315152,8.6625,,S +1269,2,"Cotterill, Mr. Henry Harry""""",male,21,0,0,29107,11.5,,S +1270,1,"Hipkins, Mr. William Edward",male,55,0,0,680,50,C39,S +1271,3,"Asplund, Master. Carl Edgar",male,5,4,2,347077,31.3875,,S +1272,3,"O'Connor, Mr. Patrick",male,,0,0,366713,7.75,,Q +1273,3,"Foley, Mr. Joseph",male,26,0,0,330910,7.8792,,Q +1274,3,"Risien, Mrs. Samuel (Emma)",female,,0,0,364498,14.5,,S +1275,3,"McNamee, Mrs. Neal (Eileen O'Leary)",female,19,1,0,376566,16.1,,S +1276,2,"Wheeler, Mr. Edwin Frederick""""",male,,0,0,SC/PARIS 2159,12.875,,S +1277,2,"Herman, Miss. Kate",female,24,1,2,220845,65,,S +1278,3,"Aronsson, Mr. Ernst Axel Algot",male,24,0,0,349911,7.775,,S +1279,2,"Ashby, Mr. John",male,57,0,0,244346,13,,S +1280,3,"Canavan, Mr. Patrick",male,21,0,0,364858,7.75,,Q +1281,3,"Palsson, Master. Paul Folke",male,6,3,1,349909,21.075,,S +1282,1,"Payne, Mr. Vivian Ponsonby",male,23,0,0,12749,93.5,B24,S +1283,1,"Lines, Mrs. Ernest H (Elizabeth Lindsey James)",female,51,0,1,PC 17592,39.4,D28,S +1284,3,"Abbott, Master. Eugene Joseph",male,13,0,2,C.A. 2673,20.25,,S +1285,2,"Gilbert, Mr. William",male,47,0,0,C.A. 30769,10.5,,S +1286,3,"Kink-Heilmann, Mr. Anton",male,29,3,1,315153,22.025,,S +1287,1,"Smith, Mrs. Lucien Philip (Mary Eloise Hughes)",female,18,1,0,13695,60,C31,S +1288,3,"Colbert, Mr. Patrick",male,24,0,0,371109,7.25,,Q +1289,1,"Frolicher-Stehli, Mrs. Maxmillian (Margaretha Emerentia Stehli)",female,48,1,1,13567,79.2,B41,C +1290,3,"Larsson-Rondberg, Mr. Edvard A",male,22,0,0,347065,7.775,,S +1291,3,"Conlon, Mr. Thomas Henry",male,31,0,0,21332,7.7333,,Q +1292,1,"Bonnell, Miss. Caroline",female,30,0,0,36928,164.8667,C7,S +1293,2,"Gale, Mr. Harry",male,38,1,0,28664,21,,S +1294,1,"Gibson, Miss. Dorothy Winifred",female,22,0,1,112378,59.4,,C +1295,1,"Carrau, Mr. Jose Pedro",male,17,0,0,113059,47.1,,S +1296,1,"Frauenthal, Mr. Isaac Gerald",male,43,1,0,17765,27.7208,D40,C +1297,2,"Nourney, Mr. Alfred (Baron von Drachstedt"")""",male,20,0,0,SC/PARIS 2166,13.8625,D38,C +1298,2,"Ware, Mr. William Jeffery",male,23,1,0,28666,10.5,,S +1299,1,"Widener, Mr. George Dunton",male,50,1,1,113503,211.5,C80,C +1300,3,"Riordan, Miss. Johanna Hannah""""",female,,0,0,334915,7.7208,,Q +1301,3,"Peacock, Miss. Treasteall",female,3,1,1,SOTON/O.Q. 3101315,13.775,,S +1302,3,"Naughton, Miss. Hannah",female,,0,0,365237,7.75,,Q +1303,1,"Minahan, Mrs. William Edward (Lillian E Thorpe)",female,37,1,0,19928,90,C78,Q +1304,3,"Henriksson, Miss. Jenny Lovisa",female,28,0,0,347086,7.775,,S +1305,3,"Spector, Mr. Woolf",male,,0,0,A.5. 3236,8.05,,S +1306,1,"Oliva y Ocana, Dona. Fermina",female,39,0,0,PC 17758,108.9,C105,C +1307,3,"Saether, Mr. Simon Sivertsen",male,38.5,0,0,SOTON/O.Q. 3101262,7.25,,S +1308,3,"Ware, Mr. Frederick",male,,0,0,359309,8.05,,S +1309,3,"Peter, Master. Michael J",male,,1,1,2668,22.3583,,C diff --git a/data/lab-01/Titanic-Dataset.csv b/data/lab-01/train.csv similarity index 100% rename from data/lab-01/Titanic-Dataset.csv rename to data/lab-01/train.csv From 4472e4ab4d96e6967317080f7cd61809ea226ceb Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 17:25:47 +0200 Subject: [PATCH 05/33] Add image file types-of-data-1024x555-1.png to the repository. Finished Introduction section --- data/lab-01/Titanic-Dataset.csv | 892 +++++++++++++++++++++++++++++++ img/types-of-data-1024x555-1.png | Bin 0 -> 12182 bytes lab-01.ipynb | 147 ++++- 3 files changed, 1038 insertions(+), 1 deletion(-) create mode 100644 data/lab-01/Titanic-Dataset.csv create mode 100644 img/types-of-data-1024x555-1.png diff --git a/data/lab-01/Titanic-Dataset.csv b/data/lab-01/Titanic-Dataset.csv new file mode 100644 index 0000000..5cc466e --- /dev/null +++ b/data/lab-01/Titanic-Dataset.csv @@ -0,0 +1,892 @@ +PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked +1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S +2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C +3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S +4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S +5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S +6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q +7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S +8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S +9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S +10,1,2,"Nasser, Mrs. Nicholas (Adele Achem)",female,14,1,0,237736,30.0708,,C +11,1,3,"Sandstrom, Miss. Marguerite Rut",female,4,1,1,PP 9549,16.7,G6,S +12,1,1,"Bonnell, Miss. Elizabeth",female,58,0,0,113783,26.55,C103,S +13,0,3,"Saundercock, Mr. William Henry",male,20,0,0,A/5. 2151,8.05,,S +14,0,3,"Andersson, Mr. Anders Johan",male,39,1,5,347082,31.275,,S +15,0,3,"Vestrom, Miss. Hulda Amanda Adolfina",female,14,0,0,350406,7.8542,,S +16,1,2,"Hewlett, Mrs. (Mary D Kingcome) ",female,55,0,0,248706,16,,S +17,0,3,"Rice, Master. Eugene",male,2,4,1,382652,29.125,,Q +18,1,2,"Williams, Mr. Charles Eugene",male,,0,0,244373,13,,S +19,0,3,"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",female,31,1,0,345763,18,,S +20,1,3,"Masselmani, Mrs. Fatima",female,,0,0,2649,7.225,,C +21,0,2,"Fynney, Mr. Joseph J",male,35,0,0,239865,26,,S +22,1,2,"Beesley, Mr. Lawrence",male,34,0,0,248698,13,D56,S +23,1,3,"McGowan, Miss. Anna ""Annie""",female,15,0,0,330923,8.0292,,Q +24,1,1,"Sloper, Mr. William Thompson",male,28,0,0,113788,35.5,A6,S +25,0,3,"Palsson, Miss. Torborg Danira",female,8,3,1,349909,21.075,,S +26,1,3,"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",female,38,1,5,347077,31.3875,,S +27,0,3,"Emir, Mr. Farred Chehab",male,,0,0,2631,7.225,,C +28,0,1,"Fortune, Mr. Charles Alexander",male,19,3,2,19950,263,C23 C25 C27,S +29,1,3,"O'Dwyer, Miss. Ellen ""Nellie""",female,,0,0,330959,7.8792,,Q +30,0,3,"Todoroff, Mr. Lalio",male,,0,0,349216,7.8958,,S +31,0,1,"Uruchurtu, Don. Manuel E",male,40,0,0,PC 17601,27.7208,,C +32,1,1,"Spencer, Mrs. William Augustus (Marie Eugenie)",female,,1,0,PC 17569,146.5208,B78,C +33,1,3,"Glynn, Miss. Mary Agatha",female,,0,0,335677,7.75,,Q +34,0,2,"Wheadon, Mr. Edward H",male,66,0,0,C.A. 24579,10.5,,S +35,0,1,"Meyer, Mr. Edgar Joseph",male,28,1,0,PC 17604,82.1708,,C +36,0,1,"Holverson, Mr. Alexander Oskar",male,42,1,0,113789,52,,S +37,1,3,"Mamee, Mr. Hanna",male,,0,0,2677,7.2292,,C +38,0,3,"Cann, Mr. Ernest Charles",male,21,0,0,A./5. 2152,8.05,,S +39,0,3,"Vander Planke, Miss. Augusta Maria",female,18,2,0,345764,18,,S +40,1,3,"Nicola-Yarred, Miss. Jamila",female,14,1,0,2651,11.2417,,C +41,0,3,"Ahlin, Mrs. Johan (Johanna Persdotter Larsson)",female,40,1,0,7546,9.475,,S +42,0,2,"Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)",female,27,1,0,11668,21,,S +43,0,3,"Kraeff, Mr. Theodor",male,,0,0,349253,7.8958,,C +44,1,2,"Laroche, Miss. Simonne Marie Anne Andree",female,3,1,2,SC/Paris 2123,41.5792,,C +45,1,3,"Devaney, Miss. Margaret Delia",female,19,0,0,330958,7.8792,,Q +46,0,3,"Rogers, Mr. William John",male,,0,0,S.C./A.4. 23567,8.05,,S +47,0,3,"Lennon, Mr. Denis",male,,1,0,370371,15.5,,Q +48,1,3,"O'Driscoll, Miss. Bridget",female,,0,0,14311,7.75,,Q +49,0,3,"Samaan, Mr. Youssef",male,,2,0,2662,21.6792,,C +50,0,3,"Arnold-Franchi, Mrs. Josef (Josefine Franchi)",female,18,1,0,349237,17.8,,S +51,0,3,"Panula, Master. Juha Niilo",male,7,4,1,3101295,39.6875,,S +52,0,3,"Nosworthy, Mr. Richard Cater",male,21,0,0,A/4. 39886,7.8,,S +53,1,1,"Harper, Mrs. Henry Sleeper (Myna Haxtun)",female,49,1,0,PC 17572,76.7292,D33,C +54,1,2,"Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)",female,29,1,0,2926,26,,S +55,0,1,"Ostby, Mr. Engelhart Cornelius",male,65,0,1,113509,61.9792,B30,C +56,1,1,"Woolner, Mr. Hugh",male,,0,0,19947,35.5,C52,S +57,1,2,"Rugg, Miss. Emily",female,21,0,0,C.A. 31026,10.5,,S +58,0,3,"Novel, Mr. Mansouer",male,28.5,0,0,2697,7.2292,,C +59,1,2,"West, Miss. Constance Mirium",female,5,1,2,C.A. 34651,27.75,,S +60,0,3,"Goodwin, Master. William Frederick",male,11,5,2,CA 2144,46.9,,S +61,0,3,"Sirayanian, Mr. Orsen",male,22,0,0,2669,7.2292,,C +62,1,1,"Icard, Miss. Amelie",female,38,0,0,113572,80,B28, +63,0,1,"Harris, Mr. Henry Birkhardt",male,45,1,0,36973,83.475,C83,S +64,0,3,"Skoog, Master. Harald",male,4,3,2,347088,27.9,,S +65,0,1,"Stewart, Mr. Albert A",male,,0,0,PC 17605,27.7208,,C +66,1,3,"Moubarek, Master. Gerios",male,,1,1,2661,15.2458,,C +67,1,2,"Nye, Mrs. (Elizabeth Ramell)",female,29,0,0,C.A. 29395,10.5,F33,S +68,0,3,"Crease, Mr. Ernest James",male,19,0,0,S.P. 3464,8.1583,,S +69,1,3,"Andersson, Miss. Erna Alexandra",female,17,4,2,3101281,7.925,,S +70,0,3,"Kink, Mr. Vincenz",male,26,2,0,315151,8.6625,,S +71,0,2,"Jenkin, Mr. Stephen Curnow",male,32,0,0,C.A. 33111,10.5,,S +72,0,3,"Goodwin, Miss. Lillian Amy",female,16,5,2,CA 2144,46.9,,S +73,0,2,"Hood, Mr. Ambrose Jr",male,21,0,0,S.O.C. 14879,73.5,,S +74,0,3,"Chronopoulos, Mr. Apostolos",male,26,1,0,2680,14.4542,,C +75,1,3,"Bing, Mr. Lee",male,32,0,0,1601,56.4958,,S +76,0,3,"Moen, Mr. Sigurd Hansen",male,25,0,0,348123,7.65,F G73,S +77,0,3,"Staneff, Mr. Ivan",male,,0,0,349208,7.8958,,S +78,0,3,"Moutal, Mr. Rahamin Haim",male,,0,0,374746,8.05,,S +79,1,2,"Caldwell, Master. Alden Gates",male,0.83,0,2,248738,29,,S +80,1,3,"Dowdell, Miss. Elizabeth",female,30,0,0,364516,12.475,,S +81,0,3,"Waelens, Mr. Achille",male,22,0,0,345767,9,,S +82,1,3,"Sheerlinck, Mr. Jan Baptist",male,29,0,0,345779,9.5,,S +83,1,3,"McDermott, Miss. Brigdet Delia",female,,0,0,330932,7.7875,,Q +84,0,1,"Carrau, Mr. Francisco M",male,28,0,0,113059,47.1,,S +85,1,2,"Ilett, Miss. Bertha",female,17,0,0,SO/C 14885,10.5,,S +86,1,3,"Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)",female,33,3,0,3101278,15.85,,S +87,0,3,"Ford, Mr. William Neal",male,16,1,3,W./C. 6608,34.375,,S +88,0,3,"Slocovski, Mr. Selman Francis",male,,0,0,SOTON/OQ 392086,8.05,,S +89,1,1,"Fortune, Miss. Mabel Helen",female,23,3,2,19950,263,C23 C25 C27,S +90,0,3,"Celotti, Mr. Francesco",male,24,0,0,343275,8.05,,S +91,0,3,"Christmann, Mr. Emil",male,29,0,0,343276,8.05,,S +92,0,3,"Andreasson, Mr. Paul Edvin",male,20,0,0,347466,7.8542,,S +93,0,1,"Chaffee, Mr. Herbert Fuller",male,46,1,0,W.E.P. 5734,61.175,E31,S +94,0,3,"Dean, Mr. Bertram Frank",male,26,1,2,C.A. 2315,20.575,,S +95,0,3,"Coxon, Mr. Daniel",male,59,0,0,364500,7.25,,S +96,0,3,"Shorney, Mr. Charles Joseph",male,,0,0,374910,8.05,,S +97,0,1,"Goldschmidt, Mr. George B",male,71,0,0,PC 17754,34.6542,A5,C +98,1,1,"Greenfield, Mr. William Bertram",male,23,0,1,PC 17759,63.3583,D10 D12,C +99,1,2,"Doling, Mrs. John T (Ada Julia Bone)",female,34,0,1,231919,23,,S +100,0,2,"Kantor, Mr. Sinai",male,34,1,0,244367,26,,S +101,0,3,"Petranec, Miss. Matilda",female,28,0,0,349245,7.8958,,S +102,0,3,"Petroff, Mr. Pastcho (""Pentcho"")",male,,0,0,349215,7.8958,,S +103,0,1,"White, Mr. Richard Frasar",male,21,0,1,35281,77.2875,D26,S +104,0,3,"Johansson, Mr. Gustaf Joel",male,33,0,0,7540,8.6542,,S +105,0,3,"Gustafsson, Mr. Anders Vilhelm",male,37,2,0,3101276,7.925,,S +106,0,3,"Mionoff, Mr. Stoytcho",male,28,0,0,349207,7.8958,,S +107,1,3,"Salkjelsvik, Miss. Anna Kristine",female,21,0,0,343120,7.65,,S +108,1,3,"Moss, Mr. Albert Johan",male,,0,0,312991,7.775,,S +109,0,3,"Rekic, Mr. Tido",male,38,0,0,349249,7.8958,,S +110,1,3,"Moran, Miss. Bertha",female,,1,0,371110,24.15,,Q +111,0,1,"Porter, Mr. Walter Chamberlain",male,47,0,0,110465,52,C110,S +112,0,3,"Zabour, Miss. Hileni",female,14.5,1,0,2665,14.4542,,C +113,0,3,"Barton, Mr. David John",male,22,0,0,324669,8.05,,S +114,0,3,"Jussila, Miss. Katriina",female,20,1,0,4136,9.825,,S +115,0,3,"Attalah, Miss. Malake",female,17,0,0,2627,14.4583,,C +116,0,3,"Pekoniemi, Mr. Edvard",male,21,0,0,STON/O 2. 3101294,7.925,,S +117,0,3,"Connors, Mr. Patrick",male,70.5,0,0,370369,7.75,,Q +118,0,2,"Turpin, Mr. William John Robert",male,29,1,0,11668,21,,S +119,0,1,"Baxter, Mr. Quigg Edmond",male,24,0,1,PC 17558,247.5208,B58 B60,C +120,0,3,"Andersson, Miss. Ellis Anna Maria",female,2,4,2,347082,31.275,,S +121,0,2,"Hickman, Mr. Stanley George",male,21,2,0,S.O.C. 14879,73.5,,S +122,0,3,"Moore, Mr. Leonard Charles",male,,0,0,A4. 54510,8.05,,S +123,0,2,"Nasser, Mr. Nicholas",male,32.5,1,0,237736,30.0708,,C +124,1,2,"Webber, Miss. Susan",female,32.5,0,0,27267,13,E101,S +125,0,1,"White, Mr. Percival Wayland",male,54,0,1,35281,77.2875,D26,S +126,1,3,"Nicola-Yarred, Master. Elias",male,12,1,0,2651,11.2417,,C +127,0,3,"McMahon, Mr. Martin",male,,0,0,370372,7.75,,Q +128,1,3,"Madsen, Mr. Fridtjof Arne",male,24,0,0,C 17369,7.1417,,S +129,1,3,"Peter, Miss. Anna",female,,1,1,2668,22.3583,F E69,C +130,0,3,"Ekstrom, Mr. Johan",male,45,0,0,347061,6.975,,S +131,0,3,"Drazenoic, Mr. Jozef",male,33,0,0,349241,7.8958,,C +132,0,3,"Coelho, Mr. Domingos Fernandeo",male,20,0,0,SOTON/O.Q. 3101307,7.05,,S +133,0,3,"Robins, Mrs. Alexander A (Grace Charity Laury)",female,47,1,0,A/5. 3337,14.5,,S +134,1,2,"Weisz, Mrs. Leopold (Mathilde Francoise Pede)",female,29,1,0,228414,26,,S +135,0,2,"Sobey, Mr. Samuel James Hayden",male,25,0,0,C.A. 29178,13,,S +136,0,2,"Richard, Mr. Emile",male,23,0,0,SC/PARIS 2133,15.0458,,C +137,1,1,"Newsom, Miss. Helen Monypeny",female,19,0,2,11752,26.2833,D47,S +138,0,1,"Futrelle, Mr. Jacques Heath",male,37,1,0,113803,53.1,C123,S +139,0,3,"Osen, Mr. Olaf Elon",male,16,0,0,7534,9.2167,,S +140,0,1,"Giglio, Mr. Victor",male,24,0,0,PC 17593,79.2,B86,C +141,0,3,"Boulos, Mrs. Joseph (Sultana)",female,,0,2,2678,15.2458,,C +142,1,3,"Nysten, Miss. Anna Sofia",female,22,0,0,347081,7.75,,S +143,1,3,"Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)",female,24,1,0,STON/O2. 3101279,15.85,,S +144,0,3,"Burke, Mr. Jeremiah",male,19,0,0,365222,6.75,,Q +145,0,2,"Andrew, Mr. Edgardo Samuel",male,18,0,0,231945,11.5,,S +146,0,2,"Nicholls, Mr. Joseph Charles",male,19,1,1,C.A. 33112,36.75,,S +147,1,3,"Andersson, Mr. August Edvard (""Wennerstrom"")",male,27,0,0,350043,7.7958,,S +148,0,3,"Ford, Miss. Robina Maggie ""Ruby""",female,9,2,2,W./C. 6608,34.375,,S +149,0,2,"Navratil, Mr. Michel (""Louis M Hoffman"")",male,36.5,0,2,230080,26,F2,S +150,0,2,"Byles, Rev. Thomas Roussel Davids",male,42,0,0,244310,13,,S +151,0,2,"Bateman, Rev. Robert James",male,51,0,0,S.O.P. 1166,12.525,,S +152,1,1,"Pears, Mrs. Thomas (Edith Wearne)",female,22,1,0,113776,66.6,C2,S +153,0,3,"Meo, Mr. Alfonzo",male,55.5,0,0,A.5. 11206,8.05,,S +154,0,3,"van Billiard, Mr. Austin Blyler",male,40.5,0,2,A/5. 851,14.5,,S +155,0,3,"Olsen, Mr. Ole Martin",male,,0,0,Fa 265302,7.3125,,S +156,0,1,"Williams, Mr. Charles Duane",male,51,0,1,PC 17597,61.3792,,C +157,1,3,"Gilnagh, Miss. Katherine ""Katie""",female,16,0,0,35851,7.7333,,Q +158,0,3,"Corn, Mr. Harry",male,30,0,0,SOTON/OQ 392090,8.05,,S +159,0,3,"Smiljanic, Mr. Mile",male,,0,0,315037,8.6625,,S +160,0,3,"Sage, Master. Thomas Henry",male,,8,2,CA. 2343,69.55,,S +161,0,3,"Cribb, Mr. John Hatfield",male,44,0,1,371362,16.1,,S +162,1,2,"Watt, Mrs. James (Elizabeth ""Bessie"" Inglis Milne)",female,40,0,0,C.A. 33595,15.75,,S +163,0,3,"Bengtsson, Mr. John Viktor",male,26,0,0,347068,7.775,,S +164,0,3,"Calic, Mr. Jovo",male,17,0,0,315093,8.6625,,S +165,0,3,"Panula, Master. Eino Viljami",male,1,4,1,3101295,39.6875,,S +166,1,3,"Goldsmith, Master. Frank John William ""Frankie""",male,9,0,2,363291,20.525,,S +167,1,1,"Chibnall, Mrs. (Edith Martha Bowerman)",female,,0,1,113505,55,E33,S +168,0,3,"Skoog, Mrs. William (Anna Bernhardina Karlsson)",female,45,1,4,347088,27.9,,S +169,0,1,"Baumann, Mr. John D",male,,0,0,PC 17318,25.925,,S +170,0,3,"Ling, Mr. Lee",male,28,0,0,1601,56.4958,,S +171,0,1,"Van der hoef, Mr. Wyckoff",male,61,0,0,111240,33.5,B19,S +172,0,3,"Rice, Master. Arthur",male,4,4,1,382652,29.125,,Q +173,1,3,"Johnson, Miss. Eleanor Ileen",female,1,1,1,347742,11.1333,,S +174,0,3,"Sivola, Mr. Antti Wilhelm",male,21,0,0,STON/O 2. 3101280,7.925,,S +175,0,1,"Smith, Mr. James Clinch",male,56,0,0,17764,30.6958,A7,C +176,0,3,"Klasen, Mr. Klas Albin",male,18,1,1,350404,7.8542,,S +177,0,3,"Lefebre, Master. Henry Forbes",male,,3,1,4133,25.4667,,S +178,0,1,"Isham, Miss. Ann Elizabeth",female,50,0,0,PC 17595,28.7125,C49,C +179,0,2,"Hale, Mr. Reginald",male,30,0,0,250653,13,,S +180,0,3,"Leonard, Mr. Lionel",male,36,0,0,LINE,0,,S +181,0,3,"Sage, Miss. Constance Gladys",female,,8,2,CA. 2343,69.55,,S +182,0,2,"Pernot, Mr. Rene",male,,0,0,SC/PARIS 2131,15.05,,C +183,0,3,"Asplund, Master. Clarence Gustaf Hugo",male,9,4,2,347077,31.3875,,S +184,1,2,"Becker, Master. Richard F",male,1,2,1,230136,39,F4,S +185,1,3,"Kink-Heilmann, Miss. Luise Gretchen",female,4,0,2,315153,22.025,,S +186,0,1,"Rood, Mr. Hugh Roscoe",male,,0,0,113767,50,A32,S +187,1,3,"O'Brien, Mrs. Thomas (Johanna ""Hannah"" Godfrey)",female,,1,0,370365,15.5,,Q +188,1,1,"Romaine, Mr. Charles Hallace (""Mr C Rolmane"")",male,45,0,0,111428,26.55,,S +189,0,3,"Bourke, Mr. John",male,40,1,1,364849,15.5,,Q +190,0,3,"Turcin, Mr. Stjepan",male,36,0,0,349247,7.8958,,S +191,1,2,"Pinsky, Mrs. (Rosa)",female,32,0,0,234604,13,,S +192,0,2,"Carbines, Mr. William",male,19,0,0,28424,13,,S +193,1,3,"Andersen-Jensen, Miss. Carla Christine Nielsine",female,19,1,0,350046,7.8542,,S +194,1,2,"Navratil, Master. Michel M",male,3,1,1,230080,26,F2,S +195,1,1,"Brown, Mrs. James Joseph (Margaret Tobin)",female,44,0,0,PC 17610,27.7208,B4,C +196,1,1,"Lurette, Miss. Elise",female,58,0,0,PC 17569,146.5208,B80,C +197,0,3,"Mernagh, Mr. Robert",male,,0,0,368703,7.75,,Q +198,0,3,"Olsen, Mr. Karl Siegwart Andreas",male,42,0,1,4579,8.4042,,S +199,1,3,"Madigan, Miss. Margaret ""Maggie""",female,,0,0,370370,7.75,,Q +200,0,2,"Yrois, Miss. Henriette (""Mrs Harbeck"")",female,24,0,0,248747,13,,S +201,0,3,"Vande Walle, Mr. Nestor Cyriel",male,28,0,0,345770,9.5,,S +202,0,3,"Sage, Mr. Frederick",male,,8,2,CA. 2343,69.55,,S +203,0,3,"Johanson, Mr. Jakob Alfred",male,34,0,0,3101264,6.4958,,S +204,0,3,"Youseff, Mr. Gerious",male,45.5,0,0,2628,7.225,,C +205,1,3,"Cohen, Mr. Gurshon ""Gus""",male,18,0,0,A/5 3540,8.05,,S +206,0,3,"Strom, Miss. Telma Matilda",female,2,0,1,347054,10.4625,G6,S +207,0,3,"Backstrom, Mr. Karl Alfred",male,32,1,0,3101278,15.85,,S +208,1,3,"Albimona, Mr. Nassef Cassem",male,26,0,0,2699,18.7875,,C +209,1,3,"Carr, Miss. Helen ""Ellen""",female,16,0,0,367231,7.75,,Q +210,1,1,"Blank, Mr. Henry",male,40,0,0,112277,31,A31,C +211,0,3,"Ali, Mr. Ahmed",male,24,0,0,SOTON/O.Q. 3101311,7.05,,S +212,1,2,"Cameron, Miss. Clear Annie",female,35,0,0,F.C.C. 13528,21,,S +213,0,3,"Perkin, Mr. John Henry",male,22,0,0,A/5 21174,7.25,,S +214,0,2,"Givard, Mr. Hans Kristensen",male,30,0,0,250646,13,,S +215,0,3,"Kiernan, Mr. Philip",male,,1,0,367229,7.75,,Q +216,1,1,"Newell, Miss. Madeleine",female,31,1,0,35273,113.275,D36,C +217,1,3,"Honkanen, Miss. Eliina",female,27,0,0,STON/O2. 3101283,7.925,,S +218,0,2,"Jacobsohn, Mr. Sidney Samuel",male,42,1,0,243847,27,,S +219,1,1,"Bazzani, Miss. Albina",female,32,0,0,11813,76.2917,D15,C +220,0,2,"Harris, Mr. Walter",male,30,0,0,W/C 14208,10.5,,S +221,1,3,"Sunderland, Mr. Victor Francis",male,16,0,0,SOTON/OQ 392089,8.05,,S +222,0,2,"Bracken, Mr. James H",male,27,0,0,220367,13,,S +223,0,3,"Green, Mr. George Henry",male,51,0,0,21440,8.05,,S +224,0,3,"Nenkoff, Mr. Christo",male,,0,0,349234,7.8958,,S +225,1,1,"Hoyt, Mr. Frederick Maxfield",male,38,1,0,19943,90,C93,S +226,0,3,"Berglund, Mr. Karl Ivar Sven",male,22,0,0,PP 4348,9.35,,S +227,1,2,"Mellors, Mr. William John",male,19,0,0,SW/PP 751,10.5,,S +228,0,3,"Lovell, Mr. John Hall (""Henry"")",male,20.5,0,0,A/5 21173,7.25,,S +229,0,2,"Fahlstrom, Mr. Arne Jonas",male,18,0,0,236171,13,,S +230,0,3,"Lefebre, Miss. Mathilde",female,,3,1,4133,25.4667,,S +231,1,1,"Harris, Mrs. Henry Birkhardt (Irene Wallach)",female,35,1,0,36973,83.475,C83,S +232,0,3,"Larsson, Mr. Bengt Edvin",male,29,0,0,347067,7.775,,S +233,0,2,"Sjostedt, Mr. Ernst Adolf",male,59,0,0,237442,13.5,,S +234,1,3,"Asplund, Miss. Lillian Gertrud",female,5,4,2,347077,31.3875,,S +235,0,2,"Leyson, Mr. Robert William Norman",male,24,0,0,C.A. 29566,10.5,,S +236,0,3,"Harknett, Miss. Alice Phoebe",female,,0,0,W./C. 6609,7.55,,S +237,0,2,"Hold, Mr. Stephen",male,44,1,0,26707,26,,S +238,1,2,"Collyer, Miss. Marjorie ""Lottie""",female,8,0,2,C.A. 31921,26.25,,S +239,0,2,"Pengelly, Mr. Frederick William",male,19,0,0,28665,10.5,,S +240,0,2,"Hunt, Mr. George Henry",male,33,0,0,SCO/W 1585,12.275,,S +241,0,3,"Zabour, Miss. Thamine",female,,1,0,2665,14.4542,,C +242,1,3,"Murphy, Miss. Katherine ""Kate""",female,,1,0,367230,15.5,,Q +243,0,2,"Coleridge, Mr. Reginald Charles",male,29,0,0,W./C. 14263,10.5,,S +244,0,3,"Maenpaa, Mr. Matti Alexanteri",male,22,0,0,STON/O 2. 3101275,7.125,,S +245,0,3,"Attalah, Mr. Sleiman",male,30,0,0,2694,7.225,,C +246,0,1,"Minahan, Dr. William Edward",male,44,2,0,19928,90,C78,Q +247,0,3,"Lindahl, Miss. Agda Thorilda Viktoria",female,25,0,0,347071,7.775,,S +248,1,2,"Hamalainen, Mrs. William (Anna)",female,24,0,2,250649,14.5,,S +249,1,1,"Beckwith, Mr. Richard Leonard",male,37,1,1,11751,52.5542,D35,S +250,0,2,"Carter, Rev. Ernest Courtenay",male,54,1,0,244252,26,,S +251,0,3,"Reed, Mr. James George",male,,0,0,362316,7.25,,S +252,0,3,"Strom, Mrs. Wilhelm (Elna Matilda Persson)",female,29,1,1,347054,10.4625,G6,S +253,0,1,"Stead, Mr. William Thomas",male,62,0,0,113514,26.55,C87,S +254,0,3,"Lobb, Mr. William Arthur",male,30,1,0,A/5. 3336,16.1,,S +255,0,3,"Rosblom, Mrs. Viktor (Helena Wilhelmina)",female,41,0,2,370129,20.2125,,S +256,1,3,"Touma, Mrs. Darwis (Hanne Youssef Razi)",female,29,0,2,2650,15.2458,,C +257,1,1,"Thorne, Mrs. Gertrude Maybelle",female,,0,0,PC 17585,79.2,,C +258,1,1,"Cherry, Miss. Gladys",female,30,0,0,110152,86.5,B77,S +259,1,1,"Ward, Miss. Anna",female,35,0,0,PC 17755,512.3292,,C +260,1,2,"Parrish, Mrs. (Lutie Davis)",female,50,0,1,230433,26,,S +261,0,3,"Smith, Mr. Thomas",male,,0,0,384461,7.75,,Q +262,1,3,"Asplund, Master. Edvin Rojj Felix",male,3,4,2,347077,31.3875,,S +263,0,1,"Taussig, Mr. Emil",male,52,1,1,110413,79.65,E67,S +264,0,1,"Harrison, Mr. William",male,40,0,0,112059,0,B94,S +265,0,3,"Henry, Miss. Delia",female,,0,0,382649,7.75,,Q +266,0,2,"Reeves, Mr. David",male,36,0,0,C.A. 17248,10.5,,S +267,0,3,"Panula, Mr. Ernesti Arvid",male,16,4,1,3101295,39.6875,,S +268,1,3,"Persson, Mr. Ernst Ulrik",male,25,1,0,347083,7.775,,S +269,1,1,"Graham, Mrs. William Thompson (Edith Junkins)",female,58,0,1,PC 17582,153.4625,C125,S +270,1,1,"Bissette, Miss. Amelia",female,35,0,0,PC 17760,135.6333,C99,S +271,0,1,"Cairns, Mr. Alexander",male,,0,0,113798,31,,S +272,1,3,"Tornquist, Mr. William Henry",male,25,0,0,LINE,0,,S +273,1,2,"Mellinger, Mrs. (Elizabeth Anne Maidment)",female,41,0,1,250644,19.5,,S +274,0,1,"Natsch, Mr. Charles H",male,37,0,1,PC 17596,29.7,C118,C +275,1,3,"Healy, Miss. Hanora ""Nora""",female,,0,0,370375,7.75,,Q +276,1,1,"Andrews, Miss. Kornelia Theodosia",female,63,1,0,13502,77.9583,D7,S +277,0,3,"Lindblom, Miss. Augusta Charlotta",female,45,0,0,347073,7.75,,S +278,0,2,"Parkes, Mr. Francis ""Frank""",male,,0,0,239853,0,,S +279,0,3,"Rice, Master. Eric",male,7,4,1,382652,29.125,,Q +280,1,3,"Abbott, Mrs. Stanton (Rosa Hunt)",female,35,1,1,C.A. 2673,20.25,,S +281,0,3,"Duane, Mr. Frank",male,65,0,0,336439,7.75,,Q +282,0,3,"Olsson, Mr. Nils Johan Goransson",male,28,0,0,347464,7.8542,,S +283,0,3,"de Pelsmaeker, Mr. Alfons",male,16,0,0,345778,9.5,,S +284,1,3,"Dorking, Mr. Edward Arthur",male,19,0,0,A/5. 10482,8.05,,S +285,0,1,"Smith, Mr. Richard William",male,,0,0,113056,26,A19,S +286,0,3,"Stankovic, Mr. Ivan",male,33,0,0,349239,8.6625,,C +287,1,3,"de Mulder, Mr. Theodore",male,30,0,0,345774,9.5,,S +288,0,3,"Naidenoff, Mr. Penko",male,22,0,0,349206,7.8958,,S +289,1,2,"Hosono, Mr. Masabumi",male,42,0,0,237798,13,,S +290,1,3,"Connolly, Miss. Kate",female,22,0,0,370373,7.75,,Q +291,1,1,"Barber, Miss. Ellen ""Nellie""",female,26,0,0,19877,78.85,,S +292,1,1,"Bishop, Mrs. Dickinson H (Helen Walton)",female,19,1,0,11967,91.0792,B49,C +293,0,2,"Levy, Mr. Rene Jacques",male,36,0,0,SC/Paris 2163,12.875,D,C +294,0,3,"Haas, Miss. Aloisia",female,24,0,0,349236,8.85,,S +295,0,3,"Mineff, Mr. Ivan",male,24,0,0,349233,7.8958,,S +296,0,1,"Lewy, Mr. Ervin G",male,,0,0,PC 17612,27.7208,,C +297,0,3,"Hanna, Mr. Mansour",male,23.5,0,0,2693,7.2292,,C +298,0,1,"Allison, Miss. Helen Loraine",female,2,1,2,113781,151.55,C22 C26,S +299,1,1,"Saalfeld, Mr. Adolphe",male,,0,0,19988,30.5,C106,S +300,1,1,"Baxter, Mrs. James (Helene DeLaudeniere Chaput)",female,50,0,1,PC 17558,247.5208,B58 B60,C +301,1,3,"Kelly, Miss. Anna Katherine ""Annie Kate""",female,,0,0,9234,7.75,,Q +302,1,3,"McCoy, Mr. Bernard",male,,2,0,367226,23.25,,Q +303,0,3,"Johnson, Mr. William Cahoone Jr",male,19,0,0,LINE,0,,S +304,1,2,"Keane, Miss. Nora A",female,,0,0,226593,12.35,E101,Q +305,0,3,"Williams, Mr. Howard Hugh ""Harry""",male,,0,0,A/5 2466,8.05,,S +306,1,1,"Allison, Master. Hudson Trevor",male,0.92,1,2,113781,151.55,C22 C26,S +307,1,1,"Fleming, Miss. Margaret",female,,0,0,17421,110.8833,,C +308,1,1,"Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)",female,17,1,0,PC 17758,108.9,C65,C +309,0,2,"Abelson, Mr. Samuel",male,30,1,0,P/PP 3381,24,,C +310,1,1,"Francatelli, Miss. Laura Mabel",female,30,0,0,PC 17485,56.9292,E36,C +311,1,1,"Hays, Miss. Margaret Bechstein",female,24,0,0,11767,83.1583,C54,C +312,1,1,"Ryerson, Miss. Emily Borie",female,18,2,2,PC 17608,262.375,B57 B59 B63 B66,C +313,0,2,"Lahtinen, Mrs. William (Anna Sylfven)",female,26,1,1,250651,26,,S +314,0,3,"Hendekovic, Mr. Ignjac",male,28,0,0,349243,7.8958,,S +315,0,2,"Hart, Mr. Benjamin",male,43,1,1,F.C.C. 13529,26.25,,S +316,1,3,"Nilsson, Miss. Helmina Josefina",female,26,0,0,347470,7.8542,,S +317,1,2,"Kantor, Mrs. Sinai (Miriam Sternin)",female,24,1,0,244367,26,,S +318,0,2,"Moraweck, Dr. Ernest",male,54,0,0,29011,14,,S +319,1,1,"Wick, Miss. Mary Natalie",female,31,0,2,36928,164.8667,C7,S +320,1,1,"Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)",female,40,1,1,16966,134.5,E34,C +321,0,3,"Dennis, Mr. Samuel",male,22,0,0,A/5 21172,7.25,,S +322,0,3,"Danoff, Mr. Yoto",male,27,0,0,349219,7.8958,,S +323,1,2,"Slayter, Miss. Hilda Mary",female,30,0,0,234818,12.35,,Q +324,1,2,"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)",female,22,1,1,248738,29,,S +325,0,3,"Sage, Mr. George John Jr",male,,8,2,CA. 2343,69.55,,S +326,1,1,"Young, Miss. Marie Grice",female,36,0,0,PC 17760,135.6333,C32,C +327,0,3,"Nysveen, Mr. Johan Hansen",male,61,0,0,345364,6.2375,,S +328,1,2,"Ball, Mrs. (Ada E Hall)",female,36,0,0,28551,13,D,S +329,1,3,"Goldsmith, Mrs. Frank John (Emily Alice Brown)",female,31,1,1,363291,20.525,,S +330,1,1,"Hippach, Miss. Jean Gertrude",female,16,0,1,111361,57.9792,B18,C +331,1,3,"McCoy, Miss. Agnes",female,,2,0,367226,23.25,,Q +332,0,1,"Partner, Mr. Austen",male,45.5,0,0,113043,28.5,C124,S +333,0,1,"Graham, Mr. George Edward",male,38,0,1,PC 17582,153.4625,C91,S +334,0,3,"Vander Planke, Mr. Leo Edmondus",male,16,2,0,345764,18,,S +335,1,1,"Frauenthal, Mrs. Henry William (Clara Heinsheimer)",female,,1,0,PC 17611,133.65,,S +336,0,3,"Denkoff, Mr. Mitto",male,,0,0,349225,7.8958,,S +337,0,1,"Pears, Mr. Thomas Clinton",male,29,1,0,113776,66.6,C2,S +338,1,1,"Burns, Miss. Elizabeth Margaret",female,41,0,0,16966,134.5,E40,C +339,1,3,"Dahl, Mr. Karl Edwart",male,45,0,0,7598,8.05,,S +340,0,1,"Blackwell, Mr. Stephen Weart",male,45,0,0,113784,35.5,T,S +341,1,2,"Navratil, Master. Edmond Roger",male,2,1,1,230080,26,F2,S +342,1,1,"Fortune, Miss. Alice Elizabeth",female,24,3,2,19950,263,C23 C25 C27,S +343,0,2,"Collander, Mr. Erik Gustaf",male,28,0,0,248740,13,,S +344,0,2,"Sedgwick, Mr. Charles Frederick Waddington",male,25,0,0,244361,13,,S +345,0,2,"Fox, Mr. Stanley Hubert",male,36,0,0,229236,13,,S +346,1,2,"Brown, Miss. Amelia ""Mildred""",female,24,0,0,248733,13,F33,S +347,1,2,"Smith, Miss. Marion Elsie",female,40,0,0,31418,13,,S +348,1,3,"Davison, Mrs. Thomas Henry (Mary E Finck)",female,,1,0,386525,16.1,,S +349,1,3,"Coutts, Master. William Loch ""William""",male,3,1,1,C.A. 37671,15.9,,S +350,0,3,"Dimic, Mr. Jovan",male,42,0,0,315088,8.6625,,S +351,0,3,"Odahl, Mr. Nils Martin",male,23,0,0,7267,9.225,,S +352,0,1,"Williams-Lambert, Mr. Fletcher Fellows",male,,0,0,113510,35,C128,S +353,0,3,"Elias, Mr. Tannous",male,15,1,1,2695,7.2292,,C +354,0,3,"Arnold-Franchi, Mr. Josef",male,25,1,0,349237,17.8,,S +355,0,3,"Yousif, Mr. Wazli",male,,0,0,2647,7.225,,C +356,0,3,"Vanden Steen, Mr. Leo Peter",male,28,0,0,345783,9.5,,S +357,1,1,"Bowerman, Miss. Elsie Edith",female,22,0,1,113505,55,E33,S +358,0,2,"Funk, Miss. Annie Clemmer",female,38,0,0,237671,13,,S +359,1,3,"McGovern, Miss. Mary",female,,0,0,330931,7.8792,,Q +360,1,3,"Mockler, Miss. Helen Mary ""Ellie""",female,,0,0,330980,7.8792,,Q +361,0,3,"Skoog, Mr. Wilhelm",male,40,1,4,347088,27.9,,S +362,0,2,"del Carlo, Mr. Sebastiano",male,29,1,0,SC/PARIS 2167,27.7208,,C +363,0,3,"Barbara, Mrs. (Catherine David)",female,45,0,1,2691,14.4542,,C +364,0,3,"Asim, Mr. Adola",male,35,0,0,SOTON/O.Q. 3101310,7.05,,S +365,0,3,"O'Brien, Mr. Thomas",male,,1,0,370365,15.5,,Q +366,0,3,"Adahl, Mr. Mauritz Nils Martin",male,30,0,0,C 7076,7.25,,S +367,1,1,"Warren, Mrs. Frank Manley (Anna Sophia Atkinson)",female,60,1,0,110813,75.25,D37,C +368,1,3,"Moussa, Mrs. (Mantoura Boulos)",female,,0,0,2626,7.2292,,C +369,1,3,"Jermyn, Miss. Annie",female,,0,0,14313,7.75,,Q +370,1,1,"Aubart, Mme. Leontine Pauline",female,24,0,0,PC 17477,69.3,B35,C +371,1,1,"Harder, Mr. George Achilles",male,25,1,0,11765,55.4417,E50,C +372,0,3,"Wiklund, Mr. Jakob Alfred",male,18,1,0,3101267,6.4958,,S +373,0,3,"Beavan, Mr. William Thomas",male,19,0,0,323951,8.05,,S +374,0,1,"Ringhini, Mr. Sante",male,22,0,0,PC 17760,135.6333,,C +375,0,3,"Palsson, Miss. Stina Viola",female,3,3,1,349909,21.075,,S +376,1,1,"Meyer, Mrs. Edgar Joseph (Leila Saks)",female,,1,0,PC 17604,82.1708,,C +377,1,3,"Landergren, Miss. Aurora Adelia",female,22,0,0,C 7077,7.25,,S +378,0,1,"Widener, Mr. Harry Elkins",male,27,0,2,113503,211.5,C82,C +379,0,3,"Betros, Mr. Tannous",male,20,0,0,2648,4.0125,,C +380,0,3,"Gustafsson, Mr. Karl Gideon",male,19,0,0,347069,7.775,,S +381,1,1,"Bidois, Miss. Rosalie",female,42,0,0,PC 17757,227.525,,C +382,1,3,"Nakid, Miss. Maria (""Mary"")",female,1,0,2,2653,15.7417,,C +383,0,3,"Tikkanen, Mr. Juho",male,32,0,0,STON/O 2. 3101293,7.925,,S +384,1,1,"Holverson, Mrs. Alexander Oskar (Mary Aline Towner)",female,35,1,0,113789,52,,S +385,0,3,"Plotcharsky, Mr. Vasil",male,,0,0,349227,7.8958,,S +386,0,2,"Davies, Mr. Charles Henry",male,18,0,0,S.O.C. 14879,73.5,,S +387,0,3,"Goodwin, Master. Sidney Leonard",male,1,5,2,CA 2144,46.9,,S +388,1,2,"Buss, Miss. Kate",female,36,0,0,27849,13,,S +389,0,3,"Sadlier, Mr. Matthew",male,,0,0,367655,7.7292,,Q +390,1,2,"Lehmann, Miss. Bertha",female,17,0,0,SC 1748,12,,C +391,1,1,"Carter, Mr. William Ernest",male,36,1,2,113760,120,B96 B98,S +392,1,3,"Jansson, Mr. Carl Olof",male,21,0,0,350034,7.7958,,S +393,0,3,"Gustafsson, Mr. Johan Birger",male,28,2,0,3101277,7.925,,S +394,1,1,"Newell, Miss. Marjorie",female,23,1,0,35273,113.275,D36,C +395,1,3,"Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)",female,24,0,2,PP 9549,16.7,G6,S +396,0,3,"Johansson, Mr. Erik",male,22,0,0,350052,7.7958,,S +397,0,3,"Olsson, Miss. Elina",female,31,0,0,350407,7.8542,,S +398,0,2,"McKane, Mr. Peter David",male,46,0,0,28403,26,,S +399,0,2,"Pain, Dr. Alfred",male,23,0,0,244278,10.5,,S +400,1,2,"Trout, Mrs. William H (Jessie L)",female,28,0,0,240929,12.65,,S +401,1,3,"Niskanen, Mr. Juha",male,39,0,0,STON/O 2. 3101289,7.925,,S +402,0,3,"Adams, Mr. John",male,26,0,0,341826,8.05,,S +403,0,3,"Jussila, Miss. Mari Aina",female,21,1,0,4137,9.825,,S +404,0,3,"Hakkarainen, Mr. Pekka Pietari",male,28,1,0,STON/O2. 3101279,15.85,,S +405,0,3,"Oreskovic, Miss. Marija",female,20,0,0,315096,8.6625,,S +406,0,2,"Gale, Mr. Shadrach",male,34,1,0,28664,21,,S +407,0,3,"Widegren, Mr. Carl/Charles Peter",male,51,0,0,347064,7.75,,S +408,1,2,"Richards, Master. William Rowe",male,3,1,1,29106,18.75,,S +409,0,3,"Birkeland, Mr. Hans Martin Monsen",male,21,0,0,312992,7.775,,S +410,0,3,"Lefebre, Miss. Ida",female,,3,1,4133,25.4667,,S +411,0,3,"Sdycoff, Mr. Todor",male,,0,0,349222,7.8958,,S +412,0,3,"Hart, Mr. Henry",male,,0,0,394140,6.8583,,Q +413,1,1,"Minahan, Miss. Daisy E",female,33,1,0,19928,90,C78,Q +414,0,2,"Cunningham, Mr. Alfred Fleming",male,,0,0,239853,0,,S +415,1,3,"Sundman, Mr. Johan Julian",male,44,0,0,STON/O 2. 3101269,7.925,,S +416,0,3,"Meek, Mrs. Thomas (Annie Louise Rowley)",female,,0,0,343095,8.05,,S +417,1,2,"Drew, Mrs. James Vivian (Lulu Thorne Christian)",female,34,1,1,28220,32.5,,S +418,1,2,"Silven, Miss. Lyyli Karoliina",female,18,0,2,250652,13,,S +419,0,2,"Matthews, Mr. William John",male,30,0,0,28228,13,,S +420,0,3,"Van Impe, Miss. Catharina",female,10,0,2,345773,24.15,,S +421,0,3,"Gheorgheff, Mr. Stanio",male,,0,0,349254,7.8958,,C +422,0,3,"Charters, Mr. David",male,21,0,0,A/5. 13032,7.7333,,Q +423,0,3,"Zimmerman, Mr. Leo",male,29,0,0,315082,7.875,,S +424,0,3,"Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)",female,28,1,1,347080,14.4,,S +425,0,3,"Rosblom, Mr. Viktor Richard",male,18,1,1,370129,20.2125,,S +426,0,3,"Wiseman, Mr. Phillippe",male,,0,0,A/4. 34244,7.25,,S +427,1,2,"Clarke, Mrs. Charles V (Ada Maria Winfield)",female,28,1,0,2003,26,,S +428,1,2,"Phillips, Miss. Kate Florence (""Mrs Kate Louise Phillips Marshall"")",female,19,0,0,250655,26,,S +429,0,3,"Flynn, Mr. James",male,,0,0,364851,7.75,,Q +430,1,3,"Pickard, Mr. Berk (Berk Trembisky)",male,32,0,0,SOTON/O.Q. 392078,8.05,E10,S +431,1,1,"Bjornstrom-Steffansson, Mr. Mauritz Hakan",male,28,0,0,110564,26.55,C52,S +432,1,3,"Thorneycroft, Mrs. Percival (Florence Kate White)",female,,1,0,376564,16.1,,S +433,1,2,"Louch, Mrs. Charles Alexander (Alice Adelaide Slow)",female,42,1,0,SC/AH 3085,26,,S +434,0,3,"Kallio, Mr. Nikolai Erland",male,17,0,0,STON/O 2. 3101274,7.125,,S +435,0,1,"Silvey, Mr. William Baird",male,50,1,0,13507,55.9,E44,S +436,1,1,"Carter, Miss. Lucile Polk",female,14,1,2,113760,120,B96 B98,S +437,0,3,"Ford, Miss. Doolina Margaret ""Daisy""",female,21,2,2,W./C. 6608,34.375,,S +438,1,2,"Richards, Mrs. Sidney (Emily Hocking)",female,24,2,3,29106,18.75,,S +439,0,1,"Fortune, Mr. Mark",male,64,1,4,19950,263,C23 C25 C27,S +440,0,2,"Kvillner, Mr. Johan Henrik Johannesson",male,31,0,0,C.A. 18723,10.5,,S +441,1,2,"Hart, Mrs. Benjamin (Esther Ada Bloomfield)",female,45,1,1,F.C.C. 13529,26.25,,S +442,0,3,"Hampe, Mr. Leon",male,20,0,0,345769,9.5,,S +443,0,3,"Petterson, Mr. Johan Emil",male,25,1,0,347076,7.775,,S +444,1,2,"Reynaldo, Ms. Encarnacion",female,28,0,0,230434,13,,S +445,1,3,"Johannesen-Bratthammer, Mr. Bernt",male,,0,0,65306,8.1125,,S +446,1,1,"Dodge, Master. Washington",male,4,0,2,33638,81.8583,A34,S +447,1,2,"Mellinger, Miss. Madeleine Violet",female,13,0,1,250644,19.5,,S +448,1,1,"Seward, Mr. Frederic Kimber",male,34,0,0,113794,26.55,,S +449,1,3,"Baclini, Miss. Marie Catherine",female,5,2,1,2666,19.2583,,C +450,1,1,"Peuchen, Major. Arthur Godfrey",male,52,0,0,113786,30.5,C104,S +451,0,2,"West, Mr. Edwy Arthur",male,36,1,2,C.A. 34651,27.75,,S +452,0,3,"Hagland, Mr. Ingvald Olai Olsen",male,,1,0,65303,19.9667,,S +453,0,1,"Foreman, Mr. Benjamin Laventall",male,30,0,0,113051,27.75,C111,C +454,1,1,"Goldenberg, Mr. Samuel L",male,49,1,0,17453,89.1042,C92,C +455,0,3,"Peduzzi, Mr. Joseph",male,,0,0,A/5 2817,8.05,,S +456,1,3,"Jalsevac, Mr. Ivan",male,29,0,0,349240,7.8958,,C +457,0,1,"Millet, Mr. Francis Davis",male,65,0,0,13509,26.55,E38,S +458,1,1,"Kenyon, Mrs. Frederick R (Marion)",female,,1,0,17464,51.8625,D21,S +459,1,2,"Toomey, Miss. Ellen",female,50,0,0,F.C.C. 13531,10.5,,S +460,0,3,"O'Connor, Mr. Maurice",male,,0,0,371060,7.75,,Q +461,1,1,"Anderson, Mr. Harry",male,48,0,0,19952,26.55,E12,S +462,0,3,"Morley, Mr. William",male,34,0,0,364506,8.05,,S +463,0,1,"Gee, Mr. Arthur H",male,47,0,0,111320,38.5,E63,S +464,0,2,"Milling, Mr. Jacob Christian",male,48,0,0,234360,13,,S +465,0,3,"Maisner, Mr. Simon",male,,0,0,A/S 2816,8.05,,S +466,0,3,"Goncalves, Mr. Manuel Estanslas",male,38,0,0,SOTON/O.Q. 3101306,7.05,,S +467,0,2,"Campbell, Mr. William",male,,0,0,239853,0,,S +468,0,1,"Smart, Mr. John Montgomery",male,56,0,0,113792,26.55,,S +469,0,3,"Scanlan, Mr. James",male,,0,0,36209,7.725,,Q +470,1,3,"Baclini, Miss. Helene Barbara",female,0.75,2,1,2666,19.2583,,C +471,0,3,"Keefe, Mr. Arthur",male,,0,0,323592,7.25,,S +472,0,3,"Cacic, Mr. Luka",male,38,0,0,315089,8.6625,,S +473,1,2,"West, Mrs. Edwy Arthur (Ada Mary Worth)",female,33,1,2,C.A. 34651,27.75,,S +474,1,2,"Jerwan, Mrs. Amin S (Marie Marthe Thuillard)",female,23,0,0,SC/AH Basle 541,13.7917,D,C +475,0,3,"Strandberg, Miss. Ida Sofia",female,22,0,0,7553,9.8375,,S +476,0,1,"Clifford, Mr. George Quincy",male,,0,0,110465,52,A14,S +477,0,2,"Renouf, Mr. Peter Henry",male,34,1,0,31027,21,,S +478,0,3,"Braund, Mr. Lewis Richard",male,29,1,0,3460,7.0458,,S +479,0,3,"Karlsson, Mr. Nils August",male,22,0,0,350060,7.5208,,S +480,1,3,"Hirvonen, Miss. Hildur E",female,2,0,1,3101298,12.2875,,S +481,0,3,"Goodwin, Master. Harold Victor",male,9,5,2,CA 2144,46.9,,S +482,0,2,"Frost, Mr. Anthony Wood ""Archie""",male,,0,0,239854,0,,S +483,0,3,"Rouse, Mr. Richard Henry",male,50,0,0,A/5 3594,8.05,,S +484,1,3,"Turkula, Mrs. (Hedwig)",female,63,0,0,4134,9.5875,,S +485,1,1,"Bishop, Mr. Dickinson H",male,25,1,0,11967,91.0792,B49,C +486,0,3,"Lefebre, Miss. Jeannie",female,,3,1,4133,25.4667,,S +487,1,1,"Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)",female,35,1,0,19943,90,C93,S +488,0,1,"Kent, Mr. Edward Austin",male,58,0,0,11771,29.7,B37,C +489,0,3,"Somerton, Mr. Francis William",male,30,0,0,A.5. 18509,8.05,,S +490,1,3,"Coutts, Master. Eden Leslie ""Neville""",male,9,1,1,C.A. 37671,15.9,,S +491,0,3,"Hagland, Mr. Konrad Mathias Reiersen",male,,1,0,65304,19.9667,,S +492,0,3,"Windelov, Mr. Einar",male,21,0,0,SOTON/OQ 3101317,7.25,,S +493,0,1,"Molson, Mr. Harry Markland",male,55,0,0,113787,30.5,C30,S +494,0,1,"Artagaveytia, Mr. Ramon",male,71,0,0,PC 17609,49.5042,,C +495,0,3,"Stanley, Mr. Edward Roland",male,21,0,0,A/4 45380,8.05,,S +496,0,3,"Yousseff, Mr. Gerious",male,,0,0,2627,14.4583,,C +497,1,1,"Eustis, Miss. Elizabeth Mussey",female,54,1,0,36947,78.2667,D20,C +498,0,3,"Shellard, Mr. Frederick William",male,,0,0,C.A. 6212,15.1,,S +499,0,1,"Allison, Mrs. Hudson J C (Bessie Waldo Daniels)",female,25,1,2,113781,151.55,C22 C26,S +500,0,3,"Svensson, Mr. Olof",male,24,0,0,350035,7.7958,,S +501,0,3,"Calic, Mr. Petar",male,17,0,0,315086,8.6625,,S +502,0,3,"Canavan, Miss. Mary",female,21,0,0,364846,7.75,,Q +503,0,3,"O'Sullivan, Miss. Bridget Mary",female,,0,0,330909,7.6292,,Q +504,0,3,"Laitinen, Miss. Kristina Sofia",female,37,0,0,4135,9.5875,,S +505,1,1,"Maioni, Miss. Roberta",female,16,0,0,110152,86.5,B79,S +506,0,1,"Penasco y Castellana, Mr. Victor de Satode",male,18,1,0,PC 17758,108.9,C65,C +507,1,2,"Quick, Mrs. Frederick Charles (Jane Richards)",female,33,0,2,26360,26,,S +508,1,1,"Bradley, Mr. George (""George Arthur Brayton"")",male,,0,0,111427,26.55,,S +509,0,3,"Olsen, Mr. Henry Margido",male,28,0,0,C 4001,22.525,,S +510,1,3,"Lang, Mr. Fang",male,26,0,0,1601,56.4958,,S +511,1,3,"Daly, Mr. Eugene Patrick",male,29,0,0,382651,7.75,,Q +512,0,3,"Webber, Mr. James",male,,0,0,SOTON/OQ 3101316,8.05,,S +513,1,1,"McGough, Mr. James Robert",male,36,0,0,PC 17473,26.2875,E25,S +514,1,1,"Rothschild, Mrs. Martin (Elizabeth L. Barrett)",female,54,1,0,PC 17603,59.4,,C +515,0,3,"Coleff, Mr. Satio",male,24,0,0,349209,7.4958,,S +516,0,1,"Walker, Mr. William Anderson",male,47,0,0,36967,34.0208,D46,S +517,1,2,"Lemore, Mrs. (Amelia Milley)",female,34,0,0,C.A. 34260,10.5,F33,S +518,0,3,"Ryan, Mr. Patrick",male,,0,0,371110,24.15,,Q +519,1,2,"Angle, Mrs. William A (Florence ""Mary"" Agnes Hughes)",female,36,1,0,226875,26,,S +520,0,3,"Pavlovic, Mr. Stefo",male,32,0,0,349242,7.8958,,S +521,1,1,"Perreault, Miss. Anne",female,30,0,0,12749,93.5,B73,S +522,0,3,"Vovk, Mr. Janko",male,22,0,0,349252,7.8958,,S +523,0,3,"Lahoud, Mr. Sarkis",male,,0,0,2624,7.225,,C +524,1,1,"Hippach, Mrs. Louis Albert (Ida Sophia Fischer)",female,44,0,1,111361,57.9792,B18,C +525,0,3,"Kassem, Mr. Fared",male,,0,0,2700,7.2292,,C +526,0,3,"Farrell, Mr. James",male,40.5,0,0,367232,7.75,,Q +527,1,2,"Ridsdale, Miss. Lucy",female,50,0,0,W./C. 14258,10.5,,S +528,0,1,"Farthing, Mr. John",male,,0,0,PC 17483,221.7792,C95,S +529,0,3,"Salonen, Mr. Johan Werner",male,39,0,0,3101296,7.925,,S +530,0,2,"Hocking, Mr. Richard George",male,23,2,1,29104,11.5,,S +531,1,2,"Quick, Miss. Phyllis May",female,2,1,1,26360,26,,S +532,0,3,"Toufik, Mr. Nakli",male,,0,0,2641,7.2292,,C +533,0,3,"Elias, Mr. Joseph Jr",male,17,1,1,2690,7.2292,,C +534,1,3,"Peter, Mrs. Catherine (Catherine Rizk)",female,,0,2,2668,22.3583,,C +535,0,3,"Cacic, Miss. Marija",female,30,0,0,315084,8.6625,,S +536,1,2,"Hart, Miss. Eva Miriam",female,7,0,2,F.C.C. 13529,26.25,,S +537,0,1,"Butt, Major. Archibald Willingham",male,45,0,0,113050,26.55,B38,S +538,1,1,"LeRoy, Miss. Bertha",female,30,0,0,PC 17761,106.425,,C +539,0,3,"Risien, Mr. Samuel Beard",male,,0,0,364498,14.5,,S +540,1,1,"Frolicher, Miss. Hedwig Margaritha",female,22,0,2,13568,49.5,B39,C +541,1,1,"Crosby, Miss. Harriet R",female,36,0,2,WE/P 5735,71,B22,S +542,0,3,"Andersson, Miss. Ingeborg Constanzia",female,9,4,2,347082,31.275,,S +543,0,3,"Andersson, Miss. Sigrid Elisabeth",female,11,4,2,347082,31.275,,S +544,1,2,"Beane, Mr. Edward",male,32,1,0,2908,26,,S +545,0,1,"Douglas, Mr. Walter Donald",male,50,1,0,PC 17761,106.425,C86,C +546,0,1,"Nicholson, Mr. Arthur Ernest",male,64,0,0,693,26,,S +547,1,2,"Beane, Mrs. Edward (Ethel Clarke)",female,19,1,0,2908,26,,S +548,1,2,"Padro y Manent, Mr. Julian",male,,0,0,SC/PARIS 2146,13.8625,,C +549,0,3,"Goldsmith, Mr. Frank John",male,33,1,1,363291,20.525,,S +550,1,2,"Davies, Master. John Morgan Jr",male,8,1,1,C.A. 33112,36.75,,S +551,1,1,"Thayer, Mr. John Borland Jr",male,17,0,2,17421,110.8833,C70,C +552,0,2,"Sharp, Mr. Percival James R",male,27,0,0,244358,26,,S +553,0,3,"O'Brien, Mr. Timothy",male,,0,0,330979,7.8292,,Q +554,1,3,"Leeni, Mr. Fahim (""Philip Zenni"")",male,22,0,0,2620,7.225,,C +555,1,3,"Ohman, Miss. Velin",female,22,0,0,347085,7.775,,S +556,0,1,"Wright, Mr. George",male,62,0,0,113807,26.55,,S +557,1,1,"Duff Gordon, Lady. (Lucille Christiana Sutherland) (""Mrs Morgan"")",female,48,1,0,11755,39.6,A16,C +558,0,1,"Robbins, Mr. Victor",male,,0,0,PC 17757,227.525,,C +559,1,1,"Taussig, Mrs. Emil (Tillie Mandelbaum)",female,39,1,1,110413,79.65,E67,S +560,1,3,"de Messemaeker, Mrs. Guillaume Joseph (Emma)",female,36,1,0,345572,17.4,,S +561,0,3,"Morrow, Mr. Thomas Rowan",male,,0,0,372622,7.75,,Q +562,0,3,"Sivic, Mr. Husein",male,40,0,0,349251,7.8958,,S +563,0,2,"Norman, Mr. Robert Douglas",male,28,0,0,218629,13.5,,S +564,0,3,"Simmons, Mr. John",male,,0,0,SOTON/OQ 392082,8.05,,S +565,0,3,"Meanwell, Miss. (Marion Ogden)",female,,0,0,SOTON/O.Q. 392087,8.05,,S +566,0,3,"Davies, Mr. Alfred J",male,24,2,0,A/4 48871,24.15,,S +567,0,3,"Stoytcheff, Mr. Ilia",male,19,0,0,349205,7.8958,,S +568,0,3,"Palsson, Mrs. Nils (Alma Cornelia Berglund)",female,29,0,4,349909,21.075,,S +569,0,3,"Doharr, Mr. Tannous",male,,0,0,2686,7.2292,,C +570,1,3,"Jonsson, Mr. Carl",male,32,0,0,350417,7.8542,,S +571,1,2,"Harris, Mr. George",male,62,0,0,S.W./PP 752,10.5,,S +572,1,1,"Appleton, Mrs. Edward Dale (Charlotte Lamson)",female,53,2,0,11769,51.4792,C101,S +573,1,1,"Flynn, Mr. John Irwin (""Irving"")",male,36,0,0,PC 17474,26.3875,E25,S +574,1,3,"Kelly, Miss. Mary",female,,0,0,14312,7.75,,Q +575,0,3,"Rush, Mr. Alfred George John",male,16,0,0,A/4. 20589,8.05,,S +576,0,3,"Patchett, Mr. George",male,19,0,0,358585,14.5,,S +577,1,2,"Garside, Miss. Ethel",female,34,0,0,243880,13,,S +578,1,1,"Silvey, Mrs. William Baird (Alice Munger)",female,39,1,0,13507,55.9,E44,S +579,0,3,"Caram, Mrs. Joseph (Maria Elias)",female,,1,0,2689,14.4583,,C +580,1,3,"Jussila, Mr. Eiriik",male,32,0,0,STON/O 2. 3101286,7.925,,S +581,1,2,"Christy, Miss. Julie Rachel",female,25,1,1,237789,30,,S +582,1,1,"Thayer, Mrs. John Borland (Marian Longstreth Morris)",female,39,1,1,17421,110.8833,C68,C +583,0,2,"Downton, Mr. William James",male,54,0,0,28403,26,,S +584,0,1,"Ross, Mr. John Hugo",male,36,0,0,13049,40.125,A10,C +585,0,3,"Paulner, Mr. Uscher",male,,0,0,3411,8.7125,,C +586,1,1,"Taussig, Miss. Ruth",female,18,0,2,110413,79.65,E68,S +587,0,2,"Jarvis, Mr. John Denzil",male,47,0,0,237565,15,,S +588,1,1,"Frolicher-Stehli, Mr. Maxmillian",male,60,1,1,13567,79.2,B41,C +589,0,3,"Gilinski, Mr. Eliezer",male,22,0,0,14973,8.05,,S +590,0,3,"Murdlin, Mr. Joseph",male,,0,0,A./5. 3235,8.05,,S +591,0,3,"Rintamaki, Mr. Matti",male,35,0,0,STON/O 2. 3101273,7.125,,S +592,1,1,"Stephenson, Mrs. Walter Bertram (Martha Eustis)",female,52,1,0,36947,78.2667,D20,C +593,0,3,"Elsbury, Mr. William James",male,47,0,0,A/5 3902,7.25,,S +594,0,3,"Bourke, Miss. Mary",female,,0,2,364848,7.75,,Q +595,0,2,"Chapman, Mr. John Henry",male,37,1,0,SC/AH 29037,26,,S +596,0,3,"Van Impe, Mr. Jean Baptiste",male,36,1,1,345773,24.15,,S +597,1,2,"Leitch, Miss. Jessie Wills",female,,0,0,248727,33,,S +598,0,3,"Johnson, Mr. Alfred",male,49,0,0,LINE,0,,S +599,0,3,"Boulos, Mr. Hanna",male,,0,0,2664,7.225,,C +600,1,1,"Duff Gordon, Sir. Cosmo Edmund (""Mr Morgan"")",male,49,1,0,PC 17485,56.9292,A20,C +601,1,2,"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)",female,24,2,1,243847,27,,S +602,0,3,"Slabenoff, Mr. Petco",male,,0,0,349214,7.8958,,S +603,0,1,"Harrington, Mr. Charles H",male,,0,0,113796,42.4,,S +604,0,3,"Torber, Mr. Ernst William",male,44,0,0,364511,8.05,,S +605,1,1,"Homer, Mr. Harry (""Mr E Haven"")",male,35,0,0,111426,26.55,,C +606,0,3,"Lindell, Mr. Edvard Bengtsson",male,36,1,0,349910,15.55,,S +607,0,3,"Karaic, Mr. Milan",male,30,0,0,349246,7.8958,,S +608,1,1,"Daniel, Mr. Robert Williams",male,27,0,0,113804,30.5,,S +609,1,2,"Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)",female,22,1,2,SC/Paris 2123,41.5792,,C +610,1,1,"Shutes, Miss. Elizabeth W",female,40,0,0,PC 17582,153.4625,C125,S +611,0,3,"Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)",female,39,1,5,347082,31.275,,S +612,0,3,"Jardin, Mr. Jose Neto",male,,0,0,SOTON/O.Q. 3101305,7.05,,S +613,1,3,"Murphy, Miss. Margaret Jane",female,,1,0,367230,15.5,,Q +614,0,3,"Horgan, Mr. John",male,,0,0,370377,7.75,,Q +615,0,3,"Brocklebank, Mr. William Alfred",male,35,0,0,364512,8.05,,S +616,1,2,"Herman, Miss. Alice",female,24,1,2,220845,65,,S +617,0,3,"Danbom, Mr. Ernst Gilbert",male,34,1,1,347080,14.4,,S +618,0,3,"Lobb, Mrs. William Arthur (Cordelia K Stanlick)",female,26,1,0,A/5. 3336,16.1,,S +619,1,2,"Becker, Miss. Marion Louise",female,4,2,1,230136,39,F4,S +620,0,2,"Gavey, Mr. Lawrence",male,26,0,0,31028,10.5,,S +621,0,3,"Yasbeck, Mr. Antoni",male,27,1,0,2659,14.4542,,C +622,1,1,"Kimball, Mr. Edwin Nelson Jr",male,42,1,0,11753,52.5542,D19,S +623,1,3,"Nakid, Mr. Sahid",male,20,1,1,2653,15.7417,,C +624,0,3,"Hansen, Mr. Henry Damsgaard",male,21,0,0,350029,7.8542,,S +625,0,3,"Bowen, Mr. David John ""Dai""",male,21,0,0,54636,16.1,,S +626,0,1,"Sutton, Mr. Frederick",male,61,0,0,36963,32.3208,D50,S +627,0,2,"Kirkland, Rev. Charles Leonard",male,57,0,0,219533,12.35,,Q +628,1,1,"Longley, Miss. Gretchen Fiske",female,21,0,0,13502,77.9583,D9,S +629,0,3,"Bostandyeff, Mr. Guentcho",male,26,0,0,349224,7.8958,,S +630,0,3,"O'Connell, Mr. Patrick D",male,,0,0,334912,7.7333,,Q +631,1,1,"Barkworth, Mr. Algernon Henry Wilson",male,80,0,0,27042,30,A23,S +632,0,3,"Lundahl, Mr. Johan Svensson",male,51,0,0,347743,7.0542,,S +633,1,1,"Stahelin-Maeglin, Dr. Max",male,32,0,0,13214,30.5,B50,C +634,0,1,"Parr, Mr. William Henry Marsh",male,,0,0,112052,0,,S +635,0,3,"Skoog, Miss. Mabel",female,9,3,2,347088,27.9,,S +636,1,2,"Davis, Miss. Mary",female,28,0,0,237668,13,,S +637,0,3,"Leinonen, Mr. Antti Gustaf",male,32,0,0,STON/O 2. 3101292,7.925,,S +638,0,2,"Collyer, Mr. Harvey",male,31,1,1,C.A. 31921,26.25,,S +639,0,3,"Panula, Mrs. Juha (Maria Emilia Ojala)",female,41,0,5,3101295,39.6875,,S +640,0,3,"Thorneycroft, Mr. Percival",male,,1,0,376564,16.1,,S +641,0,3,"Jensen, Mr. Hans Peder",male,20,0,0,350050,7.8542,,S +642,1,1,"Sagesser, Mlle. Emma",female,24,0,0,PC 17477,69.3,B35,C +643,0,3,"Skoog, Miss. Margit Elizabeth",female,2,3,2,347088,27.9,,S +644,1,3,"Foo, Mr. Choong",male,,0,0,1601,56.4958,,S +645,1,3,"Baclini, Miss. Eugenie",female,0.75,2,1,2666,19.2583,,C +646,1,1,"Harper, Mr. Henry Sleeper",male,48,1,0,PC 17572,76.7292,D33,C +647,0,3,"Cor, Mr. Liudevit",male,19,0,0,349231,7.8958,,S +648,1,1,"Simonius-Blumer, Col. Oberst Alfons",male,56,0,0,13213,35.5,A26,C +649,0,3,"Willey, Mr. Edward",male,,0,0,S.O./P.P. 751,7.55,,S +650,1,3,"Stanley, Miss. Amy Zillah Elsie",female,23,0,0,CA. 2314,7.55,,S +651,0,3,"Mitkoff, Mr. Mito",male,,0,0,349221,7.8958,,S +652,1,2,"Doling, Miss. Elsie",female,18,0,1,231919,23,,S +653,0,3,"Kalvik, Mr. Johannes Halvorsen",male,21,0,0,8475,8.4333,,S +654,1,3,"O'Leary, Miss. Hanora ""Norah""",female,,0,0,330919,7.8292,,Q +655,0,3,"Hegarty, Miss. Hanora ""Nora""",female,18,0,0,365226,6.75,,Q +656,0,2,"Hickman, Mr. Leonard Mark",male,24,2,0,S.O.C. 14879,73.5,,S +657,0,3,"Radeff, Mr. Alexander",male,,0,0,349223,7.8958,,S +658,0,3,"Bourke, Mrs. John (Catherine)",female,32,1,1,364849,15.5,,Q +659,0,2,"Eitemiller, Mr. George Floyd",male,23,0,0,29751,13,,S +660,0,1,"Newell, Mr. Arthur Webster",male,58,0,2,35273,113.275,D48,C +661,1,1,"Frauenthal, Dr. Henry William",male,50,2,0,PC 17611,133.65,,S +662,0,3,"Badt, Mr. Mohamed",male,40,0,0,2623,7.225,,C +663,0,1,"Colley, Mr. Edward Pomeroy",male,47,0,0,5727,25.5875,E58,S +664,0,3,"Coleff, Mr. Peju",male,36,0,0,349210,7.4958,,S +665,1,3,"Lindqvist, Mr. Eino William",male,20,1,0,STON/O 2. 3101285,7.925,,S +666,0,2,"Hickman, Mr. Lewis",male,32,2,0,S.O.C. 14879,73.5,,S +667,0,2,"Butler, Mr. Reginald Fenton",male,25,0,0,234686,13,,S +668,0,3,"Rommetvedt, Mr. Knud Paust",male,,0,0,312993,7.775,,S +669,0,3,"Cook, Mr. Jacob",male,43,0,0,A/5 3536,8.05,,S +670,1,1,"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)",female,,1,0,19996,52,C126,S +671,1,2,"Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)",female,40,1,1,29750,39,,S +672,0,1,"Davidson, Mr. Thornton",male,31,1,0,F.C. 12750,52,B71,S +673,0,2,"Mitchell, Mr. Henry Michael",male,70,0,0,C.A. 24580,10.5,,S +674,1,2,"Wilhelms, Mr. Charles",male,31,0,0,244270,13,,S +675,0,2,"Watson, Mr. Ennis Hastings",male,,0,0,239856,0,,S +676,0,3,"Edvardsson, Mr. Gustaf Hjalmar",male,18,0,0,349912,7.775,,S +677,0,3,"Sawyer, Mr. Frederick Charles",male,24.5,0,0,342826,8.05,,S +678,1,3,"Turja, Miss. Anna Sofia",female,18,0,0,4138,9.8417,,S +679,0,3,"Goodwin, Mrs. Frederick (Augusta Tyler)",female,43,1,6,CA 2144,46.9,,S +680,1,1,"Cardeza, Mr. Thomas Drake Martinez",male,36,0,1,PC 17755,512.3292,B51 B53 B55,C +681,0,3,"Peters, Miss. Katie",female,,0,0,330935,8.1375,,Q +682,1,1,"Hassab, Mr. Hammad",male,27,0,0,PC 17572,76.7292,D49,C +683,0,3,"Olsvigen, Mr. Thor Anderson",male,20,0,0,6563,9.225,,S +684,0,3,"Goodwin, Mr. Charles Edward",male,14,5,2,CA 2144,46.9,,S +685,0,2,"Brown, Mr. Thomas William Solomon",male,60,1,1,29750,39,,S +686,0,2,"Laroche, Mr. Joseph Philippe Lemercier",male,25,1,2,SC/Paris 2123,41.5792,,C +687,0,3,"Panula, Mr. Jaako Arnold",male,14,4,1,3101295,39.6875,,S +688,0,3,"Dakic, Mr. Branko",male,19,0,0,349228,10.1708,,S +689,0,3,"Fischer, Mr. Eberhard Thelander",male,18,0,0,350036,7.7958,,S +690,1,1,"Madill, Miss. Georgette Alexandra",female,15,0,1,24160,211.3375,B5,S +691,1,1,"Dick, Mr. Albert Adrian",male,31,1,0,17474,57,B20,S +692,1,3,"Karun, Miss. Manca",female,4,0,1,349256,13.4167,,C +693,1,3,"Lam, Mr. Ali",male,,0,0,1601,56.4958,,S +694,0,3,"Saad, Mr. Khalil",male,25,0,0,2672,7.225,,C +695,0,1,"Weir, Col. John",male,60,0,0,113800,26.55,,S +696,0,2,"Chapman, Mr. Charles Henry",male,52,0,0,248731,13.5,,S +697,0,3,"Kelly, Mr. James",male,44,0,0,363592,8.05,,S +698,1,3,"Mullens, Miss. Katherine ""Katie""",female,,0,0,35852,7.7333,,Q +699,0,1,"Thayer, Mr. John Borland",male,49,1,1,17421,110.8833,C68,C +700,0,3,"Humblen, Mr. Adolf Mathias Nicolai Olsen",male,42,0,0,348121,7.65,F G63,S +701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)",female,18,1,0,PC 17757,227.525,C62 C64,C +702,1,1,"Silverthorne, Mr. Spencer Victor",male,35,0,0,PC 17475,26.2875,E24,S +703,0,3,"Barbara, Miss. Saiide",female,18,0,1,2691,14.4542,,C +704,0,3,"Gallagher, Mr. Martin",male,25,0,0,36864,7.7417,,Q +705,0,3,"Hansen, Mr. Henrik Juul",male,26,1,0,350025,7.8542,,S +706,0,2,"Morley, Mr. Henry Samuel (""Mr Henry Marshall"")",male,39,0,0,250655,26,,S +707,1,2,"Kelly, Mrs. Florence ""Fannie""",female,45,0,0,223596,13.5,,S +708,1,1,"Calderhead, Mr. Edward Pennington",male,42,0,0,PC 17476,26.2875,E24,S +709,1,1,"Cleaver, Miss. Alice",female,22,0,0,113781,151.55,,S +710,1,3,"Moubarek, Master. Halim Gonios (""William George"")",male,,1,1,2661,15.2458,,C +711,1,1,"Mayne, Mlle. Berthe Antonine (""Mrs de Villiers"")",female,24,0,0,PC 17482,49.5042,C90,C +712,0,1,"Klaber, Mr. Herman",male,,0,0,113028,26.55,C124,S +713,1,1,"Taylor, Mr. Elmer Zebley",male,48,1,0,19996,52,C126,S +714,0,3,"Larsson, Mr. August Viktor",male,29,0,0,7545,9.4833,,S +715,0,2,"Greenberg, Mr. Samuel",male,52,0,0,250647,13,,S +716,0,3,"Soholt, Mr. Peter Andreas Lauritz Andersen",male,19,0,0,348124,7.65,F G73,S +717,1,1,"Endres, Miss. Caroline Louise",female,38,0,0,PC 17757,227.525,C45,C +718,1,2,"Troutt, Miss. Edwina Celia ""Winnie""",female,27,0,0,34218,10.5,E101,S +719,0,3,"McEvoy, Mr. Michael",male,,0,0,36568,15.5,,Q +720,0,3,"Johnson, Mr. Malkolm Joackim",male,33,0,0,347062,7.775,,S +721,1,2,"Harper, Miss. Annie Jessie ""Nina""",female,6,0,1,248727,33,,S +722,0,3,"Jensen, Mr. Svend Lauritz",male,17,1,0,350048,7.0542,,S +723,0,2,"Gillespie, Mr. William Henry",male,34,0,0,12233,13,,S +724,0,2,"Hodges, Mr. Henry Price",male,50,0,0,250643,13,,S +725,1,1,"Chambers, Mr. Norman Campbell",male,27,1,0,113806,53.1,E8,S +726,0,3,"Oreskovic, Mr. Luka",male,20,0,0,315094,8.6625,,S +727,1,2,"Renouf, Mrs. Peter Henry (Lillian Jefferys)",female,30,3,0,31027,21,,S +728,1,3,"Mannion, Miss. Margareth",female,,0,0,36866,7.7375,,Q +729,0,2,"Bryhl, Mr. Kurt Arnold Gottfrid",male,25,1,0,236853,26,,S +730,0,3,"Ilmakangas, Miss. Pieta Sofia",female,25,1,0,STON/O2. 3101271,7.925,,S +731,1,1,"Allen, Miss. Elisabeth Walton",female,29,0,0,24160,211.3375,B5,S +732,0,3,"Hassan, Mr. Houssein G N",male,11,0,0,2699,18.7875,,C +733,0,2,"Knight, Mr. Robert J",male,,0,0,239855,0,,S +734,0,2,"Berriman, Mr. William John",male,23,0,0,28425,13,,S +735,0,2,"Troupiansky, Mr. Moses Aaron",male,23,0,0,233639,13,,S +736,0,3,"Williams, Mr. Leslie",male,28.5,0,0,54636,16.1,,S +737,0,3,"Ford, Mrs. Edward (Margaret Ann Watson)",female,48,1,3,W./C. 6608,34.375,,S +738,1,1,"Lesurer, Mr. Gustave J",male,35,0,0,PC 17755,512.3292,B101,C +739,0,3,"Ivanoff, Mr. Kanio",male,,0,0,349201,7.8958,,S +740,0,3,"Nankoff, Mr. Minko",male,,0,0,349218,7.8958,,S +741,1,1,"Hawksford, Mr. Walter James",male,,0,0,16988,30,D45,S +742,0,1,"Cavendish, Mr. Tyrell William",male,36,1,0,19877,78.85,C46,S +743,1,1,"Ryerson, Miss. Susan Parker ""Suzette""",female,21,2,2,PC 17608,262.375,B57 B59 B63 B66,C +744,0,3,"McNamee, Mr. Neal",male,24,1,0,376566,16.1,,S +745,1,3,"Stranden, Mr. Juho",male,31,0,0,STON/O 2. 3101288,7.925,,S +746,0,1,"Crosby, Capt. Edward Gifford",male,70,1,1,WE/P 5735,71,B22,S +747,0,3,"Abbott, Mr. Rossmore Edward",male,16,1,1,C.A. 2673,20.25,,S +748,1,2,"Sinkkonen, Miss. Anna",female,30,0,0,250648,13,,S +749,0,1,"Marvin, Mr. Daniel Warner",male,19,1,0,113773,53.1,D30,S +750,0,3,"Connaghton, Mr. Michael",male,31,0,0,335097,7.75,,Q +751,1,2,"Wells, Miss. Joan",female,4,1,1,29103,23,,S +752,1,3,"Moor, Master. Meier",male,6,0,1,392096,12.475,E121,S +753,0,3,"Vande Velde, Mr. Johannes Joseph",male,33,0,0,345780,9.5,,S +754,0,3,"Jonkoff, Mr. Lalio",male,23,0,0,349204,7.8958,,S +755,1,2,"Herman, Mrs. Samuel (Jane Laver)",female,48,1,2,220845,65,,S +756,1,2,"Hamalainen, Master. Viljo",male,0.67,1,1,250649,14.5,,S +757,0,3,"Carlsson, Mr. August Sigfrid",male,28,0,0,350042,7.7958,,S +758,0,2,"Bailey, Mr. Percy Andrew",male,18,0,0,29108,11.5,,S +759,0,3,"Theobald, Mr. Thomas Leonard",male,34,0,0,363294,8.05,,S +760,1,1,"Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)",female,33,0,0,110152,86.5,B77,S +761,0,3,"Garfirth, Mr. John",male,,0,0,358585,14.5,,S +762,0,3,"Nirva, Mr. Iisakki Antino Aijo",male,41,0,0,SOTON/O2 3101272,7.125,,S +763,1,3,"Barah, Mr. Hanna Assi",male,20,0,0,2663,7.2292,,C +764,1,1,"Carter, Mrs. William Ernest (Lucile Polk)",female,36,1,2,113760,120,B96 B98,S +765,0,3,"Eklund, Mr. Hans Linus",male,16,0,0,347074,7.775,,S +766,1,1,"Hogeboom, Mrs. John C (Anna Andrews)",female,51,1,0,13502,77.9583,D11,S +767,0,1,"Brewe, Dr. Arthur Jackson",male,,0,0,112379,39.6,,C +768,0,3,"Mangan, Miss. Mary",female,30.5,0,0,364850,7.75,,Q +769,0,3,"Moran, Mr. Daniel J",male,,1,0,371110,24.15,,Q +770,0,3,"Gronnestad, Mr. Daniel Danielsen",male,32,0,0,8471,8.3625,,S +771,0,3,"Lievens, Mr. Rene Aime",male,24,0,0,345781,9.5,,S +772,0,3,"Jensen, Mr. Niels Peder",male,48,0,0,350047,7.8542,,S +773,0,2,"Mack, Mrs. (Mary)",female,57,0,0,S.O./P.P. 3,10.5,E77,S +774,0,3,"Elias, Mr. Dibo",male,,0,0,2674,7.225,,C +775,1,2,"Hocking, Mrs. Elizabeth (Eliza Needs)",female,54,1,3,29105,23,,S +776,0,3,"Myhrman, Mr. Pehr Fabian Oliver Malkolm",male,18,0,0,347078,7.75,,S +777,0,3,"Tobin, Mr. Roger",male,,0,0,383121,7.75,F38,Q +778,1,3,"Emanuel, Miss. Virginia Ethel",female,5,0,0,364516,12.475,,S +779,0,3,"Kilgannon, Mr. Thomas J",male,,0,0,36865,7.7375,,Q +780,1,1,"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)",female,43,0,1,24160,211.3375,B3,S +781,1,3,"Ayoub, Miss. Banoura",female,13,0,0,2687,7.2292,,C +782,1,1,"Dick, Mrs. Albert Adrian (Vera Gillespie)",female,17,1,0,17474,57,B20,S +783,0,1,"Long, Mr. Milton Clyde",male,29,0,0,113501,30,D6,S +784,0,3,"Johnston, Mr. Andrew G",male,,1,2,W./C. 6607,23.45,,S +785,0,3,"Ali, Mr. William",male,25,0,0,SOTON/O.Q. 3101312,7.05,,S +786,0,3,"Harmer, Mr. Abraham (David Lishin)",male,25,0,0,374887,7.25,,S +787,1,3,"Sjoblom, Miss. Anna Sofia",female,18,0,0,3101265,7.4958,,S +788,0,3,"Rice, Master. George Hugh",male,8,4,1,382652,29.125,,Q +789,1,3,"Dean, Master. Bertram Vere",male,1,1,2,C.A. 2315,20.575,,S +790,0,1,"Guggenheim, Mr. Benjamin",male,46,0,0,PC 17593,79.2,B82 B84,C +791,0,3,"Keane, Mr. Andrew ""Andy""",male,,0,0,12460,7.75,,Q +792,0,2,"Gaskell, Mr. Alfred",male,16,0,0,239865,26,,S +793,0,3,"Sage, Miss. Stella Anna",female,,8,2,CA. 2343,69.55,,S +794,0,1,"Hoyt, Mr. William Fisher",male,,0,0,PC 17600,30.6958,,C +795,0,3,"Dantcheff, Mr. Ristiu",male,25,0,0,349203,7.8958,,S +796,0,2,"Otter, Mr. Richard",male,39,0,0,28213,13,,S +797,1,1,"Leader, Dr. Alice (Farnham)",female,49,0,0,17465,25.9292,D17,S +798,1,3,"Osman, Mrs. Mara",female,31,0,0,349244,8.6833,,S +799,0,3,"Ibrahim Shawah, Mr. Yousseff",male,30,0,0,2685,7.2292,,C +800,0,3,"Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)",female,30,1,1,345773,24.15,,S +801,0,2,"Ponesell, Mr. Martin",male,34,0,0,250647,13,,S +802,1,2,"Collyer, Mrs. Harvey (Charlotte Annie Tate)",female,31,1,1,C.A. 31921,26.25,,S +803,1,1,"Carter, Master. William Thornton II",male,11,1,2,113760,120,B96 B98,S +804,1,3,"Thomas, Master. Assad Alexander",male,0.42,0,1,2625,8.5167,,C +805,1,3,"Hedman, Mr. Oskar Arvid",male,27,0,0,347089,6.975,,S +806,0,3,"Johansson, Mr. Karl Johan",male,31,0,0,347063,7.775,,S +807,0,1,"Andrews, Mr. Thomas Jr",male,39,0,0,112050,0,A36,S +808,0,3,"Pettersson, Miss. Ellen Natalia",female,18,0,0,347087,7.775,,S +809,0,2,"Meyer, Mr. August",male,39,0,0,248723,13,,S +810,1,1,"Chambers, Mrs. Norman Campbell (Bertha Griggs)",female,33,1,0,113806,53.1,E8,S +811,0,3,"Alexander, Mr. William",male,26,0,0,3474,7.8875,,S +812,0,3,"Lester, Mr. James",male,39,0,0,A/4 48871,24.15,,S +813,0,2,"Slemen, Mr. Richard James",male,35,0,0,28206,10.5,,S +814,0,3,"Andersson, Miss. Ebba Iris Alfrida",female,6,4,2,347082,31.275,,S +815,0,3,"Tomlin, Mr. Ernest Portage",male,30.5,0,0,364499,8.05,,S +816,0,1,"Fry, Mr. Richard",male,,0,0,112058,0,B102,S +817,0,3,"Heininen, Miss. Wendla Maria",female,23,0,0,STON/O2. 3101290,7.925,,S +818,0,2,"Mallet, Mr. Albert",male,31,1,1,S.C./PARIS 2079,37.0042,,C +819,0,3,"Holm, Mr. John Fredrik Alexander",male,43,0,0,C 7075,6.45,,S +820,0,3,"Skoog, Master. Karl Thorsten",male,10,3,2,347088,27.9,,S +821,1,1,"Hays, Mrs. Charles Melville (Clara Jennings Gregg)",female,52,1,1,12749,93.5,B69,S +822,1,3,"Lulic, Mr. Nikola",male,27,0,0,315098,8.6625,,S +823,0,1,"Reuchlin, Jonkheer. John George",male,38,0,0,19972,0,,S +824,1,3,"Moor, Mrs. (Beila)",female,27,0,1,392096,12.475,E121,S +825,0,3,"Panula, Master. Urho Abraham",male,2,4,1,3101295,39.6875,,S +826,0,3,"Flynn, Mr. John",male,,0,0,368323,6.95,,Q +827,0,3,"Lam, Mr. Len",male,,0,0,1601,56.4958,,S +828,1,2,"Mallet, Master. Andre",male,1,0,2,S.C./PARIS 2079,37.0042,,C +829,1,3,"McCormack, Mr. Thomas Joseph",male,,0,0,367228,7.75,,Q +830,1,1,"Stone, Mrs. George Nelson (Martha Evelyn)",female,62,0,0,113572,80,B28, +831,1,3,"Yasbeck, Mrs. Antoni (Selini Alexander)",female,15,1,0,2659,14.4542,,C +832,1,2,"Richards, Master. George Sibley",male,0.83,1,1,29106,18.75,,S +833,0,3,"Saad, Mr. Amin",male,,0,0,2671,7.2292,,C +834,0,3,"Augustsson, Mr. Albert",male,23,0,0,347468,7.8542,,S +835,0,3,"Allum, Mr. Owen George",male,18,0,0,2223,8.3,,S +836,1,1,"Compton, Miss. Sara Rebecca",female,39,1,1,PC 17756,83.1583,E49,C +837,0,3,"Pasic, Mr. Jakob",male,21,0,0,315097,8.6625,,S +838,0,3,"Sirota, Mr. Maurice",male,,0,0,392092,8.05,,S +839,1,3,"Chip, Mr. Chang",male,32,0,0,1601,56.4958,,S +840,1,1,"Marechal, Mr. Pierre",male,,0,0,11774,29.7,C47,C +841,0,3,"Alhomaki, Mr. Ilmari Rudolf",male,20,0,0,SOTON/O2 3101287,7.925,,S +842,0,2,"Mudd, Mr. Thomas Charles",male,16,0,0,S.O./P.P. 3,10.5,,S +843,1,1,"Serepeca, Miss. Augusta",female,30,0,0,113798,31,,C +844,0,3,"Lemberopolous, Mr. Peter L",male,34.5,0,0,2683,6.4375,,C +845,0,3,"Culumovic, Mr. Jeso",male,17,0,0,315090,8.6625,,S +846,0,3,"Abbing, Mr. Anthony",male,42,0,0,C.A. 5547,7.55,,S +847,0,3,"Sage, Mr. Douglas Bullen",male,,8,2,CA. 2343,69.55,,S +848,0,3,"Markoff, Mr. Marin",male,35,0,0,349213,7.8958,,C +849,0,2,"Harper, Rev. John",male,28,0,1,248727,33,,S +850,1,1,"Goldenberg, Mrs. Samuel L (Edwiga Grabowska)",female,,1,0,17453,89.1042,C92,C +851,0,3,"Andersson, Master. Sigvard Harald Elias",male,4,4,2,347082,31.275,,S +852,0,3,"Svensson, Mr. Johan",male,74,0,0,347060,7.775,,S +853,0,3,"Boulos, Miss. Nourelain",female,9,1,1,2678,15.2458,,C +854,1,1,"Lines, Miss. Mary Conover",female,16,0,1,PC 17592,39.4,D28,S +855,0,2,"Carter, Mrs. Ernest Courtenay (Lilian Hughes)",female,44,1,0,244252,26,,S +856,1,3,"Aks, Mrs. Sam (Leah Rosen)",female,18,0,1,392091,9.35,,S +857,1,1,"Wick, Mrs. George Dennick (Mary Hitchcock)",female,45,1,1,36928,164.8667,,S +858,1,1,"Daly, Mr. Peter Denis ",male,51,0,0,113055,26.55,E17,S +859,1,3,"Baclini, Mrs. Solomon (Latifa Qurban)",female,24,0,3,2666,19.2583,,C +860,0,3,"Razi, Mr. Raihed",male,,0,0,2629,7.2292,,C +861,0,3,"Hansen, Mr. Claus Peter",male,41,2,0,350026,14.1083,,S +862,0,2,"Giles, Mr. Frederick Edward",male,21,1,0,28134,11.5,,S +863,1,1,"Swift, Mrs. Frederick Joel (Margaret Welles Barron)",female,48,0,0,17466,25.9292,D17,S +864,0,3,"Sage, Miss. Dorothy Edith ""Dolly""",female,,8,2,CA. 2343,69.55,,S +865,0,2,"Gill, Mr. John William",male,24,0,0,233866,13,,S +866,1,2,"Bystrom, Mrs. (Karolina)",female,42,0,0,236852,13,,S +867,1,2,"Duran y More, Miss. Asuncion",female,27,1,0,SC/PARIS 2149,13.8583,,C +868,0,1,"Roebling, Mr. Washington Augustus II",male,31,0,0,PC 17590,50.4958,A24,S +869,0,3,"van Melkebeke, Mr. Philemon",male,,0,0,345777,9.5,,S +870,1,3,"Johnson, Master. Harold Theodor",male,4,1,1,347742,11.1333,,S +871,0,3,"Balkic, Mr. Cerin",male,26,0,0,349248,7.8958,,S +872,1,1,"Beckwith, Mrs. Richard Leonard (Sallie Monypeny)",female,47,1,1,11751,52.5542,D35,S +873,0,1,"Carlsson, Mr. Frans Olof",male,33,0,0,695,5,B51 B53 B55,S +874,0,3,"Vander Cruyssen, Mr. Victor",male,47,0,0,345765,9,,S +875,1,2,"Abelson, Mrs. Samuel (Hannah Wizosky)",female,28,1,0,P/PP 3381,24,,C +876,1,3,"Najib, Miss. Adele Kiamie ""Jane""",female,15,0,0,2667,7.225,,C +877,0,3,"Gustafsson, Mr. Alfred Ossian",male,20,0,0,7534,9.8458,,S +878,0,3,"Petroff, Mr. Nedelio",male,19,0,0,349212,7.8958,,S +879,0,3,"Laleff, Mr. Kristo",male,,0,0,349217,7.8958,,S +880,1,1,"Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)",female,56,0,1,11767,83.1583,C50,C +881,1,2,"Shelley, Mrs. William (Imanita Parrish Hall)",female,25,0,1,230433,26,,S +882,0,3,"Markun, Mr. Johann",male,33,0,0,349257,7.8958,,S +883,0,3,"Dahlberg, Miss. Gerda Ulrika",female,22,0,0,7552,10.5167,,S +884,0,2,"Banfield, Mr. Frederick James",male,28,0,0,C.A./SOTON 34068,10.5,,S +885,0,3,"Sutehall, Mr. Henry Jr",male,25,0,0,SOTON/OQ 392076,7.05,,S +886,0,3,"Rice, Mrs. William (Margaret Norton)",female,39,0,5,382652,29.125,,Q +887,0,2,"Montvila, Rev. Juozas",male,27,0,0,211536,13,,S +888,1,1,"Graham, Miss. Margaret Edith",female,19,0,0,112053,30,B42,S +889,0,3,"Johnston, Miss. Catherine Helen ""Carrie""",female,,1,2,W./C. 6607,23.45,,S +890,1,1,"Behr, Mr. Karl Howell",male,26,0,0,111369,30,C148,C +891,0,3,"Dooley, Mr. Patrick",male,32,0,0,370376,7.75,,Q diff --git a/img/types-of-data-1024x555-1.png b/img/types-of-data-1024x555-1.png new file mode 100644 index 0000000000000000000000000000000000000000..88b26c393e4ec3ab752f73ea0e56d4d62d42aa64 GIT binary patch literal 12182 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 F{{mX;@DBh0 literal 0 HcmV?d00001 diff --git a/lab-01.ipynb b/lab-01.ipynb index d9c420e..7918aec 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -8,6 +8,20 @@ "# Lab 01 - Data exploration and preprocessing" ] }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fbc1481d", + "metadata": {}, + "outputs": [], + "source": [ + "# import dependencies\n", + "import os\n", + "\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, { "cell_type": "markdown", "id": "2c858f34", @@ -16,6 +30,137 @@ "## Introduction" ] }, + { + "cell_type": "markdown", + "id": "93e36221", + "metadata": {}, + "source": [ + "### Dataset description\n", + "\n", + "The sinking of the Titanic is one of the most infamous shipwrecks in history.\n", + "\n", + "On April 15, 1912, during her maiden voyage, the widely considered “unsinkable” RMS Titanic sank after colliding with an iceberg. Unfortunately, there weren’t enough lifeboats for everyone onboard, resulting in the death of 1502 out of 2224 passengers and crew.\n", + "\n", + "While there was some element of luck involved in surviving, it seems some groups of people were more likely to survive than others.\n", + "\n", + "In this challenge, we ask you to build a predictive model that answers the question: “what sorts of people were more likely to survive?” using passenger data (ie name, age, gender, socio-economic class, etc).\n" + ] + }, + { + "cell_type": "markdown", + "id": "7071aecd", + "metadata": {}, + "source": [ + "| Column Name | Data Type | Description | Possible Values |\n", + "|-------------|-----------|-------------|----------------|\n", + "| PassengerId | Integer | Unique identifier for each passenger | 1, 2, 3, etc. |\n", + "| Survived | Integer | Survival indicator | 0 = No (Did not survive), 1 = Yes (Survived) |\n", + "| Pclass | Integer | Passenger ticket class | 1 = 1st/Upper, 2 = 2nd/Middle, 3 = 3rd/Lower |\n", + "| Name | String | Full name of the passenger | \"Braund, Mr. Owen Harris\", etc. |\n", + "| Sex | String | Gender of the passenger | \"male\", \"female\" |\n", + "| Age | Float | Age of the passenger in years | 22.0, 40.0, etc. (may contain missing values) |\n", + "| SibSp | Integer | Number of siblings/spouses aboard the Titanic | 0, 1, 2, etc. |\n", + "| Parch | Integer | Number of parents/children aboard the Titanic | 0, 1, 2, etc. |\n", + "| Ticket | String | Ticket number | \"A/5 21171\", \"PC 17599\", etc. |\n", + "| Fare | Float | Price paid for the ticket | 7.25, 71.2833, etc. |\n", + "| Cabin | String | Cabin number | \"C85\", \"E46\", etc. (many missing values) |\n", + "| Embarked | String | Port of embarkation | \"C\" = Cherbourg, \"Q\" = Queenstown, \"S\" = Southampton |" + ] + }, + { + "cell_type": "markdown", + "id": "b5866566", + "metadata": {}, + "source": [ + "### Objective of the lab\n", + "\n", + "The quality of the data and the amount of useful information that it contains are key factors that determine how well a machine learning algorithm can learn. Therefore, it is absolutely critical that we make sure to examine and preprocess a dataset before we feed it to a learning algorithm. \n", + "\n", + "In this laboratory we will explore the data exploration and preprocessing pipeline of a dataset for a machine learning lab" + ] + }, + { + "cell_type": "markdown", + "id": "2938e958", + "metadata": {}, + "source": [ + "#### What is a Dataset?\n", + "\n", + "A data set (or dataset) is a collection of data. In the case of tabular data, a data set corresponds to one or more database tables, where every **column** of a table represents a particular **variable**, and each **row** corresponds to a given **record of the data** set in question. The data set lists values for each of the variables, such as for example height and weight of an object, for each member of the data set. Data sets can also consist of a collection of documents or files\n", + "\n", + "Several characteristics define a data set's structure and properties. These include the number and types of the attributes or variables, and various statistical measures applicable to them.\n", + "\n", + "The values may be numbers, such as real numbers or integers, for example representing a person's height in centimeters, but may also be nominal data (i.e., not consisting of numerical values), for example representing a person's ethnicity. More generally, values may be of any of the kinds described as a level of measurement.\n", + "\n", + "Missing values may exist, which must be indicated somehow.\n", + "\n", + "[Data set - Wikipedia](https://en.wikipedia.org/wiki/Data_set)" + ] + }, + { + "cell_type": "markdown", + "id": "bad7a3aa", + "metadata": {}, + "source": [ + "#### What are the different types of data?\n", + "\n", + "The two main types of data are:\n", + "\n", + "- Qualitative Data\n", + "- Quantitative Data\n", + "\n", + "![types-of-data-img](img\\types-of-data-1024x555-1.png)\n", + "\n", + "---\n", + "\n", + "**Qualitative or Categorical Data**\n", + " \n", + "Qualitative or Categorical Data is a type of data that can’t be measured or counted in the form of numbers. These types of data are sorted by category, not by number. That’s why it is also known as Categorical Data. \n", + "\n", + "These data consist of audio, images, symbols, or text. The gender of a person, i.e., male, female, or others, is qualitative data.\n", + "\n", + "Qualitative data tells about the perception of people. This data helps market researchers understand the customers’ tastes and then design their ideas and strategies accordingly. \n", + "\n", + "The Qualitative data are further classified into two parts :\n", + " \n", + "- Nominal Data\n", + " Nominal Data is used to label variables without any order or quantitative value. The color of hair can be considered nominal data, as one color can’t be compared with another color.\n", + "\n", + " With the help of nominal data, we can’t do any numerical tasks or can’t give any order to sort the data. These data don’t have any meaningful order; their values are distributed into distinct categories.\n", + "\n", + "- Ordinal Data\n", + "\n", + " Ordinal data have natural ordering where a number is present in some kind of order by their position on the scale. These data are used for observation like customer satisfaction, happiness, etc., but we can’t do any arithmetical tasks on them. \n", + "\n", + " Ordinal data is qualitative data for which their values have some kind of relative position. These kinds of data can be considered “in-between” qualitative and quantitative data.\n", + "\n", + " The ordinal data only shows the sequences and cannot use for statistical analysis. Compared to nominal data, ordinal data have some kind of order that is not present in nominal data. \n", + "\n", + "--- \n", + "\n", + "**Quantitative Data**\n", + " \n", + "Quantitative data is a type of data that can be expressed in numerical values, making it countable and including statistical data analysis. These kinds of data are also known as Numerical data.\n", + "\n", + "It answers the questions like “how much,” “how many,” and “how often.” For example, the price of a phone, the computer’s ram, the height or weight of a person, etc., falls under quantitative data. \n", + "\n", + "Quantitative data can be used for statistical manipulation. These data can be represented on a wide variety of graphs and charts, such as bar graphs, histograms, scatter plots, boxplots, pie charts, line graphs, etc.\n", + "\n", + "- Discrete Data\n", + "\n", + " The term discrete means distinct or separate. The discrete data contain the values that fall under integers or whole numbers. The total number of students in a class is an example of discrete data. These data can’t be broken into decimal or fraction values.\n", + "\n", + " The discrete data are countable and have finite values; their subdivision is not possible. These data are represented mainly by a bar graph, number line, or frequency table.\n", + "\n", + "- Continuous Data\n", + "\n", + " Continuous data are in the form of fractional numbers. It can be the version of an android phone, the height of a person, the length of an object, etc. Continuous data represents information that can be divided into smaller levels. The continuous variable can take any value within a range. \n", + "\n", + " The key difference between discrete and continuous data is that discrete data contains the integer or whole number. Still, continuous data stores the fractional numbers to record different types of data such as temperature, height, width, time, speed, etc.\n", + "\n", + "[Types Of Data - Great Learning](https://www.mygreatlearning.com/blog/types-of-data/)" + ] + }, { "cell_type": "markdown", "id": "5b35bcc3", @@ -53,7 +198,7 @@ "id": "da3dba6c", "metadata": {}, "source": [ - "## Data Visualization" + "## Basic Data Visualization" ] }, { From 649b718103b0895dba7d27d04176f133d814a479 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sat, 19 Apr 2025 17:31:59 +0200 Subject: [PATCH 06/33] Refine introduction text in Lab 01 notebook for clarity --- lab-01.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 7918aec..bd1455c 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -76,7 +76,7 @@ "\n", "The quality of the data and the amount of useful information that it contains are key factors that determine how well a machine learning algorithm can learn. Therefore, it is absolutely critical that we make sure to examine and preprocess a dataset before we feed it to a learning algorithm. \n", "\n", - "In this laboratory we will explore the data exploration and preprocessing pipeline of a dataset for a machine learning lab" + "In this laboratory we will explore the data exploration and preprocessing pipeline." ] }, { From 499feb52fc356274378b421aaa3d1b83c13d82db Mon Sep 17 00:00:00 2001 From: Basarans Date: Sat, 19 Apr 2025 22:54:53 +0200 Subject: [PATCH 07/33] Update lab-01.ipynb --- lab-01.ipynb | 547 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 542 insertions(+), 5 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index bd1455c..b62ad30 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -166,7 +166,261 @@ "id": "5b35bcc3", "metadata": {}, "source": [ - "## Dataset Loading" + "## Dataset Loading\n", + "\n", + "To start working with any dataset in Python, we typically use the pandas library, which allows us to load, manipulate, and analyze data easily in tabular form.\n", + "\n", + "In this case, the Titanic dataset is available in a CSV file. We'll load it using pandas.read_csv().\n", + "\n", + "For loading file we need Pandas library.\n", + "\n", + "What is Pandas? \n", + "\n", + "Pandas is one of the most important and widely-used Python libraries in data science, data analysis, and machine learning.\n", + "\n", + "It was created specifically to make working with structured data (like tables and spreadsheets) fast, flexible, and expressive.\n", + "\n", + "The name \"pandas\" is derived from \"Panel Data\", which is an econometrics term for multidimensional structured data, and also a fun nod to the panda bear 🐼." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8c070b48", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting pandas\n", + " Downloading pandas-2.2.3-cp313-cp313-win_amd64.whl.metadata (19 kB)\n", + "Collecting numpy>=1.26.0 (from pandas)\n", + " Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl.metadata (60 kB)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from pandas) (2.9.0.post0)\n", + "Collecting pytz>=2020.1 (from pandas)\n", + " Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)\n", + "Collecting tzdata>=2022.7 (from pandas)\n", + " Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", + "Downloading pandas-2.2.3-cp313-cp313-win_amd64.whl (11.5 MB)\n", + " ---------------------------------------- 0.0/11.5 MB ? eta -:--:--\n", + " --- ------------------------------------ 1.0/11.5 MB 5.6 MB/s eta 0:00:02\n", + " ------- -------------------------------- 2.1/11.5 MB 5.6 MB/s eta 0:00:02\n", + " ----------- ---------------------------- 3.4/11.5 MB 5.7 MB/s eta 0:00:02\n", + " --------------- ------------------------ 4.5/11.5 MB 5.4 MB/s eta 0:00:02\n", + " ----------------- ---------------------- 5.0/11.5 MB 5.2 MB/s eta 0:00:02\n", + " -------------------- ------------------- 5.8/11.5 MB 4.6 MB/s eta 0:00:02\n", + " ---------------------- ----------------- 6.6/11.5 MB 4.5 MB/s eta 0:00:02\n", + " ------------------------- -------------- 7.3/11.5 MB 4.3 MB/s eta 0:00:01\n", + " ----------------------------- ---------- 8.4/11.5 MB 4.4 MB/s eta 0:00:01\n", + " ------------------------------ --------- 8.7/11.5 MB 4.4 MB/s eta 0:00:01\n", + " -------------------------------- ------- 9.4/11.5 MB 4.0 MB/s eta 0:00:01\n", + " ---------------------------------- ----- 10.0/11.5 MB 4.0 MB/s eta 0:00:01\n", + " -------------------------------------- - 11.0/11.5 MB 4.0 MB/s eta 0:00:01\n", + " --------------------------------------- 11.3/11.5 MB 3.9 MB/s eta 0:00:01\n", + " ---------------------------------------- 11.5/11.5 MB 3.6 MB/s eta 0:00:00\n", + "Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl (12.6 MB)\n", + " ---------------------------------------- 0.0/12.6 MB ? eta -:--:--\n", + " -- ------------------------------------- 0.8/12.6 MB 3.6 MB/s eta 0:00:04\n", + " --- ------------------------------------ 1.0/12.6 MB 2.4 MB/s eta 0:00:05\n", + " ------ --------------------------------- 2.1/12.6 MB 3.2 MB/s eta 0:00:04\n", + " ---------- ----------------------------- 3.4/12.6 MB 4.0 MB/s eta 0:00:03\n", + " ------------- -------------------------- 4.2/12.6 MB 4.2 MB/s eta 0:00:02\n", + " --------------- ------------------------ 5.0/12.6 MB 3.9 MB/s eta 0:00:02\n", + " ---------------- ----------------------- 5.2/12.6 MB 3.9 MB/s eta 0:00:02\n", + " ------------------- -------------------- 6.0/12.6 MB 3.5 MB/s eta 0:00:02\n", + " ------------------- -------------------- 6.3/12.6 MB 3.3 MB/s eta 0:00:02\n", + " --------------------- ------------------ 6.8/12.6 MB 3.1 MB/s eta 0:00:02\n", + " ----------------------- ---------------- 7.3/12.6 MB 3.1 MB/s eta 0:00:02\n", + " ------------------------ --------------- 7.9/12.6 MB 3.0 MB/s eta 0:00:02\n", + " --------------------------- ------------ 8.7/12.6 MB 3.2 MB/s eta 0:00:02\n", + " ------------------------------ --------- 9.7/12.6 MB 3.2 MB/s eta 0:00:01\n", + " -------------------------------- ------- 10.2/12.6 MB 3.2 MB/s eta 0:00:01\n", + " ---------------------------------- ----- 11.0/12.6 MB 3.2 MB/s eta 0:00:01\n", + " ------------------------------------- -- 11.8/12.6 MB 3.3 MB/s eta 0:00:01\n", + " --------------------------------------- 12.6/12.6 MB 3.3 MB/s eta 0:00:01\n", + " ---------------------------------------- 12.6/12.6 MB 3.1 MB/s eta 0:00:00\n", + "Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)\n", + "Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)\n", + "Installing collected packages: pytz, tzdata, numpy, pandas\n", + "Successfully installed numpy-2.2.4 pandas-2.2.3 pytz-2025.2 tzdata-2025.2\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " WARNING: The scripts f2py.exe and numpy-config.exe are installed in 'c:\\Users\\PC1\\AppData\\Local\\Programs\\Python\\Python313\\Scripts' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n", + "\n", + "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "pip install pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "54d1bc21", + "metadata": {}, + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Load the dataset from the subfolder 'data/lab-01'\n", + "df = pd.read_csv('data/lab-01/Titanic-Dataset.csv')\n", + "\n", + "# Display the first 5 rows to check it's loaded correctly\n", + "df.head()\n" ] }, { @@ -174,7 +428,217 @@ "id": "d4b7cb1f", "metadata": {}, "source": [ - "## Dataset Overview" + "## Dataset Overview\n", + "\n", + "\n", + "Now that we’ve successfully loaded the dataset, it’s time to explore and play with it.\n", + "\n", + "Before we start building any machine learning models or visualizations, we must understand:\n", + "\n", + "- What kind of data we are working with\n", + "\n", + "- The distribution of values across key columns\n", + "\n", + "- If there are any unusual or suspicious entries (outliers, wrong types, etc.)\n", + "\n", + "This step is known as Exploratory Data Analysis (EDA) — and it’s one of the most important steps in any data science project.\n", + "\n", + "🔍 Why Is This Step Important?\n", + "\n", + "✅ Data Understanding: Knowing what each column represents helps us understand how it could influence the outcome (e.g., survival).\n", + "\n", + "🚩 Anomaly Detection: Spotting outliers or strange values that could skew results.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7a24cc6c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset shape: (891, 12)\n", + "\n", + "Column names:\n", + " ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n", + "\n", + "RangeIndex: 891 entries, 0 to 890\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 PassengerId 891 non-null int64 \n", + " 1 Survived 891 non-null int64 \n", + " 2 Pclass 891 non-null int64 \n", + " 3 Name 891 non-null object \n", + " 4 Sex 891 non-null object \n", + " 5 Age 714 non-null float64\n", + " 6 SibSp 891 non-null int64 \n", + " 7 Parch 891 non-null int64 \n", + " 8 Ticket 891 non-null object \n", + " 9 Fare 891 non-null float64\n", + " 10 Cabin 204 non-null object \n", + " 11 Embarked 889 non-null object \n", + "dtypes: float64(2), int64(5), object(5)\n", + "memory usage: 83.7+ KB\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Age SibSp \\\n", + "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", + "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", + "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", + "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", + "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", + "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", + "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", + "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", + "\n", + " Parch Fare \n", + "count 891.000000 891.000000 \n", + "mean 0.381594 32.204208 \n", + "std 0.806057 49.693429 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 7.910400 \n", + "50% 0.000000 14.454200 \n", + "75% 0.000000 31.000000 \n", + "max 6.000000 512.329200 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Check the shape of the dataset (rows, columns)\n", + "print(\"Dataset shape:\", df.shape)\n", + "\n", + "# Show the column names\n", + "print(\"\\nColumn names:\\n\", df.columns.tolist())\n", + "\n", + "# Display information about each column (data type, non-null values, etc.)\n", + "df.info()\n", + "\n", + "# Summary statistics for numerical columns\n", + "df.describe()\n" ] }, { @@ -182,7 +646,80 @@ "id": "d54d8a85", "metadata": {}, "source": [ - "## Data Quality Check" + "## Data Quality Check\n", + "\n", + "Before we can analyze or build models with our data, we need to ensure that the dataset is clean, complete, and usable.\n", + "\n", + "Even high-quality datasets often contain:\n", + "\n", + "❌ Missing values\n", + "\n", + "🧩 Inconsistent or incorrect formats\n", + "\n", + "🎭 Duplicated entries\n", + "\n", + "🧱 Outliers or unrealistic values\n", + "\n", + "These issues can affect the accuracy of our models and lead to misleading conclusions. So in this step, we'll inspect the dataset for common data quality problems and begin planning how to handle them." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "763f5a1c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Missing values per column:\n", + "\n", + "PassengerId 0\n", + "Survived 0\n", + "Pclass 0\n", + "Name 0\n", + "Sex 0\n", + "Age 177\n", + "SibSp 0\n", + "Parch 0\n", + "Ticket 0\n", + "Fare 0\n", + "Cabin 687\n", + "Embarked 2\n", + "dtype: int64\n", + "\n", + "Percentage of missing values:\n", + "\n", + "PassengerId 0.000000\n", + "Survived 0.000000\n", + "Pclass 0.000000\n", + "Name 0.000000\n", + "Sex 0.000000\n", + "Age 19.865320\n", + "SibSp 0.000000\n", + "Parch 0.000000\n", + "Ticket 0.000000\n", + "Fare 0.000000\n", + "Cabin 77.104377\n", + "Embarked 0.224467\n", + "dtype: float64\n", + "\n", + "Number of duplicated rows: 0\n" + ] + } + ], + "source": [ + "# Check for missing values in each column\n", + "print(\"Missing values per column:\\n\")\n", + "print(df.isnull().sum())\n", + "\n", + "# Check percentage of missing values (optional but useful)\n", + "print(\"\\nPercentage of missing values:\\n\")\n", + "print((df.isnull().sum() / len(df)) * 100)\n", + "\n", + "# Check for duplicated rows\n", + "print(\"\\nNumber of duplicated rows:\", df.duplicated().sum())\n" ] }, { @@ -236,7 +773,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -250,7 +787,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.13.0" } }, "nbformat": 4, From 2f853abd6b85ac059f519eeae626104bebd5d9d6 Mon Sep 17 00:00:00 2001 From: Basarans Date: Sun, 20 Apr 2025 08:36:18 +0200 Subject: [PATCH 08/33] Update lab-01.ipynb --- lab-01.ipynb | 293 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 268 insertions(+), 25 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index b62ad30..5046dd0 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -30,6 +30,14 @@ "## Introduction" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "85ba1545", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "93e36221", @@ -266,7 +274,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -408,7 +416,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 10, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -445,9 +453,13 @@ "\n", "🔍 Why Is This Step Important?\n", "\n", - "✅ Data Understanding: Knowing what each column represents helps us understand how it could influence the outcome (e.g., survival).\n", + "- ✅ Data Understanding: We need to understand what each column means, what type of values it contains, and how it could relate to the outcome we want to predict (in this case, survival).\n", + "\n", + "- 🚩 Anomaly Detection: This helps us spot outliers, inconsistent data, or wrong data types — all of which can affect the performance of our models.\n", + "\n", + "- 🛠️ Planning Data Cleaning: Based on this step, we can make decisions about missing values, column drops, or transformations needed later.\n", "\n", - "🚩 Anomaly Detection: Spotting outliers or strange values that could skew results.\n" + "This step is called Exploratory Data Analysis (EDA), and it’s one of the most critical stages in any data science pipeline.\n" ] }, { @@ -648,24 +660,24 @@ "source": [ "## Data Quality Check\n", "\n", - "Before we can analyze or build models with our data, we need to ensure that the dataset is clean, complete, and usable.\n", + "Before we analyze or build models with our dataset, we need to ensure that the data is clean, complete, and reliable.\n", "\n", - "Even high-quality datasets often contain:\n", + "Even in well-known datasets like the Titanic dataset, we might encounter:\n", "\n", - "❌ Missing values\n", + "- ❌ Missing values: Empty cells or NaNs that need to be filled, removed, or flagged.\n", "\n", - "🧩 Inconsistent or incorrect formats\n", + "- 🧩 Inconsistent or incorrect formats: For example, a numerical column with text entries.\n", "\n", - "🎭 Duplicated entries\n", + "- 🎭 Duplicated entries: Repeated rows that can skew statistics and model results.\n", "\n", - "🧱 Outliers or unrealistic values\n", + "- 🧱 Outliers or unrealistic values: Extremely high or low numbers that don’t make sense (e.g., negative ages).\n", "\n", - "These issues can affect the accuracy of our models and lead to misleading conclusions. So in this step, we'll inspect the dataset for common data quality problems and begin planning how to handle them." + "These issues can significantly affect model accuracy and lead to false conclusions. So, this step focuses on detecting potential problems and planning how to handle them." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 3, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -673,8 +685,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Missing values per column:\n", - "\n", + "🚫 Missing values per column:\n", "PassengerId 0\n", "Survived 0\n", "Pclass 0\n", @@ -689,8 +700,7 @@ "Embarked 2\n", "dtype: int64\n", "\n", - "Percentage of missing values:\n", - "\n", + "📊 Percentage of missing values:\n", "PassengerId 0.000000\n", "Survived 0.000000\n", "Pclass 0.000000\n", @@ -705,21 +715,60 @@ "Embarked 0.224467\n", "dtype: float64\n", "\n", - "Number of duplicated rows: 0\n" + "📋 Number of duplicated rows:\n", + "0\n", + "\n", + "🔍 Rows with missing 'Age':\n", + " PassengerId Survived Pclass Name Sex Age \\\n", + "5 6 0 3 Moran, Mr. James male NaN \n", + "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", + "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", + "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", + "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", + "\n", + " SibSp Parch Ticket Fare Cabin Embarked \n", + "5 0 0 330877 8.4583 NaN Q \n", + "17 0 0 244373 13.0000 NaN S \n", + "19 0 0 2649 7.2250 NaN C \n", + "26 0 0 2631 7.2250 NaN C \n", + "28 0 0 330959 7.8792 NaN Q \n", + "\n", + "⚠️ Rows with invalid 'Age' values (if any):\n", + "Empty DataFrame\n", + "Columns: [PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked]\n", + "Index: []\n", + "\n", + "👀 Unique values in 'Sex' column:\n", + "['male' 'female']\n" ] } ], "source": [ - "# Check for missing values in each column\n", - "print(\"Missing values per column:\\n\")\n", + "# 1. Check for missing values per column\n", + "print(\"🚫 Missing values per column:\")\n", "print(df.isnull().sum())\n", "\n", - "# Check percentage of missing values (optional but useful)\n", - "print(\"\\nPercentage of missing values:\\n\")\n", + "# 2. Optional: Check the percentage of missing values\n", + "print(\"\\n📊 Percentage of missing values:\")\n", "print((df.isnull().sum() / len(df)) * 100)\n", "\n", - "# Check for duplicated rows\n", - "print(\"\\nNumber of duplicated rows:\", df.duplicated().sum())\n" + "# 3. Check for duplicated rows\n", + "print(\"\\n📋 Number of duplicated rows:\")\n", + "print(df.duplicated().sum())\n", + "\n", + "# 4. Display rows with invalid or inconsistent data (examples)\n", + "\n", + "# Example: Show rows with missing 'Age'\n", + "print(\"\\n🔍 Rows with missing 'Age':\")\n", + "print(df[df['Age'].isnull()].head())\n", + "\n", + "# Example: Check for invalid ages (e.g., negative values)\n", + "print(\"\\n⚠️ Rows with invalid 'Age' values (if any):\")\n", + "print(df[df['Age'] < 0])\n", + "\n", + "# Example: Check for unknown 'Sex' values\n", + "print(\"\\n👀 Unique values in 'Sex' column:\")\n", + "print(df['Sex'].unique())\n" ] }, { @@ -727,7 +776,17 @@ "id": "2a86fdb7", "metadata": {}, "source": [ - "## Descriptive Statistics" + "## Descriptive Statistics\n", + "\n", + "After we’ve performed a basic overview and quality check, it’s time to understand how the values in our dataset are distributed — both numerical and categorical.\n", + "\n", + "This step is essential because:\n", + "\n", + "- It gives us an idea of the central tendency (e.g., average) and spread (e.g., variability) of data.\n", + "\n", + "- It reveals outliers, data imbalance, and patterns that may not be immediately obvious.\n", + "\n", + "- It helps us decide how to normalize, transform, or encode data before building models." ] }, { @@ -735,7 +794,191 @@ "id": "da3dba6c", "metadata": {}, "source": [ - "## Basic Data Visualization" + "## Basic Data Visualization\n", + "\n", + "After summarizing the dataset using statistics, the next step is to visualize the data. Visualization helps us spot patterns, trends, and anomalies that are hard to detect in raw numbers alone.\n", + "\n", + "These visual tools make data intuitive and accessible, even for those without strong statistical backgrounds.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "bc8d8eb3", + "metadata": {}, + "source": [ + "📊 1. Histogram + KDE\n", + "\n", + "Purpose: Shows how a numerical variable is distributed (e.g., Age).\n", + "\n", + "- Histogram shows count of values in intervals\n", + "\n", + "- KDE (Kernel Density Estimation) smooths the distribution line" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a6dffd6a", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (370712082.py, line 1)", + "output_type": "error", + "traceback": [ + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[11]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mpip install matplotlib\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m invalid syntax\n" + ] + } + ], + "source": [ + "pip install matplotlib\n", + "pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ee827da3", + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'seaborn'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[8]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mseaborn\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msns\u001b[39;00m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmatplotlib\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplt\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# Histogram + KDE for Age\u001b[39;00m\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'seaborn'" + ] + } + ], + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Histogram + KDE for Age\n", + "plt.figure(figsize=(8, 5))\n", + "sns.histplot(data=df, x='Age', kde=True, bins=30)\n", + "plt.title('Distribution of Age with KDE')\n", + "plt.xlabel('Age')\n", + "plt.ylabel('Frequency')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "9ca955e1", + "metadata": {}, + "source": [ + "📦 2. Boxplot\n", + "\n", + "Purpose: Great for comparing numeric distributions across categories and spotting outliers.\n", + "\n", + "- Example: Age distribution by survival status" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5c605b8c", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'plt' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[12]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Boxplot: Age vs. Survived\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[43mplt\u001b[49m.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m 3\u001b[39m sns.boxplot(data=df, x=\u001b[33m'\u001b[39m\u001b[33mSurvived\u001b[39m\u001b[33m'\u001b[39m, y=\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 4\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mBoxplot of Age by Survival\u001b[39m\u001b[33m'\u001b[39m)\n", + "\u001b[31mNameError\u001b[39m: name 'plt' is not defined" + ] + } + ], + "source": [ + "# Boxplot: Age vs. Survived\n", + "plt.figure(figsize=(8, 5))\n", + "sns.boxplot(data=df, x='Survived', y='Age')\n", + "plt.title('Boxplot of Age by Survival')\n", + "plt.xlabel('Survived (0 = No, 1 = Yes)')\n", + "plt.ylabel('Age')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "23a6352c", + "metadata": {}, + "source": [ + "📊 3. Count Plot (Bar Plot for Categories)\n", + "\n", + "Purpose: Displays the frequency of each category in a variable (like value_counts, but visual)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69ca462b", + "metadata": {}, + "outputs": [], + "source": [ + "# Count plot: Sex\n", + "plt.figure(figsize=(6, 4))\n", + "sns.countplot(data=df, x='Sex')\n", + "plt.title('Passenger Count by Sex')\n", + "plt.xlabel('Sex')\n", + "plt.ylabel('Count')\n", + "plt.show()\n", + "\n", + "# Count plot: Pclass\n", + "plt.figure(figsize=(6, 4))\n", + "sns.countplot(data=df, x='Pclass')\n", + "plt.title('Passenger Count by Class')\n", + "plt.xlabel('Passenger Class')\n", + "plt.ylabel('Count')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "7d7b8d4b", + "metadata": {}, + "source": [ + "🌡️ 4. Correlation Heatmap\n", + "\n", + "Purpose: Helps you find numeric features that are positively or negatively correlated.\n", + "\n", + "- Values close to +1 → strong positive correlation\n", + "\n", + "- Values close to -1 → strong negative correlation" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "910a7faa", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'plt' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[13]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Correlation matrix heatmap\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[43mplt\u001b[49m.figure(figsize=(\u001b[32m10\u001b[39m, \u001b[32m6\u001b[39m))\n\u001b[32m 3\u001b[39m sns.heatmap(df.corr(numeric_only=\u001b[38;5;28;01mTrue\u001b[39;00m), annot=\u001b[38;5;28;01mTrue\u001b[39;00m, cmap=\u001b[33m'\u001b[39m\u001b[33mcoolwarm\u001b[39m\u001b[33m'\u001b[39m, fmt=\u001b[33m'\u001b[39m\u001b[33m.2f\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 4\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mCorrelation Heatmap of Numeric Features\u001b[39m\u001b[33m'\u001b[39m)\n", + "\u001b[31mNameError\u001b[39m: name 'plt' is not defined" + ] + } + ], + "source": [ + "# Correlation matrix heatmap\n", + "plt.figure(figsize=(10, 6))\n", + "sns.heatmap(df.corr(numeric_only=True), annot=True, cmap='coolwarm', fmt='.2f')\n", + "plt.title('Correlation Heatmap of Numeric Features')\n", + "plt.show()\n" ] }, { From 95a01ccf9328cf7a3dfdb9a634bc677db2d65f4a Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sun, 20 Apr 2025 16:44:32 +0200 Subject: [PATCH 09/33] fix: added description of pandas library and relative links in Dataset Loadingsection --- lab-01.ipynb | 341 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 210 insertions(+), 131 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 5046dd0..abefffd 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,17 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, + "id": "ab0a0d4d", + "metadata": {}, + "outputs": [], + "source": [ + "# !pip install pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -30,14 +40,6 @@ "## Introduction" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "85ba1545", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "93e36221", @@ -178,7 +180,30 @@ "\n", "To start working with any dataset in Python, we typically use the pandas library, which allows us to load, manipulate, and analyze data easily in tabular form.\n", "\n", - "In this case, the Titanic dataset is available in a CSV file. We'll load it using pandas.read_csv().\n", + "---\n", + "\n", + "**What is Pandas?**\n", + "\n", + "Pandas is an open-source software library designed for data manipulation and analysis. It provides data structures like series and DataFrames to easily clean, transform and analyze large datasets and integrates with other Python libraries, such as NumPy and Matplotlib.\n", + "\n", + "It offers functions for data transformation, aggregation and visualization, which are important for analysis.\n", + "\n", + "Pandas revolves around two primary Data structures: Series (1D) for single columns and DataFrame (2D) for tabular data enabling efficient data manipulation.\n", + "\n", + "With pandas, you can perform a wide range of data operations, including\n", + "\n", + "- Reading and writing data from various file formats like CSV, Excel and SQL databases.\n", + "- Cleaning and preparing data by handling missing values and filtering entries.\n", + "- Merging and joining multiple datasets seamlessly.\n", + "- Reshaping data through pivoting and stacking operations.\n", + "- Conducting statistical analysis and generating descriptive statistics.\n", + "- Visualizing data with integrated plotting capabilities.\n", + "\n", + "[Pandas Tutorial - geeksforgeeks](https://www.geeksforgeeks.org/pandas-tutorial/)\n", + "\n", + "---\n", + "\n", + "In this case, the Titanic dataset is available in a CSV file. We'll load it using [pandas.read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html).\n", "\n", "For loading file we need Pandas library.\n", "\n", @@ -193,88 +218,7 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "8c070b48", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting pandas\n", - " Downloading pandas-2.2.3-cp313-cp313-win_amd64.whl.metadata (19 kB)\n", - "Collecting numpy>=1.26.0 (from pandas)\n", - " Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl.metadata (60 kB)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from pandas) (2.9.0.post0)\n", - "Collecting pytz>=2020.1 (from pandas)\n", - " Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)\n", - "Collecting tzdata>=2022.7 (from pandas)\n", - " Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)\n", - "Requirement already satisfied: six>=1.5 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", - "Downloading pandas-2.2.3-cp313-cp313-win_amd64.whl (11.5 MB)\n", - " ---------------------------------------- 0.0/11.5 MB ? eta -:--:--\n", - " --- ------------------------------------ 1.0/11.5 MB 5.6 MB/s eta 0:00:02\n", - " ------- -------------------------------- 2.1/11.5 MB 5.6 MB/s eta 0:00:02\n", - " ----------- ---------------------------- 3.4/11.5 MB 5.7 MB/s eta 0:00:02\n", - " --------------- ------------------------ 4.5/11.5 MB 5.4 MB/s eta 0:00:02\n", - " ----------------- ---------------------- 5.0/11.5 MB 5.2 MB/s eta 0:00:02\n", - " -------------------- ------------------- 5.8/11.5 MB 4.6 MB/s eta 0:00:02\n", - " ---------------------- ----------------- 6.6/11.5 MB 4.5 MB/s eta 0:00:02\n", - " ------------------------- -------------- 7.3/11.5 MB 4.3 MB/s eta 0:00:01\n", - " ----------------------------- ---------- 8.4/11.5 MB 4.4 MB/s eta 0:00:01\n", - " ------------------------------ --------- 8.7/11.5 MB 4.4 MB/s eta 0:00:01\n", - " -------------------------------- ------- 9.4/11.5 MB 4.0 MB/s eta 0:00:01\n", - " ---------------------------------- ----- 10.0/11.5 MB 4.0 MB/s eta 0:00:01\n", - " -------------------------------------- - 11.0/11.5 MB 4.0 MB/s eta 0:00:01\n", - " --------------------------------------- 11.3/11.5 MB 3.9 MB/s eta 0:00:01\n", - " ---------------------------------------- 11.5/11.5 MB 3.6 MB/s eta 0:00:00\n", - "Downloading numpy-2.2.4-cp313-cp313-win_amd64.whl (12.6 MB)\n", - " ---------------------------------------- 0.0/12.6 MB ? eta -:--:--\n", - " -- ------------------------------------- 0.8/12.6 MB 3.6 MB/s eta 0:00:04\n", - " --- ------------------------------------ 1.0/12.6 MB 2.4 MB/s eta 0:00:05\n", - " ------ --------------------------------- 2.1/12.6 MB 3.2 MB/s eta 0:00:04\n", - " ---------- ----------------------------- 3.4/12.6 MB 4.0 MB/s eta 0:00:03\n", - " ------------- -------------------------- 4.2/12.6 MB 4.2 MB/s eta 0:00:02\n", - " --------------- ------------------------ 5.0/12.6 MB 3.9 MB/s eta 0:00:02\n", - " ---------------- ----------------------- 5.2/12.6 MB 3.9 MB/s eta 0:00:02\n", - " ------------------- -------------------- 6.0/12.6 MB 3.5 MB/s eta 0:00:02\n", - " ------------------- -------------------- 6.3/12.6 MB 3.3 MB/s eta 0:00:02\n", - " --------------------- ------------------ 6.8/12.6 MB 3.1 MB/s eta 0:00:02\n", - " ----------------------- ---------------- 7.3/12.6 MB 3.1 MB/s eta 0:00:02\n", - " ------------------------ --------------- 7.9/12.6 MB 3.0 MB/s eta 0:00:02\n", - " --------------------------- ------------ 8.7/12.6 MB 3.2 MB/s eta 0:00:02\n", - " ------------------------------ --------- 9.7/12.6 MB 3.2 MB/s eta 0:00:01\n", - " -------------------------------- ------- 10.2/12.6 MB 3.2 MB/s eta 0:00:01\n", - " ---------------------------------- ----- 11.0/12.6 MB 3.2 MB/s eta 0:00:01\n", - " ------------------------------------- -- 11.8/12.6 MB 3.3 MB/s eta 0:00:01\n", - " --------------------------------------- 12.6/12.6 MB 3.3 MB/s eta 0:00:01\n", - " ---------------------------------------- 12.6/12.6 MB 3.1 MB/s eta 0:00:00\n", - "Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)\n", - "Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)\n", - "Installing collected packages: pytz, tzdata, numpy, pandas\n", - "Successfully installed numpy-2.2.4 pandas-2.2.3 pytz-2025.2 tzdata-2025.2\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " WARNING: The scripts f2py.exe and numpy-config.exe are installed in 'c:\\Users\\PC1\\AppData\\Local\\Programs\\Python\\Python313\\Scripts' which is not on PATH.\n", - " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n", - "\n", - "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", - "[notice] To update, run: python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [ - "pip install pandas" - ] - }, - { - "cell_type": "code", - "execution_count": 2, + "execution_count": 10, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -416,19 +360,19 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 2, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import pandas as pd\n", + "DATASET_PATH = os.path.join(\"data\", \"lab-01\", \"Titanic-Dataset.csv\")\n", "\n", "# Load the dataset from the subfolder 'data/lab-01'\n", - "df = pd.read_csv('data/lab-01/Titanic-Dataset.csv')\n", + "df = pd.read_csv(filepath_or_buffer=DATASET_PATH)\n", "\n", "# Display the first 5 rows to check it's loaded correctly\n", - "df.head()\n" + "df.head()" ] }, { @@ -464,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 5, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -472,10 +416,46 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset shape: (891, 12)\n", + "Dataset shape: (891, 12)\n" + ] + } + ], + "source": [ + "# Check the shape of the dataset (rows, columns)\n", + "print(\"Dataset shape:\", df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5a5cbdc5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", "Column names:\n", - " ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n", + " ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" + ] + } + ], + "source": [ + "# Show the column names\n", + "print(\"\\nColumn names:\\n\", df.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7fcee358", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 12 columns):\n", @@ -496,7 +476,19 @@ "dtypes: float64(2), int64(5), object(5)\n", "memory usage: 83.7+ KB\n" ] - }, + } + ], + "source": [ + "# Display information about each column (data type, non-null values, etc.)\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "bca9f7e9", + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -521,10 +513,15 @@ " PassengerId\n", " Survived\n", " Pclass\n", + " Name\n", + " Sex\n", " Age\n", " SibSp\n", " Parch\n", + " Ticket\n", " Fare\n", + " Cabin\n", + " Embarked\n", " \n", " \n", " \n", @@ -533,124 +530,206 @@ " 891.000000\n", " 891.000000\n", " 891.000000\n", + " 891\n", + " 891\n", " 714.000000\n", " 891.000000\n", " 891.000000\n", + " 891\n", " 891.000000\n", + " 204\n", + " 889\n", + " \n", + " \n", + " unique\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 891\n", + " 2\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 681\n", + " NaN\n", + " 147\n", + " 3\n", + " \n", + " \n", + " top\n", + " NaN\n", + " NaN\n", + " NaN\n", + " Dooley, Mr. Patrick\n", + " male\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 347082\n", + " NaN\n", + " G6\n", + " S\n", + " \n", + " \n", + " freq\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 1\n", + " 577\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 7\n", + " NaN\n", + " 4\n", + " 644\n", " \n", " \n", " mean\n", " 446.000000\n", " 0.383838\n", " 2.308642\n", + " NaN\n", + " NaN\n", " 29.699118\n", " 0.523008\n", " 0.381594\n", + " NaN\n", " 32.204208\n", + " NaN\n", + " NaN\n", " \n", " \n", " std\n", " 257.353842\n", " 0.486592\n", " 0.836071\n", + " NaN\n", + " NaN\n", " 14.526497\n", " 1.102743\n", " 0.806057\n", + " NaN\n", " 49.693429\n", + " NaN\n", + " NaN\n", " \n", " \n", " min\n", " 1.000000\n", " 0.000000\n", " 1.000000\n", + " NaN\n", + " NaN\n", " 0.420000\n", " 0.000000\n", " 0.000000\n", + " NaN\n", " 0.000000\n", + " NaN\n", + " NaN\n", " \n", " \n", " 25%\n", " 223.500000\n", " 0.000000\n", " 2.000000\n", + " NaN\n", + " NaN\n", " 20.125000\n", " 0.000000\n", " 0.000000\n", + " NaN\n", " 7.910400\n", + " NaN\n", + " NaN\n", " \n", " \n", " 50%\n", " 446.000000\n", " 0.000000\n", " 3.000000\n", + " NaN\n", + " NaN\n", " 28.000000\n", " 0.000000\n", " 0.000000\n", + " NaN\n", " 14.454200\n", + " NaN\n", + " NaN\n", " \n", " \n", " 75%\n", " 668.500000\n", " 1.000000\n", " 3.000000\n", + " NaN\n", + " NaN\n", " 38.000000\n", " 1.000000\n", " 0.000000\n", + " NaN\n", " 31.000000\n", + " NaN\n", + " NaN\n", " \n", " \n", " max\n", " 891.000000\n", " 1.000000\n", " 3.000000\n", + " NaN\n", + " NaN\n", " 80.000000\n", " 8.000000\n", " 6.000000\n", + " NaN\n", " 512.329200\n", + " NaN\n", + " NaN\n", " \n", " \n", "\n", "" ], "text/plain": [ - " PassengerId Survived Pclass Age SibSp \\\n", - "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", - "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", - "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", - "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", - "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", - "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", - "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", - "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", + " PassengerId Survived Pclass Name Sex \\\n", + "count 891.000000 891.000000 891.000000 891 891 \n", + "unique NaN NaN NaN 891 2 \n", + "top NaN NaN NaN Dooley, Mr. Patrick male \n", + "freq NaN NaN NaN 1 577 \n", + "mean 446.000000 0.383838 2.308642 NaN NaN \n", + "std 257.353842 0.486592 0.836071 NaN NaN \n", + "min 1.000000 0.000000 1.000000 NaN NaN \n", + "25% 223.500000 0.000000 2.000000 NaN NaN \n", + "50% 446.000000 0.000000 3.000000 NaN NaN \n", + "75% 668.500000 1.000000 3.000000 NaN NaN \n", + "max 891.000000 1.000000 3.000000 NaN NaN \n", "\n", - " Parch Fare \n", - "count 891.000000 891.000000 \n", - "mean 0.381594 32.204208 \n", - "std 0.806057 49.693429 \n", - "min 0.000000 0.000000 \n", - "25% 0.000000 7.910400 \n", - "50% 0.000000 14.454200 \n", - "75% 0.000000 31.000000 \n", - "max 6.000000 512.329200 " + " Age SibSp Parch Ticket Fare Cabin Embarked \n", + "count 714.000000 891.000000 891.000000 891 891.000000 204 889 \n", + "unique NaN NaN NaN 681 NaN 147 3 \n", + "top NaN NaN NaN 347082 NaN G6 S \n", + "freq NaN NaN NaN 7 NaN 4 644 \n", + "mean 29.699118 0.523008 0.381594 NaN 32.204208 NaN NaN \n", + "std 14.526497 1.102743 0.806057 NaN 49.693429 NaN NaN \n", + "min 0.420000 0.000000 0.000000 NaN 0.000000 NaN NaN \n", + "25% 20.125000 0.000000 0.000000 NaN 7.910400 NaN NaN \n", + "50% 28.000000 0.000000 0.000000 NaN 14.454200 NaN NaN \n", + "75% 38.000000 1.000000 0.000000 NaN 31.000000 NaN NaN \n", + "max 80.000000 8.000000 6.000000 NaN 512.329200 NaN NaN " ] }, - "execution_count": 15, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Check the shape of the dataset (rows, columns)\n", - "print(\"Dataset shape:\", df.shape)\n", - "\n", - "# Show the column names\n", - "print(\"\\nColumn names:\\n\", df.columns.tolist())\n", - "\n", - "# Display information about each column (data type, non-null values, etc.)\n", - "df.info()\n", - "\n", "# Summary statistics for numerical columns\n", - "df.describe()\n" + "df.describe(include=\"all\")" ] }, { @@ -1016,7 +1095,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -1030,7 +1109,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.12.4" } }, "nbformat": 4, From 04880bea29df99f57af52887c4fd3537a9cb435c Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sun, 20 Apr 2025 17:12:35 +0200 Subject: [PATCH 10/33] Enhance data exploration in lab-01.ipynb - Added comments to clarify the purpose of various DataFrame methods used. - Introduced markdown cells to provide context and exercises for unique value exploration. - Enhanced the summary statistics output by transposing the DataFrame for better readability. - Added an exercise to explore additional percentiles in the descriptive statistics. --- lab-01.ipynb | 433 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 295 insertions(+), 138 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index abefffd..863d22f 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -408,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -422,12 +422,14 @@ ], "source": [ "# Check the shape of the dataset (rows, columns)\n", + "# DataFrame.shape: Return a tuple representing the dimensionality of the DataFrame.\n", + "\n", "print(\"Dataset shape:\", df.shape)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -443,12 +445,57 @@ ], "source": [ "# Show the column names\n", + "# DataFrame.columns: The column labels of the DataFrame.\n", "print(\"\\nColumn names:\\n\", df.columns.tolist())" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 26, + "id": "053a64e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Features data types:\n" + ] + }, + { + "data": { + "text/plain": [ + "PassengerId int64\n", + "Survived int64\n", + "Pclass int64\n", + "Name object\n", + "Sex object\n", + "Age float64\n", + "SibSp int64\n", + "Parch int64\n", + "Ticket object\n", + "Fare float64\n", + "Cabin object\n", + "Embarked object\n", + "dtype: object" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# DataFrame.dtype: Return the dtypes in the DataFrame.\n", + "# This returns a Series with the data type of each column. \n", + "# The result’s index is the original DataFrame’s columns. Columns with mixed types are stored with the object dtype. \n", + "print(\"Features data types:\")\n", + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -480,12 +527,91 @@ ], "source": [ "# Display information about each column (data type, non-null values, etc.)\n", + "# DataFrame.info: Print a concise summary of a DataFrame.\n", + "# This method prints information about a DataFrame including the index dtype and columns, non-null values and memory usage. \n", "df.info()" ] }, + { + "cell_type": "markdown", + "id": "3b1b5f6f", + "metadata": {}, + "source": [ + "Explore the unique values of our *target* using the [DataFrame.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + ] + }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 29, + "id": "ac6e1337", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Target unique values\n" + ] + }, + { + "data": { + "text/plain": [ + "array([0, 1])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Target unique values\")\n", + "df[\"Survived\"].unique()" + ] + }, + { + "cell_type": "markdown", + "id": "795427f2", + "metadata": {}, + "source": [ + "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "c039567b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column: Survived\n", + "Unique values: [0 1]\n", + "\n", + "Column: Pclass\n", + "Unique values: [3 1 2]\n", + "\n", + "Column: Sex\n", + "Unique values: ['male' 'female']\n", + "\n", + "Column: Embarked\n", + "Unique values: ['S' 'C' 'Q' nan]\n", + "\n" + ] + } + ], + "source": [ + "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", + "for col in columns:\n", + " print(f\"Column: {col}\")\n", + " print(f\"Unique values: {df[col].unique()}\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, "id": "bca9f7e9", "metadata": {}, "outputs": [ @@ -510,183 +636,185 @@ " \n", " \n", " \n", - " PassengerId\n", - " Survived\n", - " Pclass\n", - " Name\n", - " Sex\n", - " Age\n", - " SibSp\n", - " Parch\n", - " Ticket\n", - " Fare\n", - " Cabin\n", - " Embarked\n", + " count\n", + " unique\n", + " top\n", + " freq\n", + " mean\n", + " std\n", + " min\n", + " 25%\n", + " 50%\n", + " 75%\n", + " max\n", " \n", " \n", " \n", " \n", - " count\n", - " 891.000000\n", - " 891.000000\n", - " 891.000000\n", - " 891\n", - " 891\n", - " 714.000000\n", - " 891.000000\n", - " 891.000000\n", - " 891\n", - " 891.000000\n", - " 204\n", - " 889\n", + " PassengerId\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 446.0\n", + " 257.353842\n", + " 1.0\n", + " 223.5\n", + " 446.0\n", + " 668.5\n", + " 891.0\n", " \n", " \n", - " unique\n", - " NaN\n", + " Survived\n", + " 891.0\n", " NaN\n", " NaN\n", - " 891\n", - " 2\n", " NaN\n", + " 0.383838\n", + " 0.486592\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", + " 1.0\n", + " \n", + " \n", + " Pclass\n", + " 891.0\n", " NaN\n", " NaN\n", - " 681\n", " NaN\n", - " 147\n", - " 3\n", + " 2.308642\n", + " 0.836071\n", + " 1.0\n", + " 2.0\n", + " 3.0\n", + " 3.0\n", + " 3.0\n", " \n", " \n", - " top\n", + " Name\n", + " 891\n", + " 891\n", + " Dooley, Mr. Patrick\n", + " 1\n", " NaN\n", " NaN\n", " NaN\n", - " Dooley, Mr. Patrick\n", - " male\n", " NaN\n", " NaN\n", " NaN\n", - " 347082\n", " NaN\n", - " G6\n", - " S\n", " \n", " \n", - " freq\n", + " Sex\n", + " 891\n", + " 2\n", + " male\n", + " 577\n", " NaN\n", " NaN\n", " NaN\n", - " 1\n", - " 577\n", " NaN\n", " NaN\n", " NaN\n", - " 7\n", " NaN\n", - " 4\n", - " 644\n", " \n", " \n", - " mean\n", - " 446.000000\n", - " 0.383838\n", - " 2.308642\n", - " NaN\n", - " NaN\n", - " 29.699118\n", - " 0.523008\n", - " 0.381594\n", + " Age\n", + " 714.0\n", " NaN\n", - " 32.204208\n", " NaN\n", " NaN\n", + " 29.699118\n", + " 14.526497\n", + " 0.42\n", + " 20.125\n", + " 28.0\n", + " 38.0\n", + " 80.0\n", " \n", " \n", - " std\n", - " 257.353842\n", - " 0.486592\n", - " 0.836071\n", - " NaN\n", - " NaN\n", - " 14.526497\n", - " 1.102743\n", - " 0.806057\n", + " SibSp\n", + " 891.0\n", " NaN\n", - " 49.693429\n", " NaN\n", " NaN\n", + " 0.523008\n", + " 1.102743\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", + " 8.0\n", " \n", " \n", - " min\n", - " 1.000000\n", - " 0.000000\n", - " 1.000000\n", - " NaN\n", - " NaN\n", - " 0.420000\n", - " 0.000000\n", - " 0.000000\n", + " Parch\n", + " 891.0\n", " NaN\n", - " 0.000000\n", " NaN\n", " NaN\n", + " 0.381594\n", + " 0.806057\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 6.0\n", " \n", " \n", - " 25%\n", - " 223.500000\n", - " 0.000000\n", - " 2.000000\n", + " Ticket\n", + " 891\n", + " 681\n", + " 347082\n", + " 7\n", " NaN\n", " NaN\n", - " 20.125000\n", - " 0.000000\n", - " 0.000000\n", " NaN\n", - " 7.910400\n", " NaN\n", " NaN\n", - " \n", - " \n", - " 50%\n", - " 446.000000\n", - " 0.000000\n", - " 3.000000\n", " NaN\n", " NaN\n", - " 28.000000\n", - " 0.000000\n", - " 0.000000\n", + " \n", + " \n", + " Fare\n", + " 891.0\n", " NaN\n", - " 14.454200\n", " NaN\n", " NaN\n", + " 32.204208\n", + " 49.693429\n", + " 0.0\n", + " 7.9104\n", + " 14.4542\n", + " 31.0\n", + " 512.3292\n", " \n", " \n", - " 75%\n", - " 668.500000\n", - " 1.000000\n", - " 3.000000\n", + " Cabin\n", + " 204\n", + " 147\n", + " G6\n", + " 4\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", - " 38.000000\n", - " 1.000000\n", - " 0.000000\n", " NaN\n", - " 31.000000\n", " NaN\n", " NaN\n", " \n", " \n", - " max\n", - " 891.000000\n", - " 1.000000\n", - " 3.000000\n", + " Embarked\n", + " 889\n", + " 3\n", + " S\n", + " 644\n", + " NaN\n", + " NaN\n", " NaN\n", " NaN\n", - " 80.000000\n", - " 8.000000\n", - " 6.000000\n", " NaN\n", - " 512.329200\n", " NaN\n", " NaN\n", " \n", @@ -695,41 +823,70 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass Name Sex \\\n", - "count 891.000000 891.000000 891.000000 891 891 \n", - "unique NaN NaN NaN 891 2 \n", - "top NaN NaN NaN Dooley, Mr. Patrick male \n", - "freq NaN NaN NaN 1 577 \n", - "mean 446.000000 0.383838 2.308642 NaN NaN \n", - "std 257.353842 0.486592 0.836071 NaN NaN \n", - "min 1.000000 0.000000 1.000000 NaN NaN \n", - "25% 223.500000 0.000000 2.000000 NaN NaN \n", - "50% 446.000000 0.000000 3.000000 NaN NaN \n", - "75% 668.500000 1.000000 3.000000 NaN NaN \n", - "max 891.000000 1.000000 3.000000 NaN NaN \n", + " count unique top freq mean std \\\n", + "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", + "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", + "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", + "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", + "Sex 891 2 male 577 NaN NaN \n", + "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", + "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", + "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", + "Ticket 891 681 347082 7 NaN NaN \n", + "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", + "Cabin 204 147 G6 4 NaN NaN \n", + "Embarked 889 3 S 644 NaN NaN \n", "\n", - " Age SibSp Parch Ticket Fare Cabin Embarked \n", - "count 714.000000 891.000000 891.000000 891 891.000000 204 889 \n", - "unique NaN NaN NaN 681 NaN 147 3 \n", - "top NaN NaN NaN 347082 NaN G6 S \n", - "freq NaN NaN NaN 7 NaN 4 644 \n", - "mean 29.699118 0.523008 0.381594 NaN 32.204208 NaN NaN \n", - "std 14.526497 1.102743 0.806057 NaN 49.693429 NaN NaN \n", - "min 0.420000 0.000000 0.000000 NaN 0.000000 NaN NaN \n", - "25% 20.125000 0.000000 0.000000 NaN 7.910400 NaN NaN \n", - "50% 28.000000 0.000000 0.000000 NaN 14.454200 NaN NaN \n", - "75% 38.000000 1.000000 0.000000 NaN 31.000000 NaN NaN \n", - "max 80.000000 8.000000 6.000000 NaN 512.329200 NaN NaN " + " min 25% 50% 75% max \n", + "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", + "Survived 0.0 0.0 0.0 1.0 1.0 \n", + "Pclass 1.0 2.0 3.0 3.0 3.0 \n", + "Name NaN NaN NaN NaN NaN \n", + "Sex NaN NaN NaN NaN NaN \n", + "Age 0.42 20.125 28.0 38.0 80.0 \n", + "SibSp 0.0 0.0 0.0 1.0 8.0 \n", + "Parch 0.0 0.0 0.0 0.0 6.0 \n", + "Ticket NaN NaN NaN NaN NaN \n", + "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", + "Cabin NaN NaN NaN NaN NaN \n", + "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 9, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Summary statistics for numerical columns\n", - "df.describe(include=\"all\")" + "# DataFrame.describe: Generate descriptive statistics.\n", + "# Descriptive statistics include those that summarize the central tendency, \n", + "# dispersion and shape of a dataset’s distribution, excluding NaN values.\n", + "# Analyzes both numeric and object series, as well as DataFrame column sets of mixed data types. \n", + "# The output will vary depending on what is provided.\n", + "\n", + "df.describe(include=\"all\").T" + ] + }, + { + "cell_type": "markdown", + "id": "05715c36", + "metadata": {}, + "source": [ + "**Exercise:** Together with the default percentile, return in the output also the 1st and 99th percentile\n", + "\n", + "Check at this link the documentation of the module [DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea36463a", + "metadata": {}, + "outputs": [], + "source": [ + "percentiles = ...\n", + "df.describe(percentiles=)" ] }, { From e5e51f0e3e09c5a281e23d6a3b5863a027b1e1ef Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sun, 20 Apr 2025 17:16:09 +0200 Subject: [PATCH 11/33] no change --- lab-01.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 863d22f..ba32eb2 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -913,7 +913,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1004,7 +1004,7 @@ "\n", "# Example: Check for unknown 'Sex' values\n", "print(\"\\n👀 Unique values in 'Sex' column:\")\n", - "print(df['Sex'].unique())\n" + "print(df['Sex'].unique())" ] }, { From 2f739931f0ef064d93d192317bf4d36ae17353f6 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sun, 20 Apr 2025 17:20:16 +0200 Subject: [PATCH 12/33] few code changes --- lab-01.ipynb | 60 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index ba32eb2..7dab654 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,17 +10,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "id": "ab0a0d4d", "metadata": {}, "outputs": [], "source": [ - "# !pip install pandas" + "# !pip install pandas \n", + "# !pip install matplotlib\n", + "# !pip install seaborn" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 35, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -29,7 +31,8 @@ "import os\n", "\n", "import numpy as np\n", - "import pandas as pd" + "import pandas as pd\n", + "import matplotlib.pyplot as plt" ] }, { @@ -1054,40 +1057,37 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "a6dffd6a", - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (370712082.py, line 1)", - "output_type": "error", - "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[11]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mpip install matplotlib\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m invalid syntax\n" - ] - } - ], - "source": [ - "pip install matplotlib\n", - "pip install seaborn" - ] - }, - { - "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "ee827da3", "metadata": {}, "outputs": [ { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'seaborn'", + "ename": "AttributeError", + "evalue": "Rectangle.set() got an unexpected keyword argument 'kde'", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[8]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mseaborn\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msns\u001b[39;00m\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmatplotlib\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplt\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# Histogram + KDE for Age\u001b[39;00m\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'seaborn'" + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[37]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;66;03m# Histogram + KDE for Age\u001b[39;00m\n\u001b[32m 4\u001b[39m plt.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[43mplt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mhist\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mAge\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkde\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbins\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m30\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 6\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mDistribution of Age with KDE\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 7\u001b[39m plt.xlabel(\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m)\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\_api\\deprecation.py:453\u001b[39m, in \u001b[36mmake_keyword_only..wrapper\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 447\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) > name_idx:\n\u001b[32m 448\u001b[39m warn_deprecated(\n\u001b[32m 449\u001b[39m since, message=\u001b[33m\"\u001b[39m\u001b[33mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 450\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[33m; the \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 451\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mparameter will become keyword-only in \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[33m.\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 452\u001b[39m name=name, obj_type=\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc.\u001b[34m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m()\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m453\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\pyplot.py:3467\u001b[39m, in \u001b[36mhist\u001b[39m\u001b[34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, data, **kwargs)\u001b[39m\n\u001b[32m 3442\u001b[39m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes.hist)\n\u001b[32m 3443\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mhist\u001b[39m(\n\u001b[32m 3444\u001b[39m x: ArrayLike | Sequence[ArrayLike],\n\u001b[32m (...)\u001b[39m\u001b[32m 3465\u001b[39m BarContainer | Polygon | \u001b[38;5;28mlist\u001b[39m[BarContainer | Polygon],\n\u001b[32m 3466\u001b[39m ]:\n\u001b[32m-> \u001b[39m\u001b[32m3467\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mhist\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 3468\u001b[39m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3469\u001b[39m \u001b[43m \u001b[49m\u001b[43mbins\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbins\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3470\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 3471\u001b[39m \u001b[43m \u001b[49m\u001b[43mdensity\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdensity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3472\u001b[39m \u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[43m=\u001b[49m\u001b[43mweights\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3473\u001b[39m \u001b[43m \u001b[49m\u001b[43mcumulative\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcumulative\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3474\u001b[39m \u001b[43m \u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3475\u001b[39m \u001b[43m \u001b[49m\u001b[43mhisttype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mhisttype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3476\u001b[39m \u001b[43m \u001b[49m\u001b[43malign\u001b[49m\u001b[43m=\u001b[49m\u001b[43malign\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3477\u001b[39m \u001b[43m \u001b[49m\u001b[43morientation\u001b[49m\u001b[43m=\u001b[49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3478\u001b[39m \u001b[43m \u001b[49m\u001b[43mrwidth\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrwidth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3479\u001b[39m \u001b[43m \u001b[49m\u001b[43mlog\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3480\u001b[39m \u001b[43m \u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3481\u001b[39m \u001b[43m \u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3482\u001b[39m \u001b[43m \u001b[49m\u001b[43mstacked\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstacked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3483\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mdata\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3484\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3485\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\_api\\deprecation.py:453\u001b[39m, in \u001b[36mmake_keyword_only..wrapper\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 447\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) > name_idx:\n\u001b[32m 448\u001b[39m warn_deprecated(\n\u001b[32m 449\u001b[39m since, message=\u001b[33m\"\u001b[39m\u001b[33mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 450\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[33m; the \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 451\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mparameter will become keyword-only in \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[33m.\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 452\u001b[39m name=name, obj_type=\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc.\u001b[34m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m()\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m453\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\__init__.py:1550\u001b[39m, in \u001b[36m_preprocess_data..inner\u001b[39m\u001b[34m(ax, data, *args, **kwargs)\u001b[39m\n\u001b[32m 1546\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m label_namer \u001b[38;5;129;01mand\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33mlabel\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m args_and_kwargs:\n\u001b[32m 1547\u001b[39m new_kwargs[\u001b[33m\"\u001b[39m\u001b[33mlabel\u001b[39m\u001b[33m\"\u001b[39m] = _label_from_arg(\n\u001b[32m 1548\u001b[39m args_and_kwargs.get(label_namer), auto_label)\n\u001b[32m-> \u001b[39m\u001b[32m1550\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43mnew_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mnew_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\axes\\_axes.py:7297\u001b[39m, in \u001b[36mAxes.hist\u001b[39m\u001b[34m(self, x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)\u001b[39m\n\u001b[32m 7289\u001b[39m p = patch[\u001b[32m0\u001b[39m]\n\u001b[32m 7290\u001b[39m kwargs.update({\n\u001b[32m 7291\u001b[39m \u001b[33m'\u001b[39m\u001b[33mhatch\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(hatches),\n\u001b[32m 7292\u001b[39m \u001b[33m'\u001b[39m\u001b[33mlinewidth\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(linewidths),\n\u001b[32m (...)\u001b[39m\u001b[32m 7295\u001b[39m \u001b[33m'\u001b[39m\u001b[33mfacecolor\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(facecolors),\n\u001b[32m 7296\u001b[39m })\n\u001b[32m-> \u001b[39m\u001b[32m7297\u001b[39m \u001b[43mp\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_internal_update\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 7298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m lbl \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 7299\u001b[39m p.set_label(lbl)\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\artist.py:1233\u001b[39m, in \u001b[36mArtist._internal_update\u001b[39m\u001b[34m(self, kwargs)\u001b[39m\n\u001b[32m 1226\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_internal_update\u001b[39m(\u001b[38;5;28mself\u001b[39m, kwargs):\n\u001b[32m 1227\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 1228\u001b[39m \u001b[33;03m Update artist properties without prenormalizing them, but generating\u001b[39;00m\n\u001b[32m 1229\u001b[39m \u001b[33;03m errors as if calling `set`.\u001b[39;00m\n\u001b[32m 1230\u001b[39m \n\u001b[32m 1231\u001b[39m \u001b[33;03m The lack of prenormalization is to maintain backcompatibility.\u001b[39;00m\n\u001b[32m 1232\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1233\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_update_props\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1234\u001b[39m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{cls.__name__}\u001b[39;49;00m\u001b[33;43m.set() got an unexpected keyword argument \u001b[39;49m\u001b[33;43m\"\u001b[39;49m\n\u001b[32m 1235\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{prop_name!r}\u001b[39;49;00m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\artist.py:1206\u001b[39m, in \u001b[36mArtist._update_props\u001b[39m\u001b[34m(self, props, errfmt)\u001b[39m\n\u001b[32m 1204\u001b[39m func = \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mset_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mk\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[32m 1205\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mcallable\u001b[39m(func):\n\u001b[32m-> \u001b[39m\u001b[32m1206\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\n\u001b[32m 1207\u001b[39m errfmt.format(\u001b[38;5;28mcls\u001b[39m=\u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m), prop_name=k),\n\u001b[32m 1208\u001b[39m name=k)\n\u001b[32m 1209\u001b[39m ret.append(func(v))\n\u001b[32m 1210\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ret:\n", + "\u001b[31mAttributeError\u001b[39m: Rectangle.set() got an unexpected keyword argument 'kde'" ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAApsAAAGsCAYAAACSBWzsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAITBJREFUeJzt3Q2QVtV9P/DfIrBQkUVQd6GCoDEBNdhIjKCmSZF2h1KjhdrYIQ1GqlNLiEBbA2nUmDdonIrSAjaWQDOGUukEIlK1ZI04aQEFa6qxIkaUbWChaQoLWBZG7n/uzX83LLKJL8+R5Xk+n5njPvdl75493n2eL+fec25VlmVZAABAAl1SHBQAAHLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAk0zU6mcOHD8f27dvjlFNOiaqqquNdHQAAjpJP0753794YMGBAdOnS5cQKm3nQHDhw4PGuBgAAv0RjY2OceeaZJ1bYzHs0Wyvfu3fv410dAACO0tzcXHQOtua2Eypstl46z4OmsAkA0Hm9mVseDRACACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIpmu6QwODZ64u2bFemTOuZMcCgHeLnk0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEA6Bxhc/DgwVFVVfWGMmXKlGL7gQMHitf9+vWLXr16xYQJE2Lnzp2p6g4AQDmFzaeeeip27NjRVtasWVOsv+aaa4qv06dPj1WrVsXy5ctj7dq1sX379hg/fnyamgMA0Ol1fSs7n3766e2W58yZE+ecc0585CMfiT179sSiRYti6dKlMXr06GL74sWLY9iwYbF+/foYOXJkaWsOAED53rN58ODBuP/+++P6668vLqVv2rQpDh06FGPGjGnbZ+jQoTFo0KBYt25dh8dpaWmJ5ubmdgUAgAoPmytXrozdu3fHddddVyw3NTVF9+7do0+fPu32q62tLbZ1ZPbs2VFTU9NWBg4c+HarBABAuYTN/JL52LFjY8CAAe+oArNmzSouwbeWxsbGd3Q8AABO0Hs2W7366qvx3e9+N7797W+3raurqysuree9nUf2buaj0fNtHamuri4KAADl5231bOYDf84444wYN25c27oRI0ZEt27doqGhoW3d5s2bY9u2bTFq1KjS1BYAgPLu2Tx8+HARNidNmhRdu/782/P7LSdPnhwzZsyIvn37Ru/evWPq1KlF0DQSHQCgMr3lsJlfPs97K/NR6EebO3dudOnSpZjMPR9lXl9fHwsWLChVXQEAOMFUZVmWHe9KHCmf+ijvJc0HC+W9o3AiGzxzdcmO9cqcn9+2AgAnSl7zbHQAAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASKZrukPDiWnwzNVRzkr5+70yZ1zJjgVAedKzCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJdE13aKDcDZ65umTHemXOuJIdC4DOQ88mAADJCJsAACQjbAIAkIywCQBAMsImAACdJ2z++Mc/jk984hPRr1+/6NmzZ7z//e+PjRs3tm3Psixuu+226N+/f7F9zJgxsWXLllLXGwCAcgub//u//xuXXXZZdOvWLR5++OF4/vnn46/+6q/i1FNPbdvna1/7WsybNy/uvffe2LBhQ5x88slRX18fBw4cSFF/AADKZZ7Nv/zLv4yBAwfG4sWL29YNGTKkXa/m3XffHZ///OfjqquuKtZ985vfjNra2li5cmVce+21paw7AADl1LP54IMPxgc/+MG45ppr4owzzogPfOADcd9997Vt37p1azQ1NRWXzlvV1NTEJZdcEuvWrTvmMVtaWqK5ubldAQCgAsPmyy+/HAsXLoxzzz03Hn300bjpppviM5/5TPz93/99sT0Pmrm8J/NI+XLrtqPNnj27CKStJe85BQCgAsPm4cOH46KLLoqvfvWrRa/mjTfeGDfccENxf+bbNWvWrNizZ09baWxsfNvHAgDgBA6b+Qjz8847r926YcOGxbZt24rXdXV1xdedO3e22ydfbt12tOrq6ujdu3e7AgBABYbNfCT65s2b26178cUX46yzzmobLJSHyoaGhrbt+T2Y+aj0UaNGlarOAACU42j06dOnx6WXXlpcRv/93//9ePLJJ+PrX/96UXJVVVUxbdq0+PKXv1zc15mHz1tvvTUGDBgQV199darfAQCAcgibF198caxYsaK4z/KLX/xiESbzqY4mTpzYts8tt9wS+/fvL+7n3L17d1x++eXxyCOPRI8ePVLUHwCAcgmbud/5nd8pSkfy3s08iOYFAIDK5tnoAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQOcIm1/4wheiqqqqXRk6dGjb9gMHDsSUKVOiX79+0atXr5gwYULs3LkzRb0BACjHns3zzz8/duzY0Va+//3vt22bPn16rFq1KpYvXx5r166N7du3x/jx40tdZwAAThBd3/I3dO0adXV1b1i/Z8+eWLRoUSxdujRGjx5drFu8eHEMGzYs1q9fHyNHjixNjQEAKN+ezS1btsSAAQPi7LPPjokTJ8a2bduK9Zs2bYpDhw7FmDFj2vbNL7EPGjQo1q1b1+HxWlpaorm5uV0BAKACw+Yll1wSS5YsiUceeSQWLlwYW7dujQ9/+MOxd+/eaGpqiu7du0efPn3afU9tbW2xrSOzZ8+OmpqatjJw4MC3/9sAAHDiXkYfO3Zs2+vhw4cX4fOss86KBx54IHr27Pm2KjBr1qyYMWNG23LesylwAgCUh3c09VHei/ne9743XnrppeI+zoMHD8bu3bvb7ZOPRj/WPZ6tqquro3fv3u0KAADl4R2FzX379sWPfvSj6N+/f4wYMSK6desWDQ0Nbds3b95c3NM5atSoUtQVAIByvoz+Z3/2Z3HllVcWl87zaY1uv/32OOmkk+IP/uAPivstJ0+eXFwS79u3b9FDOXXq1CJoGokOAFCZ3lLY/K//+q8iWP7P//xPnH766XH55ZcX0xrlr3Nz586NLl26FJO556PM6+vrY8GCBanqDgBAOYXNZcuW/cLtPXr0iPnz5xcFAAA8Gx0AgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEAKBzTOoOcCIYPHN1yY71ypxxJTsWQCXSswkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJBM13SHBkpp8MzVx7sKAPCW6dkEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgM4ZNufMmRNVVVUxbdq0tnUHDhyIKVOmRL9+/aJXr14xYcKE2LlzZynqCgBApYTNp556Kv72b/82hg8f3m799OnTY9WqVbF8+fJYu3ZtbN++PcaPH1+KugIAUAlhc9++fTFx4sS477774tRTT21bv2fPnli0aFHcddddMXr06BgxYkQsXrw4/u3f/i3Wr19/zGO1tLREc3NzuwIAQAWHzfwy+bhx42LMmDHt1m/atCkOHTrUbv3QoUNj0KBBsW7dumMea/bs2VFTU9NWBg4c+HaqBABAOYTNZcuWxdNPP12ExKM1NTVF9+7do0+fPu3W19bWFtuOZdasWUWPaGtpbGx8q1UCAKAcno2eB8Gbb7451qxZEz169ChJBaqrq4sCAECF92zml8l37doVF110UXTt2rUo+SCgefPmFa/zHsyDBw/G7t27231fPhq9rq6u1HUHAKCcejavuOKKePbZZ9ut+9SnPlXcl/nZz362uN+yW7du0dDQUEx5lNu8eXNs27YtRo0aVdqaAwBQXmHzlFNOiQsuuKDdupNPPrmYU7N1/eTJk2PGjBnRt2/f6N27d0ydOrUImiNHjixtzeEIg2euPt5VAADeadh8M+bOnRtdunQpejbzaY3q6+tjwYIFpf4xAABUQth8/PHH2y3nA4fmz59fFAAAKptnowMAkIywCQDAiXPPJkA5KdXgs1fmjCvJcQBONHo2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIpmu6QwO8eYNnrj7eVQAgAT2bAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCANA5wubChQtj+PDh0bt376KMGjUqHn744bbtBw4ciClTpkS/fv2iV69eMWHChNi5c2eKegMAUG5h88wzz4w5c+bEpk2bYuPGjTF69Oi46qqr4oc//GGxffr06bFq1apYvnx5rF27NrZv3x7jx49PVXcAADq5qizLsndygL59+8add94Zv/d7vxenn356LF26tHide+GFF2LYsGGxbt26GDly5Js6XnNzc9TU1MSePXuK3lN4MwbPXH28qwC/0Ctzxh3vKgCUzFvJa2/7ns3XX389li1bFvv37y8up+e9nYcOHYoxY8a07TN06NAYNGhQETY70tLSUlT4yAIAQHno+la/4dlnny3CZX5/Zn5f5ooVK+K8886LZ555Jrp37x59+vRpt39tbW00NTV1eLzZs2fHHXfcEeXSM6b3AgDgHfRsvu997yuC5YYNG+Kmm26KSZMmxfPPPx9v16xZs4ou2NbS2Nj4to8FAMAJ3rOZ916+5z3vKV6PGDEinnrqqbjnnnvi4x//eBw8eDB2797drnczH41eV1fX4fGqq6uLAgBA+XnH82wePny4uO8yD57dunWLhoaGtm2bN2+Obdu2FZfdAQCoPF3f6iXvsWPHFoN+9u7dW4w8f/zxx+PRRx8tRiRNnjw5ZsyYUYxQz0cmTZ06tQiab3YkOgAAFRw2d+3aFZ/85Cdjx44dRbjMJ3jPg+Zv/uZvFtvnzp0bXbp0KSZzz3s76+vrY8GCBanqzgnOdEUAUP7eUthctGjRL9zeo0ePmD9/flEAAMCz0QEASEbYBAAgGWETAIDOM88mAOUzuM5Tz4DU9GwCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAkI2wCAJCMsAkAQDJd0x0agFaDZ66Ocq/XK3PGlexYQIX2bM6ePTsuvvjiOOWUU+KMM86Iq6++OjZv3txunwMHDsSUKVOiX79+0atXr5gwYULs3Lmz1PUGAKDcwubatWuLILl+/fpYs2ZNHDp0KH7rt34r9u/f37bP9OnTY9WqVbF8+fJi/+3bt8f48eNT1B0AgHK6jP7II4+0W16yZEnRw7lp06b49V//9dizZ08sWrQoli5dGqNHjy72Wbx4cQwbNqwIqCNHjixt7QEAKN8BQnm4zPXt27f4mofOvLdzzJgxbfsMHTo0Bg0aFOvWrTvmMVpaWqK5ubldAQCgwsPm4cOHY9q0aXHZZZfFBRdcUKxramqK7t27R58+fdrtW1tbW2zr6D7QmpqatjJw4MC3WyUAAMolbOb3bj733HOxbNmyd1SBWbNmFT2kraWxsfEdHQ8AgBN86qNPf/rT8dBDD8UTTzwRZ555Ztv6urq6OHjwYOzevbtd72Y+Gj3fdizV1dVFAQCgwns2sywrguaKFSviscceiyFDhrTbPmLEiOjWrVs0NDS0rcunRtq2bVuMGjWqdLUGAKD8ejbzS+f5SPPvfOc7xVybrfdh5vda9uzZs/g6efLkmDFjRjFoqHfv3jF16tQiaBqJDgBQed5S2Fy4cGHx9aMf/Wi79fn0Rtddd13xeu7cudGlS5diMvd8pHl9fX0sWLCglHUGAKAcw2Z+Gf2X6dGjR8yfP78oAABUtnc0zyYAAPwiwiYAAMkImwAAJCNsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjLAJAEAyXdMdGoBKMnjm6pIc55U540pyHKBz0LMJAEAywiYAAMkImwAAJCNsAgCQjAFCAJStUg1ayhm4BG+Pnk0AAJIRNgEASEbYBAAgGWETAIBkDBCqkJvRO2u9AFK+XwHHn55NAACSETYBAEhG2AQAIBlhEwCAZIRNAACSETYBAEhG2AQAIBlhEwCAZIRNAACSETYBAEhG2AQAIBlhEwCAZIRNAACSETYBAEhG2AQAoPOEzSeeeCKuvPLKGDBgQFRVVcXKlSvbbc+yLG677bbo379/9OzZM8aMGRNbtmwpZZ0BACjXsLl///648MILY/78+cfc/rWvfS3mzZsX9957b2zYsCFOPvnkqK+vjwMHDpSivgAAnEC6vtVvGDt2bFGOJe/VvPvuu+Pzn/98XHXVVcW6b37zm1FbW1v0gF577bXvvMYAAFTmPZtbt26Npqam4tJ5q5qamrjkkkti3bp1x/yelpaWaG5ublcAAKjQns1fJA+aubwn80j5cuu2o82ePTvuuOOOUlajbAyeufp4VwEA4MQejT5r1qzYs2dPW2lsbDzeVQIAoDOGzbq6uuLrzp07263Pl1u3Ha26ujp69+7drgAAUB5KGjaHDBlShMqGhoa2dfk9mPmo9FGjRpXyRwEAUI73bO7bty9eeumldoOCnnnmmejbt28MGjQopk2bFl/+8pfj3HPPLcLnrbfeWszJefXVV5e67gAAlFvY3LhxY/zGb/xG2/KMGTOKr5MmTYolS5bELbfcUszFeeONN8bu3bvj8ssvj0ceeSR69OhR2poDwAmqlANAX5kzrmTHgk4RNj/60Y8W82l2JH+q0Be/+MWiAABQ2Y77aHQAAMqXsAkAQDLCJgAAJ8YThACAE3OwkYFGpKJnEwCAZIRNAACSETYBAEhG2AQAIBkDhADgXX7qD1QSPZsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACTjCUIAQEU8uemVOeNKdizePD2bAAAkI2wCAJCMsAkAQDLCJgAAyRggBAAYiEMyejYBAEhG2AQAIBlhEwCAZIRNAACSMUCI43oTOQBQ3vRsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjCcIAQAVoZRPwHtlzriyrVOp6dkEAODEC5vz58+PwYMHR48ePeKSSy6JJ598MtWPAgCgksLmP/7jP8aMGTPi9ttvj6effjouvPDCqK+vj127dqX4cQAAVNI9m3fddVfccMMN8alPfapYvvfee2P16tXxjW98I2bOnNlu35aWlqK02rNnT/G1ubk53k2HW157V38eAJSrUn6Gd9bP51L9jodL+Pu9m9mp9WdlWfbLd85KrKWlJTvppJOyFStWtFv/yU9+MvvYxz72hv1vv/32vJaKoiiKoihKnFilsbHxl2bDkvds/uQnP4nXX389amtr263Pl1944YU37D9r1qziknurw4cPx09/+tPo169fVFVVRcpEPnDgwGhsbIzevXsn+zknGu3SMW3TMW3TMW3TMW3TMW1zbNql87RN3qO5d+/eGDBgQOef+qi6urooR+rTp8+79vPz/yFO2DfSLh3TNh3TNh3TNh3TNh3TNsemXTpH29TU1ByfAUKnnXZanHTSSbFz5852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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ From 4cc4614e1863499704aca6d86dbfe51955657ce0 Mon Sep 17 00:00:00 2001 From: Basarans Date: Sun, 20 Apr 2025 23:12:40 +0200 Subject: [PATCH 13/33] Update lab-01.ipynb --- lab-01.ipynb | 513 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 410 insertions(+), 103 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 7dab654..d0b0387 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 5, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -221,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 6, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -363,7 +363,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 10, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -871,27 +871,6 @@ "df.describe(include=\"all\").T" ] }, - { - "cell_type": "markdown", - "id": "05715c36", - "metadata": {}, - "source": [ - "**Exercise:** Together with the default percentile, return in the output also the 1st and 99th percentile\n", - "\n", - "Check at this link the documentation of the module [DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ea36463a", - "metadata": {}, - "outputs": [], - "source": [ - "percentiles = ...\n", - "df.describe(percentiles=)" - ] - }, { "cell_type": "markdown", "id": "d54d8a85", @@ -903,20 +882,20 @@ "\n", "Even in well-known datasets like the Titanic dataset, we might encounter:\n", "\n", - "- ❌ Missing values: Empty cells or NaNs that need to be filled, removed, or flagged.\n", + "- Missing values: Empty cells or NaNs that need to be filled, removed, or flagged.\n", "\n", - "- 🧩 Inconsistent or incorrect formats: For example, a numerical column with text entries.\n", + "- Inconsistent or incorrect formats: For example, a numerical column with text entries.\n", "\n", - "- 🎭 Duplicated entries: Repeated rows that can skew statistics and model results.\n", + "- Duplicated entries: Repeated rows that can skew statistics and model results.\n", "\n", - "- 🧱 Outliers or unrealistic values: Extremely high or low numbers that don’t make sense (e.g., negative ages).\n", + "- Outliers or unrealistic values: Extremely high or low numbers that don’t make sense (e.g., negative ages).\n", "\n", "These issues can significantly affect model accuracy and lead to false conclusions. So, this step focuses on detecting potential problems and planning how to handle them." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -924,7 +903,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "🚫 Missing values per column:\n", + "Missing values per column:\n", "PassengerId 0\n", "Survived 0\n", "Pclass 0\n", @@ -939,7 +918,7 @@ "Embarked 2\n", "dtype: int64\n", "\n", - "📊 Percentage of missing values:\n", + "Percentage of missing values:\n", "PassengerId 0.000000\n", "Survived 0.000000\n", "Pclass 0.000000\n", @@ -954,10 +933,10 @@ "Embarked 0.224467\n", "dtype: float64\n", "\n", - "📋 Number of duplicated rows:\n", + "Number of duplicated rows:\n", "0\n", "\n", - "🔍 Rows with missing 'Age':\n", + "Rows with missing 'Age':\n", " PassengerId Survived Pclass Name Sex Age \\\n", "5 6 0 3 Moran, Mr. James male NaN \n", "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", @@ -972,41 +951,41 @@ "26 0 0 2631 7.2250 NaN C \n", "28 0 0 330959 7.8792 NaN Q \n", "\n", - "⚠️ Rows with invalid 'Age' values (if any):\n", + "Rows with invalid 'Age' values (if any):\n", "Empty DataFrame\n", "Columns: [PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked]\n", "Index: []\n", "\n", - "👀 Unique values in 'Sex' column:\n", + "Unique values in 'Sex' column:\n", "['male' 'female']\n" ] } ], "source": [ "# 1. Check for missing values per column\n", - "print(\"🚫 Missing values per column:\")\n", + "print(\"Missing values per column:\")\n", "print(df.isnull().sum())\n", "\n", "# 2. Optional: Check the percentage of missing values\n", - "print(\"\\n📊 Percentage of missing values:\")\n", + "print(\"\\nPercentage of missing values:\")\n", "print((df.isnull().sum() / len(df)) * 100)\n", "\n", "# 3. Check for duplicated rows\n", - "print(\"\\n📋 Number of duplicated rows:\")\n", + "print(\"\\nNumber of duplicated rows:\")\n", "print(df.duplicated().sum())\n", "\n", "# 4. Display rows with invalid or inconsistent data (examples)\n", "\n", "# Example: Show rows with missing 'Age'\n", - "print(\"\\n🔍 Rows with missing 'Age':\")\n", + "print(\"\\nRows with missing 'Age':\")\n", "print(df[df['Age'].isnull()].head())\n", "\n", "# Example: Check for invalid ages (e.g., negative values)\n", - "print(\"\\n⚠️ Rows with invalid 'Age' values (if any):\")\n", + "print(\"\\nRows with invalid 'Age' values (if any):\")\n", "print(df[df['Age'] < 0])\n", "\n", "# Example: Check for unknown 'Sex' values\n", - "print(\"\\n👀 Unique values in 'Sex' column:\")\n", + "print(\"\\nUnique values in 'Sex' column:\")\n", "print(df['Sex'].unique())" ] }, @@ -1028,6 +1007,106 @@ "- It helps us decide how to normalize, transform, or encode data before building models." ] }, + { + "cell_type": "code", + "execution_count": 8, + "id": "60966a2d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Numeric summary:\n", + " PassengerId Survived Pclass Age SibSp \\\n", + "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", + "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", + "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", + "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", + "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", + "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", + "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", + "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", + "\n", + " Parch Fare \n", + "count 891.000000 891.000000 \n", + "mean 0.381594 32.204208 \n", + "std 0.806057 49.693429 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 7.910400 \n", + "50% 0.000000 14.454200 \n", + "75% 0.000000 31.000000 \n", + "max 6.000000 512.329200 \n", + "\n", + "Value counts for 'Sex':\n", + "Sex\n", + "male 577\n", + "female 314\n", + "Name: count, dtype: int64\n", + "\n", + "Value counts for 'Pclass':\n", + "Pclass\n", + "3 491\n", + "1 216\n", + "2 184\n", + "Name: count, dtype: int64\n", + "\n", + "Value counts for 'Embarked':\n", + "Embarked\n", + "S 644\n", + "C 168\n", + "Q 77\n", + "NaN 2\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "# Summary statistics for numeric columns\n", + "print(\"Numeric summary:\")\n", + "print(df.describe())\n", + "\n", + "# Value counts for categorical features\n", + "print(\"\\nValue counts for 'Sex':\")\n", + "print(df['Sex'].value_counts())\n", + "\n", + "print(\"\\nValue counts for 'Pclass':\")\n", + "print(df['Pclass'].value_counts())\n", + "\n", + "print(\"\\nValue counts for 'Embarked':\")\n", + "print(df['Embarked'].value_counts(dropna=False)) # include NaN" + ] + }, + { + "cell_type": "markdown", + "id": "fb1de943", + "metadata": {}, + "source": [ + "**Exercise:** Together with the default percentile, return in the output also the 1st and 99th percentile\n", + "\n", + "Check at this link the documentation of the module [DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ecb40dad", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "expected argument value expression (3210384145.py, line 2)", + "output_type": "error", + "traceback": [ + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[24]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + ] + } + ], + "source": [ + "percentiles = ...\n", + "df.describe(percentiles=)" + ] + }, { "cell_type": "markdown", "id": "da3dba6c", @@ -1046,7 +1125,7 @@ "id": "bc8d8eb3", "metadata": {}, "source": [ - "📊 1. Histogram + KDE\n", + "1. Histogram + KDE\n", "\n", "Purpose: Shows how a numerical variable is distributed (e.g., Age).\n", "\n", @@ -1057,31 +1136,201 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "ee827da3", + "execution_count": 1, + "id": "34a41e13", "metadata": {}, "outputs": [ { - "ename": "AttributeError", - "evalue": "Rectangle.set() got an unexpected keyword argument 'kde'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[37]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;66;03m# Histogram + KDE for Age\u001b[39;00m\n\u001b[32m 4\u001b[39m plt.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[43mplt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mhist\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mAge\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkde\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbins\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m30\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 6\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mDistribution of Age with KDE\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 7\u001b[39m plt.xlabel(\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m)\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\_api\\deprecation.py:453\u001b[39m, in \u001b[36mmake_keyword_only..wrapper\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 447\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) > name_idx:\n\u001b[32m 448\u001b[39m warn_deprecated(\n\u001b[32m 449\u001b[39m since, message=\u001b[33m\"\u001b[39m\u001b[33mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 450\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[33m; the \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 451\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mparameter will become keyword-only in \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[33m.\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 452\u001b[39m name=name, obj_type=\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc.\u001b[34m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m()\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m453\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\pyplot.py:3467\u001b[39m, in \u001b[36mhist\u001b[39m\u001b[34m(x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, data, **kwargs)\u001b[39m\n\u001b[32m 3442\u001b[39m \u001b[38;5;129m@_copy_docstring_and_deprecators\u001b[39m(Axes.hist)\n\u001b[32m 3443\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mhist\u001b[39m(\n\u001b[32m 3444\u001b[39m x: ArrayLike | Sequence[ArrayLike],\n\u001b[32m (...)\u001b[39m\u001b[32m 3465\u001b[39m BarContainer | Polygon | \u001b[38;5;28mlist\u001b[39m[BarContainer | Polygon],\n\u001b[32m 3466\u001b[39m ]:\n\u001b[32m-> \u001b[39m\u001b[32m3467\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mgca\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mhist\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 3468\u001b[39m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3469\u001b[39m \u001b[43m \u001b[49m\u001b[43mbins\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbins\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3470\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 3471\u001b[39m \u001b[43m \u001b[49m\u001b[43mdensity\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdensity\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3472\u001b[39m \u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[43m=\u001b[49m\u001b[43mweights\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3473\u001b[39m \u001b[43m \u001b[49m\u001b[43mcumulative\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcumulative\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3474\u001b[39m \u001b[43m \u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3475\u001b[39m \u001b[43m \u001b[49m\u001b[43mhisttype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mhisttype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3476\u001b[39m \u001b[43m \u001b[49m\u001b[43malign\u001b[49m\u001b[43m=\u001b[49m\u001b[43malign\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3477\u001b[39m \u001b[43m \u001b[49m\u001b[43morientation\u001b[49m\u001b[43m=\u001b[49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3478\u001b[39m \u001b[43m \u001b[49m\u001b[43mrwidth\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrwidth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3479\u001b[39m \u001b[43m \u001b[49m\u001b[43mlog\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3480\u001b[39m \u001b[43m \u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3481\u001b[39m \u001b[43m \u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3482\u001b[39m \u001b[43m \u001b[49m\u001b[43mstacked\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstacked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3483\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mdata\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3484\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3485\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\_api\\deprecation.py:453\u001b[39m, in \u001b[36mmake_keyword_only..wrapper\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 447\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) > name_idx:\n\u001b[32m 448\u001b[39m warn_deprecated(\n\u001b[32m 449\u001b[39m since, message=\u001b[33m\"\u001b[39m\u001b[33mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[33m \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 450\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[33m; the \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 451\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mparameter will become keyword-only in \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[33m.\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 452\u001b[39m name=name, obj_type=\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc.\u001b[34m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m()\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m453\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\__init__.py:1550\u001b[39m, in \u001b[36m_preprocess_data..inner\u001b[39m\u001b[34m(ax, data, *args, **kwargs)\u001b[39m\n\u001b[32m 1546\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m label_namer \u001b[38;5;129;01mand\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33mlabel\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m args_and_kwargs:\n\u001b[32m 1547\u001b[39m new_kwargs[\u001b[33m\"\u001b[39m\u001b[33mlabel\u001b[39m\u001b[33m\"\u001b[39m] = _label_from_arg(\n\u001b[32m 1548\u001b[39m args_and_kwargs.get(label_namer), auto_label)\n\u001b[32m-> \u001b[39m\u001b[32m1550\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43mnew_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mnew_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\axes\\_axes.py:7297\u001b[39m, in \u001b[36mAxes.hist\u001b[39m\u001b[34m(self, x, bins, range, density, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)\u001b[39m\n\u001b[32m 7289\u001b[39m p = patch[\u001b[32m0\u001b[39m]\n\u001b[32m 7290\u001b[39m kwargs.update({\n\u001b[32m 7291\u001b[39m \u001b[33m'\u001b[39m\u001b[33mhatch\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(hatches),\n\u001b[32m 7292\u001b[39m \u001b[33m'\u001b[39m\u001b[33mlinewidth\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(linewidths),\n\u001b[32m (...)\u001b[39m\u001b[32m 7295\u001b[39m \u001b[33m'\u001b[39m\u001b[33mfacecolor\u001b[39m\u001b[33m'\u001b[39m: \u001b[38;5;28mnext\u001b[39m(facecolors),\n\u001b[32m 7296\u001b[39m })\n\u001b[32m-> \u001b[39m\u001b[32m7297\u001b[39m \u001b[43mp\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_internal_update\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 7298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m lbl \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 7299\u001b[39m p.set_label(lbl)\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\artist.py:1233\u001b[39m, in \u001b[36mArtist._internal_update\u001b[39m\u001b[34m(self, kwargs)\u001b[39m\n\u001b[32m 1226\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_internal_update\u001b[39m(\u001b[38;5;28mself\u001b[39m, kwargs):\n\u001b[32m 1227\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 1228\u001b[39m \u001b[33;03m Update artist properties without prenormalizing them, but generating\u001b[39;00m\n\u001b[32m 1229\u001b[39m \u001b[33;03m errors as if calling `set`.\u001b[39;00m\n\u001b[32m 1230\u001b[39m \n\u001b[32m 1231\u001b[39m \u001b[33;03m The lack of prenormalization is to maintain backcompatibility.\u001b[39;00m\n\u001b[32m 1232\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1233\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_update_props\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1234\u001b[39m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{cls.__name__}\u001b[39;49;00m\u001b[33;43m.set() got an unexpected keyword argument \u001b[39;49m\u001b[33;43m\"\u001b[39;49m\n\u001b[32m 1235\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{prop_name!r}\u001b[39;49;00m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\andre\\Documents\\University\\MALTO\\Workshop-ML\\.venv\\Lib\\site-packages\\matplotlib\\artist.py:1206\u001b[39m, in \u001b[36mArtist._update_props\u001b[39m\u001b[34m(self, props, errfmt)\u001b[39m\n\u001b[32m 1204\u001b[39m func = \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mset_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mk\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[32m 1205\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mcallable\u001b[39m(func):\n\u001b[32m-> \u001b[39m\u001b[32m1206\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\n\u001b[32m 1207\u001b[39m errfmt.format(\u001b[38;5;28mcls\u001b[39m=\u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m), prop_name=k),\n\u001b[32m 1208\u001b[39m name=k)\n\u001b[32m 1209\u001b[39m ret.append(func(v))\n\u001b[32m 1210\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ret:\n", - "\u001b[31mAttributeError\u001b[39m: Rectangle.set() got an unexpected keyword argument 'kde'" + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting matplotlib\n", + " Downloading matplotlib-3.10.1-cp313-cp313-win_amd64.whl.metadata (11 kB)\n", + "Collecting contourpy>=1.0.1 (from matplotlib)\n", + " Downloading contourpy-1.3.2-cp313-cp313-win_amd64.whl.metadata (5.5 kB)\n", + "Collecting cycler>=0.10 (from matplotlib)\n", + " Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting fonttools>=4.22.0 (from matplotlib)\n", + " Downloading fonttools-4.57.0-cp313-cp313-win_amd64.whl.metadata (104 kB)\n", + "Collecting kiwisolver>=1.3.1 (from matplotlib)\n", + " Downloading kiwisolver-1.4.8-cp313-cp313-win_amd64.whl.metadata (6.3 kB)\n", + "Requirement already satisfied: numpy>=1.23 in c:\\users\\pc1\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from matplotlib) (2.2.4)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib) (24.2)\n", + "Collecting pillow>=8 (from matplotlib)\n", + " Downloading pillow-11.2.1-cp313-cp313-win_amd64.whl.metadata (9.1 kB)\n", + "Collecting pyparsing>=2.3.1 (from matplotlib)\n", + " Downloading pyparsing-3.2.3-py3-none-any.whl.metadata (5.0 kB)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n", + "Downloading matplotlib-3.10.1-cp313-cp313-win_amd64.whl (8.1 MB)\n", + " ---------------------------------------- 0.0/8.1 MB ? eta -:--:--\n", + " ------- -------------------------------- 1.6/8.1 MB 8.1 MB/s eta 0:00:01\n", + " -------------- ------------------------- 2.9/8.1 MB 7.6 MB/s eta 0:00:01\n", + " ---------------- ----------------------- 3.4/8.1 MB 5.7 MB/s eta 0:00:01\n", + " ------------------ --------------------- 3.7/8.1 MB 5.2 MB/s eta 0:00:01\n", + " -------------------- ------------------- 4.2/8.1 MB 4.1 MB/s eta 0:00:01\n", + " ---------------------- ----------------- 4.5/8.1 MB 3.6 MB/s eta 0:00:01\n", + " ----------------------- ---------------- 4.7/8.1 MB 3.4 MB/s eta 0:00:01\n", + " ------------------------ --------------- 5.0/8.1 MB 3.2 MB/s eta 0:00:01\n", + " -------------------------- ------------- 5.2/8.1 MB 2.9 MB/s eta 0:00:01\n", + " ---------------------------- ----------- 5.8/8.1 MB 2.8 MB/s eta 0:00:01\n", + " ----------------------------- ---------- 6.0/8.1 MB 2.7 MB/s eta 0:00:01\n", + " --------------------------------- ------ 6.8/8.1 MB 2.7 MB/s eta 0:00:01\n", + " ------------------------------------- -- 7.6/8.1 MB 2.8 MB/s eta 0:00:01\n", + " ---------------------------------------- 8.1/8.1 MB 2.7 MB/s eta 0:00:00\n", + "Downloading contourpy-1.3.2-cp313-cp313-win_amd64.whl (223 kB)\n", + "Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", + "Downloading fonttools-4.57.0-cp313-cp313-win_amd64.whl (2.2 MB)\n", + " ---------------------------------------- 0.0/2.2 MB ? eta -:--:--\n", + " -------------- ------------------------- 0.8/2.2 MB 4.7 MB/s eta 0:00:01\n", + " ----------------------- ---------------- 1.3/2.2 MB 4.6 MB/s eta 0:00:01\n", + " ---------------------------- ----------- 1.6/2.2 MB 3.9 MB/s eta 0:00:01\n", + " -------------------------------------- - 2.1/2.2 MB 2.6 MB/s eta 0:00:01\n", + " ---------------------------------------- 2.2/2.2 MB 2.6 MB/s eta 0:00:00\n", + "Downloading kiwisolver-1.4.8-cp313-cp313-win_amd64.whl (71 kB)\n", + "Downloading pillow-11.2.1-cp313-cp313-win_amd64.whl (2.7 MB)\n", + " ---------------------------------------- 0.0/2.7 MB ? eta -:--:--\n", + " ------- -------------------------------- 0.5/2.7 MB 4.1 MB/s eta 0:00:01\n", + " ----------------------- ---------------- 1.6/2.7 MB 4.0 MB/s eta 0:00:01\n", + " --------------------------------------- 2.6/2.7 MB 4.5 MB/s eta 0:00:01\n", + " ---------------------------------------- 2.7/2.7 MB 4.3 MB/s eta 0:00:00\n", + "Downloading pyparsing-3.2.3-py3-none-any.whl (111 kB)\n", + "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", + "Successfully installed contourpy-1.3.2 cycler-0.12.1 fonttools-4.57.0 kiwisolver-1.4.8 matplotlib-3.10.1 pillow-11.2.1 pyparsing-3.2.3\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " WARNING: The scripts fonttools.exe, pyftmerge.exe, pyftsubset.exe and ttx.exe are installed in 'c:\\Users\\PC1\\AppData\\Local\\Programs\\Python\\Python313\\Scripts' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n", + "\n", + "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "pip install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2e77d602", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting scipy\n", + " Downloading scipy-1.15.2-cp313-cp313-win_amd64.whl.metadata (60 kB)\n", + "Requirement already satisfied: numpy<2.5,>=1.23.5 in c:\\users\\pc1\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from scipy) (2.2.4)\n", + "Downloading scipy-1.15.2-cp313-cp313-win_amd64.whl (41.0 MB)\n", + " ---------------------------------------- 0.0/41.0 MB ? eta -:--:--\n", + " --------------------------------------- 0.8/41.0 MB 3.9 MB/s eta 0:00:11\n", + " - -------------------------------------- 1.8/41.0 MB 5.0 MB/s eta 0:00:08\n", + " -- ------------------------------------- 2.9/41.0 MB 4.9 MB/s eta 0:00:08\n", + " --- ------------------------------------ 3.4/41.0 MB 4.7 MB/s eta 0:00:09\n", + " --- ------------------------------------ 3.7/41.0 MB 4.0 MB/s eta 0:00:10\n", + " ---- ----------------------------------- 4.2/41.0 MB 3.2 MB/s eta 0:00:12\n", + " ---- ----------------------------------- 4.5/41.0 MB 3.1 MB/s eta 0:00:12\n", + " ---- ----------------------------------- 5.0/41.0 MB 2.8 MB/s eta 0:00:13\n", + " ----- ---------------------------------- 5.2/41.0 MB 2.8 MB/s eta 0:00:13\n", + " ----- ---------------------------------- 6.0/41.0 MB 2.7 MB/s eta 0:00:13\n", + " ------ --------------------------------- 6.6/41.0 MB 2.7 MB/s eta 0:00:13\n", + " ------ --------------------------------- 7.1/41.0 MB 2.7 MB/s eta 0:00:13\n", + " ------- -------------------------------- 7.6/41.0 MB 2.7 MB/s eta 0:00:13\n", + " -------- ------------------------------- 8.4/41.0 MB 2.8 MB/s eta 0:00:12\n", + " -------- ------------------------------- 8.9/41.0 MB 2.8 MB/s eta 0:00:12\n", + " --------- ------------------------------ 9.7/41.0 MB 2.8 MB/s eta 0:00:12\n", + " ---------- ----------------------------- 10.5/41.0 MB 2.8 MB/s eta 0:00:11\n", + " ---------- ----------------------------- 11.0/41.0 MB 2.9 MB/s eta 0:00:11\n", + " ----------- ---------------------------- 11.5/41.0 MB 2.8 MB/s eta 0:00:11\n", + " ------------ --------------------------- 12.3/41.0 MB 2.8 MB/s eta 0:00:11\n", + " ------------ --------------------------- 12.8/41.0 MB 2.8 MB/s eta 0:00:11\n", + " ------------- -------------------------- 13.4/41.0 MB 2.8 MB/s eta 0:00:10\n", + " ------------- -------------------------- 13.9/41.0 MB 2.8 MB/s eta 0:00:10\n", + " -------------- ------------------------- 14.4/41.0 MB 2.8 MB/s eta 0:00:10\n", + " -------------- ------------------------- 14.7/41.0 MB 2.7 MB/s eta 0:00:10\n", + " -------------- ------------------------- 15.2/41.0 MB 2.7 MB/s eta 0:00:10\n", + " --------------- ------------------------ 15.5/41.0 MB 2.6 MB/s eta 0:00:10\n", + " --------------- ------------------------ 15.7/41.0 MB 2.6 MB/s eta 0:00:10\n", + " --------------- ------------------------ 16.0/41.0 MB 2.6 MB/s eta 0:00:10\n", + " ---------------- ----------------------- 16.5/41.0 MB 2.5 MB/s eta 0:00:10\n", + " ---------------- ----------------------- 17.3/41.0 MB 2.6 MB/s eta 0:00:10\n", + " ----------------- ---------------------- 17.8/41.0 MB 2.6 MB/s eta 0:00:09\n", + " ------------------ --------------------- 18.6/41.0 MB 2.6 MB/s eta 0:00:09\n", + " ------------------ --------------------- 19.4/41.0 MB 2.6 MB/s eta 0:00:09\n", + " ------------------- -------------------- 20.4/41.0 MB 2.7 MB/s eta 0:00:08\n", + " -------------------- ------------------- 21.2/41.0 MB 2.7 MB/s eta 0:00:08\n", + " --------------------- ------------------ 22.0/41.0 MB 2.7 MB/s eta 0:00:07\n", + " ---------------------- ----------------- 22.8/41.0 MB 2.8 MB/s eta 0:00:07\n", + " ----------------------- ---------------- 23.9/41.0 MB 2.8 MB/s eta 0:00:07\n", + " ------------------------ --------------- 24.6/41.0 MB 2.8 MB/s eta 0:00:06\n", + " ------------------------ --------------- 25.4/41.0 MB 2.9 MB/s eta 0:00:06\n", + " ------------------------- -------------- 26.0/41.0 MB 2.9 MB/s eta 0:00:06\n", + " ------------------------- -------------- 26.5/41.0 MB 2.8 MB/s eta 0:00:06\n", + " -------------------------- ------------- 26.7/41.0 MB 2.8 MB/s eta 0:00:06\n", + " -------------------------- ------------- 27.3/41.0 MB 2.8 MB/s eta 0:00:05\n", + " --------------------------- ------------ 27.8/41.0 MB 2.8 MB/s eta 0:00:05\n", + " --------------------------- ------------ 28.3/41.0 MB 2.8 MB/s eta 0:00:05\n", + " --------------------------- ------------ 28.6/41.0 MB 2.8 MB/s eta 0:00:05\n", + " ---------------------------- ----------- 29.4/41.0 MB 2.8 MB/s eta 0:00:05\n", + " ----------------------------- ---------- 30.1/41.0 MB 2.8 MB/s eta 0:00:04\n", + " ------------------------------ --------- 30.9/41.0 MB 2.8 MB/s eta 0:00:04\n", + " ------------------------------ --------- 31.7/41.0 MB 2.8 MB/s eta 0:00:04\n", + " ------------------------------- -------- 32.2/41.0 MB 2.8 MB/s eta 0:00:04\n", + " ------------------------------- -------- 32.8/41.0 MB 2.8 MB/s eta 0:00:03\n", + " -------------------------------- ------- 33.6/41.0 MB 2.8 MB/s eta 0:00:03\n", + " --------------------------------- ------ 34.1/41.0 MB 2.8 MB/s eta 0:00:03\n", + " --------------------------------- ------ 34.3/41.0 MB 2.8 MB/s eta 0:00:03\n", + " --------------------------------- ------ 34.6/41.0 MB 2.8 MB/s eta 0:00:03\n", + " --------------------------------- ------ 34.6/41.0 MB 2.8 MB/s eta 0:00:03\n", + " ---------------------------------- ----- 34.9/41.0 MB 2.7 MB/s eta 0:00:03\n", + " ---------------------------------- ----- 35.4/41.0 MB 2.7 MB/s eta 0:00:03\n", + " ----------------------------------- ---- 36.2/41.0 MB 2.7 MB/s eta 0:00:02\n", + " ------------------------------------ --- 37.0/41.0 MB 2.7 MB/s eta 0:00:02\n", + " ------------------------------------ --- 37.7/41.0 MB 2.7 MB/s eta 0:00:02\n", + " ------------------------------------- -- 38.3/41.0 MB 2.7 MB/s eta 0:00:01\n", + " -------------------------------------- - 39.1/41.0 MB 2.7 MB/s eta 0:00:01\n", + " -------------------------------------- - 39.8/41.0 MB 2.7 MB/s eta 0:00:01\n", + " --------------------------------------- 40.6/41.0 MB 2.7 MB/s eta 0:00:01\n", + " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", + " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", + " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", + " ---------------------------------------- 41.0/41.0 MB 2.6 MB/s eta 0:00:00\n", + "Installing collected packages: scipy\n", + "Successfully installed scipy-1.15.2\n", + "Note: you may need to restart the kernel to use updated packages.\n" ] }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "pip install scipy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee827da3", + "metadata": {}, + "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAApsAAAGsCAYAAACSBWzsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAITBJREFUeJzt3Q2QVtV9P/DfIrBQkUVQd6GCoDEBNdhIjKCmSZF2h1KjhdrYIQ1GqlNLiEBbA2nUmDdonIrSAjaWQDOGUukEIlK1ZI04aQEFa6qxIkaUbWChaQoLWBZG7n/uzX83LLKJL8+R5Xk+n5njPvdl75493n2eL+fec25VlmVZAABAAl1SHBQAAHLCJgAAyQibAAAkI2wCAJCMsAkAQDLCJgAAyQibAAAk0zU6mcOHD8f27dvjlFNOiaqqquNdHQAAjpJP0753794YMGBAdOnS5cQKm3nQHDhw4PGuBgAAv0RjY2OceeaZJ1bYzHs0Wyvfu3fv410dAACO0tzcXHQOtua2Eypstl46z4OmsAkA0Hm9mVseDRACACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIRtgEACAZYRMAgGSETQAAkhE2AQBIpmu6QwODZ64u2bFemTOuZMcCgHeLnk0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEA6Bxhc/DgwVFVVfWGMmXKlGL7gQMHitf9+vWLXr16xYQJE2Lnzp2p6g4AQDmFzaeeeip27NjRVtasWVOsv+aaa4qv06dPj1WrVsXy5ctj7dq1sX379hg/fnyamgMA0Ol1fSs7n3766e2W58yZE+ecc0585CMfiT179sSiRYti6dKlMXr06GL74sWLY9iwYbF+/foYOXJkaWsOAED53rN58ODBuP/+++P6668vLqVv2rQpDh06FGPGjGnbZ+jQoTFo0KBYt25dh8dpaWmJ5ubmdgUAgAoPmytXrozdu3fHddddVyw3NTVF9+7do0+fPu32q62tLbZ1ZPbs2VFTU9NWBg4c+HarBABAuYTN/JL52LFjY8CAAe+oArNmzSouwbeWxsbGd3Q8AABO0Hs2W7366qvx3e9+N7797W+3raurqysuree9nUf2buaj0fNtHamuri4KAADl5231bOYDf84444wYN25c27oRI0ZEt27doqGhoW3d5s2bY9u2bTFq1KjS1BYAgPLu2Tx8+HARNidNmhRdu/782/P7LSdPnhwzZsyIvn37Ru/evWPq1KlF0DQSHQCgMr3lsJlfPs97K/NR6EebO3dudOnSpZjMPR9lXl9fHwsWLChVXQEAOMFUZVmWHe9KHCmf+ijvJc0HC+W9o3AiGzxzdcmO9cqcn9+2AgAnSl7zbHQAAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASEbYBAAgGWETAIBkhE0AAJIRNgEASKZrukPDiWnwzNVRzkr5+70yZ1zJjgVAedKzCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJdE13aKDcDZ65umTHemXOuJIdC4DOQ88mAADJCJsAACQjbAIAkIywCQBAMsImAACdJ2z++Mc/jk984hPRr1+/6NmzZ7z//e+PjRs3tm3Psixuu+226N+/f7F9zJgxsWXLllLXGwCAcgub//u//xuXXXZZdOvWLR5++OF4/vnn46/+6q/i1FNPbdvna1/7WsybNy/uvffe2LBhQ5x88slRX18fBw4cSFF/AADKZZ7Nv/zLv4yBAwfG4sWL29YNGTKkXa/m3XffHZ///OfjqquuKtZ985vfjNra2li5cmVce+21paw7AADl1LP54IMPxgc/+MG45ppr4owzzogPfOADcd9997Vt37p1azQ1NRWXzlvV1NTEJZdcEuvWrTvmMVtaWqK5ubldAQCgAsPmyy+/HAsXLoxzzz03Hn300bjpppviM5/5TPz93/99sT0Pmrm8J/NI+XLrtqPNnj27CKStJe85BQCgAsPm4cOH46KLLoqvfvWrRa/mjTfeGDfccENxf+bbNWvWrNizZ09baWxsfNvHAgDgBA6b+Qjz8847r926YcOGxbZt24rXdXV1xdedO3e22ydfbt12tOrq6ujdu3e7AgBABYbNfCT65s2b26178cUX46yzzmobLJSHyoaGhrbt+T2Y+aj0UaNGlarOAACU42j06dOnx6WXXlpcRv/93//9ePLJJ+PrX/96UXJV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aG5ublcAAKjQns1fJA+aubwn80j5cuu2o82ePTvuuOOOUlajbAyeufp4VwEA4MQejT5r1qzYs2dPW2lsbDzeVQIAoDOGzbq6uuLrzp07263Pl1u3Ha26ujp69+7drgAAUB5KGjaHDBlShMqGhoa2dfk9mPmo9FGjRpXyRwEAUI73bO7bty9eeumldoOCnnnmmejbt28MGjQopk2bFl/+8pfj3HPPLcLnrbfeWszJefXVV5e67gAAlFvY3LhxY/zGb/xG2/KMGTOKr5MmTYolS5bELbfcUszFeeONN8bu3bvj8ssvj0ceeSR69OhR2poDwAmqlANAX5kzrmTHgk4RNj/60Y8W82l2JH+q0Be/+MWiAABQ2Y77aHQAAMqXsAkAQDLCJgAAJ8YThACAE3OwkYFGpKJnEwCAZIRNAACSETYBAEhG2AQAIBkDhADgXX7qD1QSPZsAACQjbAIAkIywCQBAMsImAADJCJsAACQjbAIAkIywCQBAMsImAADJCJsAACTjCUIAQEU8uemVOeNKdizePD2bAAAkI2wCAJCMsAkAQDLCJgAAyRggBAAYiEMyejYBAEhG2AQAIBlhEwCAZIRNAACSMUCI43oTOQBQ3vRsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjLAJAEAywiYAAMkImwAAJCNsAgCQjCcIAQAVoZRPwHtlzriyrVOp6dkEAODEC5vz58+PwYMHR48ePeKSSy6JJ598MtWPAgCgksLmP/7jP8aMGTPi9ttvj6effjouvPDCqK+vj127dqX4cQAAVNI9m3fddVfccMMN8alPfapYvvfee2P16tXxjW98I2bOnNlu35aWlqK02rNnT/G1ubk53k2HW157V38eAJSrUn6Gd9bP51L9jodL+Pu9m9mp9WdlWfbLd85KrKWlJTvppJOyFStWtFv/yU9+MvvYxz72hv1vv/32vJaKoiiKoihKnFilsbHxl2bDkvds/uQnP4nXX389amtr263Pl1944YU37D9r1qziknurw4cPx09/+tPo169fVFVVRcpEPnDgwGhsbIzevXsn+zknGu3SMW3TMW3TMW3TMW3TMW1zbNql87RN3qO5d+/eGDBgQOef+qi6urooR+rTp8+79vPz/yFO2DfSLh3TNh3TNh3TNh3TNh3TNsemXTpH29TU1ByfAUKnnXZanHTSSbFz5852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", + "image/png": "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7twZy5Ytg6Ex/datW2jdujWaN2+OM2fO4LPPPsM333wT6/U3btxAw4YN0apVK5w9e1YlKZJo9OnTR6NPRESUPrErFBERaap69epo27Yt+vfvj4iICGTPnh3r1q1DrVq1MGzYMGzZsgXnzp2L3n7kyJGYOHEinj17BhcXF9WNSsZn/PDDD9HbSGJRs2ZN1WohLR1ERJTy2GJBRESakfEUR48eRYcOHdRja2trtGvXTo21MDxfsWLFWK+pVKlSrMfSkiHdp2SMhmFp0KABoqKiVIsHERGlDutUeh8iIqLXSAIhrRQxB2tLQ7qdnR3mzp2b6DEa0kVKxlXElStXLqPGS0RECWNiQUREmpCEYuXKlZgxYwbq168f6zkZU/G///1PjbvYunVrrOeOHTsW63G5cuVw8eJFFChQIFXiJiKi+HGMBRERaWLDhg2q29PDhw/h7Owc67mhQ4di586damC3JBcDBgxA9+7dcfr0aQwaNAh3795VVaHkdTJgu0qVKvj000/VeIuMGTOqRGP79u2JbvUgIqLk4xgLIiLSrBtUvXr1XksqhFR4On78OF6+fIlff/0V69evR6lSpbBgwYLoqlDSXUrI+j179uDq1auq5GzZsmUxevRozoVBRJTK2GJBRERpilSEWrhwIXx9fbUOhYiIYuAYCyIiMmnz589XlaGyZMmCAwcOYNq0aZyjgojIBDGxICIik3bt2jV8++23ePr0qaryJGMshg8frnVYREQUB7tCERERERFRsnHwNhERERERJRsTCyIiIiIiSjYmFkRERERElGxMLIiIiIiIKNmYWBARERERUbIxsSAiIiIiomRjYkFERERERMnGxIKIiIiIiJKNiQURERERESG5/g+smbRJqOjpZgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1091,15 +1340,29 @@ } ], "source": [ - "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", - "# Histogram + KDE for Age\n", + "# Set a general style for plots\n", + "#plt.style.use('seaborn-whitegrid')\n", + "\n", "plt.figure(figsize=(8, 5))\n", - "sns.histplot(data=df, x='Age', kde=True, bins=30)\n", + "plt.hist(df['Age'].dropna(), bins=30, color='skyblue', edgecolor='black', density=True, alpha=0.6, label='Histogram')\n", + "\n", + "\n", + "from scipy.stats import gaussian_kde\n", + "# gaussian_kde: A class for performing kernel density estimation.\n", + "# It is a non-parametric way to estimate the probability density function of a random variable.\n", + "# It is a useful tool for visualizing the distribution of data points in a dataset.\n", + "kde = gaussian_kde(df['Age'].dropna())\n", + "age_range = np.linspace(df['Age'].min(), df['Age'].max(), 100)\n", + "plt.plot(age_range, kde(age_range), color='red', label='KDE')\n", + "\n", + "\n", "plt.title('Distribution of Age with KDE')\n", "plt.xlabel('Age')\n", - "plt.ylabel('Frequency')\n", + "plt.ylabel('Density')\n", + "plt.legend()\n", + "plt.tight_layout()\n", "plt.show()\n" ] }, @@ -1108,7 +1371,7 @@ "id": "9ca955e1", "metadata": {}, "source": [ - "📦 2. Boxplot\n", + "2. Boxplot\n", "\n", "Purpose: Great for comparing numeric distributions across categories and spotting outliers.\n", "\n", @@ -1117,29 +1380,39 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 20, "id": "5c605b8c", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'plt' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[12]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Boxplot: Age vs. Survived\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[43mplt\u001b[49m.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m 3\u001b[39m sns.boxplot(data=df, x=\u001b[33m'\u001b[39m\u001b[33mSurvived\u001b[39m\u001b[33m'\u001b[39m, y=\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 4\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mBoxplot of Age by Survival\u001b[39m\u001b[33m'\u001b[39m)\n", - "\u001b[31mNameError\u001b[39m: name 'plt' is not defined" + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\PC1\\AppData\\Local\\Temp\\ipykernel_117684\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", + " plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n" ] + }, + { + "data": { + "image/png": "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GVG8eHHzReJrOnr1tGnTTHDwpKHiP//5j6xatUpWrlwp69atkyeeeOKyMDhlypRcLjGAvKZ79+7y66+/ynvvvSd//vmnfPrpp9K6dWs5fvy41bHr4sWLV11PT8w1yGT2AlVOmDp1qvTo0cMc/x36fdOqVSvz3ZcePR7/8MMP5pgMZDu9jwUQaPr27evq1KmTKyoqyjVs2DD3/GXLlul9W7zW/fjjj1316tVzBQcHu6pUqeKaMGGCe9ltt91m1vec0qLbLVSokOvChQvplmnevHmu8PDwy17nuc0RI0a4brjhBtecOXNcVatWdQUFBbneeecdV4UKFVyXLl3yeu3dd9/teuSRR7xep7766itXSEiI68SJE17rP/300642bdq4n3///feuVq1auYoUKeKqVKmSa9CgQa5Tp065l8fHx5vPUJdrWRYuXGg+n0mTJqX7Hn/++WdXgQIFXImJie5527ZtM+9Rlzm++OIL897+/vtv97y//vrLrLdr1650tw8gf9Pjmh4n1qxZk+46e/fuNev8+uuvl73uu+++M8/1UZ9//vnnrkaNGrkKFy5sjrU6b/v27V7bmzhxoqt69eper9PtJSQkmOOjbsPT0qVLXcWLF3edPn3aPN+/f7+rR48e5vhfqlQpc+zWMjouXrzoGjJkiFleunRp85310EMPubp06ZLue9TX6PorV67M8GfgSb8LXnrppXS3D2QVNRYIWAULFjRtT/WqzoEDB9JcZ/PmzdKzZ0/p1auX/PHHH6avwssvvyzz5893VytXqlRJRo4caaq/dUqLXsHSq13Lli0zV75s7Nq1Sz755BOzb63G1itSeiXuu+++82papP0S9MpTalpzos2NdBuOS5cuyYcffuhef/fu3ab5kV75+/33380yvYI1cOBArxqEuLg4s9+PP/5YZsyYcdVmXd9//73Url1bSpQo4Z4XExNjynPTTTe557Vr104KFCggGzdudM/TZg0RERFmGwCQFr06r5M2a01OTrbe3osvvmiazGot87333muOU6mbZOrzBx544LLXatPOTp06yaJFiy5bX/tHFC1aVC5cuGCaaekxUY9t2lxLy6/HX6dG+q233jLfOe+++645DuvxXb9LrkSP2wkJCV7H1cy4+eabOdYiRxAsENDuuece0yl4xIgRaS6fOHGiORHXMKEnxHoyrSfX48ePN8u1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "# Boxplot: Age vs. Survived\n", "plt.figure(figsize=(8, 5))\n", - "sns.boxplot(data=df, x='Survived', y='Age')\n", + "survived_0 = df[df['Survived'] == 0]['Age'].dropna()\n", + "survived_1 = df[df['Survived'] == 1]['Age'].dropna()\n", + "plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n", + " boxprops=dict(facecolor='lightblue'), medianprops=dict(color='red'))\n", + "\n", "plt.title('Boxplot of Age by Survival')\n", - "plt.xlabel('Survived (0 = No, 1 = Yes)')\n", "plt.ylabel('Age')\n", + "plt.tight_layout()\n", "plt.show()\n" ] }, @@ -1148,33 +1421,58 @@ "id": "23a6352c", "metadata": {}, "source": [ - "📊 3. Count Plot (Bar Plot for Categories)\n", + "3. Count Plot (Bar Plot for Categories)\n", "\n", "Purpose: Displays the frequency of each category in a variable (like value_counts, but visual)." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "69ca462b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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b2666p599lnZunWrzJgxwyxOkdbAgQPlL3/5i6mD0iD19ttvm5FynTt3drdQtWvXzt3Fd+XKFYmMjDSF4zYj6gAAAHLMueoWL15sao4OHjxogtHgwYPdo+o8J8DUMKUtSy1atJBp06ZJjRo13Ptot5yGJc8JMPWEorYTYGorlhaJa70T3XYAAOQuSbeRA3wenLIDghMAALlX0m3kAM5VBwAAYIngBAAAYIngBAAAYIngBAAAkBOmI8gtdELPM2fO+PowgBypdOnSUqlSJV8fBgAYBKe7EJpq16olly5f9vWhADlSoYIF5aeffyY8AcgWCE5ZTFuaNDTN6NpVapQu7evDAXKUX86ckb5ffml+jwhOALIDgtNdoqGpITOZAwCQo1EcDgAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAkBOC08iRIyUgIMBrqVWrlnt7cnKyRERESKlSpaRIkSLSrVs3iYuL87qP48ePS4cOHaRQoUJSpkwZGTJkiFy9etUHzwYAAPi7IF8fwP333y+rVq1yXw8K+r9DGjRokCxZskQWLFggwcHBEhkZKV27dpUNGzaY7deuXTOhKSQkRDZu3CgnT56UF154QfLmzStjx471yfMBAAD+y+fBSYOSBp+0EhMTZebMmTJv3jxp1aqVWTd79mypXbu2bN68WZo2bSorVqyQ/fv3m+BVtmxZadiwoYwZM0aGDh1qWrPy5cvng2cEAAD8lc9rnA4ePCjly5eXqlWrynPPPWe63tSOHTvkypUr0qZNG/e+2o1XqVIl2bRpk7mul/Xq1TOhyREWFiZJSUmyb98+HzwbAADgz3za4vTwww/LnDlzpGbNmqabbdSoUfLII4/I3r175dSpU6bFqHjx4l630ZCk25ReeoYmZ7uzLSMpKSlmcWjQAgAAyNbBqX379u6f69evb4JUaGiofP7551KwYMEse9zo6GgT0gAAAHJUV50nbV2qUaOGHDp0yNQ9paam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QVKyZEn3PumJjo42IcxZKlasmCXPAQAA+JdsG5yyUlRUlCQmJrqX2NhYXx8SAADIAbJtcAoJCTGXcXFxXuv1urNNL+Pj4722X7161Yy0c/ZJT/78+c0oPM8FAAAgxwanKlWqmPATExPjXqe1SFq71KxZM3NdLxMSEmTHjh3ufVavXi3Xr183tVAAAAB+M6pO51s6dOiQV0H4rl27TI1SpUqVZODAgfKXv/xFqlevboLU22+/bUbKde7c2exfu3ZtadeunfTp08dMWXDlyhWJjIw0I+4YUQcAAPwqOG3fvl0ef/xx9/XBgweby/DwcJkzZ468/vrrZq4nnZdJW5ZatGhhph8oUKCA+zafffaZCUutW7c2o+m6detm5n4CAADwq+D02GOPmfmaMqKziY8ePdosGdHWqXnz5mXREQIAAOSAGicAAIDshuAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAACQ24LT1KlTpXLlylKgQAF5+OGHZevWrb4+JAAA4Gf8Ijj961//ksGDB8uIESNk586d0qBBAwkLC5P4+HhfHxoAAPAjfhGcJkyYIH369JE//vGPUqdOHZk+fboUKlRIZs2a5etDAwAAfiTHB6fU1FTZsWOHtGnTxr0uMDDQXN+0aZNPjw0AAPiXIMnhzpw5I9euXZOyZct6rdfrP//8c7q3SUlJMYsjMTHRXCYlJWX68V24cMFc7j55Ui6mpmb6/QP+7NDZs+7fo6z4/bzbnL8Hh/fvkeRLF319OECO8tuxI1n298C5P5fL5f/B6U5ER0fLqFGjblhfsWLFLHvMV7/5JsvuG/B3LVu2FH8y/e0hvj4EIMdqmYV/D86fPy/BwcH+HZxKly4tefLkkbi4OK/1ej0kJCTd20RFRZlicsf169fl3LlzUqpUKQkICMjyY0b2of/L0MAcGxsr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMllJREFUeJzt3Ql4FGW2//GTsISwhU0CaFhUlrCPgIA6qCGyiAgDOqCI0YvoMIACV+RG2YRREBUUBwS9SFBgUBxRYZAdlBFQFlEIi+CgRJYERMIiWYD+P+f8p/p2hwQKJqGTzvfzPDXdXVXd/Valx/7xvqfeDvF4PB4BAADAJYVeehcAAAAoghMAAIBLBCcAAACXCE4AAAAuEZwAAABcIjgBAAC4RHACAABwieAEAADgEsEJAADAJYITAORzo0ePlpCQEDl69KjkF2vWrLE26S1QmBCcgDyWkJBgXzDOUqJECalTp44MGDBAkpOTA928oLRgwQLp2LGjVKpUSYoXLy7VqlWTP/7xj7Jq1SrJDw4ePGhhaOvWrZIf5ffzBwRS0YC+O1CIjBkzRmrVqiVpaWnyz3/+U958801ZvHixbN++XUqWLBno5gUF/enN//qv/7Kw+rvf/U6GDBkiVapUkUOHDlkYaNu2rXz55Zdyyy23BDw4Pf/881KzZk1p2rSp5BcF5fwBgURwAq4S/Rd88+bN7f5jjz0mFStWlIkTJ8onn3wiDzzwQKCbVyCcP39eMjIyrNcuO6+++qp96Q8aNMjOrfbwOZ577jl57733pGhR/rOXE84fcGkM1QEBEhMTY7f79u2z21deecX+Ja+BKjw8XJo1ayYffvjhBc9bvny53HbbbVKuXDkpXbq01K1bV5599lm/fd544w1p0KCB9WSVL1/eAtvcuXP99jlw4ID1LkRGRkpYWJjt/84772Rbx/LBBx/ICy+8INddd52FFu152Lt37wVtmzJlilx//fXW/ptvvlnWrl0rd9xxhy2+0tPTZdSoUXLjjTfae0dFRckzzzxj633pe+uQ5pw5c6x9uu+SJUuyPZ9nzpyRcePGSb169exc+n7pO3r37m3tcvzrX/+S+++/XypUqGDnqlWrVvKPf/wj26HWH3/88ZI1PnqcDRs2lB07dsidd95pr3nttdfKhAkT/J7XokULu//oo496h3D1fS5Fa5x0yKxs2bL2OXnqqaesB9Nx++23S5MmTbJ9rn5O2rdvn+NrX8n5y0r/3no+q1ev7v27Dh482F7b1+HDh+3Y9fOk+1WtWlW6dOnid443bdpk7dXhQv08aW+tfl6BQOOfDkCA/PDDD3arX4Dq9ddfl3vvvVd69eplvSrz5s2zL6FFixZJp06dbJ/ExES55557pHHjxjb0p186GmB0+MTx9ttvy5NPPin33Xef94v1u+++k6+++koefPBB20drqzQkOMHkmmuukc8++0z69OkjJ06csB4HX+PHj5fQ0FB5+umnJTU11YKAtlNf06FDj/pav//97+3LUr8Eu3btasFNvyB9e430OHW48vHHH5fo6GjZtm2bTJo0Sb7//nv5+OOP/d5b62o0uOlr65eoDm9lR1/v2LFj1vYiRYpc8vzrOdCg+ttvv9n50r/DrFmzrG0aWP/whz/Ilfj111+lQ4cO0q1bNws5+lrDhg2TRo0aWa+jHq/+7UaOHGnHr+dLuRn+0tfT49eAs2HDBpk8ebK937vvvusNNn379rXhXw1wjo0bN9q5HT58eI6vfbnnLzvz58+389mvXz87n19//bWF+J9//tm2Obp3726f5YEDB9rxpKSk2D8I9u/f733crl07+1z+z//8j/0jQT9PH3300RW1C8hVHgB5aubMmR79v9qKFSs8R44c8SQlJXnmzZvnqVixoic8PNzz888/236//fab3/MyMjI8DRs29MTExHjXTZo0yV5LXycnXbp08TRo0OCiberTp4+natWqnqNHj/qt79mzpyciIsLbltWrV9v7RUdHe9LT0737vf7667Z+27Zt9li36fG0aNHCk5mZ6d0vISHB9rv99tu969577z1PaGioZ+3atX7vPW3aNNv3yy+/9K7Tx7pvYmLiRY/Ht00LFizwuDFo0CDb37cdJ0+e9NSqVctTs2ZNz7lz5/z+fvv27fN7vnNu9Nahx6nr3n33Xe86PTdVqlTxdO/e3btu48aNtp++thujRo2y/e+9916/9X/+859t/bfffmuPjx8/7ilRooRn2LBhfvs9+eSTnlKlSnlOnTqVa+cvu+PP+hlW48aN84SEhHh++ukne/zrr7/a815++eUcX1vboPvoeQLyG4bqgKskNjbW/gWtwxc9e/a0YTYtuNWhHKXDEQ7tRdCeHe2N2LJli3e9/stbaV2U9txkR/fRf+FrL0N2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Count plot: Sex\n", + "# Count plot for Sex\n", + "sex_counts = df['Sex'].value_counts()\n", "plt.figure(figsize=(6, 4))\n", - "sns.countplot(data=df, x='Sex')\n", + "plt.bar(sex_counts.index, sex_counts.values, color=['lightcoral', 'lightblue'], edgecolor='black')\n", "plt.title('Passenger Count by Sex')\n", "plt.xlabel('Sex')\n", "plt.ylabel('Count')\n", + "plt.tight_layout()\n", "plt.show()\n", "\n", - "# Count plot: Pclass\n", + "# Count plot for Pclass\n", + "pclass_counts = df['Pclass'].value_counts().sort_index()\n", "plt.figure(figsize=(6, 4))\n", - "sns.countplot(data=df, x='Pclass')\n", + "plt.bar(pclass_counts.index.astype(str), pclass_counts.values, color='lightgreen', edgecolor='black')\n", "plt.title('Passenger Count by Class')\n", "plt.xlabel('Passenger Class')\n", "plt.ylabel('Count')\n", - "plt.show()\n" + "plt.tight_layout()\n", + "plt.show()" ] }, { @@ -1182,7 +1480,7 @@ "id": "7d7b8d4b", "metadata": {}, "source": [ - "🌡️ 4. Correlation Heatmap\n", + "4. Correlation Heatmap\n", "\n", "Purpose: Helps you find numeric features that are positively or negatively correlated.\n", "\n", @@ -1193,28 +1491,37 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 22, "id": "910a7faa", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'plt' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[13]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Correlation matrix heatmap\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[43mplt\u001b[49m.figure(figsize=(\u001b[32m10\u001b[39m, \u001b[32m6\u001b[39m))\n\u001b[32m 3\u001b[39m sns.heatmap(df.corr(numeric_only=\u001b[38;5;28;01mTrue\u001b[39;00m), annot=\u001b[38;5;28;01mTrue\u001b[39;00m, cmap=\u001b[33m'\u001b[39m\u001b[33mcoolwarm\u001b[39m\u001b[33m'\u001b[39m, fmt=\u001b[33m'\u001b[39m\u001b[33m.2f\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 4\u001b[39m plt.title(\u001b[33m'\u001b[39m\u001b[33mCorrelation Heatmap of Numeric Features\u001b[39m\u001b[33m'\u001b[39m)\n", - "\u001b[31mNameError\u001b[39m: name 'plt' is not defined" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp8AAAJOCAYAAADximyCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcS1JREFUeJzt3Qm8TPX/x/HPvfbtkmwRIYWyRkSrUipJu0qhpF+ERInK0iqJlEibtPlFu59KC6ksZSltskaUbJU9653/4/39/c7854674dy5d868nr/H+Wm2c+ecOTPzmc/38/mepFAoFDIAAAAgBpJj8UcAAAAAIfgEAABAzBB8AgAAIGYIPgEAABAzBJ8AAACIGYJPAAAAxAzBJwAAAGKG4BMAAAAxQ/AJAACAmCH4BDIwfvx4S0pKslWrVvm2Tq1L69S6EWzbt2+3m266ySpUqOBe8169elmiGjx4sNsHACAEn4ipFStW2L/+9S+rXr26FS5c2FJSUuzUU0+1J554wv755x8LigkTJtjIkSMtL+nUqZMVL148w9sVHHTv3j1Hn8OYMWMSJvB++OGH3bZ27drVXnnlFbv++uszvG/VqlXd/u/Ro8cBt82YMcPd9uabb+bwM46vQDa9ZezYsTnyNz/44AP3dwH4I79P6wGy9P7779uVV15phQoVsg4dOlidOnVsz549NnPmTLvzzjvtp59+smeffdaCEnz++OOPB2S7jjnmGBdkFyhQwBKRgs8yZcq4QDjopk+fbqeccooNGjQo24957rnnrH///laxYkULknvvvdf69evn6zqffvrpA35MNW3a1HIq+Bw9ejQBKOATgk/ExMqVK+3qq692wZe+lI866qjwbbfeeqstX77cBaeHKxQK2a5du6xIkSIH3KbrCxYsaMnJuZfwV3ZGGV8E34YNG+yEE07I9v1PPPFEW7JkiT3yyCP25JNPWhDs2LHDihUrZvnz53eLn6644gr3QyYI+wdINAy7IyYeffRRVwP3wgsvpAk8PTVq1LDbbrstfHnfvn32wAMP2LHHHusypRqWvPvuu2337t1pHqfrL7roIvvoo4+scePGLuh85plnwkOVr7/+usu6VKpUyYoWLWpbt251j/v666/t/PPPt5IlS7rrzzzzTJs1a1aW2/Hee+9Z69atXWZKz0vPT89z//794fucddZZLpD+9ddfw8OBep6Z1XwqID/99NPdF1GpUqWsbdu29vPPP6c73KhAXZlD3U/P/4YbbrCdO3daTtD+VuZOr4+2t3Llyta3b98DXocXX3zRzj77bCtXrpy7n4IuZaYiaR8ou/3555+H94v2VWR9rbLgPXv2tLJly7rtU4mGsuObN2922fIjjjjCLXoO+qER6bHHHrPmzZvbkUce6Y6DRo0apTtU7ZUXvPbaa1azZk33Y0D3/eKLL7IdVHbu3NnKly/vHlu/fn176aWXwrd7x55+cOk48LY1q9ph7R9to7Kfa9euzfS+ev29Yyqr2kpve9944w33umjfNGvWzH744Qd3u94ven21LXo90nue2Xm/eH970aJFdu2117rX6bTTTsvwecmrr75qTZo0cevU/c844wz7+OOPzQ9at15XbW/p0qXdj981a9akuc+XX37pRmOqVKkSPr5vv/32NCVA2tfKenr70lsiX2v9Gym997lX9qLSowsvvNBKlChh7du3d7elpqa6Mh39ANHroGNLx/7ff/+dZr3z58+3Vq1auaBb21WtWjW78cYbfdlfQCyR+URM/Oc//3F1ngoOskONGvpCV3ajT58+7stvyJAhLiB755130txX2aJrrrnGfVh36dLFBRQeBYbKdt5xxx0uYNJ/K9C74IIL3BeTAitlQr3gSV9G+jLMiL5M9AXSu3dv96/WNXDgQBfUDhs2zN3nnnvusS1btthvv/1mjz/+uLsus1rLTz/91D0f7R99SeuLb9SoUa4W9ptvvjkgyLjqqqvcl472h25//vnnXdA3dOjQbO3bTZs2Zet++kK8+OKLXUB48803W+3atV3Aom1aunSpvfvuu+H7KtDUF6furwyXXu9u3bq5dSizLfpyVU2j9oX2kehLNpJuV4POfffdZ1999ZUrw1AQOnv2bBcgqI5SQ6Da1yrbULDmUd2w/r6+0BWw6oeHAospU6a4HwyRFABPnDjRBboKOlQOoOBq7ty5br0Z0WujAE0/ABTQ6XVQUKfAQgGyfkBpP6nGU0HM0Ucf7Y5fUUCdFe2Xl19+2ffsp47ryZMnh18LHTv60aYgXtuu10qBjn4kKpjRce052PeL9vlxxx3nXqvoHwiR9BrreNdnwv333+/em3qf6++dd955WW7TX3/9leZyvnz5XAArDz30kA0YMMC9V/RZsnHjRveeUnD77bffumNK9Nrp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ACB9BJ+IK5rbUt3rmlbJ61hfv369CzDlsccecxnQ6Dk74zXj6QWen332mZs2SrWdGmpXracyv+rsb9KkiTtNqDKgqv9UllfZzyOPPDK3nz4AAAeg5hNx1+WtwNKbTkhnKVJ2U4GZhqA1zKz/jhaPgaco8HznnXfcfJ7KaqqUQB38mjLqqKOOstmzZ9sff/zhgk8FpcqCjhgxgsATAJBnxd8YJBJGesPNaq5RFlMTxSvDqcnjNZyuYfcTTjjBFi1aZMOGDXP/fcwxx6S7jniiaZQ0fZLqWr3ufZ0mVMPthQoVsuOOO85mzpzpMqI6pWi1atVcUAoAQF5F5hN5trnICxoVgG3fvt11byujp7MTKcAcNWqUu92r46xZs6b9+9//th9++MGefvppd108B56iwDolJcXVby5fvtwqVapk11xzjQtGlQH+5ptvXLPViSee6KaYIvAEAOR1ZD6RJ3k1mwMHDrS33nrLBaOq8dSQs85ipKmGbrvtNlffqIBME8v/+eefrvmoVatWtnTpUotHXqZW5QTK6v79999uW1XzefPNN1vr1q3DgbVOq6npldThrkwvAADxgMwn8pTI/jedIlOTxQ8ePNgFlAowVduoieXvueceN92SAk4NtaurW9Muia7TkHs8UuA5d+5cN0+pOtobN25sZ511ltt+TR+lMzV59asKyjds2GClS5e2oKEPEgCCi8wn8hRvmFznKp83b55rILryyivd4gWjt956q40cOdIuuOACN7WSah9l165d7uw+CkJ1e7xScKlSgk8//dQ1GmmSfDVTqav/iy++cGcv+vjjj+3555+3L7/80k2qH++8jK+2U3OYqtQAABBMZD6R5yjo1FyeGkKPnDJJAahqHzUE37t3b/v+++/DgaemYNJZfXS+c83xqfrPeKX6TZUSaPulTZs2LuOrrn51tN95551uHykQrVevngUl8HzvvfdcF//rr7/u5moFAAQT83wi16XXka6ObjUUVaxY0V599VUXjHk03KymIw1Ha1ohUbDy448/uixg5H3zMu+tp22PnodUpQQ6V/2TTz7pAjKPalnLlSsXPstRULz77ruukWrIkCEu2xtZNhF5ZisEQ0avabzPTgEgewg+kWe+hNTZra52TackGlbWUqtWLddUo0DUowacM8880z023r6wlLVt0aKFy2jKJ598YqNHj7YrrrgiHGhqaF1ZXnWyKwhXYBrUAOy3335z+6JLly7WrVs312ylEgpldmvXrm3HHnssAWiARL5fVUqjpjpdvvrqq61EiRKWiDi+kWg42pEnPnB1ZqJLLrnETRekAGTJkiV20003WYcOHdwUQ5rrUpOpexS86bGRUzLFA2VoVSoQedpLnRpTc3Q+8cQT7rSYU6ZMcfdTMKahd5UXeEF2UE8coIBT+2Hv3r1uGinV8+osTtofajTjizl4geftt9/ufmDpuNdIhmZsmD59untPB5V+YHvvY81isW7dOtdY6H2WAYmCT3TkGi+gUOf68OHD3SkyleVTwNWnTx8XkCkQ1XDsL7/84iZZVyd7euuIFwo8lcVV57pqU5X5UWe7As4XX3zR6tat6+pdVdu5ceNGl93VULQywvEUZGfG+/LVjwllvYoVK+YCj0cffdTVtWoKqcsuu8z9q5rW8ePH5/ZThk+8Y3jZsmXuR5VGMHSWroULF7pTxSr7qf+WIP3YUvmMtlmNhN5Zy/RDWz+imzVr5sps4u2zDDgcdLsjV+lDV/V+EyZMcB/EX3/9tftwVvDh1TSqu13ZAU02f8QRR1i8Z328L2AFnJqzU19IqnOsU6eOq2/VcLPO4KTM39atW10DUlCyIt4+mDx5sqvr7dixo7Vv39769evnmsb0OisA8UovlA09+uijc/tpw8fXXj8mxo4d64bYVVKh0hIFXm+++abLeGvEI0jZbr2H9b5+8MEH3TRqhQsXdhlf/ejWNGlvv/22nXLKKfaf//zH/dgEEoJqPoHcsmDBglD9+vXdf7/99tuh4sWLh55++ml3eevWraF33303fN/U1FT37/79+0PxbPbs2W7btD29e/cO5cuXz217tMWLF4ceeeQR92+QvPPOO6EiRYqEHn300dDKlSvTvc/ff/8duueee0LlypULLVmyJObPEf5ZtGhRaN26de6///nnn9CDDz4YqlWrVqh69erh++h6mTZtWqhy5cruMUGyatWq0Pnnnx86+uijQ5MnT3bHtmfbtm2hDh06hEqUKBH6/PPPc/V5ArFC8ImYiQwa9+7d6/5dvnx5qGrVqqEBAwaESpYsGQ48Zc6cOaGzzz47NH/+/AMC0HiloOrkk08O3Xnnne7y5s2bQ7fffrsLQBWUefvJ21fxHmhH+/XXX0MnnHBC+HXWcaBA/LPPPgstW7bMXTdp0qRQp06dXBDyzTff5PIzxuF4/fXXQ02aNAndcMMN7lgX/fvkk0+GjjzySBd0Rf8w0+v+ww8/hIIg8vNKx/65554bSkpKCl1yySVp7ucFoKVLlw598sknufBMgdgi+ERMRAZRL7/8slsUiOn67t27h4oWLRrq0aNH+D67du0KXXTRRaG2bdsGKgDbt2+f284WLVqEr/vrr7/CAaiX6Y33IDsjv//+e6hBgwYu+7Nz506XBTv11FND5cuXd8HIwoULXab3iSeecD9MEL/GjRvnsnn6oeH9gPSO6y1btoQef/zx0HHHHRe64oorQj///HPo66+/Dl1wwQWhU045JTDveW97d+zY4f5dvXq1214FmdrmyPts377dBaUKvvXeAIKM4BM5LjKQUsbvqKOOCr344osuEJFZs2aFWrduHTr++ONDDzzwQOjhhx8OtWzZMlSnTp3Qnj173H2C8GXk7Yc//vjDffloSN2jL+M77rjDZUWmTJkSCurrr2H2s846K3TOOee4faAv22HDhoW+/fbbUNOmTV0GPDIzHu/bHLntQTiGs0vDxxUqVAi98cYbB9zmvacVbCkDqhEP/fi87rrrQjfffHM48NIPtXjmvfZTp04N9ezZM/TFF1+Eh+CVAa1YsWJoxYoVBwSp3udiPPO2R6+1F3hH34bERsMRcpzXYKOOTxXe60w2J598cvh2dX3qdJjq9lanuzqfa9So4brB1Yyj6Un0b7xSI021atWsYMGC7rImwu/Zs6fNmDHDTSV11FFHudNJ6tSguk/16tUtSA0mO3bscF3+eg2rVq3qGi9++OEHa9u2rWs28s5NryYjb57HeH69I6cQ04wNek3VZOJNpxOURprMqJNdJ0m4/PLLw9fpeP/888/dqWEvvvhiu/baa+3mm292J1h47bXX3Fy2On2uN89tkSJFLJ55Xe3azoEDB4ab6HQCBc1frMaq008/3WbOnOk+H/R+UfOVliC8799//33XXKZj4cILL3Rd/VdddVVgZu3AYcrt6BeJQb92r7nmGtdgIxpSnThxoqvp1FDbjz/+GM6GRIrX7If3617NMoULF3bZvnvvvTecBZg3b16oVKlSaRqqIh8X77zt+PDDD0PnnXde6LTTTnPZTq/xJJJeczVgKFO2dOnSUDyLzG6qoUrHtzK6rVq1Cv3222+5+txiScd6jRo1XD2v9O3b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JVnBggWtRo0adv/999u+ffsskWm/XHLJJbn9NAAAQB45t7ufiyV6zef5559vL774ou3evds++OADu/XWW61AgQLWv39/SzR79uxxQTgAAAByaNi9UKFCVqFCBTvmmGOsa9eu1rJlS5s8ebKNGDHC6tata8WKFbPKlStbt27dbPv27eHH/frrr9amTRs74ogj3H1OPPFEF7zK33//be3bt7eyZctakSJF7LjjjnMBrmfNmjV21VVXWalSpax06dLWtm1bW7Vq1QGZx8cee8yOOuooO/LII11QvHfv3vB9/vjjD2vdurVbf7Vq1WzChAlWtWpVGzlyZPg+mzdvtptuusk9j5SUFDv77LPtu+++C98+ePBga9CggT3//PNuHYULF053H+3YscM6dOhgxYsXd89n+PDhB7ubAQBAHEpKTvZ9CZrD7nZXMPfnn39acnKyPfnkky4o++WXX1zw2bdvXxszZoy7n4JBZQq/+OILF3wuWrTIBWcyYMAAd/nDDz+0MmXK2PLly+2ff/5xtymAbNWqlTVr1sy+/PJLy58/vz344IMuA/v999+HM4+fffaZC/T0rx7frl07Fyh26dLF3a5gcNOmTTZjxgyXqe3du7dt2LAhzbZceeWVbnv0PEqWLGnPPPOMnXPOObZ06VIX9IrW/dZbb9nbb79t+fKlX4hx55132ueff27vvfeelStXzu6++2775ptv3PPJjLLJWjxbt249jFcGAAAgQMFnKBSyadOm2UcffWQ9evRI00yjjKICxFtuuSUcfK5evdouv/xylx2V6tWrh++v2xo2bGiNGzcOP94zceJES01NddlG1ZqKsqLKgiqQPO+889x1yqg+9dRTLiCsVauWy3Lq+Sn4XLx4sX366ac2b9688N/Q+pRh9cycOdPmzp3rAlJld0WZ1HfffdfefPNNu/nmm911CqBffvlllx1Nj7K9L7zwgr366qsucJWXXnrJjj766Cz36ZAhQ+y+++7L9msAAAACfm73ZGo+bcqUKS5jqYykgsJrr73WDUcruFPwpEBPGTs1Ie3atct27txpRYsWtZ49e7ph+o8//tgN1SsQrVevnlunrtdlZQcVTGoIvXnz5u42DXsr21iiRIk0z0PrXrFiRfiyhvEjM5HKgv7www/uv5csWeIypieddFL4djVLKWD16O8ocNSQfSRlYCP/jsoNMgo8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gywnEHwCAAD42nCU7HvDUUpKSprgMz1lypRxAeT69evTXK/LFSpUSPcx6nBXrace56ldu7bLlGoYv2DBguY3ht0BAAACoGDBgi5zOW3atDSZTV1WXWd6Tj31VFu+fLm7n2fp0qUuKM2JwFMIPgEAAPJ4zWd2aZql5557zl566SX7+eefrWvXrrZjx45w93uHDh2sf//+4fvrdnW733bbbS7oVGe8Go7UgJRTGHYHAADwSWSHul/rOxjt2rWzjRs32sCBA93QeYMGDWzq1KnhJqTVq1e7DniPGpk++ugju/32261evXpunk8FonfddZflFIJPAACAAOnevbtb0jNjxowDrtOQ/FdffWWxQvAJAADgF52L3c/zsScFr0IyeFsEAACAPIvMJwAAgF+SfD63e5KP68ojyHwCAAAgZsh8AgAA+CQpKdktfq4vaAg+48DufcmWb2/wDr7seP/+WZao2g481RLZpLsP7MhMFF3albBEtnW3P6cNjEdX99tkiWjf3h0WrDMc+ThUnsywOwAAAHDIyHwCAAD4hamWshS8LQIAAECeReYTAADAL4dwPvZMMdUSAAAAcOjIfAIAAPglOfm/i5/rCxiCTwAAAL/QcJSl4G0RAAAA8iwynwAAAH5hkvkskfkEAABAzJD5BAAA8HWqJT9rPpMsaMh8AgAAIGbIfAIAAPiFSeazRPAJAADgF+b5zFLwtggAAAB5FplPAAAAvzDsniUynwAAAIgZMp8AAAB+4fSaWQreFgEAACDPIvMJAADgZ6bSzw71pODlCQk+AQAA/ELDUZaCF04DAAAgzyLzCQAA4BcajrIUvC0CAABAnkXmEwAAwC/UfGaJ4BMAAMAvnNs9S8HbosN01llnWa9evXL7aQAAAARSIIPPTp06WVJSklsKFixoNWrUsPvvv9/27duX208NAAAEWCgpyfclaAI77H7++efbiy++aLt377YPPvjAbr31VitQoID1798/t58aAABAwgpk5lMKFSpkFSpUsGOOOca6du1qLVu2tMmTJ7vbZs2a5YbXixYtakcccYS1atXK/v7773TX88orr1jjxo2tRIkSbn3XXnutbdiwIXy7Hte+fXsrW7asFSlSxI477jgX9MqePXuse/fudtRRR1nhwoXdcxkyZEiM9gAAAMidhqNkH5ckC5rAZj6jKTD8888/beHChXbOOefY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w+4WvDxh8LYIAAAAeRbBZwbmzJlj+fLls9atW+f2UwEAAHFW8+nnEjQEnxl44YUXrEePHvbFF1/Y2rVrc/vpAACAuDnDUbKPS5IFDcFnOrZv324TJ060rl27uszn+PHj09w+efJkO+6446xw4cLWokULe+mllywpKck2b94cvs/MmTPt9NNPtyJFiljlypWtZ8+etmPHjlzYGgAAgLyD4DMdkyZNslq1alnNmjXtuuuus3HjxlkoFHK3rVy50q644gq75JJL7LvvvrN//etfds8996R5/IoVK+z888+3yy+/3L7//nsXyCoY7d69ey5tEQAAiAWG3bNG8JnBkLuCTlEQuWXLFvv888/d5WeeecYFpcOGDXP/Xn311dapU6c0jx8yZIi1b9/eevXq5TKkzZs3tyeffNJefvll27VrV4Z/d/fu3bZ169Y0CwAAQJAQfEZZsmSJzZ0716655hp3OX/+/NauXTsXkHq3n3zyyWke06RJkzSXlRHVUH3x4sXDS6tWrSw1NdVlTjOioLVkyZLhRcP1AAAg3mo+/V2Chnk+oyjI3Ldvn1WsWDF8nYbcCxUqZE899VS2a0Y1HK86z2hVqlTJ8HH9+/e33r17hy8r80kACgAAgoTgM4KCTg2NDx8+3M4777w0t6nG89///rcbav/ggw/S3DZv3rw0l0866SRbtGiR1ahR46D+vgJcLQAAID6FQklu8XN9QcOwe4QpU6bY33//bZ07d7Y6deqkWdQ8pKyoMpqLFy+2u+66y5YuXeqak7xueHW8i26bPXu2azBauHChLVu2zN577z0ajgAACLzk/57lyKfFDiFUGz16tFWtWtXNytO0aVNXTpiR5557zs3Oc8QRR7ilZcuWmd7fDwSfERRcaqer3jKags/58+fbtm3b7M0337S3337b6tWrZ08//XS4293LWup6NSgpONUL2rBhQxs4cGCaoXwAAAC/aYYdlfANGjTIvvnmG6tfv77rO9mwYUO6958xY4brc/nss8/cCXZU7qfR399//91ySlLIm0MIh+yhhx6ysWPH2po1a3xdr2o+FQi/9eUGK1Y8xRLRus0FLVFNm77OEtlVD59liWrqozmbdcjrKh1d3BLVmXV2WiLasX2rndf0aDe7TEpKfH7fed/ZC7790YqXKOHberdv22aNGtbJ9r5RplON0V6fipqdFVDqxDn9+vXL8vH79+93GVA9vkOHDpYTqPk8BGPGjHEv7JFHHmmzZs1y0y4xpA4AAHLK1qjpF9PrE9mzZ48tWLDANTB7kpOT3aiusprZsXPnTtu7d6+VLl3acgrD7odANZxt27a1E044wR544AHr06ePDR48OLefFgAACOgk85UrV04zHaOmZ4y2adMml7ksX758mut1ed267I2mqW9FZYIKWHMKmc9D8Pjjj7sFAAAgFtasWZNm2D0nZsd55JFH7PXXX3d1oGpWyikEnwAAAD7x+5SYof+tS4FnVjWfZcqUsXz58tn69evTXK/LFSpUyPSxjz32mAs+P/30U9c4nZMYdgcAAAjAud0LFixojRo1smnTpoWvU8ORLjdr1izDxz366KOujHDq1KnWuHFjy2lkPgEAAAKid+/e1rFjRxdE6vTfI0eOtB07dtgNN9zgblcHe6VKlcI1o0OHDnXTQU6YMMHNDerVhnqnB88JBJ8AAAABOcNRu3btbOPGjS6gVCDZoEEDl9H0mpBWr17tOuA9mq9cXfJXXHFFmvVontCcaqYm+AQAAAiQ7t27ZzgFpJqJIq1atcpijeATAAAgjzccBQkNRwAAAIgZMp8AAAA+IfOZNYJPAAAAnxB8Zo1hdwAAAMQMmU8AAAA/M59+TrVkZD4BAACAQ0bmEwAAwCepluQWP9cXNASfAAAAPqHhKGsMuwMAACBmyHwCAAAE5Nzu8YDMJwAAAGKGzCcAAIBPQj7XaYYseMh8AgAAIGbIfAIAAPiEms+sEXwCAAD4hKmWssawOwAAAGKGzGcc+HN7QfsnVNASUeGCQSy1zp4u7UpYIptYaq4lqvP7NrFE1uLzIZaoVhQ41RJSgX8sKBh2zxqZTwAAAMQMmU8AAACfaLwu1ef1BQ2ZTwAAAMQMmU8AAACfUPOZNYJPAAAAnzDVUtYYdgcAAEDMkPkEAADwCcPuWSPzCQAAgJgh8wkAAOATaj6zRuYTAAAAMUPmEwAAwCepof8ufq4vaAg+AQAAfMKwe9YYdgcAAEDMkPkEAADwCVMtZY3MJwAAAGKGzCcAAIBPQqH/Ln6uL2jIfAIAACBmyHwCAAD4JNWS3OLn+oKG4BMAAMAnNBxljWF3AAAAxAyZTwAAAJ/QcJQ1Mp8AAACIGTKfAAAAPuH0mlkj+AQAAPBJaui/i5/rCxqG3QEAABAzZD4BAAD84vNUS8ZUS8GUlJRk7777rvvvVatWucsLFy7M7acFAAAQOAkRfG7cuNG6du1qVapUsUKFClmFChWsVatWNmvWLHf7H3/8YRdccMFBrfOdd96xU045xUqWLGklSpSwE0880Xr16pVDWwAAAOJpqiU/l6BJiODz8ssvt2+//dZeeuklW7p0qU2ePNnOOuss+/PPP93tCkYVlGbXtGnTrF27dm69c+fOtQULFthDDz1ke/fuzcGtAAAAyNro0aOtatWqVrhwYWvatKmLVTLzxhtvWK1atdz969atax988IHlpMAHn5s3b7Yvv/zShg4dai1atLBjjjnGmjRpYv3797eLL774gGF3z+LFi6158+buhahTp459/vnn4dv+85//2Kmnnmp33nmn1axZ044//ni75JJL3IvtGTx4sDVo0MCeeeYZq1y5shUtWtSuuuoq27JlSwy3HgAA5Ma53f1cDsbEiROtd+/eNmjQIPvmm2+sfv36brR3w4YN6d5/9uzZds0111jnzp1dok7xjJYff/zRckrgg8/ixYu7RcHl7t27s/04BZZ9+vRxL0SzZs2sTZs2aTKlP/30U5YvzPLly23SpEkuWJ06dapbV7du3TK8v57f1q1b0ywAACB+5Paw+4gRI6xLly52ww032AknnGBjx451CbBx48ale/8nnnjCzj//fBf31K5d2x544AE76aST7KmnnrKcEvjgM3/+/DZ+/Hg35F6qVCmXsbz77rvt+++/z/Rx3bt3d8PqeiGefvppV9v5wgsvuNt69OhhJ598sktNK6199dVXuxc1OrjdtWuXvfzyyy4DesYZZ9ioUaPs9ddft3Xr1qX7N4cMGeL+jrcoYwoAAJAde/bscaWALVu2DF+XnJzsLs+ZMyfdx+j6yPuLMqUZ3d8PgQ8+RUHk2rVrXa2novsZM2a4qF5BaUaU7YwMYBs3bmw///yzu1ysWDF7//33XWbz3nvvdZlVZUk1nL9z587w49TgVKlSpTTrTE1NtSVLlqT7N1UKoGF5b1mzZo1PewAAAMSCplnye5HokdH0RnM3bdpk+/fvt/Lly6e5XpczSnzp+oO5vx8SIvgU1W6ee+65NmDAAFff0KlTJ1cPcTiOPfZYu+mmm+z55593dRWLFi1ytRaHSk1PKSkpaRYAAIDKlSunGR3VaGm8SpjgM5rqIHbs2JHh7V999VX4v/ft2+fS2BqCz4iG31VTEbnO1atXu4xr5DqV/laTEgAACO7pNf1cRKOhkaOjGi2NVqZMGcuXL5+tX78+zfW6rH6V9Oj6g7m/HwIffKpJ6Oyzz7ZXX33V1XmuXLnSTSnw6KOPWtu2bTN8nDrXNZenut5vvfVW+/vvv+3GG28Md7L37dvXDd9rfWok0m2aaknZ1chsa8eOHe27775zHfc9e/Z0He85+YICAIDgSYkaGU1visiCBQtao0aN3JSQHpX76XJkOWEkXR95f/nkk08yvL8fAn96TdVjao6rxx9/3FasWOECRKWu1QmmxqOMPPLII27RmY5q1Kjh6kX1i0LOPPNMF5x26NDB/To44ogjrGHDhvbxxx+nyWrqcZdddpldeOGF9tdff9lFF11kY8aMicl2AwCA2PN7YvjQQa5L0ywp8aVeFfWijBw50o3KqvtdFLuoH8Ubtr/ttttcXDN8+HBr3bq1a4yeP3++Pfvss5ZTAh986peBdnBmtRGhiFdWw+feZc17lR7NF6olO3RmJS0AACD4QpbkFj/XdzB0Ehyd2XHgwIGuaUgz7mi6R6+pSCWBKgH0aE7zCRMmuAZqJeWOO+44Nz2l5jjPKYEPPgEAABJJ9+7d3ZIelQxGu/LKK90SKwSfAAAAPkn9X9ORn+sLmsA3HOUWNSWpXhQAAAD/j8wnAABAQBqO4gGZTwAAAMQMmU8AAACfkPnMGsEnAACAT1JDSW7xc31Bw7A7AAAAYobMJwAAgE8Yds8amU8AAADEDJlPAAAAn5D5zBqZTwAAAMQMmU8AAAAfM5V+nl4zFMDMJ8EnAACAT0KhJLf4ub6gYdgdAAAAMUPmEwAAwCc0HGWNzCcAAABihswnAACAT1J9bjhKDWDmk+ATAADAJwy7Z41hdwAAAMQMmU8AAACfkPnMGplPAAAAxAyZTwAAAJ/QcJQ1Mp8AAACIGTKfAAAAPqHmM2sEn3GgeOH9VrTIfktEpYvsskS1dXchS2SVjk7cgZkWnw+xRPbZmf0tUdVaMtUS0f6knRYUqan/XfxcX9Ak7qc7AAAAYo7MJwAAgE8Yds8amU8AAADEDJlPAAAAn5D5zBqZTwAAAMQMmU8AAACfqDnd10nmLXgIPgEAAHwSCoXc4uf6goZhdwAAAMQMmU8AAACf0HCUNTKfAAAAiBkynwAAAD4J+Xx6zVAAO47IfAIAACBmyHwCAAD4hJrPrBF8AgAA+ERzfPo6z2fIAodhdwAAAMQMmU8AAACfMOyeNTKfAAAAiBkynwAAAD4JpYbc4uf6gobMJwAAAGKGzCcAAIBP6HbPGsEnAACAT2g4yhrD7gAAAAnor7/+svbt21tKSoqVKlXKOnfubNu3b8/0/j169LCaNWtakSJFrEqVKtazZ0/bsmXLQf1dMp8AAAA+SU0NucXP9eUUBZ5//PGHffLJJ7Z371674YYb7Oabb7YJEyake/+1a9e65bHHHrMTTjjBfv31V7vlllvcdW+++Wa2/y7BJwAAQIL5+eefberUqTZv3jxr3Lixu27UqFF24YUXuuCyYsWKBzymTp069tZbb4UvH3vssfbQQw/ZddddZ/v27bP8+bMXVjLsDgAA4HPNp59LTpgzZ44bavcCT2nZsqUlJyfb119/ne31aMhdw/bZDTyF4DMHzJgxw5KSkmzz5s25/VQAAEAAgs+tW7emWXbv3n1Yz3PdunVWrly5NNcpgCxdurS7LTs2bdpkDzzwgBuqPxgJEXx26tTJBYNaChYsaDVq1LD777/fpYgBAADyusqVK1vJkiXDy5AhQ9K9X79+/cIxT0bL4sWLD/v5KABu3bq1q/0cPHjwQT02YWo+zz//fHvxxRfdL4UPPvjAbr31VitQoID179//oNazf/9+98IpLQ0AABApNRRyi5/rkzVr1rjhbU+hQoUsPX369HFJt8xUr17dKlSoYBs2bEhzvZJy6mjXbZnZtm2bi6tKlChh77zzjounDkbCRFB6kbQzjznmGOvataura5g8ebKNGDHC6tata8WKFXO/Krp165ZmmoHx48e7mgjdV9G91rN69WoXxN51113uMbpO2dQXXnghzd9csGCBq6UoWrSoNW/e3JYsWZILWw4AAOJdSkpKmiWj4LNs2bJWq1atTBeNAjdr1syVBypW8UyfPt1SU1OtadOmmWY8zzvvPLcOxUaFCxc+6G1JmOAzmuan2rNnj8tgPvnkk/bTTz/ZSy+95HZ8375909x3586dNnToUHv++efd/VQj0aFDB/v3v//tHquOsWeeecaKFy+e5nH33HOPDR8+3ObPn+/qKG688cYYbyUAAIilUKr/S06oXbu2y1526dLF5s6da7NmzbLu3bvb1VdfHe50//33312wqtsjA88dO3a4hJsuqz5Ui0aGsythht09oVDIpk2bZh999JGbKLVXr17h26pWrWoPPvigm7NqzJgx4es195Uu169f311eunSpTZo0yc2LpQyql8KOpukHzjzzzHANhmojdu3aleGvBGVTIwuI9aICAADkhNdee80FnOecc45Lxl1++eUuqRYZ/2jUVkk4+eabb8Kd8BrxjbRy5UoXR2VHwgSfU6ZMcZlJ7UillK+99lpXIPvpp5+6ol0V3yrYU72DAkTtaA2Xi1LL9erVC69r4cKFli9fvnBgmZHIxxx11FHuX9VX6IwA6dHzuO+++3zaYgAAEGsh/c/Hms+Q5dwk8+psz2hCeVEwGbktZ511li/bljDD7i1atHBB47Jly+yff/5xQ+wbN260iy66yAWJmjRVdQ+jR49299eQfOQQvZqMIi9nR2QBrvd4Bb4ZUfOT5svyFhUXAwCA+KFh8lQfl1AODbvnpoTJfKqhKDpFrGBTwaDqMr3udQ2nZ0UNSnrc559/Hh5294OKhzMqIAYAAAiChMl8pkfBqIbhdTqpX375xV555RUbO3Zslo9TGrpjx46ugejdd991dQ6aWD47gSsAAAguDUv7vQRNQgefaiDSVEvqZNf5SlV4m9GkrdGefvppu+KKK9zUTOoEU7eYur8AAACQsaRQEEPqgFADlM5iMOGzP61o8f+fWDaRlC6yyxLV1t2JXYLx/fLE/W3cs9J7lsg+O/PgTv4RJLWWTLVEpEnLT2pYP3ye8Hj+zr5jzEYrVMS/bdj9z1Z7rFvZuN430RL30x0AAAAxlzANRwAAADktlBpyi5/rCxqCTwAAAJ+omNHPgsZQ8GJPht0BAAAQO2Q+AQAAfJKaGnKLn+sLGjKfAAAAiBkynwAAAD7xe2L4UACLPsl8AgAAIGbIfAIAAPgklPrfxc/1BQ3BJwAAgE9SQyG3+Lm+oGHYHQAAADFD5hMAAMAnNBxljcwnAAAAYobMJwAAgE+YZD5rBJ8AAAA+4dzuWWPYHQAAADFD5hMAAMDPhiMfh8pDAUx9kvkEAABAzJD5BAAA8DFT6efE8CEynwAAAMChI/MJAADgE9V7+lrzmRq8zCfBJwAAgE8IPrPGsDsAAABihswnAACAT5So9DNZmRq8xCeZTwAAAMQOmc84kC8p5JZEVLXAr5aoru63yRLZsKEnWaJaUeBUS2S1lky1RLW45vmWiHaG9ltQUPOZNTKfAAAAiBkynwAAAH6eXpNJ5jNF8AkAAOCT1FQtIV/XFzQMuwMAACBmyHwCAAD4hGH3rJH5BAAAQMyQ+QQAAPAJUy1ljcwnAAAAYobMJwAAgE/IfGaN4BMAAMAnqRayVB+bhFIteMEnw+4AAACIGTKfAAAAPmHYPWtkPgEAABAzZD4BAAB8wiTzWSPzCQAAgJgh8wkAAOBjjWYqNZ+ZIvMJAADgc8ORn0tO+euvv6x9+/aWkpJipUqVss6dO9v27duzXQ5wwQUXWFJSkr377rsH9XcJPgEAABJQ+/bt7aeffrJPPvnEpkyZYl988YXdfPPN2XrsyJEjXeB5KBh2BwAASLCGo59//tmmTp1q8+bNs8aNG7vrRo0aZRdeeKE99thjVrFixQwfu3DhQhs+fLjNnz/fjjrqqIP+22Q+AQAA8ritW7emWXbv3n1Y65szZ44bavcCT2nZsqUlJyfb119/neHjdu7caddee62NHj3aKlSocEh/m+ATAADAJ6HUVN8XqVy5spUsWTK8DBkyxA7HunXrrFy5cmmuy58/v5UuXdrdlpHbb7/dmjdvbm3btj3kv82wOwAAgE9Sfe52T/3futasWeMagzyFChVK9/79+vWzoUOHZjnkfigmT55s06dPt2+//dYOB8EnAABAHpeSkpIm+MxInz59rFOnTpnep3r16m7IfMOGDWmu37dvn+uAz2g4XYHnihUr3HB9pMsvv9xOP/10mzFjRra2heATAAAgIA1HZcuWdUtWmjVrZps3b7YFCxZYo0aNwsFlamqqNW3aNMOs6k033ZTmurp169rjjz9ubdq0yfZzJPgEAABIMLVr17bzzz/funTpYmPHjrW9e/da9+7d7eqrrw53uv/+++92zjnn2Msvv2xNmjRxGdH0sqJVqlSxatWqZftv03AEAACQgJPMv/baa1arVi0XYGqKpdNOO82effbZ8O0KSJcsWeI63P1E5hMAACABlS5d2iZMmJDh7VWrVs1y2P9QSgzIfP6PinM1U3/0snz58tx+agAAIE7EU+Yzt5D5jKDahxdffDHNddkp2o20f/9+F7RqklYAAJBYUvW/UKqv6wsaIqQImjPLK6b1lieeeMJ1chUrVsxN8NqtWzfbvn17+DHjx493Uw5o7qsTTjjBrWP16tXuzAN33HGHVapUyT1WnWPZnYIAAAAgqMh8ZkEZzCeffNJ1cf3yyy8u+Ozbt6+NGTMmfB8V4mpC1+eff96OPPJId8YAdYwtWrTIXn/9ddc19s4777jM6g8//GDHHXdcun9LAWvk6bJ0+iwAABA/lPT0c6g8FLzEJ8FnpClTpljx4sXDly+44AJ744030hTePvjgg3bLLbekCT7VDabL9evXd5eV+dTwvf71pitQFnTq1Knu+ocffjjdv69TZd133305uIUAAAC5i+AzQosWLezpp58OX9Zw+aeffuqCwsWLF7tMpGb/37Vrl8t2Fi1a1N2vYMGCVq9evfDjlN1U7efxxx+fZv3KaiozmpH+/ftb7969w5f19zTUDwAA4oPfTUIhGo6CTcFmjRo1wpdXrVplF110kXXt2tUeeughNyXBzJkzrXPnzrZnz55w8FmkSBHXZORRTWi+fPncWQP0b6TIzGo01YtmdK5WAACAICD4zISCR51mavjw4eHu9UmTJmX5uIYNG7rMp86ZqnOdAgCAxJDbp9eMBwSfmVAWVPWco0aNcucsnTVrljsFVVY03N6+fXvr0KGDC1wVjG7cuNGmTZvmhudbt24dk+cPAABiS0krLX6uL2iYaikTaiAaMWKE62SvU6eOOw2V6j+zQ41FCj779OljNWvWtEsuucTmzZvnzn8KAACQqJJCQcznBoQajkqWLGkTZ2yyosVTLBHVL7HUEtXVfTZZIhs29CRLVMUL+Hse5XhTNDlxt39xzfMtEe0M7bd2qStsy5YtlpKSEtff2ed1+NoKFMy4v+Ng7d2z3T5+uWlc75toZD4BAAAQM9R8AgAA+CQUSnWLn+sLGjKfAAAAiBkynwAAAD5hkvmsEXwCAAD4xefg0wIYfDLsDgAAgJgh8wkAAOCT1FCqW/xcX9CQ+QQAAEDMkPkEAADwCQ1HWSPzCQAAgJgh8wkAAODnJPOpTDKfGYJPAAAAnzDsnjWG3QEAABAzZD4BAAB8wrnds0bmEwAAADFD5hMAAMAn6jVK9bFOMzV4iU+CTwAAAL+o093XbvfU4EWfDLsDAAAgZsh8AgAA+ISplrJG5hMAAAAxQ+YTAADAJ0y1lDUynwAAAIgZMp8AAAA+oeYzawSfAAAAPmGqpawRfOZhodB/f+3s3LHNEtW2pO2WqPbt3WGJbMf2rZawCvxjiWx/0k5LVDtD+y0R7fxfXaP3vRfP9u/bkafXlxckhYLwSgfUb7/9ZpUrV87tpwEAQEysWbPGjj76aItHu3btsmrVqtm6det8X3eFChVs5cqVVrhwYQsCgs88LDU11dauXWslSpSwpKSkmP7trVu3usBXHwQpKSmWaBJ5+xN52xN9+xN52xN9+3N72xWKbNu2zSpWrGjJyfHbC60AdM+ePb6vt2DBgoEJPIVh9zxMb8Dc/gWoD6FE+xCOlMjbn8jbnujbn8jbnujbn5vbXrJkSYt3ChCDFCTmlPj9eQEAAIC4Q/AJAACAmCH4RLoKFSpkgwYNcv8mokTe/kTe9kTf/kTe9kTf/kTedsQeDUcAAACIGTKfAAAAiBmCTwAAAMQMwScAAABihuATAAAAMUPwCQAAgJgh+AQAAEDMEHwCAAAgZgg+AQAAYLHyf9rnPHvhbGXzAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "# Correlation matrix heatmap\n", - "plt.figure(figsize=(10, 6))\n", - "sns.heatmap(df.corr(numeric_only=True), annot=True, cmap='coolwarm', fmt='.2f')\n", - "plt.title('Correlation Heatmap of Numeric Features')\n", - "plt.show()\n" + "corr = df.select_dtypes(include=[np.number]).corr()\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 6))\n", + "cax = ax.matshow(corr, cmap='coolwarm')\n", + "fig.colorbar(cax)\n", + "\n", + "# Set axis ticks\n", + "ax.set_xticks(range(len(corr.columns)))\n", + "ax.set_yticks(range(len(corr.columns)))\n", + "ax.set_xticklabels(corr.columns, rotation=45, ha='left')\n", + "ax.set_yticklabels(corr.columns)\n", + "\n", + "plt.title('Correlation Heatmap of Numeric Features', pad=20)\n", + "plt.tight_layout()\n", + "plt.show()" ] }, { @@ -1252,7 +1559,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -1266,7 +1573,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.13.0" } }, "nbformat": 4, From 16f4e20aa535017b779dca4b30c7b3b272c0fbee Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 22 Apr 2025 11:32:29 +0200 Subject: [PATCH 14/33] Finished section "Exploring Feature Relationships" --- img/titanic-figure-one-side-view.png | Bin 0 -> 54624 bytes lab-01.ipynb | 441 ++++++++++++++------------- 2 files changed, 231 insertions(+), 210 deletions(-) create mode 100644 img/titanic-figure-one-side-view.png diff --git a/img/titanic-figure-one-side-view.png b/img/titanic-figure-one-side-view.png new file mode 100644 index 0000000000000000000000000000000000000000..a54d44dfbdd1831d5a5bd30da2b6380f17fdd62a GIT binary patch literal 54624 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 xBR#OPEk7tBwTHQKBhg1LJ@e78`g!kFJb@y literal 0 HcmV?d00001 diff --git a/lab-01.ipynb b/lab-01.ipynb index d0b0387..e2f600f 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 38, "id": "ab0a0d4d", "metadata": {}, "outputs": [], @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 39, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -221,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 40, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -363,7 +363,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 6, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -411,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 41, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -432,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 42, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -454,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 43, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -483,7 +483,7 @@ "dtype: object" ] }, - "execution_count": 26, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -498,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 44, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -540,12 +540,12 @@ "id": "3b1b5f6f", "metadata": {}, "source": [ - "Explore the unique values of our *target* using the [DataFrame.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 45, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -562,7 +562,7 @@ "array([0, 1])" ] }, - "execution_count": 29, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -582,7 +582,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 46, "id": "c039567b", "metadata": {}, "outputs": [ @@ -614,7 +614,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 47, "id": "bca9f7e9", "metadata": {}, "outputs": [ @@ -855,7 +855,7 @@ "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 17, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -895,7 +895,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 48, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1009,7 +1009,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 49, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1089,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 50, "id": "ecb40dad", "metadata": {}, "outputs": [ @@ -1098,7 +1098,7 @@ "evalue": "expected argument value expression (3210384145.py, line 2)", "output_type": "error", "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[24]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[50]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" ] } ], @@ -1134,194 +1134,6 @@ "- KDE (Kernel Density Estimation) smooths the distribution line" ] }, - { - "cell_type": "code", - "execution_count": 1, - "id": "34a41e13", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting matplotlib\n", - " Downloading matplotlib-3.10.1-cp313-cp313-win_amd64.whl.metadata (11 kB)\n", - "Collecting contourpy>=1.0.1 (from matplotlib)\n", - " Downloading contourpy-1.3.2-cp313-cp313-win_amd64.whl.metadata (5.5 kB)\n", - "Collecting cycler>=0.10 (from matplotlib)\n", - " Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", - "Collecting fonttools>=4.22.0 (from matplotlib)\n", - " Downloading fonttools-4.57.0-cp313-cp313-win_amd64.whl.metadata (104 kB)\n", - "Collecting kiwisolver>=1.3.1 (from matplotlib)\n", - " Downloading kiwisolver-1.4.8-cp313-cp313-win_amd64.whl.metadata (6.3 kB)\n", - "Requirement already satisfied: numpy>=1.23 in c:\\users\\pc1\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from matplotlib) (2.2.4)\n", - "Requirement already satisfied: packaging>=20.0 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib) (24.2)\n", - "Collecting pillow>=8 (from matplotlib)\n", - " Downloading pillow-11.2.1-cp313-cp313-win_amd64.whl.metadata (9.1 kB)\n", - "Collecting pyparsing>=2.3.1 (from matplotlib)\n", - " Downloading pyparsing-3.2.3-py3-none-any.whl.metadata (5.0 kB)\n", - "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib) (2.9.0.post0)\n", - "Requirement already satisfied: six>=1.5 in c:\\users\\pc1\\appdata\\roaming\\python\\python313\\site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n", - "Downloading matplotlib-3.10.1-cp313-cp313-win_amd64.whl (8.1 MB)\n", - " ---------------------------------------- 0.0/8.1 MB ? eta -:--:--\n", - " ------- -------------------------------- 1.6/8.1 MB 8.1 MB/s eta 0:00:01\n", - " -------------- ------------------------- 2.9/8.1 MB 7.6 MB/s eta 0:00:01\n", - " ---------------- ----------------------- 3.4/8.1 MB 5.7 MB/s eta 0:00:01\n", - " ------------------ --------------------- 3.7/8.1 MB 5.2 MB/s eta 0:00:01\n", - " -------------------- ------------------- 4.2/8.1 MB 4.1 MB/s eta 0:00:01\n", - " ---------------------- ----------------- 4.5/8.1 MB 3.6 MB/s eta 0:00:01\n", - " ----------------------- ---------------- 4.7/8.1 MB 3.4 MB/s eta 0:00:01\n", - " ------------------------ --------------- 5.0/8.1 MB 3.2 MB/s eta 0:00:01\n", - " -------------------------- ------------- 5.2/8.1 MB 2.9 MB/s eta 0:00:01\n", - " ---------------------------- ----------- 5.8/8.1 MB 2.8 MB/s eta 0:00:01\n", - " ----------------------------- ---------- 6.0/8.1 MB 2.7 MB/s eta 0:00:01\n", - " --------------------------------- ------ 6.8/8.1 MB 2.7 MB/s eta 0:00:01\n", - " ------------------------------------- -- 7.6/8.1 MB 2.8 MB/s eta 0:00:01\n", - " ---------------------------------------- 8.1/8.1 MB 2.7 MB/s eta 0:00:00\n", - "Downloading contourpy-1.3.2-cp313-cp313-win_amd64.whl (223 kB)\n", - "Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", - "Downloading fonttools-4.57.0-cp313-cp313-win_amd64.whl (2.2 MB)\n", - " ---------------------------------------- 0.0/2.2 MB ? eta -:--:--\n", - " -------------- ------------------------- 0.8/2.2 MB 4.7 MB/s eta 0:00:01\n", - " ----------------------- ---------------- 1.3/2.2 MB 4.6 MB/s eta 0:00:01\n", - " ---------------------------- ----------- 1.6/2.2 MB 3.9 MB/s eta 0:00:01\n", - " -------------------------------------- - 2.1/2.2 MB 2.6 MB/s eta 0:00:01\n", - " ---------------------------------------- 2.2/2.2 MB 2.6 MB/s eta 0:00:00\n", - "Downloading kiwisolver-1.4.8-cp313-cp313-win_amd64.whl (71 kB)\n", - "Downloading pillow-11.2.1-cp313-cp313-win_amd64.whl (2.7 MB)\n", - " ---------------------------------------- 0.0/2.7 MB ? eta -:--:--\n", - " ------- -------------------------------- 0.5/2.7 MB 4.1 MB/s eta 0:00:01\n", - " ----------------------- ---------------- 1.6/2.7 MB 4.0 MB/s eta 0:00:01\n", - " --------------------------------------- 2.6/2.7 MB 4.5 MB/s eta 0:00:01\n", - " ---------------------------------------- 2.7/2.7 MB 4.3 MB/s eta 0:00:00\n", - "Downloading pyparsing-3.2.3-py3-none-any.whl (111 kB)\n", - "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", - "Successfully installed contourpy-1.3.2 cycler-0.12.1 fonttools-4.57.0 kiwisolver-1.4.8 matplotlib-3.10.1 pillow-11.2.1 pyparsing-3.2.3\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " WARNING: The scripts fonttools.exe, pyftmerge.exe, pyftsubset.exe and ttx.exe are installed in 'c:\\Users\\PC1\\AppData\\Local\\Programs\\Python\\Python313\\Scripts' which is not on PATH.\n", - " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n", - "\n", - "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", - "[notice] To update, run: python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [ - "pip install matplotlib" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "2e77d602", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting scipy\n", - " Downloading scipy-1.15.2-cp313-cp313-win_amd64.whl.metadata (60 kB)\n", - "Requirement already satisfied: numpy<2.5,>=1.23.5 in c:\\users\\pc1\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from scipy) (2.2.4)\n", - "Downloading scipy-1.15.2-cp313-cp313-win_amd64.whl (41.0 MB)\n", - " ---------------------------------------- 0.0/41.0 MB ? eta -:--:--\n", - " --------------------------------------- 0.8/41.0 MB 3.9 MB/s eta 0:00:11\n", - " - -------------------------------------- 1.8/41.0 MB 5.0 MB/s eta 0:00:08\n", - " -- ------------------------------------- 2.9/41.0 MB 4.9 MB/s eta 0:00:08\n", - " --- ------------------------------------ 3.4/41.0 MB 4.7 MB/s eta 0:00:09\n", - " --- ------------------------------------ 3.7/41.0 MB 4.0 MB/s eta 0:00:10\n", - " ---- ----------------------------------- 4.2/41.0 MB 3.2 MB/s eta 0:00:12\n", - " ---- ----------------------------------- 4.5/41.0 MB 3.1 MB/s eta 0:00:12\n", - " ---- ----------------------------------- 5.0/41.0 MB 2.8 MB/s eta 0:00:13\n", - " ----- ---------------------------------- 5.2/41.0 MB 2.8 MB/s eta 0:00:13\n", - " ----- ---------------------------------- 6.0/41.0 MB 2.7 MB/s eta 0:00:13\n", - " ------ --------------------------------- 6.6/41.0 MB 2.7 MB/s eta 0:00:13\n", - " ------ --------------------------------- 7.1/41.0 MB 2.7 MB/s eta 0:00:13\n", - " ------- -------------------------------- 7.6/41.0 MB 2.7 MB/s eta 0:00:13\n", - " -------- ------------------------------- 8.4/41.0 MB 2.8 MB/s eta 0:00:12\n", - " -------- ------------------------------- 8.9/41.0 MB 2.8 MB/s eta 0:00:12\n", - " --------- ------------------------------ 9.7/41.0 MB 2.8 MB/s eta 0:00:12\n", - " ---------- ----------------------------- 10.5/41.0 MB 2.8 MB/s eta 0:00:11\n", - " ---------- ----------------------------- 11.0/41.0 MB 2.9 MB/s eta 0:00:11\n", - " ----------- ---------------------------- 11.5/41.0 MB 2.8 MB/s eta 0:00:11\n", - " ------------ --------------------------- 12.3/41.0 MB 2.8 MB/s eta 0:00:11\n", - " ------------ --------------------------- 12.8/41.0 MB 2.8 MB/s eta 0:00:11\n", - " ------------- -------------------------- 13.4/41.0 MB 2.8 MB/s eta 0:00:10\n", - " ------------- -------------------------- 13.9/41.0 MB 2.8 MB/s eta 0:00:10\n", - " -------------- ------------------------- 14.4/41.0 MB 2.8 MB/s eta 0:00:10\n", - " -------------- ------------------------- 14.7/41.0 MB 2.7 MB/s eta 0:00:10\n", - " -------------- ------------------------- 15.2/41.0 MB 2.7 MB/s eta 0:00:10\n", - " --------------- ------------------------ 15.5/41.0 MB 2.6 MB/s eta 0:00:10\n", - " --------------- ------------------------ 15.7/41.0 MB 2.6 MB/s eta 0:00:10\n", - " --------------- ------------------------ 16.0/41.0 MB 2.6 MB/s eta 0:00:10\n", - " ---------------- ----------------------- 16.5/41.0 MB 2.5 MB/s eta 0:00:10\n", - " ---------------- ----------------------- 17.3/41.0 MB 2.6 MB/s eta 0:00:10\n", - " ----------------- ---------------------- 17.8/41.0 MB 2.6 MB/s eta 0:00:09\n", - " ------------------ --------------------- 18.6/41.0 MB 2.6 MB/s eta 0:00:09\n", - " ------------------ --------------------- 19.4/41.0 MB 2.6 MB/s eta 0:00:09\n", - " ------------------- -------------------- 20.4/41.0 MB 2.7 MB/s eta 0:00:08\n", - " -------------------- ------------------- 21.2/41.0 MB 2.7 MB/s eta 0:00:08\n", - " --------------------- ------------------ 22.0/41.0 MB 2.7 MB/s eta 0:00:07\n", - " ---------------------- ----------------- 22.8/41.0 MB 2.8 MB/s eta 0:00:07\n", - " ----------------------- ---------------- 23.9/41.0 MB 2.8 MB/s eta 0:00:07\n", - " ------------------------ --------------- 24.6/41.0 MB 2.8 MB/s eta 0:00:06\n", - " ------------------------ --------------- 25.4/41.0 MB 2.9 MB/s eta 0:00:06\n", - " ------------------------- -------------- 26.0/41.0 MB 2.9 MB/s eta 0:00:06\n", - " ------------------------- -------------- 26.5/41.0 MB 2.8 MB/s eta 0:00:06\n", - " -------------------------- ------------- 26.7/41.0 MB 2.8 MB/s eta 0:00:06\n", - " -------------------------- ------------- 27.3/41.0 MB 2.8 MB/s eta 0:00:05\n", - " --------------------------- ------------ 27.8/41.0 MB 2.8 MB/s eta 0:00:05\n", - " --------------------------- ------------ 28.3/41.0 MB 2.8 MB/s eta 0:00:05\n", - " --------------------------- ------------ 28.6/41.0 MB 2.8 MB/s eta 0:00:05\n", - " ---------------------------- ----------- 29.4/41.0 MB 2.8 MB/s eta 0:00:05\n", - " ----------------------------- ---------- 30.1/41.0 MB 2.8 MB/s eta 0:00:04\n", - " ------------------------------ --------- 30.9/41.0 MB 2.8 MB/s eta 0:00:04\n", - " ------------------------------ --------- 31.7/41.0 MB 2.8 MB/s eta 0:00:04\n", - " ------------------------------- -------- 32.2/41.0 MB 2.8 MB/s eta 0:00:04\n", - " ------------------------------- -------- 32.8/41.0 MB 2.8 MB/s eta 0:00:03\n", - " -------------------------------- ------- 33.6/41.0 MB 2.8 MB/s eta 0:00:03\n", - " --------------------------------- ------ 34.1/41.0 MB 2.8 MB/s eta 0:00:03\n", - " --------------------------------- ------ 34.3/41.0 MB 2.8 MB/s eta 0:00:03\n", - " --------------------------------- ------ 34.6/41.0 MB 2.8 MB/s eta 0:00:03\n", - " --------------------------------- ------ 34.6/41.0 MB 2.8 MB/s eta 0:00:03\n", - " ---------------------------------- ----- 34.9/41.0 MB 2.7 MB/s eta 0:00:03\n", - " ---------------------------------- ----- 35.4/41.0 MB 2.7 MB/s eta 0:00:03\n", - " ----------------------------------- ---- 36.2/41.0 MB 2.7 MB/s eta 0:00:02\n", - " ------------------------------------ --- 37.0/41.0 MB 2.7 MB/s eta 0:00:02\n", - " ------------------------------------ --- 37.7/41.0 MB 2.7 MB/s eta 0:00:02\n", - " ------------------------------------- -- 38.3/41.0 MB 2.7 MB/s eta 0:00:01\n", - " -------------------------------------- - 39.1/41.0 MB 2.7 MB/s eta 0:00:01\n", - " -------------------------------------- - 39.8/41.0 MB 2.7 MB/s eta 0:00:01\n", - " --------------------------------------- 40.6/41.0 MB 2.7 MB/s eta 0:00:01\n", - " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", - " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", - " --------------------------------------- 40.9/41.0 MB 2.8 MB/s eta 0:00:01\n", - " ---------------------------------------- 41.0/41.0 MB 2.6 MB/s eta 0:00:00\n", - "Installing collected packages: scipy\n", - "Successfully installed scipy-1.15.2\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "[notice] A new release of pip is available: 24.2 -> 25.0.1\n", - "[notice] To update, run: python.exe -m pip install --upgrade pip\n" - ] - } - ], - "source": [ - "pip install scipy" - ] - }, { "cell_type": "code", "execution_count": null, @@ -1380,7 +1192,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "5c605b8c", "metadata": {}, "outputs": [ @@ -1428,7 +1240,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "69ca462b", "metadata": {}, "outputs": [ @@ -1491,7 +1303,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "910a7faa", "metadata": {}, "outputs": [ @@ -1532,6 +1344,215 @@ "## Exploring Feature Relationships" ] }, + { + "cell_type": "markdown", + "id": "0c68fa63", + "metadata": {}, + "source": [ + "### Grouped statistics\n", + "\n", + "Pandas groupby() function is a powerful tool used to split a DataFrame into groups based on one or more columns, allowing for efficient data analysis and aggregation. It follows a “split-apply-combine” strategy, where data is divided into groups, a function is applied to each group, and the results are combined into a new DataFrame.\n", + "\n", + "The groupby() function in Pandas involves three main steps: Splitting, Applying, and Combining.\n", + "\n", + "- Splitting: This step involves dividing the DataFrame into groups based on some criteria. The groups are defined by unique values in one or more columns.\n", + "\n", + "- Applying: In this step, a function is applied to each group independently. You can apply various functions to each group, such as:\n", + " - Aggregation: Calculate summary statistics (e.g., sum, mean, count) for each group.\n", + " - Transformation: Modify the values within each group.\n", + " - Filtering: Keep or discard groups based on certain conditions.\n", + "\n", + "- Combining: Finally, the results of the applied function are combined into a new DataFrame or Series.\n", + "\n", + "[Pandas dataframe.groupby() Method - geeksforgeeks](https://www.geeksforgeeks.org/python-pandas-dataframe-groupby/)\n", + "\n", + "The abstract definition of grouping is to provide a mapping of labels to group names.\n", + "For **DataFrame objects**, a string indicating either a column name or an index level name to be used to group." + ] + }, + { + "cell_type": "markdown", + "id": "72e15534", + "metadata": {}, + "source": [ + "#### Grouping by single columns\n", + "In this example, we will demonstrate how to group data by a single column using the groupby method. We will group by our categorical features, and explore how their relationship with the target feature" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "89539e8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Sex\n", + "female 0.742038\n", + "male 0.188908\n", + "Name: Survived, dtype: float64" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate the average survival rate for each sex (female/male)\n", + "grouped = df.groupby(by=\"Sex\")\n", + "grouped[\"Survived\"].mean()" + ] + }, + { + "cell_type": "markdown", + "id": "ce8986a1", + "metadata": {}, + "source": [ + "This tells us that \n", + "- 74% of women passengers survived\n", + "- 18% of men passengers survived\n", + " \n", + "thus we could infer that women were more likely to survive" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "1d982743", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Pclass\n", + "1 0.629630\n", + "2 0.472826\n", + "3 0.242363\n", + "Name: Survived, dtype: float64" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate the average survival rate for each passenger ticket class (1st, 2nd, 3rd)\n", + "df.groupby(by=\"Pclass\")[\"Survived\"].mean()" + ] + }, + { + "cell_type": "markdown", + "id": "1838a121", + "metadata": {}, + "source": [ + "This tells us that\n", + "- 62% of passengers in Upper class survived\n", + "- 47% of passengers in Middle class survived\n", + "- 24% of passengers in Lower class survived\n", + "\n", + "![Titanic cabin assignments through class](img\\titanic-figure-one-side-view.png)\n", + "\n", + "[Titanic cabin placement](https://www.encyclopedia-titanica.org/class-gender-titanic-disaster-1912~chapter-2~part-2.html)\n", + "\n", + "​The Titanic disaster highlighted the influence of social class on survival rates. Several factors contributed to this disparity. The ship's design placed first-class accommodations closer to the lifeboats, facilitating quicker access during the evacuation. Additionally, third-class passengers faced physical barriers and lacked clear guidance, which hindered their ability to reach lifeboats in time. These structural and procedural disadvantages underscore how deeply social hierarchies impacted survival outcomes during the tragedy.​" + ] + }, + { + "cell_type": "markdown", + "id": "0dc76e6d", + "metadata": {}, + "source": [ + "As demonstrated, it is essential to explore data in depth alongside its context, as this approach can uncover meaningful insights into model performance during inference. Understanding the background not only helps interpret results more accurately, but also sheds light on potential biases and patterns that might otherwise go unnoticed. This is particularly crucial when working with historical or real-world datasets, where external factors can significantly influence outcomes." + ] + }, + { + "cell_type": "markdown", + "id": "d484889b", + "metadata": {}, + "source": [ + "**Exercises**\n", + "\n", + "Explore the relation between the **port of embarkation** (Embarked) and the survival rate." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "e5bb3920", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: df.groupby()[]. ..." + ] + }, + { + "cell_type": "markdown", + "id": "001d4a8d", + "metadata": {}, + "source": [ + "If we prefer, we can create a plot for better visualizing our results using matplotlib bar plot" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "a51a522e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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GTPGNC01atRIli9f7upkHB8f7/E8+rwrVqyQwYMHS4MGDUzw0aAzfPjwyy4LAACwQ5BDq2NyQee40fChfV3caejwZ9p3SEdNaefiMmXK5Pn1I0csy/NrArY4NLmzr4sAIEDl5Ps7x5P4aU2LNht9+eWXXh/Pas4ZAACA/JbjtqVBgwaZ9Z10+YUSJUqYZiQdHl6rVi0zyR4AAIAv5bjm5uuvv5ZPPvnEdALW/jDakVjXe9IqIu3427kz1c4AACCAam50NJNzPhsdBq7NVKp+/fpm8UsAAICACje1a9c2q3ErXcX7jTfekCNHjphZgnW+GQAAgIBqltKh1wkJCeZ2bGysdOzYURYsWGDmunnnnXfyo4wAAAD5F2569erluq0zDP/666+yd+9eufrqq81MxQAAAL502TPxhYWFSZMmTczK4C+//HLelAoAAKAgwo12Hv78889l5cqVrvls/v77b5kxY4ZERkbK5MmTc1sOAACAgm2W2rBhg9x5551mhkBdPFOHgr/99tvStWtXCQ0NlbFjx5p1ogAAAAKi5mbUqFHSqVMn2blzp1nwcsuWLdKtWzezcOWPP/4ojz32mJnUDwAAICDCza5du0zAqVevnowfP97U3rz44oty77335m8JAQAA8iPcnDx50jUaSmtotCOxBh0AAICAHQquzU+JiYnmti4mrpP56YzFgbQqOAAAsFuOws3tt99uQo2TdjBW2kSl+/X/rAoOAAACItwcPHgwf0sCAABQkOFGV/8GAACwfoZiAAAAf0K4AQAAViHcAAAAqxBuAACAVQg3AACg8I2Waty4sZnDJju2bdt2uWUCAADI33CjK38DAABYE25iY2PzvyQAAAB5gD43AACg8K4tpXTtqFdeeUU++OADiY+Pl9TUVI/HT5w4kZflAwAAyN+am3Hjxsm0adOkR48ekpycLEOGDJG7775bgoODZezYsTm9HAAAgG/DzYIFC2T27NnyzDPPSGhoqPTs2VPmzJkjY8aMkW+//TZvSwcAAJDf4SYxMVHq169vbpcqVcrU3qg777xTli1bltPLAQAA+DbcXHXVVZKQkGBuX3PNNbJy5Upze8uWLVKsWLG8LR0AAEB+h5tu3brJ6tWrze2BAwfK6NGjpVatWtKnTx956KGHcno5AAAA346Wmjx5suu2diquXr26bNy40QScLl265G3pAAAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Group and calculate survival rates\n", + "survival_by_sex = df.groupby(\"Sex\")[\"Survived\"].mean()\n", + "\n", + "# Extract the index and relative values from our grouped data\n", + "sex = survival_by_sex.index\n", + "rates = survival_by_sex.values\n", + "\n", + "plt.bar(x=sex, height=rates)\n", + "\n", + "# Add values on top of bars\n", + "for i, rate in enumerate(rates):\n", + " plt.text(x=i, y=rate, s=f'{rate:.2f}', ha='center', va='bottom', fontsize=10)\n", + "\n", + "plt.ylim(0, 1)\n", + "plt.title('Survival Rate by Sex')\n", + "plt.ylabel('Survival Rate')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "eade8108", + "metadata": {}, + "source": [ + "**Exercise**\n", + "\n", + "Create the plotbar for the average survival rate for each passenger ticket class" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "fa8a81fc", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: " + ] + }, { "cell_type": "markdown", "id": "3600768d", From 313d80fd91c0b108b609fa3630d8ac7c2f880212 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 22 Apr 2025 12:19:45 +0200 Subject: [PATCH 15/33] Completed section "Handling Missing Values" --- lab-01.ipynb | 1060 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1054 insertions(+), 6 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index e2f600f..34a5e4a 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 96, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -32,7 +32,9 @@ "\n", "import numpy as np\n", "import pandas as pd\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.impute import SimpleImputer" ] }, { @@ -1009,7 +1011,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 81, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1351,7 +1353,7 @@ "source": [ "### Grouped statistics\n", "\n", - "Pandas groupby() function is a powerful tool used to split a DataFrame into groups based on one or more columns, allowing for efficient data analysis and aggregation. It follows a “split-apply-combine” strategy, where data is divided into groups, a function is applied to each group, and the results are combined into a new DataFrame.\n", + "Pandas [DataFrame.groupby()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html) function is a powerful tool used to split a DataFrame into groups based on one or more columns, allowing for efficient data analysis and aggregation. It follows a “split-apply-combine” strategy, where data is divided into groups, a function is applied to each group, and the results are combined into a new DataFrame.\n", "\n", "The groupby() function in Pandas involves three main steps: Splitting, Applying, and Combining.\n", "\n", @@ -1364,7 +1366,7 @@ "\n", "- Combining: Finally, the results of the applied function are combined into a new DataFrame or Series.\n", "\n", - "[Pandas dataframe.groupby() Method - geeksforgeeks](https://www.geeksforgeeks.org/python-pandas-dataframe-groupby/)\n", + "[Pandas DataFrame.groupby() Method - geeksforgeeks](https://www.geeksforgeeks.org/python-pandas-dataframe-groupby/)\n", "\n", "The abstract definition of grouping is to provide a mapping of labels to group names.\n", "For **DataFrame objects**, a string indicating either a column name or an index level name to be used to group." @@ -1558,7 +1560,1053 @@ "id": "3600768d", "metadata": {}, "source": [ - "## Handling Missing Values" + "## Handling Missing Values\n", + "\n", + "It is not uncommon in real-world applications for our samples to be missing one or more values for various reasons. There could have been an error in the data collection process, certain measurements are not applicable, or particular fields could have been simply left blank in a survey, for example. We typically see missing values as the blank spaces in our data table or as placeholder strings such as NaN, which stands for not a number, or NULL (a commonly used indicator of unknown values in relational databases).\n", + "\n", + "Unfortunately, most computational tools are unable to handle such missing values, or produce unpredictable results if we simply ignore them. Therefore, it is crucial that we take care of those missing values before we proceed with further analyses. In this section, we will work through several practical techniques for dealing with missing values by removing entries from our dataset or imputing missing values from other samples and features.\n" + ] + }, + { + "cell_type": "markdown", + "id": "a5ec1dba", + "metadata": {}, + "source": [ + "### Eliminating samples or features with missing values\n", + "\n", + "One of the easiest ways to deal with missing data is to simply remove the corresponding features (columns) or samples (rows) from the dataset entirely; rows with missing values can be easily dropped via the dropna method:" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "daa295ab", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data set shape before dropping rows with missing values: (891, 12)\n", + "Data shape after dropping rows with missing values: (183, 12)\n" + ] + } + ], + "source": [ + "print(\"Data set shape before dropping rows with missing values:\", df.shape)\n", + "temp = df.dropna(axis=0)\n", + "print(\"Data shape after dropping rows with missing values:\", temp.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "72188fc4", + "metadata": {}, + "source": [ + "Similarly, we can drop columns that have at least one NaN in any row by setting the axis argument to 1:" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "a5915326", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data set shape before dropping columns with missing values: (891, 12)\n", + "Data shape after dropping columns with missing values: (891, 9)\n" + ] + } + ], + "source": [ + "print(\"Data set shape before dropping columns with missing values:\", df.shape)\n", + "temp = df.dropna(axis=1)\n", + "print(\"Data shape after dropping columns with missing values:\", temp.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "f587b126", + "metadata": {}, + "source": [ + "The dropna method supports several additional parameters that can come in handy:" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "7610d62c", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ
\n", + "

891 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", + "\n", + "[891 rows x 12 columns]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# only drop rows where all columns are NaN\n", + "df.dropna(how=\"all\")" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "f4e7a192", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ
\n", + "

891 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", + "\n", + "[891 rows x 12 columns]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# drop rows that have less than 4 real values\n", + "df.dropna(thresh=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "e53a6f15", + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
6701McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S
101113Sandstrom, Miss. Marguerite Rutfemale4.011PP 954916.7000G6S
111211Bonnell, Miss. Elizabethfemale58.00011378326.5500C103S
.......................................
87187211Beckwith, Mrs. Richard Leonard (Sallie Monypeny)female47.0111175152.5542D35S
87287301Carlsson, Mr. Frans Olofmale33.0006955.0000B51 B53 B55S
87988011Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)female56.0011176783.1583C50C
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
\n", + "

204 rows × 12 columns

\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass \\\n", + "1 2 1 1 \n", + "3 4 1 1 \n", + "6 7 0 1 \n", + "10 11 1 3 \n", + "11 12 1 1 \n", + ".. ... ... ... \n", + "871 872 1 1 \n", + "872 873 0 1 \n", + "879 880 1 1 \n", + "887 888 1 1 \n", + "889 890 1 1 \n", + "\n", + " Name Sex Age SibSp \\\n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "6 McCarthy, Mr. Timothy J male 54.0 0 \n", + "10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n", + "11 Bonnell, Miss. Elizabeth female 58.0 0 \n", + ".. ... ... ... ... \n", + "871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 \n", + "872 Carlsson, Mr. Frans Olof male 33.0 0 \n", + "879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "1 0 PC 17599 71.2833 C85 C \n", + "3 0 113803 53.1000 C123 S \n", + "6 0 17463 51.8625 E46 S \n", + "10 1 PP 9549 16.7000 G6 S \n", + "11 0 113783 26.5500 C103 S \n", + ".. ... ... ... ... ... \n", + "871 1 11751 52.5542 D35 S \n", + "872 0 695 5.0000 B51 B53 B55 S \n", + "879 1 11767 83.1583 C50 C \n", + "887 0 112053 30.0000 B42 S \n", + "889 0 111369 30.0000 C148 C \n", + "\n", + "[204 rows x 12 columns]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# only drop rows where NaN appear in specific columns (here: 'C')\n", + "df.dropna(subset=['Cabin'])" + ] + }, + { + "cell_type": "markdown", + "id": "2f1d5cb5", + "metadata": {}, + "source": [ + "Although the removal of missing data seems to be a convenient approach, it also comes with certain disadvantages; for example, we may end up removing too many samples, which will make a reliable analysis impossible. Or, if we remove too many feature columns, we will run the risk of losing valuable information that our classifier needs to discriminate between classes." + ] + }, + { + "cell_type": "markdown", + "id": "aba75388", + "metadata": {}, + "source": [ + "### Imputing missing values\n", + "\n", + "Often, the removal of samples or dropping of entire feature columns is simply not feasible, because we might lose too much valuable data. In this case, we can use different interpolation techniques to estimate the missing values from the other training samples in our dataset. One of the most common interpolation techniques is **mean imputation**, where we simply replace the missing value with the mean value of the entire feature column. A convenient way to achieve this is by using the [SimpleImputer](https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html) class from **scikit-learn**, as shown in the following code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e0d2ab02", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1., 10., 20., 4.],\n", + " [nan, 15., nan, 2.],\n", + " [ 6., 8., nan, nan]])" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# create a simple matrix with missing values\n", + "numerical_data = np.array([\n", + " [1, 10, 20, 4],\n", + " [np.nan, 15, np.nan, 2],\n", + " [6, 8, np.nan, np.nan]\n", + "])\n", + "\n", + "numerical_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "265a7ad4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1. , 10. , 20. , 4. ],\n", + " [ 3.5, 15. , 20. , 2. ],\n", + " [ 6. , 8. , 20. , 3. ]])" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')\n", + "imp_mean = imp_mean.fit(numerical_data)\n", + "imputed_data = imp_mean.transform(numerical_data)\n", + "imputed_data" + ] + }, + { + "cell_type": "markdown", + "id": "ac23a06a", + "metadata": {}, + "source": [ + "Here, we replaced each np.nan value with the corresponding mean, which is separately calculated for each feature column.\n", + "\n", + "Other options for the strategy parameter are median or most_frequent, where the latter replaces the missing values with the most frequent values. This is useful for imputing categorical feature values" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "id": "b5bd80d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([['red', 'tall', 'fast'],\n", + " ['brown', nan, 'slow'],\n", + " [nan, 'small', 'slow'],\n", + " ['brown', 'tall', nan]], dtype=object)" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "categorical_data = np.array([\n", + " [\"red\", \"tall\", \"fast\"],\n", + " [\"brown\", np.nan, \"slow\"],\n", + " [np.nan, \"small\", \"slow\"],\n", + " [\"brown\", \"tall\", np.nan],\n", + "], dtype=object)\n", + "\n", + "categorical_data" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "c8a36007", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([['red', 'tall', 'fast'],\n", + " ['brown', 'tall', 'slow'],\n", + " ['brown', 'small', 'slow'],\n", + " ['brown', 'tall', 'slow']], dtype=object)" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "imp_most_frequent = SimpleImputer(missing_values=np.nan, strategy=\"most_frequent\")\n", + "imputed_data = imp_most_frequent.fit_transform(categorical_data)\n", + "imputed_data" + ] + }, + { + "cell_type": "markdown", + "id": "fac336ab", + "metadata": {}, + "source": [ + "**Exercise**\n", + "\n", + "Impute the missing values in the Cabin column using the constant as the imputation strategy and fill_value as *missing*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f07516a", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "expected argument value expression (201333596.py, line 5)", + "output_type": "error", + "traceback": [ + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[115]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + ] + } + ], + "source": [ + "# extract Age data\n", + "cabin = df[\"Cabin\"].values\n", + "\n", + "# Create imputer instance\n", + "imp_median = SimpleImputer(strategy=, fill_value=)\n", + "\n", + "# Apply imputing technique\n", + "imputed_cabin = \n", + "\n", + "imputed_cabin" ] }, { From c05798d843865b1e0b91a85a5293f7b5a887b348 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 22 Apr 2025 12:30:12 +0200 Subject: [PATCH 16/33] improve "feature relationship" section intro --- lab-01.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 34a5e4a..fb9a8c7 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -1343,7 +1343,9 @@ "id": "0224a37f", "metadata": {}, "source": [ - "## Exploring Feature Relationships" + "## Exploring Feature Relationships\n", + "\n", + "Before performing any advanced analysis or modeling, it is essential to explore and understand the underlying structure of the dataset. One fundamental tool for this process is the groupby function in the pandas library, which allows for the aggregation and summarization of data based on one or more categorical features. By grouping data, we can uncover patterns, compare subsets, and derive meaningful insights that would otherwise remain hidden in raw tables. The following exercises are designed to develop familiarity with groupby operations and demonstrate how systematic data exploration leads to a deeper understanding of trends, distributions, and relationships within the data." ] }, { From ff339a5afb5eb954252175b0ef5a6e4164608406 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 22 Apr 2025 12:33:41 +0200 Subject: [PATCH 17/33] Add reference to Raschka & Mirjalili (2019) in missing values section --- lab-01.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index fb9a8c7..b3b8f01 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -1566,7 +1566,9 @@ "\n", "It is not uncommon in real-world applications for our samples to be missing one or more values for various reasons. There could have been an error in the data collection process, certain measurements are not applicable, or particular fields could have been simply left blank in a survey, for example. We typically see missing values as the blank spaces in our data table or as placeholder strings such as NaN, which stands for not a number, or NULL (a commonly used indicator of unknown values in relational databases).\n", "\n", - "Unfortunately, most computational tools are unable to handle such missing values, or produce unpredictable results if we simply ignore them. Therefore, it is crucial that we take care of those missing values before we proceed with further analyses. In this section, we will work through several practical techniques for dealing with missing values by removing entries from our dataset or imputing missing values from other samples and features.\n" + "Unfortunately, most computational tools are unable to handle such missing values, or produce unpredictable results if we simply ignore them. Therefore, it is crucial that we take care of those missing values before we proceed with further analyses. In this section, we will work through several practical techniques for dealing with missing values by removing entries from our dataset or imputing missing values from other samples and features.\n", + "\n", + "(the material of this section is a reference to *Raschka, S., & Mirjalili, V. (2019). Python machine learning: Machine learning and deep learning with Python, scikit-learn, and TensorFlow 2 (3rd ed.). Packt Publishing.*)\n" ] }, { From c54157a4d2ed691111d54689a86b076e89ce5cd5 Mon Sep 17 00:00:00 2001 From: Basarans Date: Tue, 22 Apr 2025 21:48:39 +0200 Subject: [PATCH 18/33] Update lab-01.ipynb --- lab-01.ipynb | 487 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 449 insertions(+), 38 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index b3b8f01..444ba41 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 1, "id": "ab0a0d4d", "metadata": {}, "outputs": [], @@ -22,10 +22,22 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 14, "id": "fbc1481d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'sklearn'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[14]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpd\u001b[39;00m\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmatplotlib\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplt\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mimpute\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SimpleImputer\n\u001b[32m 9\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpreprocessing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m MinMaxScaler\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'sklearn'" + ] + } + ], "source": [ "# import dependencies\n", "import os\n", @@ -34,7 +46,8 @@ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", - "from sklearn.impute import SimpleImputer" + "from sklearn.impute import SimpleImputer\n", + "from sklearn.preprocessing import MinMaxScaler" ] }, { @@ -223,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -365,7 +378,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 40, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -413,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -434,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -456,7 +469,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -500,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -547,7 +560,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -584,7 +597,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "c039567b", "metadata": {}, "outputs": [ @@ -616,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "id": "bca9f7e9", "metadata": {}, "outputs": [ @@ -897,7 +910,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1011,7 +1024,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": null, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1091,7 +1104,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "id": "ecb40dad", "metadata": {}, "outputs": [ @@ -1131,22 +1144,36 @@ "\n", "Purpose: Shows how a numerical variable is distributed (e.g., Age).\n", "\n", - "- Histogram shows count of values in intervals\n", + "- A histogram shows how often values appear in a numeric column by splitting them into intervals (“bins”).\n", + "\n", + "- A KDE curve (Kernel Density Estimation) is a smooth line that represents the probability distribution of the data.\n", "\n", - "- KDE (Kernel Density Estimation) smooths the distribution line" + "Use case:\n", + "\n", + "- Analyze the distribution of Age, Fare, or any continuous variable." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "ee827da3", "metadata": {}, "outputs": [ + { + "ename": "NameError", + "evalue": "name 'df' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 7\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;66;03m# Set a general style for plots\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m#plt.style.use('seaborn-whitegrid')\u001b[39;00m\n\u001b[32m 6\u001b[39m plt.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m----> \u001b[39m\u001b[32m7\u001b[39m plt.hist(\u001b[43mdf\u001b[49m[\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m].dropna(), bins=\u001b[32m30\u001b[39m, color=\u001b[33m'\u001b[39m\u001b[33mskyblue\u001b[39m\u001b[33m'\u001b[39m, edgecolor=\u001b[33m'\u001b[39m\u001b[33mblack\u001b[39m\u001b[33m'\u001b[39m, density=\u001b[38;5;28;01mTrue\u001b[39;00m, alpha=\u001b[32m0.6\u001b[39m, label=\u001b[33m'\u001b[39m\u001b[33mHistogram\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mscipy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mstats\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m gaussian_kde\n\u001b[32m 11\u001b[39m \u001b[38;5;66;03m# gaussian_kde: A class for performing kernel density estimation.\u001b[39;00m\n\u001b[32m 12\u001b[39m \u001b[38;5;66;03m# It is a non-parametric way to estimate the probability density function of a random variable.\u001b[39;00m\n\u001b[32m 13\u001b[39m \u001b[38;5;66;03m# It is a useful tool for visualizing the distribution of data points in a dataset.\u001b[39;00m\n", + "\u001b[31mNameError\u001b[39m: name 'df' is not defined" + ] + }, { "data": { - "image/png": "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7twZy5Ytg6Ex/datW2jdujWaN2+OM2fO4LPPPsM333wT6/U3btxAw4YN0apVK5w9e1YlKZJo9OnTR6NPRESUPrErFBERaap69epo27Yt+vfvj4iICGTPnh3r1q1DrVq1MGzYMGzZsgXnzp2L3n7kyJGYOHEinj17BhcXF9WNSsZn/PDDD9HbSGJRs2ZN1WohLR1ERJTy2GJBRESakfEUR48eRYcOHdRja2trtGvXTo21MDxfsWLFWK+pVKlSrMfSkiHdp2SMhmFp0KABoqKiVIsHERGlDutUeh8iIqLXSAIhrRQxB2tLQ7qdnR3mzp2b6DEa0kVKxlXElStXLqPGS0RECWNiQUREmpCEYuXKlZgxYwbq168f6zkZU/G///1PjbvYunVrrOeOHTsW63G5cuVw8eJFFChQIFXiJiKi+HGMBRERaWLDhg2q29PDhw/h7Owc67mhQ4di586damC3JBcDBgxA9+7dcfr0aQwaNAh3795VVaHkdTJgu0qVKvj000/VeIuMGTOqRGP79u2JbvUgIqLk4xgLIiLSrBtUvXr1XksqhFR4On78OF6+fIlff/0V69evR6lSpbBgwYLoqlDSXUrI+j179uDq1auq5GzZsmUxevRozoVBRJTK2GJBRERpilSEWrhwIXx9fbUOhYiIYuAYCyIiMmnz589XlaGyZMmCAwcOYNq0aZyjgojIBDGxICIik3bt2jV8++23ePr0qaryJGMshg8frnVYREQUB7tCERERERFRsnHwNhERERERJRsTCyIiIiIiSjYmFkRERERElGxMLIiIiIiIKNmYWBARERERUbIxsSAiIiIiomRjYkFERERERMnGxIKIiIiIiJKNiQURERERESG5/g+smbRJqOjpZgAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1189,7 +1216,15 @@ "\n", "Purpose: Great for comparing numeric distributions across categories and spotting outliers.\n", "\n", - "- Example: Age distribution by survival status" + "- A boxplot (or whisker plot) summarizes a numeric variable using five key numbers:\n", + "\n", + " Minimum - 1st quartile (Q1) - Median (Q2) - 3rd quartile (Q3) - Maximum\n", + "\n", + "It also shows outliers (points outside 1.5×IQR).\n", + "\n", + "Use case:\n", + "\n", + "- Compare Age by Survived, Fare by Pclass, etc." ] }, { @@ -1237,7 +1272,13 @@ "source": [ "3. Count Plot (Bar Plot for Categories)\n", "\n", - "Purpose: Displays the frequency of each category in a variable (like value_counts, but visual)." + "Purpose: Displays the frequency of each category in a variable (like value_counts, but visual).\n", + "\n", + "Use case:\n", + "\n", + "- Visualize distributions of:\n", + "\n", + " Sex - Pclass - Embarked - Survived" ] }, { @@ -1300,7 +1341,11 @@ "\n", "- Values close to +1 → strong positive correlation\n", "\n", - "- Values close to -1 → strong negative correlation" + "- Values close to -1 → strong negative correlation\n", + "\n", + "Use case:\n", + "\n", + "- See how Age, Fare, Parch, SibSp, and Survived are related." ] }, { @@ -1338,6 +1383,55 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "3532d9c4", + "metadata": {}, + "source": [ + "**Exercises**\n", + "\n", + "Compare 3 different columns and their relation between them" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "33251565", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "selected_cols = df[['Age', 'Survived', 'Pclass']]\n", + "\n", + "# Compute correlation matrix\n", + "corr_selected = selected_cols.corr()\n", + "\n", + "# Plot the correlation heatmap\n", + "fig, ax = plt.subplots(figsize=(6, 4))\n", + "cax = ax.matshow(corr_selected, cmap='coolwarm')\n", + "fig.colorbar(cax)\n", + "\n", + "# Set axis ticks and labels\n", + "ax.set_xticks(range(len(corr_selected.columns)))\n", + "ax.set_yticks(range(len(corr_selected.columns)))\n", + "ax.set_xticklabels(corr_selected.columns, rotation=45, ha='left')\n", + "ax.set_yticklabels(corr_selected.columns)\n", + "\n", + "plt.title('Correlation: Age, Survived & Pclass', pad=20)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, { "cell_type": "markdown", "id": "0224a37f", @@ -1385,7 +1479,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -1423,7 +1517,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": null, "id": "1d982743", "metadata": {}, "outputs": [ @@ -1484,7 +1578,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": null, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -1502,7 +1596,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": null, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -1549,7 +1643,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -1583,7 +1677,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": null, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -1612,7 +1706,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": null, "id": "a5915326", "metadata": {}, "outputs": [ @@ -1641,7 +1735,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": null, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -1906,7 +2000,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": null, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2171,7 +2265,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": null, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -2520,7 +2614,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": null, "id": "b5bd80d5", "metadata": {}, "outputs": [ @@ -2551,7 +2645,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": null, "id": "c8a36007", "metadata": {}, "outputs": [ @@ -2618,16 +2712,333 @@ "id": "9489ec02", "metadata": {}, "source": [ - "## Feature Engineering" + "## Feature Engineering\n", + "\n", + "Feature Engineering is the process of creating new input features or transforming existing ones to improve the performance of machine learning models. In real-world data, raw columns are often incomplete, noisy, or not directly usable. Good features can make simple models powerful — and poor features can make even the best models fail.\n", + "\n", + "Even if you use powerful algorithms like Random Forest, XGBoost, or Neural Networks, poor features can ruin your model’s performance.\n", + "\n", + "On the other hand, well-crafted features can help:\n", + "\n", + "- Improve accuracy\n", + "\n", + "- Reduce overfitting\n", + "\n", + "- Speed up training\n", + "\n", + "- Make the model easier to interpret\n", + "\n", + "Types of Feature Engineering\n", + "\n", + "| Column Name | Data Type | Description | Possible Values / Examples |\n", + "|--------------------------|------------------------------|-------------------------------------------------------------------------|--------------------------------------------------------|\n", + "| Feature Extraction | String → Categorical | Extract useful parts from complex fields | From `Name` → `Title` = \"Mr\", \"Mrs\", \"Miss\", etc. |\n", + "| Feature Transformation | Numeric | Apply mathematical or rule-based transformation to values | `Fare` → log(Fare), `Age` → square root(Age) |\n", + "| Encoding Categorical | Categorical → Numeric | Convert string labels into numeric format for modeling | `Sex` = \"male\", \"female\" → 1, 0 using `get_dummies()` |\n", + "| Binning | Numeric → Categorical | Divide continuous values into discrete intervals | `Age` → \"Child\", \"Adult\", \"Senior\" |\n", + "| Feature Interaction | Multiple Columns | Combine two or more columns to create meaningful relationships | `FamilySize` = `SibSp` + `Parch` + 1 |\n", + "| Datetime Decomposition | Datetime → Numeric/Categorical | Break down datetime into parts like year, month, day, etc. | `2023-04-19` → year = 2023, month = 4 |\n", + "| Scaling / Normalization | Numeric | Scale numeric values to a common range or distribution | `Fare` → 0–1 using MinMaxScaler |\n", + "| Missing Value Imputation | Any | Fill missing values with mean, median, mode, or prediction | `Age` → fill missing with median age (e.g., 28.0) |\n" + ] + }, + { + "cell_type": "markdown", + "id": "dc752004", + "metadata": {}, + "source": [ + "Creating new feature as a Title. Titles often capture social status, gender, and age group — all useful predictors of survival!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e620008d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unique titles found: ['Mr' 'Mrs' 'Miss' 'Master' 'Don' 'Rev' 'Dr' 'Mme' 'Ms' 'Major' 'Lady'\n", + " 'Sir' 'Mlle' 'Col' 'Capt' 'the Countess' 'Jonkheer']\n" + ] + } + ], + "source": [ + "# Extract title from passenger name\n", + "df['Title'] = df['Name'].str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", + "\n", + "# View unique titles\n", + "print(\"Unique titles found:\", df['Title'].unique())\n" ] }, + { + "cell_type": "markdown", + "id": "54da3c36", + "metadata": {}, + "source": [ + "Encoding Categorical Variables (Sex)\n", + "\n", + "- Most machine learning models can’t handle text labels like 'male' or 'female'. get_dummies() turns these into numerical values (0 or 1) that models can understand." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "aa72c3f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Sex_male\n", + "0 True\n", + "1 False\n", + "2 False\n", + "3 False\n", + "4 True\n" + ] + } + ], + "source": [ + "# Encode 'Sex' column into binary variables (0 or 1)\n", + "df_encoded = pd.get_dummies(df, columns=['Sex'], drop_first=True)\n", + "\n", + "# Shows new encoded column (e.g., Sex_male)\n", + "print(df_encoded[['Sex_male']].head())" + ] + }, + { + "cell_type": "markdown", + "id": "0cc59cd0", + "metadata": {}, + "source": [ + "Normalize a Numeric Attribute (Fare)\n", + "\n", + "- Normalization rescales the feature so it falls between 0 and 1. This is important for models that are sensitive to feature scale, such as:\n", + "\n", + "- - K-Nearest Neighbors\n", + "\n", + "- - Logistic Regression\n", + "\n", + "- - Neural Networks\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c89ae9a6", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'MinMaxScaler' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[17]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Initialize scaler\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m scaler = \u001b[43mMinMaxScaler\u001b[49m()\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# Apply normalization on Fare\u001b[39;00m\n\u001b[32m 5\u001b[39m df_encoded[\u001b[33m'\u001b[39m\u001b[33mFare_normalized\u001b[39m\u001b[33m'\u001b[39m] = scaler.fit_transform(df_encoded[[\u001b[33m'\u001b[39m\u001b[33mFare\u001b[39m\u001b[33m'\u001b[39m]])\n", + "\u001b[31mNameError\u001b[39m: name 'MinMaxScaler' is not defined" + ] + } + ], + "source": [ + "# Initialize scaler\n", + "scaler = MinMaxScaler()\n", + "\n", + "# Apply normalization on Fare\n", + "df_encoded['Fare_normalized'] = scaler.fit_transform(df_encoded[['Fare']])\n", + "\n", + "# Compare original vs normalized\n", + "print(df_encoded[['Fare', 'Fare_normalized']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ff9f1b8", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "40060b97", "metadata": {}, "source": [ - "## Final Summary" + "## Final Summary\n", + "\n", + "At this point in the lab, you've:\n", + "\n", + "- Explored the Titanic dataset in depth\n", + "\n", + "- Identified and handled common data quality issues\n", + "\n", + "- Visualized key distributions and feature relationships\n", + "\n", + "- Created new, meaningful features\n", + "\n", + "- Prepared the data for the next step: modeling\n", + "\n", + "The Final Summary serves as a quick review of what your dataset looks like after preprocessing and what insights you've discovered. This is also a sanity check to ensure the data is clean, consistent, and ready for machine learning models.\n", + "\n", + "### Key Objectives for Final Summary\n", + "\n", + "1.Display the final shape and structure of the dataset\n", + "→ Are there the expected number of rows and columns?\n", + "\n", + "2.Print the updated column list\n", + "→ What features do we now have after feature engineering?\n", + "\n", + "3.Verify there are no more missing or duplicate values\n", + "→ A final cleanup check\n", + "\n", + "4.Summarize important observations or decisions made during EDA and preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "87e482ee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final shape of the dataset:\n", + "(891, 13)\n", + "\n", + "Final column list:\n", + "['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked', 'Title']\n", + "\n", + "Missing values per column:\n", + "PassengerId 0\n", + "Survived 0\n", + "Pclass 0\n", + "Name 0\n", + "Sex 0\n", + "Age 177\n", + "SibSp 0\n", + "Parch 0\n", + "Ticket 0\n", + "Fare 0\n", + "Cabin 687\n", + "Embarked 2\n", + "Title 0\n", + "dtype: int64\n", + "\n", + "Number of duplicated rows:\n", + "0\n", + "\n", + "Data types of final columns:\n", + "PassengerId int64\n", + "Survived int64\n", + "Pclass int64\n", + "Name object\n", + "Sex object\n", + "Age float64\n", + "SibSp int64\n", + "Parch int64\n", + "Ticket object\n", + "Fare float64\n", + "Cabin object\n", + "Embarked object\n", + "Title object\n", + "dtype: object\n", + "\n", + "Final preview of the dataset:\n", + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked Title \n", + "0 0 A/5 21171 7.2500 NaN S Mr \n", + "1 0 PC 17599 71.2833 C85 C Mrs \n", + "2 0 STON/O2. 3101282 7.9250 NaN S Miss \n", + "3 0 113803 53.1000 C123 S Mrs \n", + "4 0 373450 8.0500 NaN S Mr \n" + ] + } + ], + "source": [ + "print(\"Final shape of the dataset:\")\n", + "print(df.shape)\n", + "\n", + "print(\"\\nFinal column list:\")\n", + "print(df.columns.tolist())\n", + "\n", + "# Final check for missing values\n", + "print(\"\\nMissing values per column:\")\n", + "print(df.isnull().sum())\n", + "\n", + "# Final check for duplicated rows\n", + "print(\"\\nNumber of duplicated rows:\")\n", + "print(df.duplicated().sum())\n", + "\n", + "# Overview of dtypes (check if types look correct)\n", + "print(\"\\nData types of final columns:\")\n", + "print(df.dtypes)\n", + "\n", + "# Quick preview of the cleaned and engineered dataset\n", + "print(\"\\nFinal preview of the dataset:\")\n", + "print(df.head())\n" + ] + }, + { + "cell_type": "markdown", + "id": "f4f9b4a9", + "metadata": {}, + "source": [ + "# Key Insights from the Titanic Dataset\n", + "\n", + "You can include some of the following example reflections:\n", + "\n", + "- The Survival rate was higher among females and 1st-class passengers\n", + "\n", + "- Features like Sex, Pclass, and Title seem to be strong indicators of survival\n", + "\n", + "- We created new features like Title and FamilySize to enrich the dataset\n", + "\n", + "- We handled missing values in Age and dropped columns like Cabin due to excessive missingness\n", + "\n", + "- The dataset is now cleaned, encoded, and normalized — ready for modeling!" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c056fd6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3ca1a1a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "a40c3f3a", + "metadata": {}, + "source": [] } ], "metadata": { From a013a527d3af8e56535427675af910d3717dcfbb Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Sun, 27 Apr 2025 17:14:52 +0200 Subject: [PATCH 19/33] Improvements --- lab-01.ipynb | 577 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 375 insertions(+), 202 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 444ba41..5e5be59 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,34 +10,23 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "ab0a0d4d", "metadata": {}, "outputs": [], "source": [ "# !pip install pandas \n", "# !pip install matplotlib\n", - "# !pip install seaborn" + "# !pip install seaborn\n", + "# !pip install scikit-learn" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 3, "id": "fbc1481d", "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'sklearn'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[14]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 5\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpd\u001b[39;00m\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmatplotlib\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplt\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mimpute\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SimpleImputer\n\u001b[32m 9\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01msklearn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpreprocessing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m MinMaxScaler\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'sklearn'" - ] - } - ], + "outputs": [], "source": [ "# import dependencies\n", "import os\n", @@ -236,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -378,7 +367,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -426,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -447,7 +436,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -455,21 +444,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Column names:\n", - " ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" + "Column names: ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" ] } ], "source": [ "# Show the column names\n", "# DataFrame.columns: The column labels of the DataFrame.\n", - "print(\"\\nColumn names:\\n\", df.columns.tolist())" + "print(\"Column names:\", df.columns.tolist())" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -477,30 +464,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Features data types:\n" + "Features data types:\n", + "PassengerId int64\n", + "Survived int64\n", + "Pclass int64\n", + "Name object\n", + "Sex object\n", + "Age float64\n", + "SibSp int64\n", + "Parch int64\n", + "Ticket object\n", + "Fare float64\n", + "Cabin object\n", + "Embarked object\n", + "dtype: object\n" ] - }, - { - "data": { - "text/plain": [ - "PassengerId int64\n", - "Survived int64\n", - "Pclass int64\n", - "Name object\n", - "Sex object\n", - "Age float64\n", - "SibSp int64\n", - "Parch int64\n", - "Ticket object\n", - "Fare float64\n", - "Cabin object\n", - "Embarked object\n", - "dtype: object" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -508,12 +486,12 @@ "# This returns a Series with the data type of each column. \n", "# The result’s index is the original DataFrame’s columns. Columns with mixed types are stored with the object dtype. \n", "print(\"Features data types:\")\n", - "df.dtypes" + "print(df.dtypes)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -560,7 +538,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -577,7 +555,7 @@ "array([0, 1])" ] }, - "execution_count": 45, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -597,7 +575,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "c039567b", "metadata": {}, "outputs": [ @@ -629,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "bca9f7e9", "metadata": {}, "outputs": [ @@ -870,7 +848,7 @@ "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 47, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -881,7 +859,6 @@ "# Descriptive statistics include those that summarize the central tendency, \n", "# dispersion and shape of a dataset’s distribution, excluding NaN values.\n", "# Analyzes both numeric and object series, as well as DataFrame column sets of mixed data types. \n", - "# The output will vary depending on what is provided.\n", "\n", "df.describe(include=\"all\").T" ] @@ -910,8 +887,8 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "763f5a1c", + "execution_count": 32, + "id": "bb8a742a", "metadata": {}, "outputs": [ { @@ -931,7 +908,26 @@ "Fare 0\n", "Cabin 687\n", "Embarked 2\n", - "dtype: int64\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# 1. Check for missing values per column\n", + "print(\"Missing values per column:\")\n", + "print(df.isnull().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "e32bd777", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", "Percentage of missing values:\n", "PassengerId 0.000000\n", @@ -946,62 +942,254 @@ "Fare 0.000000\n", "Cabin 77.104377\n", "Embarked 0.224467\n", - "dtype: float64\n", - "\n", - "Number of duplicated rows:\n", - "0\n", - "\n", - "Rows with missing 'Age':\n", - " PassengerId Survived Pclass Name Sex Age \\\n", - "5 6 0 3 Moran, Mr. James male NaN \n", - "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", - "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", - "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", - "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", - "\n", - " SibSp Parch Ticket Fare Cabin Embarked \n", - "5 0 0 330877 8.4583 NaN Q \n", - "17 0 0 244373 13.0000 NaN S \n", - "19 0 0 2649 7.2250 NaN C \n", - "26 0 0 2631 7.2250 NaN C \n", - "28 0 0 330959 7.8792 NaN Q \n", - "\n", - "Rows with invalid 'Age' values (if any):\n", - "Empty DataFrame\n", - "Columns: [PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked]\n", - "Index: []\n", - "\n", - "Unique values in 'Sex' column:\n", - "['male' 'female']\n" + "dtype: float64\n" ] } ], "source": [ - "# 1. Check for missing values per column\n", - "print(\"Missing values per column:\")\n", - "print(df.isnull().sum())\n", - "\n", "# 2. Optional: Check the percentage of missing values\n", "print(\"\\nPercentage of missing values:\")\n", - "print((df.isnull().sum() / len(df)) * 100)\n", - "\n", + "print((df.isnull().sum() / len(df)) * 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "218037fd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Number of duplicated rows:\n", + "0\n" + ] + } + ], + "source": [ "# 3. Check for duplicated rows\n", "print(\"\\nNumber of duplicated rows:\")\n", - "print(df.duplicated().sum())\n", - "\n", + "print(df.duplicated().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "763f5a1c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Rows with missing 'Age':\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
5603Moran, Mr. JamesmaleNaN003308778.4583NaNQ
171812Williams, Mr. Charles EugenemaleNaN0024437313.0000NaNS
192013Masselmani, Mrs. FatimafemaleNaN0026497.2250NaNC
262703Emir, Mr. Farred ChehabmaleNaN0026317.2250NaNC
282913O'Dwyer, Miss. Ellen \"Nellie\"femaleNaN003309597.8792NaNQ
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Name Sex Age \\\n", + "5 6 0 3 Moran, Mr. James male NaN \n", + "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", + "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", + "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", + "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", + "\n", + " SibSp Parch Ticket Fare Cabin Embarked \n", + "5 0 0 330877 8.4583 NaN Q \n", + "17 0 0 244373 13.0000 NaN S \n", + "19 0 0 2649 7.2250 NaN C \n", + "26 0 0 2631 7.2250 NaN C \n", + "28 0 0 330959 7.8792 NaN Q " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Rows with invalid 'Age' values (if any):\n" + ] + }, + { + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked]\n", + "Index: []" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "# 4. Display rows with invalid or inconsistent data (examples)\n", "\n", "# Example: Show rows with missing 'Age'\n", "print(\"\\nRows with missing 'Age':\")\n", - "print(df[df['Age'].isnull()].head())\n", + "display(df[df['Age'].isnull()].head())\n", "\n", "# Example: Check for invalid ages (e.g., negative values)\n", "print(\"\\nRows with invalid 'Age' values (if any):\")\n", - "print(df[df['Age'] < 0])\n", - "\n", - "# Example: Check for unknown 'Sex' values\n", - "print(\"\\nUnique values in 'Sex' column:\")\n", - "print(df['Sex'].unique())" + "display(df[df['Age'] < 0])" ] }, { @@ -1155,25 +1343,15 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 36, "id": "ee827da3", "metadata": {}, "outputs": [ - { - "ename": "NameError", - "evalue": "name 'df' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 7\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;66;03m# Set a general style for plots\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m#plt.style.use('seaborn-whitegrid')\u001b[39;00m\n\u001b[32m 6\u001b[39m plt.figure(figsize=(\u001b[32m8\u001b[39m, \u001b[32m5\u001b[39m))\n\u001b[32m----> \u001b[39m\u001b[32m7\u001b[39m plt.hist(\u001b[43mdf\u001b[49m[\u001b[33m'\u001b[39m\u001b[33mAge\u001b[39m\u001b[33m'\u001b[39m].dropna(), bins=\u001b[32m30\u001b[39m, color=\u001b[33m'\u001b[39m\u001b[33mskyblue\u001b[39m\u001b[33m'\u001b[39m, edgecolor=\u001b[33m'\u001b[39m\u001b[33mblack\u001b[39m\u001b[33m'\u001b[39m, density=\u001b[38;5;28;01mTrue\u001b[39;00m, alpha=\u001b[32m0.6\u001b[39m, label=\u001b[33m'\u001b[39m\u001b[33mHistogram\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 10\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mscipy\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mstats\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m gaussian_kde\n\u001b[32m 11\u001b[39m \u001b[38;5;66;03m# gaussian_kde: A class for performing kernel density estimation.\u001b[39;00m\n\u001b[32m 12\u001b[39m \u001b[38;5;66;03m# It is a non-parametric way to estimate the probability density function of a random variable.\u001b[39;00m\n\u001b[32m 13\u001b[39m \u001b[38;5;66;03m# It is a useful tool for visualizing the distribution of data points in a dataset.\u001b[39;00m\n", - "\u001b[31mNameError\u001b[39m: name 'df' is not defined" - ] - }, { "data": { + "image/png": "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7twZy5Ytg6Ex/datW2jdujWaN2+OM2fO4LPPPsM333wT6/U3btxAw4YN0apVK5w9e1YlKZJo9OnTR6NPRESUPrErFBERaap69epo27Yt+vfvj4iICGTPnh3r1q1DrVq1MGzYMGzZsgXnzp2L3n7kyJGYOHEinj17BhcXF9WNSsZn/PDDD9HbSGJRs2ZN1WohLR1ERJTy2GJBRESakfEUR48eRYcOHdRja2trtGvXTo21MDxfsWLFWK+pVKlSrMfSkiHdp2SMhmFp0KABoqKiVIsHERGlDutUeh8iIqLXSAIhrRQxB2tLQ7qdnR3mzp2b6DEa0kVKxlXElStXLqPGS0RECWNiQUREmpCEYuXKlZgxYwbq168f6zkZU/G///1PjbvYunVrrOeOHTsW63G5cuVw8eJFFChQIFXiJiKi+HGMBRERaWLDhg2q29PDhw/h7Owc67mhQ4di586damC3JBcDBgxA9+7dcfr0aQwaNAh3795VVaHkdTJgu0qVKvj000/VeIuMGTOqRGP79u2JbvUgIqLk4xgLIiLSrBtUvXr1XksqhFR4On78OF6+fIlff/0V69evR6lSpbBgwYLoqlDSXUrI+j179uDq1auq5GzZsmUxevRozoVBRJTK2GJBRERpilSEWrhwIXx9fbUOhYiIYuAYCyIiMmnz589XlaGyZMmCAwcOYNq0aZyjgojIBDGxICIik3bt2jV8++23ePr0qaryJGMshg8frnVYREQUB7tCERERERFRsnHwNhERERERJRsTCyIiIiIiSjYmFkRERERElGxMLIiIiIiIKNmYWBARERERUbIxsSAiIiIiomRjYkFERERERMnGxIKIiIiIiJKNiQURERERESG5/g+smbRJqOjpZgAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1229,7 +1407,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "id": "5c605b8c", "metadata": {}, "outputs": [ @@ -1237,7 +1415,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\PC1\\AppData\\Local\\Temp\\ipykernel_117684\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", + "C:\\Users\\andre\\AppData\\Local\\Temp\\ipykernel_1412\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", " plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n" ] }, @@ -1479,7 +1657,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -1492,7 +1670,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 62, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1517,7 +1695,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "id": "1d982743", "metadata": {}, "outputs": [ @@ -1531,7 +1709,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 63, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1578,7 +1756,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -1596,7 +1774,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -1643,7 +1821,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -1677,7 +1855,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -1706,7 +1884,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "id": "a5915326", "metadata": {}, "outputs": [ @@ -1735,7 +1913,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -1988,7 +2166,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 86, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -2000,7 +2178,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2253,7 +2431,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 94, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -2265,7 +2443,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -2518,13 +2696,13 @@ "[204 rows x 12 columns]" ] }, - "execution_count": 95, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# only drop rows where NaN appear in specific columns (here: 'C')\n", + "# only drop rows where NaN appear in specific columns (here: 'Cabin')\n", "df.dropna(subset=['Cabin'])" ] }, @@ -2548,21 +2726,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "id": "e0d2ab02", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([[ 1., 10., 20., 4.],\n", - " [nan, 15., nan, 2.],\n", - " [ 6., 8., nan, nan]])" - ] - }, - "execution_count": 103, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1. 10. 20. 4.]\n", + " [nan 15. nan 2.]\n", + " [ 6. 8. nan nan]]\n" + ] } ], "source": [ @@ -2573,33 +2748,30 @@ " [6, 8, np.nan, np.nan]\n", "])\n", "\n", - "numerical_data" + "print(numerical_data)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "id": "265a7ad4", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([[ 1. , 10. , 20. , 4. ],\n", - " [ 3.5, 15. , 20. , 2. ],\n", - " [ 6. , 8. , 20. , 3. ]])" - ] - }, - "execution_count": 102, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1. 10. 20. 4. ]\n", + " [ 3.5 15. 20. 2. ]\n", + " [ 6. 8. 20. 3. ]]\n" + ] } ], "source": [ "imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')\n", "imp_mean = imp_mean.fit(numerical_data)\n", "imputed_data = imp_mean.transform(numerical_data)\n", - "imputed_data" + "print(imputed_data)" ] }, { @@ -2614,22 +2786,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "id": "b5bd80d5", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([['red', 'tall', 'fast'],\n", - " ['brown', nan, 'slow'],\n", - " [nan, 'small', 'slow'],\n", - " ['brown', 'tall', nan]], dtype=object)" - ] - }, - "execution_count": 110, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[['red' 'tall' 'fast']\n", + " ['brown' nan 'slow']\n", + " [nan 'small' 'slow']\n", + " ['brown' 'tall' nan]]\n" + ] } ], "source": [ @@ -2640,33 +2809,30 @@ " [\"brown\", \"tall\", np.nan],\n", "], dtype=object)\n", "\n", - "categorical_data" + "print(categorical_data)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "id": "c8a36007", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "array([['red', 'tall', 'fast'],\n", - " ['brown', 'tall', 'slow'],\n", - " ['brown', 'small', 'slow'],\n", - " ['brown', 'tall', 'slow']], dtype=object)" - ] - }, - "execution_count": 113, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[['red' 'tall' 'fast']\n", + " ['brown' 'tall' 'slow']\n", + " ['brown' 'small' 'slow']\n", + " ['brown' 'tall' 'slow']]\n" + ] } ], "source": [ "imp_most_frequent = SimpleImputer(missing_values=np.nan, strategy=\"most_frequent\")\n", "imputed_data = imp_most_frequent.fit_transform(categorical_data)\n", - "imputed_data" + "print(imputed_data)" ] }, { @@ -2681,16 +2847,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "id": "8f07516a", "metadata": {}, "outputs": [ { "ename": "SyntaxError", - "evalue": "expected argument value expression (201333596.py, line 5)", + "evalue": "expected argument value expression (465633946.py, line 5)", "output_type": "error", "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[115]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[53]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" ] } ], @@ -2704,7 +2870,7 @@ "# Apply imputing technique\n", "imputed_cabin = \n", "\n", - "imputed_cabin" + "print(imputed_cabin)" ] }, { @@ -2714,19 +2880,11 @@ "source": [ "## Feature Engineering\n", "\n", - "Feature Engineering is the process of creating new input features or transforming existing ones to improve the performance of machine learning models. In real-world data, raw columns are often incomplete, noisy, or not directly usable. Good features can make simple models powerful — and poor features can make even the best models fail.\n", - "\n", - "Even if you use powerful algorithms like Random Forest, XGBoost, or Neural Networks, poor features can ruin your model’s performance.\n", - "\n", - "On the other hand, well-crafted features can help:\n", - "\n", - "- Improve accuracy\n", + "Feature engineering is the process of transforming raw data into features that are suitable for machine learning models. In other words, it is the process of selecting, extracting, and transforming the most relevant features from the available data to build more accurate and efficient machine learning models.\n", "\n", - "- Reduce overfitting\n", + "The success of machine learning models heavily depends on the quality of the features used to train them. Feature engineering involves a set of techniques that enable us to create new features by combining or transforming the existing ones. These techniques help to highlight the most important patterns and relationships in the data, which in turn helps the machine learning model to learn from the data more effectively.\n", "\n", - "- Speed up training\n", - "\n", - "- Make the model easier to interpret\n", + "[What is Feature Engineering? - geeksforgeeks](https://www.geeksforgeeks.org/what-is-feature-engineering/)\n", "\n", "Types of Feature Engineering\n", "\n", @@ -2742,17 +2900,28 @@ "| Missing Value Imputation | Any | Fill missing values with mean, median, mode, or prediction | `Age` → fill missing with median age (e.g., 28.0) |\n" ] }, + { + "cell_type": "markdown", + "id": "c465626d", + "metadata": {}, + "source": [ + "### Handling categorical data\n", + "So far, we have only been working with numerical values. However, it is not uncommon that real-world datasets contain one or more categorical feature columns. In this section, we will make use of simple yet effective examples to see how we deal with this type of data in numerical computing libraries.\n" + ] + }, { "cell_type": "markdown", "id": "dc752004", "metadata": {}, "source": [ - "Creating new feature as a Title. Titles often capture social status, gender, and age group — all useful predictors of survival!" + "**Feature Extraction for Nominal Variables:**\n", + "\n", + "In our dataset, we can work with the feature **Name**, creating new feature as a Title. Titles often capture social status, gender, and age group — all useful predictors of survival!" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 55, "id": "e620008d", "metadata": {}, "outputs": [ @@ -2770,7 +2939,7 @@ "df['Title'] = df['Name'].str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", "\n", "# View unique titles\n", - "print(\"Unique titles found:\", df['Title'].unique())\n" + "print(\"Unique titles found:\", df['Title'].unique())" ] }, { @@ -2778,7 +2947,11 @@ "id": "54da3c36", "metadata": {}, "source": [ - "Encoding Categorical Variables (Sex)\n", + "**Feature Encoding for Categorical Variables:**\n", + "\n", + "When your data has categories represented by strings, it will be difficult to use them to train machine learning models which often only accepts numeric data.\n", + "\n", + "Instead of ignoring the categorical data and excluding the information from our model, you can tranform the data so it can be used in your models.\n", "\n", "- Most machine learning models can’t handle text labels like 'male' or 'female'. get_dummies() turns these into numerical values (0 or 1) that models can understand." ] @@ -3043,7 +3216,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -3057,7 +3230,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.12.4" } }, "nbformat": 4, From 2dfc1a2adc91a3ebc4361958f69b4d638cc93b74 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Mon, 28 Apr 2025 20:02:57 +0200 Subject: [PATCH 20/33] Added Pipelines, Custom and COlumn Transformers --- lab-01.ipynb | 1209 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 923 insertions(+), 286 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 5e5be59..14aeeba 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "ab0a0d4d", "metadata": {}, "outputs": [], @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 153, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -35,8 +35,10 @@ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", + "from sklearn.base import BaseEstimator, TransformerMixin\n", + "from sklearn.pipeline import Pipeline\n", "from sklearn.impute import SimpleImputer\n", - "from sklearn.preprocessing import MinMaxScaler" + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder" ] }, { @@ -225,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -345,29 +347,17 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass \\\n", - "0 1 0 3 \n", - "1 2 1 1 \n", - "2 3 1 3 \n", - "3 4 1 1 \n", - "4 5 0 3 \n", - "\n", - " Name Sex Age SibSp \\\n", - "0 Braund, Mr. Owen Harris male 22.0 1 \n", - "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", - "2 Heikkinen, Miss. Laina female 26.0 0 \n", - "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", - "4 Allen, Mr. William Henry male 35.0 0 \n", + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "0 1 0 3 ... 7.2500 NaN S\n", + "1 2 1 1 ... 71.2833 C85 C\n", + "2 3 1 3 ... 7.9250 NaN S\n", + "3 4 1 1 ... 53.1000 C123 S\n", + "4 5 0 3 ... 8.0500 NaN S\n", "\n", - " Parch Ticket Fare Cabin Embarked \n", - "0 0 A/5 21171 7.2500 NaN S \n", - "1 0 PC 17599 71.2833 C85 C \n", - "2 0 STON/O2. 3101282 7.9250 NaN S \n", - "3 0 113803 53.1000 C123 S \n", - "4 0 373450 8.0500 NaN S " + "[5 rows x 12 columns]" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -415,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -436,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -456,7 +446,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 6, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -491,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 7, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -538,7 +528,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -555,7 +545,7 @@ "array([0, 1])" ] }, - "execution_count": 20, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -575,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "id": "c039567b", "metadata": {}, "outputs": [ @@ -607,7 +597,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 10, "id": "bca9f7e9", "metadata": {}, "outputs": [ @@ -819,36 +809,24 @@ "" ], "text/plain": [ - " count unique top freq mean std \\\n", - "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", - "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", - "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", - "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", - "Sex 891 2 male 577 NaN NaN \n", - "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", - "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", - "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", - "Ticket 891 681 347082 7 NaN NaN \n", - "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", - "Cabin 204 147 G6 4 NaN NaN \n", - "Embarked 889 3 S 644 NaN NaN \n", + " count unique top ... 50% 75% max\n", + "PassengerId 891.0 NaN NaN ... 446.0 668.5 891.0\n", + "Survived 891.0 NaN NaN ... 0.0 1.0 1.0\n", + "Pclass 891.0 NaN NaN ... 3.0 3.0 3.0\n", + "Name 891 891 Dooley, Mr. Patrick ... NaN NaN NaN\n", + "Sex 891 2 male ... NaN NaN NaN\n", + "Age 714.0 NaN NaN ... 28.0 38.0 80.0\n", + "SibSp 891.0 NaN NaN ... 0.0 1.0 8.0\n", + "Parch 891.0 NaN NaN ... 0.0 0.0 6.0\n", + "Ticket 891 681 347082 ... NaN NaN NaN\n", + "Fare 891.0 NaN NaN ... 14.4542 31.0 512.3292\n", + "Cabin 204 147 G6 ... NaN NaN NaN\n", + "Embarked 889 3 S ... NaN NaN NaN\n", "\n", - " min 25% 50% 75% max \n", - "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", - "Survived 0.0 0.0 0.0 1.0 1.0 \n", - "Pclass 1.0 2.0 3.0 3.0 3.0 \n", - "Name NaN NaN NaN NaN NaN \n", - "Sex NaN NaN NaN NaN NaN \n", - "Age 0.42 20.125 28.0 38.0 80.0 \n", - "SibSp 0.0 0.0 0.0 1.0 8.0 \n", - "Parch 0.0 0.0 0.0 0.0 6.0 \n", - "Ticket NaN NaN NaN NaN NaN \n", - "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", - "Cabin NaN NaN NaN NaN NaN \n", - "Embarked NaN NaN NaN NaN NaN " + "[12 rows x 11 columns]" ] }, - "execution_count": 23, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -887,7 +865,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 11, "id": "bb8a742a", "metadata": {}, "outputs": [ @@ -920,7 +898,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 12, "id": "e32bd777", "metadata": {}, "outputs": [ @@ -954,7 +932,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 13, "id": "218037fd", "metadata": {}, "outputs": [ @@ -976,7 +954,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 14, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1104,19 +1082,14 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass Name Sex Age \\\n", - "5 6 0 3 Moran, Mr. James male NaN \n", - "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", - "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", - "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", - "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "5 6 0 3 ... 8.4583 NaN Q\n", + "17 18 1 2 ... 13.0000 NaN S\n", + "19 20 1 3 ... 7.2250 NaN C\n", + "26 27 0 3 ... 7.2250 NaN C\n", + "28 29 1 3 ... 7.8792 NaN Q\n", "\n", - " SibSp Parch Ticket Fare Cabin Embarked \n", - "5 0 0 330877 8.4583 NaN Q \n", - "17 0 0 244373 13.0000 NaN S \n", - "19 0 0 2649 7.2250 NaN C \n", - "26 0 0 2631 7.2250 NaN C \n", - "28 0 0 330959 7.8792 NaN Q " + "[5 rows x 12 columns]" ] }, "metadata": {}, @@ -1212,7 +1185,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1221,25 +1194,17 @@ "output_type": "stream", "text": [ "Numeric summary:\n", - " PassengerId Survived Pclass Age SibSp \\\n", - "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", - "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", - "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", - "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", - "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", - "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", - "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", - "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", + " PassengerId Survived Pclass ... SibSp Parch Fare\n", + "count 891.000000 891.000000 891.000000 ... 891.000000 891.000000 891.000000\n", + "mean 446.000000 0.383838 2.308642 ... 0.523008 0.381594 32.204208\n", + "std 257.353842 0.486592 0.836071 ... 1.102743 0.806057 49.693429\n", + "min 1.000000 0.000000 1.000000 ... 0.000000 0.000000 0.000000\n", + "25% 223.500000 0.000000 2.000000 ... 0.000000 0.000000 7.910400\n", + "50% 446.000000 0.000000 3.000000 ... 0.000000 0.000000 14.454200\n", + "75% 668.500000 1.000000 3.000000 ... 1.000000 0.000000 31.000000\n", + "max 891.000000 1.000000 3.000000 ... 8.000000 6.000000 512.329200\n", "\n", - " Parch Fare \n", - "count 891.000000 891.000000 \n", - "mean 0.381594 32.204208 \n", - "std 0.806057 49.693429 \n", - "min 0.000000 0.000000 \n", - "25% 0.000000 7.910400 \n", - "50% 0.000000 14.454200 \n", - "75% 0.000000 31.000000 \n", - "max 6.000000 512.329200 \n", + "[8 rows x 7 columns]\n", "\n", "Value counts for 'Sex':\n", "Sex\n", @@ -1292,7 +1257,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "ecb40dad", "metadata": {}, "outputs": [ @@ -1301,7 +1266,7 @@ "evalue": "expected argument value expression (3210384145.py, line 2)", "output_type": "error", "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[50]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[16]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" ] } ], @@ -1343,7 +1308,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 17, "id": "ee827da3", "metadata": {}, "outputs": [ @@ -1407,7 +1372,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 18, "id": "5c605b8c", "metadata": {}, "outputs": [ @@ -1415,7 +1380,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\andre\\AppData\\Local\\Temp\\ipykernel_1412\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", + "C:\\Users\\andre\\AppData\\Local\\Temp\\ipykernel_2328\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", " plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n" ] }, @@ -1461,7 +1426,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "69ca462b", "metadata": {}, "outputs": [ @@ -1528,7 +1493,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "910a7faa", "metadata": {}, "outputs": [ @@ -1573,7 +1538,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 21, "id": "33251565", "metadata": {}, "outputs": [ @@ -1657,7 +1622,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 22, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -1670,7 +1635,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 38, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1695,7 +1660,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 23, "id": "1d982743", "metadata": {}, "outputs": [ @@ -1709,7 +1674,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 39, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -1756,7 +1721,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 24, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -1774,7 +1739,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 25, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -1821,7 +1786,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 26, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -1855,7 +1820,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 27, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -1884,7 +1849,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 28, "id": "a5915326", "metadata": {}, "outputs": [ @@ -1913,7 +1878,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 29, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -2124,49 +2089,23 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass \\\n", - "0 1 0 3 \n", - "1 2 1 1 \n", - "2 3 1 3 \n", - "3 4 1 1 \n", - "4 5 0 3 \n", - ".. ... ... ... \n", - "886 887 0 2 \n", - "887 888 1 1 \n", - "888 889 0 3 \n", - "889 890 1 1 \n", - "890 891 0 3 \n", - "\n", - " Name Sex Age SibSp \\\n", - "0 Braund, Mr. Owen Harris male 22.0 1 \n", - "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", - "2 Heikkinen, Miss. Laina female 26.0 0 \n", - "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", - "4 Allen, Mr. William Henry male 35.0 0 \n", - ".. ... ... ... ... \n", - "886 Montvila, Rev. Juozas male 27.0 0 \n", - "887 Graham, Miss. Margaret Edith female 19.0 0 \n", - "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", - "889 Behr, Mr. Karl Howell male 26.0 0 \n", - "890 Dooley, Mr. Patrick male 32.0 0 \n", - "\n", - " Parch Ticket Fare Cabin Embarked \n", - "0 0 A/5 21171 7.2500 NaN S \n", - "1 0 PC 17599 71.2833 C85 C \n", - "2 0 STON/O2. 3101282 7.9250 NaN S \n", - "3 0 113803 53.1000 C123 S \n", - "4 0 373450 8.0500 NaN S \n", - ".. ... ... ... ... ... \n", - "886 0 211536 13.0000 NaN S \n", - "887 0 112053 30.0000 B42 S \n", - "888 2 W./C. 6607 23.4500 NaN S \n", - "889 0 111369 30.0000 C148 C \n", - "890 0 370376 7.7500 NaN Q \n", + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "0 1 0 3 ... 7.2500 NaN S\n", + "1 2 1 1 ... 71.2833 C85 C\n", + "2 3 1 3 ... 7.9250 NaN S\n", + "3 4 1 1 ... 53.1000 C123 S\n", + "4 5 0 3 ... 8.0500 NaN S\n", + ".. ... ... ... ... ... ... ...\n", + "886 887 0 2 ... 13.0000 NaN S\n", + "887 888 1 1 ... 30.0000 B42 S\n", + "888 889 0 3 ... 23.4500 NaN S\n", + "889 890 1 1 ... 30.0000 C148 C\n", + "890 891 0 3 ... 7.7500 NaN Q\n", "\n", "[891 rows x 12 columns]" ] }, - "execution_count": 45, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -2178,7 +2117,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 30, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2389,49 +2328,23 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass \\\n", - "0 1 0 3 \n", - "1 2 1 1 \n", - "2 3 1 3 \n", - "3 4 1 1 \n", - "4 5 0 3 \n", - ".. ... ... ... \n", - "886 887 0 2 \n", - "887 888 1 1 \n", - "888 889 0 3 \n", - "889 890 1 1 \n", - "890 891 0 3 \n", - "\n", - " Name Sex Age SibSp \\\n", - "0 Braund, Mr. Owen Harris male 22.0 1 \n", - "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", - "2 Heikkinen, Miss. Laina female 26.0 0 \n", - "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", - "4 Allen, Mr. William Henry male 35.0 0 \n", - ".. ... ... ... ... \n", - "886 Montvila, Rev. Juozas male 27.0 0 \n", - "887 Graham, Miss. Margaret Edith female 19.0 0 \n", - "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", - "889 Behr, Mr. Karl Howell male 26.0 0 \n", - "890 Dooley, Mr. Patrick male 32.0 0 \n", - "\n", - " Parch Ticket Fare Cabin Embarked \n", - "0 0 A/5 21171 7.2500 NaN S \n", - "1 0 PC 17599 71.2833 C85 C \n", - "2 0 STON/O2. 3101282 7.9250 NaN S \n", - "3 0 113803 53.1000 C123 S \n", - "4 0 373450 8.0500 NaN S \n", - ".. ... ... ... ... ... \n", - "886 0 211536 13.0000 NaN S \n", - "887 0 112053 30.0000 B42 S \n", - "888 2 W./C. 6607 23.4500 NaN S \n", - "889 0 111369 30.0000 C148 C \n", - "890 0 370376 7.7500 NaN Q \n", + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "0 1 0 3 ... 7.2500 NaN S\n", + "1 2 1 1 ... 71.2833 C85 C\n", + "2 3 1 3 ... 7.9250 NaN S\n", + "3 4 1 1 ... 53.1000 C123 S\n", + "4 5 0 3 ... 8.0500 NaN S\n", + ".. ... ... ... ... ... ... ...\n", + "886 887 0 2 ... 13.0000 NaN S\n", + "887 888 1 1 ... 30.0000 B42 S\n", + "888 889 0 3 ... 23.4500 NaN S\n", + "889 890 1 1 ... 30.0000 C148 C\n", + "890 891 0 3 ... 7.7500 NaN Q\n", "\n", "[891 rows x 12 columns]" ] }, - "execution_count": 46, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -2443,7 +2356,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 129, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -2480,6 +2393,7 @@ " Fare\n", " Cabin\n", " Embarked\n", + " Title\n", " \n", " \n", " \n", @@ -2497,6 +2411,7 @@ " 71.2833\n", " C85\n", " C\n", + " Mrs\n", " \n", " \n", " 3\n", @@ -2512,6 +2427,7 @@ " 53.1000\n", " C123\n", " S\n", + " Mrs\n", " \n", " \n", " 6\n", @@ -2527,6 +2443,7 @@ " 51.8625\n", " E46\n", " S\n", + " Mr\n", " \n", " \n", " 10\n", @@ -2542,6 +2459,7 @@ " 16.7000\n", " G6\n", " S\n", + " Miss\n", " \n", " \n", " 11\n", @@ -2557,6 +2475,7 @@ " 26.5500\n", " C103\n", " S\n", + " Miss\n", " \n", " \n", " ...\n", @@ -2572,6 +2491,7 @@ " ...\n", " ...\n", " ...\n", + " ...\n", " \n", " \n", " 871\n", @@ -2587,6 +2507,7 @@ " 52.5542\n", " D35\n", " S\n", + " Mrs\n", " \n", " \n", " 872\n", @@ -2602,6 +2523,7 @@ " 5.0000\n", " B51 B53 B55\n", " S\n", + " Mr\n", " \n", " \n", " 879\n", @@ -2617,6 +2539,7 @@ " 83.1583\n", " C50\n", " C\n", + " Mrs\n", " \n", " \n", " 887\n", @@ -2632,6 +2555,7 @@ " 30.0000\n", " B42\n", " S\n", + " Miss\n", " \n", " \n", " 889\n", @@ -2647,56 +2571,31 @@ " 30.0000\n", " C148\n", " C\n", + " Mr\n", " \n", " \n", "\n", - "

204 rows × 12 columns

\n", + "

204 rows × 13 columns

\n", "" ], "text/plain": [ - " PassengerId Survived Pclass \\\n", - "1 2 1 1 \n", - "3 4 1 1 \n", - "6 7 0 1 \n", - "10 11 1 3 \n", - "11 12 1 1 \n", - ".. ... ... ... \n", - "871 872 1 1 \n", - "872 873 0 1 \n", - "879 880 1 1 \n", - "887 888 1 1 \n", - "889 890 1 1 \n", - "\n", - " Name Sex Age SibSp \\\n", - "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", - "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", - "6 McCarthy, Mr. Timothy J male 54.0 0 \n", - "10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n", - "11 Bonnell, Miss. Elizabeth female 58.0 0 \n", - ".. ... ... ... ... \n", - "871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 \n", - "872 Carlsson, Mr. Frans Olof male 33.0 0 \n", - "879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 \n", - "887 Graham, Miss. Margaret Edith female 19.0 0 \n", - "889 Behr, Mr. Karl Howell male 26.0 0 \n", + " PassengerId Survived Pclass ... Cabin Embarked Title\n", + "1 2 1 1 ... C85 C Mrs\n", + "3 4 1 1 ... C123 S Mrs\n", + "6 7 0 1 ... E46 S Mr\n", + "10 11 1 3 ... G6 S Miss\n", + "11 12 1 1 ... C103 S Miss\n", + ".. ... ... ... ... ... ... ...\n", + "871 872 1 1 ... D35 S Mrs\n", + "872 873 0 1 ... B51 B53 B55 S Mr\n", + "879 880 1 1 ... C50 C Mrs\n", + "887 888 1 1 ... B42 S Miss\n", + "889 890 1 1 ... C148 C Mr\n", "\n", - " Parch Ticket Fare Cabin Embarked \n", - "1 0 PC 17599 71.2833 C85 C \n", - "3 0 113803 53.1000 C123 S \n", - "6 0 17463 51.8625 E46 S \n", - "10 1 PP 9549 16.7000 G6 S \n", - "11 0 113783 26.5500 C103 S \n", - ".. ... ... ... ... ... \n", - "871 1 11751 52.5542 D35 S \n", - "872 0 695 5.0000 B51 B53 B55 S \n", - "879 1 11767 83.1583 C50 C \n", - "887 0 112053 30.0000 B42 S \n", - "889 0 111369 30.0000 C148 C \n", - "\n", - "[204 rows x 12 columns]" + "[204 rows x 13 columns]" ] }, - "execution_count": 48, + "execution_count": 129, "metadata": {}, "output_type": "execute_result" } @@ -2726,7 +2625,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 32, "id": "e0d2ab02", "metadata": {}, "outputs": [ @@ -2753,7 +2652,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 33, "id": "265a7ad4", "metadata": {}, "outputs": [ @@ -2786,7 +2685,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 34, "id": "b5bd80d5", "metadata": {}, "outputs": [ @@ -2814,7 +2713,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 35, "id": "c8a36007", "metadata": {}, "outputs": [ @@ -2847,7 +2746,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 36, "id": "8f07516a", "metadata": {}, "outputs": [ @@ -2856,7 +2755,7 @@ "evalue": "expected argument value expression (465633946.py, line 5)", "output_type": "error", "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[53]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[36]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" ] } ], @@ -2905,8 +2804,7 @@ "id": "c465626d", "metadata": {}, "source": [ - "### Handling categorical data\n", - "So far, we have only been working with numerical values. However, it is not uncommon that real-world datasets contain one or more categorical feature columns. In this section, we will make use of simple yet effective examples to see how we deal with this type of data in numerical computing libraries.\n" + "### Handling categorical data" ] }, { @@ -2914,14 +2812,22 @@ "id": "dc752004", "metadata": {}, "source": [ - "**Feature Extraction for Nominal Variables:**\n", + "**Feature Extraction & Encoding for Nominal Variables:**\n", + "\n", + "Feature extraction for nominal (categorical) data involves transforming raw categorical variables into new, meaningful features that can be effectively used in machine learning models. This process often includes extracting patterns or subcomponents from the nominal data to capture relevant information such as social status, gender, or groupings that may influence the prediction target.\n", + "\n", + "Nominal data in our dataset, such as **names** or **cabin identifiers**, are non-numeric and cannot be directly used by most machine learning algorithms. Feature extraction techniques for nominal data typically involve:\n", "\n", - "In our dataset, we can work with the feature **Name**, creating new feature as a Title. Titles often capture social status, gender, and age group — all useful predictors of survival!" + "- Parsing and extracting meaningful components: For example, extracting titles (Mr, Mrs, Miss) from passenger names to capture social status or demographics.\n", + "\n", + "- Decomposing complex categorical variables: Breaking down a cabin number into a deck letter and a numeric part to capture location information.\n", + "\n", + "- Encoding categorical variables: Converting extracted features into formats suitable for modeling, such as one-hot encoding or numeric encoding." ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 37, "id": "e620008d", "metadata": {}, "outputs": [ @@ -2943,44 +2849,213 @@ ] }, { - "cell_type": "markdown", - "id": "54da3c36", + "cell_type": "code", + "execution_count": 87, + "id": "552e9286", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cabin decks: [nan 'C' 'E' 'G' 'D' 'A' 'B' 'F' 'T']\n", + "Max and Min cabin number: (np.float64(148.0), np.float64(2.0))\n" + ] + } + ], "source": [ - "**Feature Encoding for Categorical Variables:**\n", - "\n", - "When your data has categories represented by strings, it will be difficult to use them to train machine learning models which often only accepts numeric data.\n", + "# Extract cabin deck and number from Cabin code\n", + "cabin = df[\"Cabin\"]\n", + "cabin_deck = cabin.str[0]\n", + "cabin_number = pd.to_numeric(cabin.str.extract(r'(\\d+)')[0], errors=\"coerce\")\n", "\n", - "Instead of ignoring the categorical data and excluding the information from our model, you can tranform the data so it can be used in your models.\n", + "print(f\"Cabin decks: {cabin_deck.unique()}\")\n", + "print(f\"Max and Min cabin number: {(cabin_number.max(), cabin_number.min())}\")" + ] + }, + { + "cell_type": "markdown", + "id": "96447256", + "metadata": {}, + "source": [ + "Our model can’t handle text labels like 'male' or 'female', pandas.get_dummies() Convert categorical variable into dummy/indicator variables.\n", "\n", - "- Most machine learning models can’t handle text labels like 'male' or 'female'. get_dummies() turns these into numerical values (0 or 1) that models can understand." + "Each variable is converted in as many 0/1 variables as there are different values. Columns in the output are each named after a value; if the input is a DataFrame, the name of the original variable is prepended to the value." ] }, { "cell_type": "code", - "execution_count": 16, - "id": "aa72c3f6", + "execution_count": 93, + "id": "a227b75e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " Sex_male\n", - "0 True\n", - "1 False\n", - "2 False\n", - "3 False\n", - "4 True\n" + " Sex_female Sex_male\n", + "0 False True\n", + "1 True False\n", + "2 True False\n", + "3 True False\n", + "4 False True\n" ] } ], "source": [ "# Encode 'Sex' column into binary variables (0 or 1)\n", - "df_encoded = pd.get_dummies(df, columns=['Sex'], drop_first=True)\n", + "df_encoded = pd.get_dummies(df, columns=['Sex']) # by setting drop_first = 1, the first dummy column will be dropped, since it has redundant information\n", + "print(df_encoded[[\"Sex_female\", \"Sex_male\"]].head())" + ] + }, + { + "cell_type": "markdown", + "id": "3cd3b1b2", + "metadata": {}, + "source": [ + "Alternatively we can use sklearn.preprocessing.OneHotEncoder: With one-hot, we convert each categorical value into a new categorical column and assign a binary value of 1 or 0 to those columns. Each integer value is represented as a binary vector. All the values are zero, and the index is marked with a 1." + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "id": "448a9a82", + "metadata": {}, + "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", + "
Embarked_QEmbarked_SEmbarked_C
00.01.00.0
10.00.01.0
20.01.00.0
30.01.00.0
40.01.00.0
............
8860.01.00.0
8870.01.00.0
8880.01.00.0
8890.00.01.0
8901.00.00.0
\n", + "

891 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Embarked_Q Embarked_S Embarked_C\n", + "0 0.0 1.0 0.0\n", + "1 0.0 0.0 1.0\n", + "2 0.0 1.0 0.0\n", + "3 0.0 1.0 0.0\n", + "4 0.0 1.0 0.0\n", + ".. ... ... ...\n", + "886 0.0 1.0 0.0\n", + "887 0.0 1.0 0.0\n", + "888 0.0 1.0 0.0\n", + "889 0.0 0.0 1.0\n", + "890 1.0 0.0 0.0\n", + "\n", + "[891 rows x 3 columns]" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ohe = OneHotEncoder(categories=[[\"Q\", \"S\", \"C\"]], handle_unknown=\"ignore\")\n", + "embarked = ohe.fit_transform(df[[\"Embarked\"]])\n", + "embarked_df = pd.DataFrame(embarked.toarray(), columns=ohe.get_feature_names_out([\"Embarked\"]))\n", "\n", - "# Shows new encoded column (e.g., Sex_male)\n", - "print(df_encoded[['Sex_male']].head())" + "embarked_df" + ] + }, + { + "cell_type": "markdown", + "id": "063101a9", + "metadata": {}, + "source": [ + "### Handling numerical data (Feature Scaling)" ] }, { @@ -2988,54 +3063,616 @@ "id": "0cc59cd0", "metadata": {}, "source": [ - "Normalize a Numeric Attribute (Fare)\n", + "**Feature scaling** is an important step in the preprocessing pipeline for many machine learning models, even though some algorithms, like decision trees and random forests, do not require it. These models are \"scale invariant,\" meaning that the performance of the algorithm does not change with different feature scales. However, many other machine learning algorithms benefit from feature scaling because their performance can be affected by the differences in the magnitude of features.\n", + "\n", + "To better understand the significance of feature scaling, let's take a look at two concrete examples:\n", + "\n", + "1. Gradient Descent (Linear Regression or Logistic Regression)\n", + "Imagine you are working with a dataset that includes two features:\n", "\n", - "- Normalization rescales the feature so it falls between 0 and 1. This is important for models that are sensitive to feature scale, such as:\n", + " Feature 1 (Income): Ranges from 10,000 to 100,000 (in dollars).\n", "\n", - "- - K-Nearest Neighbors\n", + " Feature 2 (Age): Ranges from 18 to 70 (in years).\n", + "\n", + " When you use gradient descent to minimize the cost function (e.g., mean squared error), the algorithm adjusts weights based on the features. If the income feature has values that are much larger than the age feature, the model will tend to focus more on optimizing the weight of the income feature because the numerical range of income is much larger. As a result, the model may not learn as effectively from the age feature.\n", + "\n", + " If both features were scaled to have a similar range (e.g., between 0 and 1 or with a standard deviation of 1), the gradient descent algorithm would update both weights more evenly, leading to a more balanced and effective model.\n", + "\n", + "2. k-Nearest Neighbors (KNN)\n", + " Consider a dataset with the following two features:\n", + "\n", + " Feature 1 (Distance to school): Ranges from 0 to 5 kilometers.\n", + "\n", + " Feature 2 (Annual salary): Ranges from 20,000 to 200,000 (in dollars).\n", + "\n", + " When using k-nearest neighbors (KNN) with the Euclidean distance metric to classify or predict, the distances between samples are calculated based on the features. However, the distance calculation involves squaring the differences of each feature's value, and the larger the feature's range, the more influence it has on the final distance. In this case, the salary feature will dominate the distance calculation because its range is much larger than that of the distance to school feature.\n", + "\n", + " For example, if two data points differ significantly in salary but have very similar distances to school, the KNN algorithm might incorrectly assign a higher weight to the salary difference due to its larger scale, making the distance metric less representative of the actual similarities between data points.\n", + "\n", + " If both features were scaled to the same range, the distance between samples would be influenced equally by both features, leading to more accurate classifications or predictions.\n", "\n", - "- - Logistic Regression\n", "\n", - "- - Neural Networks\n", "\n" ] }, + { + "cell_type": "markdown", + "id": "5552b828", + "metadata": {}, + "source": [ + "Now, there are two common approaches to bring different features onto the same scale: **normalization** and **standardization**. Those terms are often used quite loosely in different fields, and the meaning has to be derived from the context. Most often, **normalization** refers to the rescaling of the features to a range of \\([0, 1]\\), which is a special case of **min-max scaling**.\n", + "\n", + "To normalize our data, we can simply apply the min-max scaling to each feature column, where the new value of a sample can be calculated as follows:\n", + "\n", + "$X_{\\text{normalized}} = \\frac{X - X_{\\text{min}}}{X_{\\text{max}} - X_{\\text{min}}}$\n", + "\n", + "\n", + "Where:\n", + "- $X_{\\text{normalized}}$ is the normalized value of the feature.\n", + "- $X$ is the original value of the feature.\n", + "- $X_{\\text{min}}$ is the minimum value of the feature.\n", + "- $X_{\\text{max}}$ is the maximum value of the feature." + ] + }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 136, "id": "c89ae9a6", "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'MinMaxScaler' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[17]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# Initialize scaler\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m scaler = \u001b[43mMinMaxScaler\u001b[49m()\n\u001b[32m 4\u001b[39m \u001b[38;5;66;03m# Apply normalization on Fare\u001b[39;00m\n\u001b[32m 5\u001b[39m df_encoded[\u001b[33m'\u001b[39m\u001b[33mFare_normalized\u001b[39m\u001b[33m'\u001b[39m] = scaler.fit_transform(df_encoded[[\u001b[33m'\u001b[39m\u001b[33mFare\u001b[39m\u001b[33m'\u001b[39m]])\n", - "\u001b[31mNameError\u001b[39m: name 'MinMaxScaler' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized age maximum: [1.]\n", + "Normalized age minimum: [0.]\n" ] } ], "source": [ - "# Initialize scaler\n", - "scaler = MinMaxScaler()\n", + "# Let's apply MinMaxScaling to our Age feature\n", + "mm_scaler = MinMaxScaler()\n", + "age = df[\"Age\"].values.reshape(-1, 1)\n", + "normalized_age = mm_scaler.fit_transform(age)\n", + "print(f\"Normalized age maximum: {max(normalized_age)}\")\n", + "print(f\"Normalized age minimum: {min(normalized_age)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c439f90d", + "metadata": {}, + "source": [ + "Although normalization via min-max scaling is a commonly used technique that is useful when we need values in a bounded interval, **standardization** can be more practical for many machine learning algorithms, especially for optimization algorithms such as gradient descent. The reason is that many linear models initialize the weights to 0 or small random values close to 0. Using standardization, we center the feature columns at a mean of 0 with a standard deviation of 1, so that the feature columns take the form of a normal distribution, which makes it easier to learn the weights.\n", + "\n", + "Furthermore, standardization maintains useful information about outliers and makes the algorithm less sensitive to them, in contrast to min-max scaling, which scales the data to a limited range of values.\n", + "\n", + "The procedure for **standardization** can be expressed by the following equation:\n", "\n", - "# Apply normalization on Fare\n", - "df_encoded['Fare_normalized'] = scaler.fit_transform(df_encoded[['Fare']])\n", + "$X_{\\text{standardized}} = \\frac{X - \\mu}{\\sigma}$\n", "\n", - "# Compare original vs normalized\n", - "print(df_encoded[['Fare', 'Fare_normalized']].head())" + "Where:\n", + "- $X_{\\text{standardized}}$ is the standardized value of the feature.\n", + "- $X$ is the original value of the feature.\n", + "- $\\mu$ is the sample mean of the feature.\n", + "- $\\sigma$ is the standard deviation of the feature." ] }, { "cell_type": "code", - "execution_count": null, - "id": "8ff9f1b8", + "execution_count": 150, + "id": "06f0a398", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Standardized fare maximum: [9.66716653]\n", + "Standardized fare minimum: [-0.64842165]\n", + "Standardized fare mean: 0.0\n", + "Standardized fare standard deviation: 1.0\n" + ] + } + ], + "source": [ + "ss_scaler = StandardScaler()\n", + "fare = df[\"Fare\"].values.reshape(-1, 1)\n", + "standardized_fare = ss_scaler.fit_transform(fare)\n", + "\n", + "print(f\"Standardized fare maximum: {max(standardized_fare)}\")\n", + "print(f\"Standardized fare minimum: {min(standardized_fare)}\")\n", + "print(f\"Standardized fare mean: {round(np.mean(standardized_fare), 10)}\")\n", + "print(f\"Standardized fare standard deviation: {round(np.std(standardized_fare), 10)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0e5df500", + "metadata": {}, + "source": [ + "### Pipeline, Column Transformers and Custom Transformers" + ] + }, + { + "cell_type": "markdown", + "id": "d657c5cd", + "metadata": {}, + "source": [ + "The process of transforming raw data into a model-ready format often involves a series of steps, including data preprocessing, feature selection, and model training. Managing these steps efficiently and ensuring reproducibility can be challenging. This is where sklearn.pipeline.Pipeline from the scikit-learn library comes into play.\n", + "\n", + "The Pipeline class in scikit-learn is a powerful tool designed to streamline the machine learning workflow. It allows you to chain together multiple steps, such as data transformations and model training, into a single, cohesive process. This not only simplifies the code but also ensures that the same sequence of steps is applied consistently to both training and testing data, thereby reducing the risk of data leakage and improving reproducibility.\n", + "\n", + "Using pipelines offers several advantages:\n", + "\n", + "- Code Readability and Maintenance: By chaining multiple steps into a single pipeline, the code becomes more readable and easier to maintain. Each step in the pipeline is clearly defined, making it easier to understand the workflow at a glance.\n", + "\n", + "- Reproducibility: Pipelines ensure that the same sequence of transformations is applied to both training and testing data. This consistency is crucial for reproducibility and helps prevent data leakage.\n", + "\n", + "- Hyperparameter Tuning: Pipelines integrate seamlessly with scikit-learn's hyperparameter tuning tools, such as GridSearchCV and RandomizedSearchCV. This allows you to optimize the parameters of both the preprocessing steps and the model in a single search.\n", + "\n", + "- Modularity: Pipelines promote modularity by allowing you to encapsulate different stages of the machine learning process into reusable components. This makes it easier to experiment with different preprocessing techniques and models." + ] + }, + { + "cell_type": "markdown", + "id": "cfe960fc", + "metadata": {}, + "source": [ + "To illustrate the use of scikit-learn pipelines, let's walk through a simple example where we apply a series of transformations to the \"Age\" feature in a dataset. In this example, we will:\n", + "\n", + "- Impute missing values in the \"Age\" column with the mean value.\n", + "\n", + "- Standardize the \"Age\" values, so they have a mean of 0 and a standard deviation of 1.\n", + "\n", + "We will use the **Pipeline** class from scikit-learn to combine these two steps into one unified process, making it easier to manage and apply consistently." + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "e933a3ee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before ...\n", + "Age min/max: 0.42, 80.00\n", + "Age missing values: 177\n", + "\n", + "After ...\n", + "Age min/max: -2.25, 3.87\n", + "Age missing values: 0\n" + ] + } + ], + "source": [ + "print(\"Before ...\")\n", + "print(f\"Age min/max: {df['Age'].min():.2f}, {df['Age'].max():.2f}\")\n", + "print(f\"Age missing values: {df['Age'].isna().sum()}\")\n", + "\n", + "age_pipeline = Pipeline([\n", + " (\"mean_imp\", SimpleImputer(strategy=\"mean\")),\n", + " (\"ss_scaler\", StandardScaler())\n", + "])\n", + "\n", + "age_transformed = age_pipeline.fit_transform(df[[\"Age\"]]) # Returns NumPy array\n", + "\n", + "print(\"\\nAfter ...\")\n", + "print(f\"Age min/max: {age_transformed.min():.2f}, {age_transformed.max():.2f}\") \n", + "print(f\"Age missing values: {np.isnan(age_transformed).sum()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c0591a0a", + "metadata": {}, + "source": [ + "**Custom Transformers in scikit-learn**\n", + "\n", + "In many cases, standard transformers like SimpleImputer and StandardScaler are not sufficient for specific tasks. For such situations, we can create custom transformers that can be used just like the built-in ones, while performing more complex transformations.\n", + "\n", + "A custom transformer is a class that inherits from BaseEstimator and TransformerMixin in scikit-learn. The primary responsibility of a custom transformer is to define two methods:\n", + "\n", + "- fit(...): This method is used to learn any necessary parameters from the data. For simple transformations that don't require fitting (like string manipulation), you can leave this method empty.\n", + "\n", + "- transform(...): This method performs the actual transformation of the data.\n", + "\n", + "Let’s look at an example where we create a custom transformer to preprocess the \"Cabin\" feature in the Titanic dataset.\n", + "\n", + "In the Titanic dataset, the \"Cabin\" column contains string values, which include both the deck (a letter) and the cabin number (a number). We can create a custom transformer to extract and separate these values into two new columns: CabinDeck and CabinNumber." + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "28ee7c92", + "metadata": {}, + "outputs": [], + "source": [ + "class CabinTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " self.scaler = MinMaxScaler() \n", + "\n", + " def fit(self, X, y=None):\n", + " return self \n", + "\n", + " def transform(self, X):\n", + " X = pd.Series(X.flatten()) \n", + " \n", + " deck = X.str[0] # First letter (deck)\n", + " number = X.str.extract(r'(\\d+)') # Extract numbers\n", + " \n", + " cabin_number = pd.to_numeric(number[0], errors='coerce')\n", + " \n", + " cabin_number_scaled = self.scaler.fit_transform(cabin_number.values.reshape(-1, 1))\n", + " \n", + " # Combine deck and scaled cabin number into a DataFrame\n", + " transformed = pd.DataFrame({\n", + " 'CabinDeck': deck,\n", + " 'CabinNumber': cabin_number_scaled.flatten() \n", + " })\n", + "\n", + " return transformed" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "e26883b2", + "metadata": {}, + "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", + "
CabinDeckCabinNumber
0B0.643836
1C0.568493
2B0.643836
3C0.828767
4B0.643836
.........
886B0.643836
887B0.273973
888B0.643836
889C1.000000
890B0.643836
\n", + "

891 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " CabinDeck CabinNumber\n", + "0 B 0.643836\n", + "1 C 0.568493\n", + "2 B 0.643836\n", + "3 C 0.828767\n", + "4 B 0.643836\n", + ".. ... ...\n", + "886 B 0.643836\n", + "887 B 0.273973\n", + "888 B 0.643836\n", + "889 C 1.000000\n", + "890 B 0.643836\n", + "\n", + "[891 rows x 2 columns]" + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cabin_pipeline = Pipeline([\n", + " (\"imp\", SimpleImputer(strategy=\"most_frequent\")), # Impute missing values with the most frequent value\n", + " (\"custom_transformer\", CabinTransformer()) # Apply the custom CabinTransformer\n", + "])\n", + "\n", + "\n", + "transformed_cabin = cabin_pipeline.fit_transform(df[[\"Cabin\"]])\n", + "transformed_cabin" + ] + }, + { + "cell_type": "markdown", + "id": "3411ae57", + "metadata": {}, + "source": [ + "**ColumnTransformer in scikit-learn**\n", + "\n", + "`ColumnTransformer` is a utility in `scikit-learn` that allows you to apply different transformations to different subsets of columns in your dataset. It's particularly useful when working with datasets that contain various types of features (e.g., numerical, categorical, text) that require distinct preprocessing steps.\n", + "\n", + "In a machine learning pipeline, preprocessing is a crucial step to transform raw data into a suitable format for model training. The `ColumnTransformer` helps by enabling separate processing for different features, without needing to manually split the dataset or write custom logic.\n", + "\n", + "--- \n", + "\n", + "A `ColumnTransformer` allows you to specify a list of transformers to be applied to specific subsets of columns. The general format looks like this:\n", + "\n", + "```python\n", + "from sklearn.compose import ColumnTransformer\n", + "\n", + "column_transformer = ColumnTransformer(\n", + " transformers=[\n", + " ('name_of_transformer', transformer_object, columns_to_transform)\n", + " ]\n", + ")\n", + "```\n", + "\n", + "Where:\n", + "- **`name_of_transformer`**: This is a string label that names the transformation. It can be anything descriptive, like `'scaler'`, `'encoder'`, etc.\n", + "- **`transformer_object`**: This is the transformer object that will be applied to the selected columns. This could be a `StandardScaler`, `SimpleImputer`, `OneHotEncoder`, etc.\n", + "- **`columns_to_transform`**: A list or a string specifying which columns should be transformed. You can select columns by name, index, or condition (such as numerical columns).\n" + ] + }, + { + "cell_type": "markdown", + "id": "b319902e", + "metadata": {}, + "source": [ + "But before lets instantiate all of our Custom Transformations and Pipelines" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "29497113", + "metadata": {}, + "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedTitle
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNSMr
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85CMrs
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNSMiss
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123SMrs
4503Allen, Mr. William Henrymale35.0003734508.0500NaNSMr
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass ... Cabin Embarked Title\n", + "0 1 0 3 ... NaN S Mr\n", + "1 2 1 1 ... C85 C Mrs\n", + "2 3 1 3 ... NaN S Miss\n", + "3 4 1 1 ... C123 S Mrs\n", + "4 5 0 3 ... NaN S Mr\n", + "\n", + "[5 rows x 13 columns]" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b42a79b9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38932d18", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(0)" + ] + }, + "execution_count": 185, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Transformations\n", + "# - PassengerId: drop columns\n", + "# - Pclass: OneHotEncoding\n", + "# - Name: NameCustomTransformer -- OneHotEncoding\n", + "# - Sex: BinaryEncoding" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7ee10946", + "metadata": {}, + "outputs": [], + "source": [ + "class NameCustomTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass" + ] }, { "cell_type": "markdown", From db18afe1a187f0ea5fdd7a7da342f46210f8730d Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 09:26:41 +0200 Subject: [PATCH 21/33] Improved 'Dataset Overview' section --- lab-01.ipynb | 413 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 240 insertions(+), 173 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 14aeeba..ef1a5f8 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 4, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -49,6 +49,36 @@ "## Introduction" ] }, + { + "cell_type": "markdown", + "id": "b5866566", + "metadata": {}, + "source": [ + "### Objective of the lab\n", + "\n", + "The quality of the data and the amount of useful information that it contains are key factors that determine how well a machine learning algorithm can learn. Therefore, it is absolutely critical that we make sure to examine and preprocess a dataset before we feed it to a learning algorithm. \n", + "\n", + "In this laboratory we will explore the data exploration and preprocessing pipeline." + ] + }, + { + "cell_type": "markdown", + "id": "2938e958", + "metadata": {}, + "source": [ + "#### What is a Dataset?\n", + "\n", + "A data set (or dataset) is a collection of data. In the case of tabular data, a data set corresponds to one or more database tables, where every **column** of a table represents a particular **variable**, and each **row** corresponds to a given **record of the data** set in question. The data set lists values for each of the variables, such as for example height and weight of an object, for each member of the data set. Data sets can also consist of a collection of documents or files\n", + "\n", + "Several characteristics define a data set's structure and properties. These include the number and types of the attributes or variables, and various statistical measures applicable to them.\n", + "\n", + "The values may be numbers, such as real numbers or integers, for example representing a person's height in centimeters, but may also be nominal data (i.e., not consisting of numerical values), for example representing a person's ethnicity. More generally, values may be of any of the kinds described as a level of measurement.\n", + "\n", + "Missing values may exist, which must be indicated somehow.\n", + "\n", + "[Data set - Wikipedia](https://en.wikipedia.org/wiki/Data_set)" + ] + }, { "cell_type": "markdown", "id": "93e36221", @@ -60,9 +90,7 @@ "\n", "On April 15, 1912, during her maiden voyage, the widely considered “unsinkable” RMS Titanic sank after colliding with an iceberg. Unfortunately, there weren’t enough lifeboats for everyone onboard, resulting in the death of 1502 out of 2224 passengers and crew.\n", "\n", - "While there was some element of luck involved in surviving, it seems some groups of people were more likely to survive than others.\n", - "\n", - "In this challenge, we ask you to build a predictive model that answers the question: “what sorts of people were more likely to survive?” using passenger data (ie name, age, gender, socio-economic class, etc).\n" + "While there was some element of luck involved in surviving, it seems some groups of people were more likely to survive than others." ] }, { @@ -86,36 +114,6 @@ "| Embarked | String | Port of embarkation | \"C\" = Cherbourg, \"Q\" = Queenstown, \"S\" = Southampton |" ] }, - { - "cell_type": "markdown", - "id": "b5866566", - "metadata": {}, - "source": [ - "### Objective of the lab\n", - "\n", - "The quality of the data and the amount of useful information that it contains are key factors that determine how well a machine learning algorithm can learn. Therefore, it is absolutely critical that we make sure to examine and preprocess a dataset before we feed it to a learning algorithm. \n", - "\n", - "In this laboratory we will explore the data exploration and preprocessing pipeline." - ] - }, - { - "cell_type": "markdown", - "id": "2938e958", - "metadata": {}, - "source": [ - "#### What is a Dataset?\n", - "\n", - "A data set (or dataset) is a collection of data. In the case of tabular data, a data set corresponds to one or more database tables, where every **column** of a table represents a particular **variable**, and each **row** corresponds to a given **record of the data** set in question. The data set lists values for each of the variables, such as for example height and weight of an object, for each member of the data set. Data sets can also consist of a collection of documents or files\n", - "\n", - "Several characteristics define a data set's structure and properties. These include the number and types of the attributes or variables, and various statistical measures applicable to them.\n", - "\n", - "The values may be numbers, such as real numbers or integers, for example representing a person's height in centimeters, but may also be nominal data (i.e., not consisting of numerical values), for example representing a person's ethnicity. More generally, values may be of any of the kinds described as a level of measurement.\n", - "\n", - "Missing values may exist, which must be indicated somehow.\n", - "\n", - "[Data set - Wikipedia](https://en.wikipedia.org/wiki/Data_set)" - ] - }, { "cell_type": "markdown", "id": "bad7a3aa", @@ -187,10 +185,6 @@ "source": [ "## Dataset Loading\n", "\n", - "To start working with any dataset in Python, we typically use the pandas library, which allows us to load, manipulate, and analyze data easily in tabular form.\n", - "\n", - "---\n", - "\n", "**What is Pandas?**\n", "\n", "Pandas is an open-source software library designed for data manipulation and analysis. It provides data structures like series and DataFrames to easily clean, transform and analyze large datasets and integrates with other Python libraries, such as NumPy and Matplotlib.\n", @@ -204,30 +198,16 @@ "- Reading and writing data from various file formats like CSV, Excel and SQL databases.\n", "- Cleaning and preparing data by handling missing values and filtering entries.\n", "- Merging and joining multiple datasets seamlessly.\n", - "- Reshaping data through pivoting and stacking operations.\n", - "- Conducting statistical analysis and generating descriptive statistics.\n", - "- Visualizing data with integrated plotting capabilities.\n", + "- ...\n", "\n", "[Pandas Tutorial - geeksforgeeks](https://www.geeksforgeeks.org/pandas-tutorial/)\n", "\n", - "---\n", - "\n", - "In this case, the Titanic dataset is available in a CSV file. We'll load it using [pandas.read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html).\n", - "\n", - "For loading file we need Pandas library.\n", - "\n", - "What is Pandas? \n", - "\n", - "Pandas is one of the most important and widely-used Python libraries in data science, data analysis, and machine learning.\n", - "\n", - "It was created specifically to make working with structured data (like tables and spreadsheets) fast, flexible, and expressive.\n", - "\n", - "The name \"pandas\" is derived from \"Panel Data\", which is an econometrics term for multidimensional structured data, and also a fun nod to the panda bear 🐼." + "For this tutorial, the Titanic dataset will be provided in the format of a `.csv` file. We'll load it using [pandas.read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -347,17 +327,29 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "0 1 0 3 ... 7.2500 NaN S\n", - "1 2 1 1 ... 71.2833 C85 C\n", - "2 3 1 3 ... 7.9250 NaN S\n", - "3 4 1 1 ... 53.1000 C123 S\n", - "4 5 0 3 ... 8.0500 NaN S\n", + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", "\n", - "[5 rows x 12 columns]" + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 3, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -379,33 +371,35 @@ "source": [ "## Dataset Overview\n", "\n", + "Now that we have successfully loaded our dataset, the next step is to dive into Exploratory Data Analysis (EDA). EDA is an essential early phase in any data science or machine learning project for several reasons:\n", "\n", - "Now that we’ve successfully loaded the dataset, it’s time to explore and play with it.\n", - "\n", - "Before we start building any machine learning models or visualizations, we must understand:\n", + "- **Data Understanding**: EDA helps you learn what each column represents, the types of values present, and how variables might relate to the outcome you're interested in.\n", "\n", - "- What kind of data we are working with\n", + "- **Anomaly Detection**: It allows you to spot outliers, missing values, and data entry errors that could compromise your analysis or model performance.\n", "\n", - "- The distribution of values across key columns\n", + "- **Data Cleaning Planning**: Insights from EDA guide how to handle missing data, transform variables, or drop irrelevant columns.\n", "\n", - "- If there are any unusual or suspicious entries (outliers, wrong types, etc.)\n", + "- **Feature Selection and Engineering**: By understanding relationships between variables, EDA helps you decide which features are most relevant for modeling.\n", "\n", - "This step is known as Exploratory Data Analysis (EDA) — and it’s one of the most important steps in any data science project.\n", + "- **Bias and Data Quality Assessment**: EDA can reveal biases, data leakage, or inconsistencies, ensuring a more robust and reliable analysis.\n", "\n", - "🔍 Why Is This Step Important?\n", - "\n", - "- ✅ Data Understanding: We need to understand what each column means, what type of values it contains, and how it could relate to the outcome we want to predict (in this case, survival).\n", - "\n", - "- 🚩 Anomaly Detection: This helps us spot outliers, inconsistent data, or wrong data types — all of which can affect the performance of our models.\n", - "\n", - "- 🛠️ Planning Data Cleaning: Based on this step, we can make decisions about missing values, column drops, or transformations needed later.\n", + "- **Hypothesis Generation**: It helps generate initial hypotheses and questions to be tested with more formal statistical methods.\n" + ] + }, + { + "cell_type": "markdown", + "id": "537ee08f", + "metadata": {}, + "source": [ + "**Check the Shape of the Dataset**\n", "\n", - "This step is called Exploratory Data Analysis (EDA), and it’s one of the most critical stages in any data science pipeline.\n" + "This step gives us a basic understanding of the dataset's size by returning the number of rows (observations) and columns (features). It's an essential first step in EDA to gauge how large and complex your dataset is, and to quickly catch any red flags (e.g., very small datasets or datasets with an unexpectedly large number of columns).\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -413,7 +407,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset shape: (891, 12)\n" + "Our dataset is composed of 891 rows, and 12 columns\n" ] } ], @@ -421,12 +415,23 @@ "# Check the shape of the dataset (rows, columns)\n", "# DataFrame.shape: Return a tuple representing the dimensionality of the DataFrame.\n", "\n", - "print(\"Dataset shape:\", df.shape)" + "n_rows, n_cols = df.shape \n", + "print(f\"Our dataset is composed of {n_rows} rows, and {n_cols} columns\")" + ] + }, + { + "cell_type": "markdown", + "id": "48c5a5cc", + "metadata": {}, + "source": [ + "**Show the Column Names**\n", + "\n", + "This cell lists all the column names (features) in the dataset. Understanding what features are present helps you interpret the data, think about potential predictors and targets for modeling, and identify redundant, irrelevant, or misspelled columns early on." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 40, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -434,19 +439,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "Column names: ['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" + "Dataset columns:\n", + "['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']\n" ] } ], "source": [ "# Show the column names\n", "# DataFrame.columns: The column labels of the DataFrame.\n", - "print(\"Column names:\", df.columns.tolist())" + "dataframe_columns = df.columns\n", + "print(\"Dataset columns:\")\n", + "print(list(dataframe_columns))" + ] + }, + { + "cell_type": "markdown", + "id": "367c0b8f", + "metadata": {}, + "source": [ + "**View Data Types of Each Feature**\n", + "\n", + "Here, you're checking the data type of each column (e.g., integer, float, object/string, datetime). This can be exploited for:\n", + "\n", + "- Understanding what kind of operations can be performed on each column\n", + "- Spotting incorrect data types (e.g., numeric values stored as objects)\n", + "- Preparing for data preprocessing (e.g., encoding categorical variables, converting dates)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 39, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -479,6 +501,22 @@ "print(df.dtypes)" ] }, + { + "cell_type": "markdown", + "id": "f8d74ce8", + "metadata": {}, + "source": [ + "**General Information About the Dataset**\n", + "\n", + "This is a concise summary of the dataset, showing:\n", + "\n", + "- Column names and types\n", + "- Number of non-null entries per column\n", + "- Memory usage\n", + "\n", + "It helps quickly assess missing data, data types, and memory footprint." + ] + }, { "cell_type": "code", "execution_count": 7, @@ -520,85 +558,25 @@ }, { "cell_type": "markdown", - "id": "3b1b5f6f", + "id": "dc48c727", "metadata": {}, "source": [ - "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "ac6e1337", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Target unique values\n" - ] - }, - { - "data": { - "text/plain": [ - "array([0, 1])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print(\"Target unique values\")\n", - "df[\"Survived\"].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "795427f2", - "metadata": {}, - "source": [ - "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c039567b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column: Survived\n", - "Unique values: [0 1]\n", - "\n", - "Column: Pclass\n", - "Unique values: [3 1 2]\n", - "\n", - "Column: Sex\n", - "Unique values: ['male' 'female']\n", - "\n", - "Column: Embarked\n", - "Unique values: ['S' 'C' 'Q' nan]\n", - "\n" - ] - } - ], - "source": [ - "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", - "for col in columns:\n", - " print(f\"Column: {col}\")\n", - " print(f\"Unique values: {df[col].unique()}\\n\")" + "**Generate Summary Statistics**\n", + "\n", + "This command gives you summary statistics (mean, std, min, max, percentiles) for all columns, including categorical ones `(include=\"all\")`. Transposing the result `(.T)` makes it easier to read.\n", + "\n", + "It's good practice for:\n", + "\n", + "- Understanding distributions and value ranges\n", + "- Spotting outliers or suspicious values\n", + "- Gauging variability in each feature\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 10, - "id": "bca9f7e9", + "execution_count": 41, + "id": "0529dcf8", "metadata": {}, "outputs": [ { @@ -809,24 +787,36 @@ "" ], "text/plain": [ - " count unique top ... 50% 75% max\n", - "PassengerId 891.0 NaN NaN ... 446.0 668.5 891.0\n", - "Survived 891.0 NaN NaN ... 0.0 1.0 1.0\n", - "Pclass 891.0 NaN NaN ... 3.0 3.0 3.0\n", - "Name 891 891 Dooley, Mr. Patrick ... NaN NaN NaN\n", - "Sex 891 2 male ... NaN NaN NaN\n", - "Age 714.0 NaN NaN ... 28.0 38.0 80.0\n", - "SibSp 891.0 NaN NaN ... 0.0 1.0 8.0\n", - "Parch 891.0 NaN NaN ... 0.0 0.0 6.0\n", - "Ticket 891 681 347082 ... NaN NaN NaN\n", - "Fare 891.0 NaN NaN ... 14.4542 31.0 512.3292\n", - "Cabin 204 147 G6 ... NaN NaN NaN\n", - "Embarked 889 3 S ... NaN NaN NaN\n", + " count unique top freq mean std \\\n", + "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", + "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", + "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", + "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", + "Sex 891 2 male 577 NaN NaN \n", + "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", + "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", + "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", + "Ticket 891 681 347082 7 NaN NaN \n", + "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", + "Cabin 204 147 G6 4 NaN NaN \n", + "Embarked 889 3 S 644 NaN NaN \n", "\n", - "[12 rows x 11 columns]" + " min 25% 50% 75% max \n", + "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", + "Survived 0.0 0.0 0.0 1.0 1.0 \n", + "Pclass 1.0 2.0 3.0 3.0 3.0 \n", + "Name NaN NaN NaN NaN NaN \n", + "Sex NaN NaN NaN NaN NaN \n", + "Age 0.42 20.125 28.0 38.0 80.0 \n", + "SibSp 0.0 0.0 0.0 1.0 8.0 \n", + "Parch 0.0 0.0 0.0 0.0 6.0 \n", + "Ticket NaN NaN NaN NaN NaN \n", + "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", + "Cabin NaN NaN NaN NaN NaN \n", + "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 10, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -841,6 +831,83 @@ "df.describe(include=\"all\").T" ] }, + { + "cell_type": "markdown", + "id": "3b1b5f6f", + "metadata": {}, + "source": [ + "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ac6e1337", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Target unique values\n" + ] + }, + { + "data": { + "text/plain": [ + "array([0, 1])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Target unique values\")\n", + "df[\"Survived\"].unique()" + ] + }, + { + "cell_type": "markdown", + "id": "795427f2", + "metadata": {}, + "source": [ + "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c039567b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column: Survived\n", + "Unique values: [0 1]\n", + "\n", + "Column: Pclass\n", + "Unique values: [3 1 2]\n", + "\n", + "Column: Sex\n", + "Unique values: ['male' 'female']\n", + "\n", + "Column: Embarked\n", + "Unique values: ['S' 'C' 'Q' nan]\n", + "\n" + ] + } + ], + "source": [ + "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", + "for col in columns:\n", + " print(f\"Column: {col}\")\n", + " print(f\"Unique values: {df[col].unique()}\\n\")" + ] + }, { "cell_type": "markdown", "id": "d54d8a85", From 8e92341c775e3bd99efa1dd2ff34b3a09252f8a9 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 09:56:36 +0200 Subject: [PATCH 22/33] Improved 'Data Quality Check' section --- lab-01.ipynb | 1217 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 819 insertions(+), 398 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index ef1a5f8..416f6e3 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -558,27 +558,259 @@ }, { "cell_type": "markdown", - "id": "dc48c727", + "id": "3b1b5f6f", "metadata": {}, "source": [ - "**Generate Summary Statistics**\n", + "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ac6e1337", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Target unique values\n" + ] + }, + { + "data": { + "text/plain": [ + "array([0, 1])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"Target unique values\")\n", + "df[\"Survived\"].unique()" + ] + }, + { + "cell_type": "markdown", + "id": "795427f2", + "metadata": {}, + "source": [ + "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c039567b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Column: Survived\n", + "Unique values: [0 1]\n", + "\n", + "Column: Pclass\n", + "Unique values: [3 1 2]\n", + "\n", + "Column: Sex\n", + "Unique values: ['male' 'female']\n", + "\n", + "Column: Embarked\n", + "Unique values: ['S' 'C' 'Q' nan]\n", + "\n" + ] + } + ], + "source": [ + "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", + "for col in columns:\n", + " print(f\"Column: {col}\")\n", + " print(f\"Unique values: {df[col].unique()}\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "d54d8a85", + "metadata": {}, + "source": [ + "## Data Quality Check\n", "\n", - "This command gives you summary statistics (mean, std, min, max, percentiles) for all columns, including categorical ones `(include=\"all\")`. Transposing the result `(.T)` makes it easier to read.\n", + "Before proceeding with any analysis or modeling, it is essential to verify the quality and integrity of our dataset. Data quality issues can arise in any dataset, including widely used ones like the Titanic dataset. Common problems include:\n", "\n", - "It's good practice for:\n", + "- **Missing values**: Empty cells or NaN entries that may require imputation or removal.\n", + "- **Inconsistent formats**: Data types or formats that do not align with expectations (e.g., text in a numerical column).\n", + "- **Duplicate records**: Repeated rows that can distort statistical analysis and model performance.\n", + "- **Invalid or implausible values**: Outliers or entries that fall outside realistic ranges (such as negative ages).\n", "\n", - "- Understanding distributions and value ranges\n", - "- Spotting outliers or suspicious values\n", - "- Gauging variability in each feature\n", - "\n" + "Identifying and addressing these issues early is crucial for ensuring reliable results and robust models. In this section, we will systematically check for missing data, duplicates, and obvious inconsistencies, setting the stage for effective data cleaning and analysis." + ] + }, + { + "cell_type": "markdown", + "id": "9337b97b", + "metadata": {}, + "source": [ + "**Check for missing values**\n", + "\n", + "This cell checks for missing values in each column of the dataset by using [DataFrame.isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isnull.html). This method returns a boolean DataFrame where:\n", + "\n", + "- `True` indicates a missing value (e.g., NaN, None)\n", + "- `False` indicates a valid entry\n", + "\n", + "By summing the boolean values with `.sum()`, we get the total count of missing entries per column.\n", + "\n", + "Identifying where and how much data is missing is a crucial step to decide whether to impute, remove, or otherwise handle incomplete data before further analysis or model building." ] }, { "cell_type": "code", - "execution_count": 41, - "id": "0529dcf8", + "execution_count": 43, + "id": "bb8a742a", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Missing values per column:\n", + "\n", + "PassengerId 0\n", + "Survived 0\n", + "Pclass 0\n", + "Name 0\n", + "Sex 0\n", + "Age 177\n", + "SibSp 0\n", + "Parch 0\n", + "Ticket 0\n", + "Fare 0\n", + "Cabin 687\n", + "Embarked 2\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "# Check for missing values per column\n", + "print(\"Missing values per column:\\n\")\n", + "print(df.isnull().sum())" + ] + }, + { + "cell_type": "markdown", + "id": "8c2dfcab", + "metadata": {}, + "source": [ + "**Compute percentage of missing values**\n", + "\n", + "This cell calculates the percentage of missing values in each column to assess the relative impact of missing data. \n", + "\n", + "It divides the count of missing values `(df.isnull().sum())` by the total number of rows `(len(df))`, then multiplies by 100 to express it as a percentage.\n", + "\n", + "Knowing the proportion of missing data helps prioritize data cleaning steps — for example, columns with very high missing percentages might be dropped, while those with minimal gaps could be imputed." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "e32bd777", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Percentage of missing values:\n", + "\n", + "PassengerId 0.000000\n", + "Survived 0.000000\n", + "Pclass 0.000000\n", + "Name 0.000000\n", + "Sex 0.000000\n", + "Age 19.865320\n", + "SibSp 0.000000\n", + "Parch 0.000000\n", + "Ticket 0.000000\n", + "Fare 0.000000\n", + "Cabin 77.104377\n", + "Embarked 0.224467\n", + "dtype: float64\n" + ] + } + ], + "source": [ + "# Optional: Check the percentage of missing values\n", + "print(\"Percentage of missing values:\\n\")\n", + "print((df.isnull().sum() / len(df)) * 100)" + ] + }, + { + "cell_type": "markdown", + "id": "b83b3e1d", + "metadata": {}, + "source": [ + "**Check for duplicated rows**\n", + "\n", + "This cell checks for duplicate rows in the dataset using [DataFrame.duplicated()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.duplicated.html), which returns a boolean Series where True indicates a duplicate row. \n", + "\n", + "By applying `.sum()`, it counts the total number of duplicate rows.\n", + "\n", + "Identifying and removing duplicates is important because repeated entries can skew statistical analyses and affect model performance. This step helps ensure that each observation is unique and reliable." + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "3c6b44b5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of duplicated rows: 0\n" + ] + } + ], + "source": [ + "# Check for duplicated rows\n", + "print(\"Number of duplicated rows:\", df.duplicated().sum())" + ] + }, + { + "cell_type": "markdown", + "id": "ac369c16", + "metadata": {}, + "source": [ + "**Examining rows with inconsistencies or invalid entries**\n", + "\n", + "This part demonstrates how to identify invalid or inconsistent data entries in the Titanic dataset:\n", + "\n", + "- Invalid 'Fare' values: The first part filters rows where the 'Fare' column contains values that are less than or equal to zero. Negative or zero fares are invalid, as they don't make sense in the context of ticket prices.\n", + "- Invalid 'Embarked' values: The second part checks the 'Embarked' column for values that are not among the valid embarkation ports ('C', 'Q', or 'S'). Any entry outside these three values would be inconsistent and require attention.\n", + "- Missing 'Age' values: The third part filters rows where the 'Age' column contains missing values (NaN). These missing values need to be handled, either through imputation or removal, to ensure that the dataset is complete for analysis.\n", + "\n", + "By performing these checks, we ensure that the dataset remains consistent and reliable for further analysis and modeling, preventing errors that could skew the results or predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "cc6a6a34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows with invalid 'Fare' values (negative or zero):\n" + ] + }, { "data": { "text/html": [ @@ -600,428 +832,402 @@ " \n", " \n", " \n", - " count\n", - " unique\n", - " top\n", - " freq\n", - " mean\n", - " std\n", - " min\n", - " 25%\n", - " 50%\n", - " 75%\n", - " max\n", + " PassengerId\n", + " Survived\n", + " Pclass\n", + " Name\n", + " Sex\n", + " Age\n", + " SibSp\n", + " Parch\n", + " Ticket\n", + " Fare\n", + " Cabin\n", + " Embarked\n", " \n", " \n", " \n", " \n", - " PassengerId\n", - " 891.0\n", - " NaN\n", - " NaN\n", + " 179\n", + " 180\n", + " 0\n", + " 3\n", + " Leonard, Mr. Lionel\n", + " male\n", + " 36.0\n", + " 0\n", + " 0\n", + " LINE\n", + " 0.0\n", " NaN\n", - " 446.0\n", - " 257.353842\n", - " 1.0\n", - " 223.5\n", - " 446.0\n", - " 668.5\n", - " 891.0\n", + " S\n", " \n", " \n", - " Survived\n", - " 891.0\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 0.383838\n", - " 0.486592\n", - " 0.0\n", - " 0.0\n", + " 263\n", + " 264\n", + " 0\n", + " 1\n", + " Harrison, Mr. William\n", + " male\n", + " 40.0\n", + " 0\n", + " 0\n", + " 112059\n", " 0.0\n", - " 1.0\n", - " 1.0\n", + " B94\n", + " S\n", " \n", " \n", - " Pclass\n", - " 891.0\n", - " NaN\n", - " NaN\n", + " 271\n", + " 272\n", + " 1\n", + " 3\n", + " Tornquist, Mr. William Henry\n", + " male\n", + " 25.0\n", + " 0\n", + " 0\n", + " LINE\n", + " 0.0\n", " NaN\n", - " 2.308642\n", - " 0.836071\n", - " 1.0\n", - " 2.0\n", - " 3.0\n", - " 3.0\n", - " 3.0\n", + " S\n", " \n", " \n", - " Name\n", - " 891\n", - " 891\n", - " Dooley, Mr. Patrick\n", - " 1\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 277\n", + " 278\n", + " 0\n", + " 2\n", + " Parkes, Mr. Francis \"Frank\"\n", + " male\n", " NaN\n", + " 0\n", + " 0\n", + " 239853\n", + " 0.0\n", " NaN\n", + " S\n", + " \n", + " \n", + " 302\n", + " 303\n", + " 0\n", + " 3\n", + " Johnson, Mr. William Cahoone Jr\n", + " male\n", + " 19.0\n", + " 0\n", + " 0\n", + " LINE\n", + " 0.0\n", " NaN\n", + " S\n", " \n", " \n", - " Sex\n", - " 891\n", + " 413\n", + " 414\n", + " 0\n", " 2\n", + " Cunningham, Mr. Alfred Fleming\n", " male\n", - " 577\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", " NaN\n", + " 0\n", + " 0\n", + " 239853\n", + " 0.0\n", " NaN\n", + " S\n", " \n", " \n", - " Age\n", - " 714.0\n", - " NaN\n", + " 466\n", + " 467\n", + " 0\n", + " 2\n", + " Campbell, Mr. William\n", + " male\n", " NaN\n", + " 0\n", + " 0\n", + " 239853\n", + " 0.0\n", " NaN\n", - " 29.699118\n", - " 14.526497\n", - " 0.42\n", - " 20.125\n", - " 28.0\n", - " 38.0\n", - " 80.0\n", + " S\n", " \n", " \n", - " SibSp\n", - " 891.0\n", - " NaN\n", - " NaN\n", + " 481\n", + " 482\n", + " 0\n", + " 2\n", + " Frost, Mr. Anthony Wood \"Archie\"\n", + " male\n", " NaN\n", - " 0.523008\n", - " 1.102743\n", - " 0.0\n", - " 0.0\n", + " 0\n", + " 0\n", + " 239854\n", " 0.0\n", - " 1.0\n", - " 8.0\n", + " NaN\n", + " S\n", " \n", " \n", - " Parch\n", - " 891.0\n", - " NaN\n", - " NaN\n", - " NaN\n", - " 0.381594\n", - " 0.806057\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 597\n", + " 598\n", + " 0\n", + " 3\n", + " Johnson, Mr. Alfred\n", + " male\n", + " 49.0\n", + " 0\n", + " 0\n", + " LINE\n", " 0.0\n", - " 6.0\n", + " NaN\n", + " S\n", " \n", " \n", - " Ticket\n", - " 891\n", - " 681\n", - " 347082\n", - " 7\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 633\n", + " 634\n", + " 0\n", + " 1\n", + " Parr, Mr. William Henry Marsh\n", + " male\n", " NaN\n", + " 0\n", + " 0\n", + " 112052\n", + " 0.0\n", " NaN\n", + " S\n", " \n", " \n", - " Fare\n", - " 891.0\n", - " NaN\n", - " NaN\n", + " 674\n", + " 675\n", + " 0\n", + " 2\n", + " Watson, Mr. Ennis Hastings\n", + " male\n", " NaN\n", - " 32.204208\n", - " 49.693429\n", + " 0\n", + " 0\n", + " 239856\n", " 0.0\n", - " 7.9104\n", - " 14.4542\n", - " 31.0\n", - " 512.3292\n", + " NaN\n", + " S\n", " \n", " \n", - " Cabin\n", - " 204\n", - " 147\n", - " G6\n", - " 4\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " 732\n", + " 733\n", + " 0\n", + " 2\n", + " Knight, Mr. Robert J\n", + " male\n", " NaN\n", + " 0\n", + " 0\n", + " 239855\n", + " 0.0\n", " NaN\n", + " S\n", " \n", " \n", - " Embarked\n", - " 889\n", - " 3\n", + " 806\n", + " 807\n", + " 0\n", + " 1\n", + " Andrews, Mr. Thomas Jr\n", + " male\n", + " 39.0\n", + " 0\n", + " 0\n", + " 112050\n", + " 0.0\n", + " A36\n", " S\n", - " 644\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", - " NaN\n", + " \n", + " \n", + " 815\n", + " 816\n", + " 0\n", + " 1\n", + " Fry, Mr. Richard\n", + " male\n", " NaN\n", + " 0\n", + " 0\n", + " 112058\n", + " 0.0\n", + " B102\n", + " S\n", + " \n", + " \n", + " 822\n", + " 823\n", + " 0\n", + " 1\n", + " Reuchlin, Jonkheer. John George\n", + " male\n", + " 38.0\n", + " 0\n", + " 0\n", + " 19972\n", + " 0.0\n", " NaN\n", + " S\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " count unique top freq mean std \\\n", - "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", - "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", - "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", - "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", - "Sex 891 2 male 577 NaN NaN \n", - "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", - "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", - "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", - "Ticket 891 681 347082 7 NaN NaN \n", - "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", - "Cabin 204 147 G6 4 NaN NaN \n", - "Embarked 889 3 S 644 NaN NaN \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " PassengerId Survived Pclass Name Sex \\\n", + "179 180 0 3 Leonard, Mr. Lionel male \n", + "263 264 0 1 Harrison, Mr. William male \n", + "271 272 1 3 Tornquist, Mr. William Henry male \n", + "277 278 0 2 Parkes, Mr. Francis \"Frank\" male \n", + "302 303 0 3 Johnson, Mr. William Cahoone Jr male \n", + "413 414 0 2 Cunningham, Mr. Alfred Fleming male \n", + "466 467 0 2 Campbell, Mr. William male \n", + "481 482 0 2 Frost, Mr. Anthony Wood \"Archie\" male \n", + "597 598 0 3 Johnson, Mr. Alfred male \n", + "633 634 0 1 Parr, Mr. William Henry Marsh male \n", + "674 675 0 2 Watson, Mr. Ennis Hastings male \n", + "732 733 0 2 Knight, Mr. Robert J male \n", + "806 807 0 1 Andrews, Mr. Thomas Jr male \n", + "815 816 0 1 Fry, Mr. Richard male \n", + "822 823 0 1 Reuchlin, Jonkheer. John George male \n", "\n", - " min 25% 50% 75% max \n", - "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", - "Survived 0.0 0.0 0.0 1.0 1.0 \n", - "Pclass 1.0 2.0 3.0 3.0 3.0 \n", - "Name NaN NaN NaN NaN NaN \n", - "Sex NaN NaN NaN NaN NaN \n", - "Age 0.42 20.125 28.0 38.0 80.0 \n", - "SibSp 0.0 0.0 0.0 1.0 8.0 \n", - "Parch 0.0 0.0 0.0 0.0 6.0 \n", - "Ticket NaN NaN NaN NaN NaN \n", - "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", - "Cabin NaN NaN NaN NaN NaN \n", - "Embarked NaN NaN NaN NaN NaN " + " Age SibSp Parch Ticket Fare Cabin Embarked \n", + "179 36.0 0 0 LINE 0.0 NaN S \n", + "263 40.0 0 0 112059 0.0 B94 S \n", + "271 25.0 0 0 LINE 0.0 NaN S \n", + "277 NaN 0 0 239853 0.0 NaN S \n", + "302 19.0 0 0 LINE 0.0 NaN S \n", + "413 NaN 0 0 239853 0.0 NaN S \n", + "466 NaN 0 0 239853 0.0 NaN S \n", + "481 NaN 0 0 239854 0.0 NaN S \n", + "597 49.0 0 0 LINE 0.0 NaN S \n", + "633 NaN 0 0 112052 0.0 NaN S \n", + "674 NaN 0 0 239856 0.0 NaN S \n", + "732 NaN 0 0 239855 0.0 NaN S \n", + "806 39.0 0 0 112050 0.0 A36 S \n", + "815 NaN 0 0 112058 0.0 B102 S \n", + "822 38.0 0 0 19972 0.0 NaN S " ] }, - "execution_count": 41, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "# Summary statistics for numerical columns\n", - "# DataFrame.describe: Generate descriptive statistics.\n", - "# Descriptive statistics include those that summarize the central tendency, \n", - "# dispersion and shape of a dataset’s distribution, excluding NaN values.\n", - "# Analyzes both numeric and object series, as well as DataFrame column sets of mixed data types. \n", - "\n", - "df.describe(include=\"all\").T" - ] - }, - { - "cell_type": "markdown", - "id": "3b1b5f6f", - "metadata": {}, - "source": [ - "Explore the unique values of our *target* using the [pandas.unique](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html) module." + "# Example: Check for invalid or zero fares\n", + "print(\"Rows with invalid 'Fare' values (negative or zero):\")\n", + "display(df[df['Fare'] <= 0])" ] }, { "cell_type": "code", - "execution_count": 8, - "id": "ac6e1337", + "execution_count": 64, + "id": "4205c152", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Target unique values\n" + "Rows with invalid 'Embarked' values:\n" ] }, { "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", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
616211Icard, Miss. Ameliefemale38.00011357280.0B28NaN
82983011Stone, Mrs. George Nelson (Martha Evelyn)female62.00011357280.0B28NaN
\n", + "
" + ], "text/plain": [ - "array([0, 1])" + " PassengerId Survived Pclass Name \\\n", + "61 62 1 1 Icard, Miss. Amelie \n", + "829 830 1 1 Stone, Mrs. George Nelson (Martha Evelyn) \n", + "\n", + " Sex Age SibSp Parch Ticket Fare Cabin Embarked \n", + "61 female 38.0 0 0 113572 80.0 B28 NaN \n", + "829 female 62.0 0 0 113572 80.0 B28 NaN " ] }, - "execution_count": 8, "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print(\"Target unique values\")\n", - "df[\"Survived\"].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "795427f2", - "metadata": {}, - "source": [ - "Exercise: For the columns *Survived, Pclass, Sex, Embarked*, return the list of unique values" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c039567b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Column: Survived\n", - "Unique values: [0 1]\n", - "\n", - "Column: Pclass\n", - "Unique values: [3 1 2]\n", - "\n", - "Column: Sex\n", - "Unique values: ['male' 'female']\n", - "\n", - "Column: Embarked\n", - "Unique values: ['S' 'C' 'Q' nan]\n", - "\n" - ] - } - ], - "source": [ - "columns = [\"Survived\", \"Pclass\", \"Sex\", \"Embarked\"]\n", - "for col in columns:\n", - " print(f\"Column: {col}\")\n", - " print(f\"Unique values: {df[col].unique()}\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "d54d8a85", - "metadata": {}, - "source": [ - "## Data Quality Check\n", - "\n", - "Before we analyze or build models with our dataset, we need to ensure that the data is clean, complete, and reliable.\n", - "\n", - "Even in well-known datasets like the Titanic dataset, we might encounter:\n", - "\n", - "- Missing values: Empty cells or NaNs that need to be filled, removed, or flagged.\n", - "\n", - "- Inconsistent or incorrect formats: For example, a numerical column with text entries.\n", - "\n", - "- Duplicated entries: Repeated rows that can skew statistics and model results.\n", - "\n", - "- Outliers or unrealistic values: Extremely high or low numbers that don’t make sense (e.g., negative ages).\n", - "\n", - "These issues can significantly affect model accuracy and lead to false conclusions. So, this step focuses on detecting potential problems and planning how to handle them." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "bb8a742a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Missing values per column:\n", - "PassengerId 0\n", - "Survived 0\n", - "Pclass 0\n", - "Name 0\n", - "Sex 0\n", - "Age 177\n", - "SibSp 0\n", - "Parch 0\n", - "Ticket 0\n", - "Fare 0\n", - "Cabin 687\n", - "Embarked 2\n", - "dtype: int64\n" - ] - } - ], - "source": [ - "# 1. Check for missing values per column\n", - "print(\"Missing values per column:\")\n", - "print(df.isnull().sum())" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e32bd777", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Percentage of missing values:\n", - "PassengerId 0.000000\n", - "Survived 0.000000\n", - "Pclass 0.000000\n", - "Name 0.000000\n", - "Sex 0.000000\n", - "Age 19.865320\n", - "SibSp 0.000000\n", - "Parch 0.000000\n", - "Ticket 0.000000\n", - "Fare 0.000000\n", - "Cabin 77.104377\n", - "Embarked 0.224467\n", - "dtype: float64\n" - ] - } - ], - "source": [ - "# 2. Optional: Check the percentage of missing values\n", - "print(\"\\nPercentage of missing values:\")\n", - "print((df.isnull().sum() / len(df)) * 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "218037fd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Number of duplicated rows:\n", - "0\n" - ] + "output_type": "display_data" } ], "source": [ - "# 3. Check for duplicated rows\n", - "print(\"\\nNumber of duplicated rows:\")\n", - "print(df.duplicated().sum())" + "# Example: Check for invalid embarkation ports (should be 'C', 'Q', or 'S')\n", + "print(\"Rows with invalid 'Embarked' values:\")\n", + "display(df[~df['Embarked'].isin(['C', 'Q', 'S'])])" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 65, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1029,7 +1235,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", "Rows with missing 'Age':\n" ] }, @@ -1149,27 +1354,71 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "5 6 0 3 ... 8.4583 NaN Q\n", - "17 18 1 2 ... 13.0000 NaN S\n", - "19 20 1 3 ... 7.2250 NaN C\n", - "26 27 0 3 ... 7.2250 NaN C\n", - "28 29 1 3 ... 7.8792 NaN Q\n", + " PassengerId Survived Pclass Name Sex Age \\\n", + "5 6 0 3 Moran, Mr. James male NaN \n", + "17 18 1 2 Williams, Mr. Charles Eugene male NaN \n", + "19 20 1 3 Masselmani, Mrs. Fatima female NaN \n", + "26 27 0 3 Emir, Mr. Farred Chehab male NaN \n", + "28 29 1 3 O'Dwyer, Miss. Ellen \"Nellie\" female NaN \n", "\n", - "[5 rows x 12 columns]" + " SibSp Parch Ticket Fare Cabin Embarked \n", + "5 0 0 330877 8.4583 NaN Q \n", + "17 0 0 244373 13.0000 NaN S \n", + "19 0 0 2649 7.2250 NaN C \n", + "26 0 0 2631 7.2250 NaN C \n", + "28 0 0 330959 7.8792 NaN Q " ] }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Rows with invalid 'Age' values (if any):\n" - ] - }, + } + ], + "source": [ + "# Example: Show rows with missing 'Age'\n", + "print(\"Rows with missing 'Age':\")\n", + "display(df[df['Age'].isnull()].head())" + ] + }, + { + "cell_type": "markdown", + "id": "2a86fdb7", + "metadata": {}, + "source": [ + "## Descriptive Statistics\n", + "\n", + "After we’ve performed a basic overview and quality check, it’s time to understand how the values in our dataset are distributed — both numerical and categorical.\n", + "\n", + "This step is essential because:\n", + "\n", + "- It gives us an idea of the central tendency (e.g., average) and spread (e.g., variability) of data.\n", + "\n", + "- It reveals outliers, data imbalance, and patterns that may not be immediately obvious.\n", + "\n", + "- It helps us decide how to normalize, transform, or encode data before building models." + ] + }, + { + "cell_type": "markdown", + "id": "377eae28", + "metadata": {}, + "source": [ + "**Generate Summary Statistics**\n", + "\n", + "This command gives you summary statistics (mean, std, min, max, percentiles) for all columns, including categorical ones `(include=\"all\")`. Transposing the result `(.T)` makes it easier to read.\n", + "\n", + "It's good practice for:\n", + "\n", + "- Understanding distributions and value ranges\n", + "- Spotting outliers or suspicious values\n", + "- Gauging variability in each feature" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "8305e2d9", + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1191,63 +1440,235 @@ " \n", " \n", " \n", + " count\n", + " unique\n", + " top\n", + " freq\n", + " mean\n", + " std\n", + " min\n", + " 25%\n", + " 50%\n", + " 75%\n", + " max\n", + " \n", + " \n", + " \n", + " \n", " PassengerId\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 446.0\n", + " 257.353842\n", + " 1.0\n", + " 223.5\n", + " 446.0\n", + " 668.5\n", + " 891.0\n", + " \n", + " \n", " Survived\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 0.383838\n", + " 0.486592\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", + " 1.0\n", + " \n", + " \n", " Pclass\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2.308642\n", + " 0.836071\n", + " 1.0\n", + " 2.0\n", + " 3.0\n", + " 3.0\n", + " 3.0\n", + " \n", + " \n", " Name\n", + " 891\n", + " 891\n", + " Dooley, Mr. Patrick\n", + " 1\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " \n", + " \n", " Sex\n", + " 891\n", + " 2\n", + " male\n", + " 577\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " \n", + " \n", " Age\n", + " 714.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 29.699118\n", + " 14.526497\n", + " 0.42\n", + " 20.125\n", + " 28.0\n", + " 38.0\n", + " 80.0\n", + " \n", + " \n", " SibSp\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 0.523008\n", + " 1.102743\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", + " 8.0\n", + " \n", + " \n", " Parch\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 0.381594\n", + " 0.806057\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 6.0\n", + " \n", + " \n", " Ticket\n", + " 891\n", + " 681\n", + " 347082\n", + " 7\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " \n", + " \n", " Fare\n", + " 891.0\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 32.204208\n", + " 49.693429\n", + " 0.0\n", + " 7.9104\n", + " 14.4542\n", + " 31.0\n", + " 512.3292\n", + " \n", + " \n", " Cabin\n", + " 204\n", + " 147\n", + " G6\n", + " 4\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " \n", + " \n", " Embarked\n", + " 889\n", + " 3\n", + " S\n", + " 644\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", " \n", - " \n", - " \n", " \n", "\n", "" ], "text/plain": [ - "Empty DataFrame\n", - "Columns: [PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked]\n", - "Index: []" + " count unique top freq mean std \\\n", + "PassengerId 891.0 NaN NaN NaN 446.0 257.353842 \n", + "Survived 891.0 NaN NaN NaN 0.383838 0.486592 \n", + "Pclass 891.0 NaN NaN NaN 2.308642 0.836071 \n", + "Name 891 891 Dooley, Mr. Patrick 1 NaN NaN \n", + "Sex 891 2 male 577 NaN NaN \n", + "Age 714.0 NaN NaN NaN 29.699118 14.526497 \n", + "SibSp 891.0 NaN NaN NaN 0.523008 1.102743 \n", + "Parch 891.0 NaN NaN NaN 0.381594 0.806057 \n", + "Ticket 891 681 347082 7 NaN NaN \n", + "Fare 891.0 NaN NaN NaN 32.204208 49.693429 \n", + "Cabin 204 147 G6 4 NaN NaN \n", + "Embarked 889 3 S 644 NaN NaN \n", + "\n", + " min 25% 50% 75% max \n", + "PassengerId 1.0 223.5 446.0 668.5 891.0 \n", + "Survived 0.0 0.0 0.0 1.0 1.0 \n", + "Pclass 1.0 2.0 3.0 3.0 3.0 \n", + "Name NaN NaN NaN NaN NaN \n", + "Sex NaN NaN NaN NaN NaN \n", + "Age 0.42 20.125 28.0 38.0 80.0 \n", + "SibSp 0.0 0.0 0.0 1.0 8.0 \n", + "Parch 0.0 0.0 0.0 0.0 6.0 \n", + "Ticket NaN NaN NaN NaN NaN \n", + "Fare 0.0 7.9104 14.4542 31.0 512.3292 \n", + "Cabin NaN NaN NaN NaN NaN \n", + "Embarked NaN NaN NaN NaN NaN " ] }, + "execution_count": 68, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "# 4. Display rows with invalid or inconsistent data (examples)\n", - "\n", - "# Example: Show rows with missing 'Age'\n", - "print(\"\\nRows with missing 'Age':\")\n", - "display(df[df['Age'].isnull()].head())\n", - "\n", - "# Example: Check for invalid ages (e.g., negative values)\n", - "print(\"\\nRows with invalid 'Age' values (if any):\")\n", - "display(df[df['Age'] < 0])" - ] - }, - { - "cell_type": "markdown", - "id": "2a86fdb7", - "metadata": {}, - "source": [ - "## Descriptive Statistics\n", - "\n", - "After we’ve performed a basic overview and quality check, it’s time to understand how the values in our dataset are distributed — both numerical and categorical.\n", - "\n", - "This step is essential because:\n", - "\n", - "- It gives us an idea of the central tendency (e.g., average) and spread (e.g., variability) of data.\n", - "\n", - "- It reveals outliers, data imbalance, and patterns that may not be immediately obvious.\n", + "# Summary statistics for numerical columns\n", + "# DataFrame.describe: Generate descriptive statistics.\n", + "# Descriptive statistics include those that summarize the central tendency, \n", + "# dispersion and shape of a dataset’s distribution, excluding NaN values.\n", + "# Analyzes both numeric and object series, as well as DataFrame column sets of mixed data types. \n", "\n", - "- It helps us decide how to normalize, transform, or encode data before building models." + "df.describe(include=\"all\").T" ] }, { From a9b43168505257dee31ebb1e4e0ad212652d1c62 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 09:57:53 +0200 Subject: [PATCH 23/33] Enhance documentation clarity in Titanic dataset validation section --- lab-01.ipynb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 416f6e3..17e3bcb 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -791,11 +791,9 @@ "\n", "This part demonstrates how to identify invalid or inconsistent data entries in the Titanic dataset:\n", "\n", - "- Invalid 'Fare' values: The first part filters rows where the 'Fare' column contains values that are less than or equal to zero. Negative or zero fares are invalid, as they don't make sense in the context of ticket prices.\n", - "- Invalid 'Embarked' values: The second part checks the 'Embarked' column for values that are not among the valid embarkation ports ('C', 'Q', or 'S'). Any entry outside these three values would be inconsistent and require attention.\n", - "- Missing 'Age' values: The third part filters rows where the 'Age' column contains missing values (NaN). These missing values need to be handled, either through imputation or removal, to ensure that the dataset is complete for analysis.\n", - "\n", - "By performing these checks, we ensure that the dataset remains consistent and reliable for further analysis and modeling, preventing errors that could skew the results or predictions." + "- **Invalid 'Fare' values**: The first part filters rows where the 'Fare' column contains values that are less than or equal to zero. Negative or zero fares are invalid, as they don't make sense in the context of ticket prices.\n", + "- **Invalid 'Embarked' values**: The second part checks the 'Embarked' column for values that are not among the valid embarkation ports ('C', 'Q', or 'S'). Any entry outside these three values would be inconsistent and require attention.\n", + "- **Missing 'Age' values**: The third part filters rows where the 'Age' column contains missing values (NaN). These missing values need to be handled, either through imputation or removal, to ensure that the dataset is complete for analysis." ] }, { From 2de704a08263d6d1258278e1ad446390d8600b52 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 10:41:00 +0200 Subject: [PATCH 24/33] Improved 'Descriptive Statistics' section --- lab-01.ipynb | 57 ++++++++++++++++++---------------------------------- 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 17e3bcb..28c5d2d 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -1384,15 +1384,13 @@ "source": [ "## Descriptive Statistics\n", "\n", - "After we’ve performed a basic overview and quality check, it’s time to understand how the values in our dataset are distributed — both numerical and categorical.\n", + "After performing data quality checks, the next step is to explore the distribution and composition of our dataset, both numerically and categorically.\n", "\n", - "This step is essential because:\n", + "This step is crucial because:\n", "\n", - "- It gives us an idea of the central tendency (e.g., average) and spread (e.g., variability) of data.\n", - "\n", - "- It reveals outliers, data imbalance, and patterns that may not be immediately obvious.\n", - "\n", - "- It helps us decide how to normalize, transform, or encode data before building models." + "- It reveals the central tendency (mean, median) and spread (variance, range) of numerical features.\n", + "- It helps identify outliers, skewed distributions, and potential data imbalance.\n", + "- It offers insights into categorical distributions, which are vital for understanding group sizes and planning encoding strategies." ] }, { @@ -1669,9 +1667,19 @@ "df.describe(include=\"all\").T" ] }, + { + "cell_type": "markdown", + "id": "418d97e6", + "metadata": {}, + "source": [ + "This step examines how frequently each category appears in selected columns using [.value_counts()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.value_counts.html):\n", + "\n", + "It reveals class imbalances, missing values (especially with `dropna=False`), and dominant categories — all of which can guide encoding strategies or model interpretation." + ] + }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 70, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1679,18 +1687,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "Numeric summary:\n", - " PassengerId Survived Pclass ... SibSp Parch Fare\n", - "count 891.000000 891.000000 891.000000 ... 891.000000 891.000000 891.000000\n", - "mean 446.000000 0.383838 2.308642 ... 0.523008 0.381594 32.204208\n", - "std 257.353842 0.486592 0.836071 ... 1.102743 0.806057 49.693429\n", - "min 1.000000 0.000000 1.000000 ... 0.000000 0.000000 0.000000\n", - "25% 223.500000 0.000000 2.000000 ... 0.000000 0.000000 7.910400\n", - "50% 446.000000 0.000000 3.000000 ... 0.000000 0.000000 14.454200\n", - "75% 668.500000 1.000000 3.000000 ... 1.000000 0.000000 31.000000\n", - "max 891.000000 1.000000 3.000000 ... 8.000000 6.000000 512.329200\n", - "\n", - "[8 rows x 7 columns]\n", "\n", "Value counts for 'Sex':\n", "Sex\n", @@ -1716,10 +1712,6 @@ } ], "source": [ - "# Summary statistics for numeric columns\n", - "print(\"Numeric summary:\")\n", - "print(df.describe())\n", - "\n", "# Value counts for categorical features\n", "print(\"\\nValue counts for 'Sex':\")\n", "print(df['Sex'].value_counts())\n", @@ -1743,22 +1735,13 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 72, "id": "ecb40dad", "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "expected argument value expression (3210384145.py, line 2)", - "output_type": "error", - "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[16]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mdf.describe(percentiles=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" - ] - } - ], + "outputs": [], "source": [ - "percentiles = ...\n", - "df.describe(percentiles=)" + "# percentiles = ...\n", + "# df.describe(percentiles=)" ] }, { From e58667fa0b3a174a3ebb46d5034b14945e2cc77b Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 15:43:19 +0200 Subject: [PATCH 25/33] Improved 'Basic Data Visualization' section --- img/boxplot-660x233.png | Bin 0 -> 19894 bytes lab-01.ipynb | 311 +++++++++++++++++++++++++--------------- 2 files changed, 197 insertions(+), 114 deletions(-) create mode 100644 img/boxplot-660x233.png diff --git a/img/boxplot-660x233.png b/img/boxplot-660x233.png new file mode 100644 index 0000000000000000000000000000000000000000..11223ae1a22c0de289642a3c2e5b990ef60f533f GIT binary patch literal 19894 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 literal 0 HcmV?d00001 diff --git a/lab-01.ipynb b/lab-01.ipynb index 28c5d2d..5ed606d 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -34,7 +34,7 @@ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", - "\n", + "from scipy.stats import gaussian_kde\n", "from sklearn.base import BaseEstimator, TransformerMixin\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.impute import SimpleImputer\n", @@ -207,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -349,7 +349,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -399,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -431,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 5, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -468,7 +468,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 6, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -669,7 +669,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 10, "id": "bb8a742a", "metadata": {}, "outputs": [ @@ -717,7 +717,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 11, "id": "e32bd777", "metadata": {}, "outputs": [ @@ -765,7 +765,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 12, "id": "3c6b44b5", "metadata": {}, "outputs": [ @@ -798,7 +798,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 13, "id": "cc6a6a34", "metadata": {}, "outputs": [ @@ -1122,7 +1122,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 14, "id": "4205c152", "metadata": {}, "outputs": [ @@ -1225,7 +1225,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 15, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1411,7 +1411,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 16, "id": "8305e2d9", "metadata": {}, "outputs": [ @@ -1652,7 +1652,7 @@ "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 68, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1679,7 +1679,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 17, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1735,7 +1735,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 18, "id": "ecb40dad", "metadata": {}, "outputs": [], @@ -1775,17 +1775,31 @@ "- Analyze the distribution of Age, Fare, or any continuous variable." ] }, + { + "cell_type": "markdown", + "id": "7454b04e", + "metadata": {}, + "source": [ + "**Target Variable Distribution: `Survived`**\n", + "\n", + "Before analyzing other features, it's important to explore the distribution of our **target variable**, `Survived`. This bar chart illustrates the number of passengers who survived (1) versus those who did not survive (0).\n", + "\n", + "Why this matters:\n", + "- Class imbalance occurs when one class significantly outnumbers the other(s). For example, if most passengers did not survive, models might learn to always predict the majority class just to achieve higher accuracy — without actually learning useful patterns.\n", + "- This can lead to misleading performance metrics, especially if we rely solely on accuracy." + ] + }, { "cell_type": "code", - "execution_count": 17, - "id": "ee827da3", + "execution_count": 85, + "id": "71fbe07b", "metadata": {}, "outputs": [ { "data": { - "image/png": "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7twZy5Ytg6Ex/datW2jdujWaN2+OM2fO4LPPPsM333wT6/U3btxAw4YN0apVK5w9e1YlKZJo9OnTR6NPRESUPrErFBERaap69epo27Yt+vfvj4iICGTPnh3r1q1DrVq1MGzYMGzZsgXnzp2L3n7kyJGYOHEinj17BhcXF9WNSsZn/PDDD9HbSGJRs2ZN1WohLR1ERJTy2GJBRESakfEUR48eRYcOHdRja2trtGvXTo21MDxfsWLFWK+pVKlSrMfSkiHdp2SMhmFp0KABoqKiVIsHERGlDutUeh8iIqLXSAIhrRQxB2tLQ7qdnR3mzp2b6DEa0kVKxlXElStXLqPGS0RECWNiQUREmpCEYuXKlZgxYwbq168f6zkZU/G///1PjbvYunVrrOeOHTsW63G5cuVw8eJFFChQIFXiJiKi+HGMBRERaWLDhg2q29PDhw/h7Owc67mhQ4di586damC3JBcDBgxA9+7dcfr0aQwaNAh3795VVaHkdTJgu0qVKvj000/VeIuMGTOqRGP79u2JbvUgIqLk4xgLIiLSrBtUvXr1XksqhFR4On78OF6+fIlff/0V69evR6lSpbBgwYLoqlDSXUrI+j179uDq1auq5GzZsmUxevRozoVBRJTK2GJBRERpilSEWrhwIXx9fbUOhYiIYuAYCyIiMmnz589XlaGyZMmCAwcOYNq0aZyjgojIBDGxICIik3bt2jV8++23ePr0qaryJGMshg8frnVYREQUB7tCERERERFRsnHwNhERERERJRsTCyIiIiIiSjYmFkRERERElGxMLIiIiIiIKNmYWBARERERUbIxsSAiIiIiomRjYkFERERERMnGxIKIiIiIiJKNiQURERERESG5/g+smbRJqOjpZgAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQytJREFUeJzt3QeYFNXy+P0i5yxRooDkrAIKSo4qCCgoSpCLioAIShRBUQFRgmRUJPhTUCRcL1ySgCLJAIIkCQICEiXn2O9Tdd+e/8wG6Fl2WGb3+3me2dnp7uk5k2vqVJ+TyHEcRwAAAHBTiW++CQAAABSBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAMSyRIkSyVtvvRWy/U+ePNluY8+ePSG7DQBRI3ACQvSl5p5Spkwp9957r3Tq1EkOHz4c182LV65fvy5Tp06VihUrSubMmSVdunT2WLdq1UrWrFkT1827Y6xfv16effZZyZMnj6RIkcIeq1q1asmkSZPk2rVrcicYOHCgzJkzJ66bAdxU0ptvAiAmBgwYIAUKFJCLFy/KihUrZNy4cfLf//5XNm3aJKlTp47r5sULr7zyiowZM0YaNWokLVu2lKRJk8q2bdtk/vz5cs8990ilSpXipF0XLlywttwJPv30U3nppZcke/bs8txzz0nhwoXlzJkzsmTJEmnXrp0cPHhQ+vTpc0cETs2aNZPGjRvHdVOAG7oz3tlAPFS/fn2577777P9//etfkiVLFhk2bJj8+9//lqeffjqumxc2GaXLly9b1i4izd6NHTtW2rdvLx9//HHAuhEjRsjRo0djpQ06D7oGv6lSpfJ8najaGxc066ZBU+XKlS1o14yc69VXX5Vff/3VAnkA3tFVB9wmNWrUsPPdu3fb+YcffigPPvigBVT6pVyhQgX55ptvIl1v8eLFUqVKFcmYMaOkTZtWihQpEilDMGrUKClRooRlsjJlymQB25dffhmwzd9//y3PP/+8ZR60u0a3/+yzzwK2+f7776178euvv5b33ntPcufObUFAzZo1ZefOnZHaptkezexo+x944AH58ccfpVq1anbyd+nSJenfv78UKlTIblu7jHr06GHL/elta5fmF198Ye3TbRcsWBDl46mPowY1Dz30UKR1up9s2bL5Lmu9kS7zUiuUP39+efTRR2XhwoX2OOp9mzBhgpQsWVKqV68eZXB39913W7YkqhonfU718g8//BDpurpfXecGL7///ru0adPGHlN93HPkyGHP2bFjxyQm3n77bdu/Pp7+QZNL75/enuvcuXPy2muv+br09LWmr1N9nF36WOk+9bG7WW2X+7jra0dvR1/DGTJkkLZt28r58+cDrqe3PWXKFF8Xt9suzY5pkKfPi7ZJn9fatWvLunXrYvSYALeKjBNwm/z55592roGS+uijj+Txxx+3LibNqkyfPl2efPJJmTt3rjRs2NC22bx5s32Jly5d2rr+9ItDv4RWrlzp2+8nn3xiXVb6xd2lSxfLjugX8E8//STPPPOMLzuj3VZuYJI1a1brztKumtOnT9sXk7/BgwdL4sSJ5fXXX5dTp07JkCFDrJ26T5d2Peq+qlatKl27drUvVO1m0cBNAy7/wELvp3ZXvvDCC1KsWDHZuHGjDB8+XLZv3x6prmXp0qUWuOm+77rrLvvCjEq+fPnsfMaMGfa4xWb3p3b3aVbwxRdftIyWBhDNmze3QODQoUMW0Lj0fh04cEBatGgR5b70udSAV+/TI488ErDuq6++sgBRgzI3SN61a5cFFnob+vxrNk3PNXsUVfAXHQ1MtDvu4Ycflrx58950ew2O9HlatmyZvS7Kli1rwWP37t0t6NbnK6aeeuop67YeNGiQBTzafagB0Pvvv2/rP//8c8vKavCtrxFVsGBBO9eMmQaf+nooXry4BZH6mG/dulXKly8f4zYBMeYAiFWTJk3Sn+fOd9995xw9etTZt2+fM336dCdLlixOqlSpnP3799t258+fD7je5cuXnZIlSzo1atTwLRs+fLjtS/cTnUaNGjklSpS4YZvatWvn5MyZ0/nnn38Clrdo0cLJkCGDry3Lli2z2ytWrJhz6dIl33YfffSRLd+4caNd1nV6f+6//37nypUrvu0mT55s2z3yyCO+ZZ9//rmTOHFi58cffwy47fHjx9u2K1eu9C3Ty7rt5s2bHS9atWpl18mUKZPzxBNPOB9++KGzdevWSNv179/ftovuudq9e7dvWb58+WzZggULArbdtm2bLR81alTA8pdfftlJmzZtwPOp2+ltup5++mknW7ZsztWrV33LDh48aPd1wIABvmURXxNq2rRptr/ly5ffsN0Rbdiwwbbp0qWL48Wc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FalVq5ZvW+3Gy5s3r6xevdou63mpUqUsaHLVrVtXTp8+LZs3b46DewMAAOKzOM04VaxYUSZPnixFihSxbra3335bqlatKps2bZJDhw5ZxihjxowB19EgSdcpPfcPmtz17rroXLp0yU4uDbQAAADu6MCpfv36vv9Lly5tgVS+fPnk66+/llSpUoXsdgcNGmRBGgAAQFh11fnT7NK9994rO3futLqny5cvy8mTJwO20aPq3JooPY94lJ17Oaq6KVfv3r2thso97du3LyT3BwAAxC93VOB09uxZ+fPPPyVnzpxSoUIFOzpuyZIlvvXbtm2zGqjKlSvbZT3fuHGjHDlyxLfN4sWLJX369FK8ePFobydFihS2jf8JAADgju6qe/311+Wxxx6z7rkDBw5I//79JUmSJPL000/b8APt2rWTbt26SebMmS246dy5swVLekSdqlOnjgVIzz33nAwZMsTqmvr27WtjP2lwBAAAEG8Cp/3791uQdOzYMcmaNatUqVLFhhrQ/9Xw4cMlceLENvClFnPrEXNjx471XV+DrLlz50qHDh0soEqTJo20bt1aBgwYEIf3CgAAxFeJHMdxJIHTo+o0w6X1TqHotsvfa16s7xNIKPYMbhjXTQAQz50OIg64o2qcAAAA7mQETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROAAAAHhE4AQAAeETgBAAA4BGBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROAAAAHhE4AQAAeETgBAAA4BGBEwAAgEcETgAAAB4ROAEAAHhE4AQAAOARgRMAAECoAqcLFy7I+fPnfZf/+usvGTFihCxatCjYXQEAAMTvwKlRo0YydepU+//kyZNSsWJFGTp0qC0fN25cKNoIAAAQnoHTunXrpGrVqvb/N998I9mzZ7eskwZTI0eODEUbAQAAwjNw0m66dOnS2f/aPdekSRNJnDixVKpUyQIoAACA+CrowKlQoUIyZ84c2bdvnyxcuFDq1Kljy48cOSLp06cPRRsBAADCM3Dq16+fvP7665I/f36rb6pcubIv+1SuXLlQtBEAAOCOkDTYKzRr1kyqVKkiBw8elDJlyviW16xZU5544onYbh8AAEB4Bk5X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wElHB9ficD2dOXPGlmkgBQAAEN/FaBwnFwETAABISIIuDgcAAEioCJwAAAA8InACAAAIReB05coVqVmzpuzYsSOYqwEAACS8wClZsmTy+++/h641AAAA8amr7tlnn5WJEyeGpjUAAADxaTiCq1evymeffSbfffedVKhQQdKkSROwftiwYbHZPgAAgPANnDZt2iTly5e3/7dv3x5pcEwAAID4KujAadmyZaFpCQAAQHwdjmDnzp2ycOFCuXDhgl12HCc22wUAABD+gdOxY8dsSIJ7771XGjRoIAcPHrTl7dq1k9deey0UbQQAAAjPwEkn99VhCfbu3SupU6f2LW/evLksWLAgttsHAAAQvjVOixYtsi663LlzBywvXLiw/PXXX7HZNgAAgPDOOJ07dy4g0+Q6fvy4pEiRIrbaBQAAEP6BU9WqVWXq1KkBQxBcv35dhgwZItWrV4/t9gEAAIRvV50GSFoc/uuvv8rly5elR48esnnzZss4rVy5MjStBAAACMeMU8mSJW3gyypVqkijRo2s665Jkyby22+/ScGCBUPTSgAAgDtA0BknlSFDBnnjjTdivzUAAADxLXA6ceKETfS7detWu1y8eHFp27atZM6cObbbBwAAEL5ddcuXL5f8+fPLyJEjLYDSk/5foEABWwcAABBfBZ1x6tixow12OW7cOEmSJIktu3btmrz88su2buPGjaFoJwAAQPhlnHSOOp1axQ2alP7frVs3WwcAABBfBR04lS9f3lfb5E+XlSlTJqh9DRo0SO6//35Jly6dZMuWTRo3bizbtm0L2ObixYuWycqSJYukTZtWmjZtKocPHw7YRqd/adiwoQ3Mqfvp3r27XL16Ndi7BgAAcOtddb///rvv/1deeUW6dOli2aVKlSrZsjVr1siYMWNk8ODBEowffvjBgiINnjTQ6dOnj9SpU0e2bNkiadKk8c2NN2/ePJkxY4YdzdepUycb/sAdM0q7CTVoypEjh6xatcomHW7VqpXNpzdw4MCg2gMAAHAjiRzHcW6alkqc2EYIv9mmuo0GMjF19OhRyxhpQPXwww/LqVOnJGvWrPLll19Ks2bNbJs//vhDihUrJqtXr7bAbf78+fLoo4/KgQMHJHv27LbN+PHjpWfPnra/5MmT3/R2T58+bUGZ3l769OkltuXvNS/W9wkkFHsGN5T4hM8D4M77PAgm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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1793,71 +1807,54 @@ } ], "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Set a general style for plots\n", - "#plt.style.use('seaborn-whitegrid')\n", - "\n", - "plt.figure(figsize=(8, 5))\n", - "plt.hist(df['Age'].dropna(), bins=30, color='skyblue', edgecolor='black', density=True, alpha=0.6, label='Histogram')\n", - "\n", + "# Get counts of each survival class\n", + "index = df[\"Survived\"].value_counts().index\n", + "values = df[\"Survived\"].value_counts().values\n", "\n", - "from scipy.stats import gaussian_kde\n", - "# gaussian_kde: A class for performing kernel density estimation.\n", - "# It is a non-parametric way to estimate the probability density function of a random variable.\n", - "# It is a useful tool for visualizing the distribution of data points in a dataset.\n", - "kde = gaussian_kde(df['Age'].dropna())\n", - "age_range = np.linspace(df['Age'].min(), df['Age'].max(), 100)\n", - "plt.plot(age_range, kde(age_range), color='red', label='KDE')\n", + "plt.figure(figsize=(6, 4))\n", + "plt.bar(index, values)\n", "\n", + "plt.xlabel(\"Survival (0 = No, 1 = Yes)\")\n", + "plt.ylabel(\"Number of Passengers\")\n", + "plt.title(\"Passenger Survival Counts\")\n", + "plt.xticks(index, labels=[\"Did Not Survive\", \"Survived\"])\n", "\n", - "plt.title('Distribution of Age with KDE')\n", - "plt.xlabel('Age')\n", - "plt.ylabel('Density')\n", - "plt.legend()\n", "plt.tight_layout()\n", - "plt.show()\n" + "plt.show()" ] }, { "cell_type": "markdown", - "id": "9ca955e1", + "id": "3b89e5f3", "metadata": {}, "source": [ - "2. Boxplot\n", - "\n", - "Purpose: Great for comparing numeric distributions across categories and spotting outliers.\n", + "**Numerical Variables Distribution: `Age`**\n", "\n", - "- A boxplot (or whisker plot) summarizes a numeric variable using five key numbers:\n", + "To understand the spread and shape of the data, we visualize the distribution of the Age feature using a histogram combined with a Kernel Density Estimate (KDE):\n", "\n", - " Minimum - 1st quartile (Q1) - Median (Q2) - 3rd quartile (Q3) - Maximum\n", + "- The histogram shows how passenger ages are distributed across intervals. It highlights concentrations of values — for example, many passengers appear to be between 20 and 40 years old.\n", + "- The KDE curve (in red) offers a smooth approximation of the underlying distribution. Unlike the rigid bins of a histogram, KDE helps us see the overall shape and continuity of the data — such as skewness or multiple peaks.\n", "\n", - "It also shows outliers (points outside 1.5×IQR).\n", + "This kind of plot is valuable for:\n", "\n", - "Use case:\n", + "- Identifying common age ranges\n", + "- Detecting skewed distributions or multi-modal trends\n", + "- Spotting areas where data is sparse, which may influence model performance\n", "\n", - "- Compare Age by Survived, Fare by Pclass, etc." + "By combining histogram and KDE, we get both discrete and continuous perspectives on the same feature, making it easier to decide on transformations (e.g., normalization, binning) or whether age should be treated differently in model pipelines." ] }, { "cell_type": "code", - "execution_count": 18, - "id": "5c605b8c", + "execution_count": 96, + "id": "ee827da3", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\andre\\AppData\\Local\\Temp\\ipykernel_2328\\3667786941.py:4: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.\n", - " plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n" - ] - }, { "data": { - "image/png": "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GVG8eHHzReJrOnr1tGnTTHDwpKHiP//5j6xatUpWrlwp69atkyeeeOKyMDhlypRcLjGAvKZ79+7y66+/ynvvvSd//vmnfPrpp9K6dWs5fvy41bHr4sWLV11PT8w1yGT2AlVOmDp1qvTo0cMc/x36fdOqVSvz3ZcePR7/8MMP5pgMZDu9jwUQaPr27evq1KmTKyoqyjVs2DD3/GXLlul9W7zW/fjjj1316tVzBQcHu6pUqeKaMGGCe9ltt91m1vec0qLbLVSokOvChQvplmnevHmu8PDwy17nuc0RI0a4brjhBtecOXNcVatWdQUFBbneeecdV4UKFVyXLl3yeu3dd9/teuSRR7xep7766itXSEiI68SJE17rP/300642bdq4n3///feuVq1auYoUKeKqVKmSa9CgQa5Tp065l8fHx5vPUJdrWRYuXGg+n0mTJqX7Hn/++WdXgQIFXImJie5527ZtM+9Rlzm++OIL897+/vtv97y//vrLrLdr1650tw8gf9Pjmh4n1qxZk+46e/fuNev8+uuvl73uu+++M8/1UZ9//vnnrkaNGrkKFy5sjrU6b/v27V7bmzhxoqt69eper9PtJSQkmOOjbsPT0qVLXcWLF3edPn3aPN+/f7+rR48e5vhfqlQpc+zWMjouXrzoGjJkiFleunRp85310EMPubp06ZLue9TX6PorV67M8GfgSb8LXnrppXS3D2QVNRYIWAULFjRtT/WqzoEDB9JcZ/PmzdKzZ0/p1auX/PHHH6avwssvvyzz5893VytXqlRJRo4caaq/dUqLXsHSq13Lli0zV75s7Nq1Sz755BOzb63G1itSeiXuu+++82papP0S9MpTalpzos2NdBuOS5cuyYcffuhef/fu3ab5kV75+/33380yvYI1cOBArxqEuLg4s9+PP/5YZsyYcdVmXd9//73Url1bSpQo4Z4XExNjynPTTTe557Vr104KFCggGzdudM/TZg0RERFmGwCQFr06r5M2a01OTrbe3osvvmiazGot87333muOU6mbZOrzBx544LLXatPOTp06yaJFiy5bX/tHFC1aVC5cuGCaaekxUY9t2lxLy6/HX6dG+q233jLfOe+++645DuvxXb9LrkSP2wkJCV7H1cy4+eabOdYiRxAsENDuuece0yl4xIgRaS6fOHGiORHXMKEnxHoyrSfX48ePN8u1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", + "image/png": "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8/seHR2tUqdJCjV5PwsVKoTRo0fHK/FlNe/5S2tTkEUsXrzY4Orqapg9e7bh33//NfTo0cOQKVMmw82bNw16sn79esNnn31mWLFihSp/8vvvv8e7fezYsQYvLy/DypUrDYcPHza8/fbbhgIFChjCw8MNtqxBgwaGOXPmGI4dO2Y4dOiQoVGjRoa8efMaQkNDY4/54IMPDHny5DFs2rTJEBQUZKhSpYqhWrVqBlu3evVqw7p16wynT582nDp1yjB06FBV+k9eCz2fd0J79+415M+f31CqVClD3759Y/fr9fylFGPx4sUN169fj91u376t+/MW9+7dM+TLl8/QuXNnw549ewznz583bNy40XD27Fndf9fdunUr3nseGBiovuu3bNmi6/f9q6++Mnh7exvWrl1ruHDhgmHZsmWG9OnTGyZPnmx17zkDuzQitW8//PDD2OvR0dGGnDlzGsaMGWPQq4SBXUxMjMHX19cwfvz42H0PHjwwuLm5GRYtWmTQE/nyk/Pftm1b7HlKsCNfBiYnTpxQx+zatcugN5kzZzbMnDnTbs770aNHBj8/P/VLrlatWrGBnZ7PXwK70qVLm71Nz+ctBg0aZKhRo0ait9vTd5181gsVKqTOWc/ve+PGjQ1du3aNt6958+aG9957z+recw7FpoHIyEjs379fdcuaSNJlub5r1y7YiwsXLqgk1HFfBymRIsPSensdQkJC1M8sWbKon/L+R0VFxTt3GbbKmzevrs5dhiukGowkCJchWXs5bxl6kko4cc9T6P38ZZhJpl0ULFgQ7733nkoobw/nvXr1alUtSfKpytSLsmXLYsaMGXb3XSe/2+bPn4+uXbuq4Vg9v+/VqlVTpUpPnz6trh8+fBj//PMP3nzzTat7z60iQbHe3blzR/3CM1XTMJHrJ0+ehL2QD70w9zqYbtMDqXcsc6yqV68eWxFFzk9qIyesQayXcz969KgK5GR+jcyr+f3331GsWDEcOnRI1+ctJJA9cOAA9u3b99xten7f5RfW3Llz4e/vj+vXr+Pzzz9HzZo1cezYMV2ftzh//ryaWyolMaUCkrz3H3/8sTpnKZFpL991Modaqjt17txZXdfz+z548GBVd14CVScnJ/U7/auvvlJ/0Ahres8Z2BGlQu+N/HKTv+bshfxylyBOeiqXL1+ufrlt27YNenf58mVVvzowMNDu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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1865,53 +1862,54 @@ } ], "source": [ - "plt.figure(figsize=(8, 5))\n", - "survived_0 = df[df['Survived'] == 0]['Age'].dropna()\n", - "survived_1 = df[df['Survived'] == 1]['Age'].dropna()\n", - "plt.boxplot([survived_0, survived_1], labels=['Not Survived (0)', 'Survived (1)'], patch_artist=True,\n", - " boxprops=dict(facecolor='lightblue'), medianprops=dict(color='red'))\n", + "age_data = df['Age'].dropna()\n", "\n", - "plt.title('Boxplot of Age by Survival')\n", - "plt.ylabel('Age')\n", + "# Create a histogram of ages\n", + "plt.hist(age_data, bins=100, edgecolor='black', density=True)\n", + "\n", + "# Apply Kernel Density Estimation to smooth the age distribution\n", + "# gaussian_kde: A class for performing kernel density estimation.\n", + "# It is a non-parametric way to estimate the probability density function of a random variable.\n", + "# It is a useful tool for visualizing the distribution of data points in a dataset.\n", + "kde = gaussian_kde(age_data) \n", + "age_range = np.linspace(age_data.min(), age_data.max(), 100)\n", + "kde_values = kde(age_range)\n", + "\n", + "# Plot the KDE curve on top of the histogram\n", + "plt.plot(age_range, kde_values, color='red', label='KDE')\n", + "\n", + "\n", + "plt.title('Distribution of Age with KDE')\n", + "plt.xlabel('Age')\n", + "plt.ylabel('Density')\n", + "plt.legend()\n", "plt.tight_layout()\n", - "plt.show()\n" + "plt.show()" ] }, { "cell_type": "markdown", - "id": "23a6352c", + "id": "008f3705", "metadata": {}, "source": [ - "3. Count Plot (Bar Plot for Categories)\n", + "**Categorical Features Distribution**\n", "\n", - "Purpose: Displays the frequency of each category in a variable (like value_counts, but visual).\n", - "\n", - "Use case:\n", + "Visualizing categorical variables helps us understand the composition and potential impact of each category on the target variable. By plotting count distributions, we can quickly detect:\n", "\n", - "- Visualize distributions of:\n", - "\n", - " Sex - Pclass - Embarked - Survived" + "- Imbalances between categories (e.g., more males than females)\n", + "- Dominant groups within features like Sex, Pclass, Embarked, etc.\n", + "- Potential patterns or groupings relevant for modeling and feature engineering" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "id": "69ca462b", "metadata": {}, "outputs": [ { "data": { - "image/png": "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b2666p599lnZunWrzJgxwyxOkdbAgQPlL3/5i6mD0iD19ttvm5FynTt3drdQtWvXzt3Fd+XKFYmMjDSF4zYj6gAAAHLMueoWL15sao4OHjxogtHgwYPdo+o8J8DUMKUtSy1atJBp06ZJjRo13Ptot5yGJc8JMPWEorYTYGorlhaJa70T3XYAAOQuSbeRA3wenLIDghMAALlX0m3kAM5VBwAAYIngBAAAYIngBAAAYIngBAAAkBOmI8gtdELPM2fO+PowgBypdOnSUqlSJV8fBgAYBKe7EJpq16olly5f9vWhADlSoYIF5aeffyY8AcgWCE5ZTFuaNDTN6NpVapQu7evDAXKUX86ckb5ffml+jwhOALIDgtNdoqGpITOZAwCQo1EcDgAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAYIngBAAAkBOC08iRIyUgIMBrqVWrlnt7cnKyRERESKlSpaRIkSLSrVs3iYuL87qP48ePS4cOHaRQoUJSpkwZGTJkiFy9etUHzwYAAPi7IF8fwP333y+rVq1yXw8K+r9DGjRokCxZskQWLFggwcHBEhkZKV27dpUNGzaY7deuXTOhKSQkRDZu3CgnT56UF154QfLmzStjx471yfMBAAD+y+fBSYOSBp+0EhMTZebMmTJv3jxp1aqVWTd79mypXbu2bN68WZo2bSorVqyQ/fv3m+BVtmxZadiwoYwZM0aGDh1qWrPy5cvng2cEAAD8lc9rnA4ePCjly5eXqlWrynPPPWe63tSOHTvkypUr0qZNG/e+2o1XqVIl2bRpk7mul/Xq1TOhyREWFiZJSUmyb98+HzwbAADgz3za4vTwww/LnDlzpGbNmqabbdSoUfLII4/I3r175dSpU6bFqHjx4l630ZCk25ReeoYmZ7uzLSMpKSlmcWjQAgAAyNbBqX379u6f69evb4JUaGiofP7551KwYMEse9zo6GgT0gAAAHJUV50nbV2qUaOGHDp0yNQ9paamSkJCgtc+OqrOqYnSy7Sj7Jzr6dVNOaKiokwNlbPExsZmyfMBAAD+JVsFpwsXLsjhw4elXLly0qhRIzM6LiYmxr39wIEDpgaqWbNm5rpe7tmzR+Lj4937rFy5UooVKyZ16tTJ8HHy589v9vFcAAAAsnVX3WuvvSYdO3Y03XMnTpyQESNGSJ48eaRnz55m+oHevXvL4MGDpWTJkibc9O/f34QlHVGn2rZtawJSr169ZPz48aauadiwYWbuJw1HAAAAfhOcfv31VxOSzp49K/fcc4+0aNHCTDWgP6uJEydKYGCgmfhSi7l1xNy0adPct9eQtXjxYunXr58JVIULF5bw8HAZPXq0D58VAADwVz4NTvPnz7/p9gIFCsjUqVPNkhFtrVq6dGkWHB0AAEA2rnECAADIzghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAlghOAAAAOS04jRs3TgICAmTgwIHudcnJyRIRESGlSpWSIkWKSLdu3SQuLs7rdsePH5cOHTpIoUKFpEyZMjJkyBC5evWqD54BAADwd9kiOG3btk3+/ve/S/369b3WDxo0SL755htZsGCBrFu3Tk6cOCFdu3Z1b7927ZoJTampqbJx40aZO3euzJkzR4YPH+6DZwEAAPydz4PThQsX5LnnnpOPPvpISpQo4V6fmJgoM2fOlAkTJkirVq2kUaNGMnv2bBOQNm/ebPZZsWKF7N+/Xz799FNp2LChtG/fXsaMGSNTp041YQoAAMCvgpN2xWmrUZs2bbzW79ixQ65cueK1vlatWlKpUiXZtGmTua6X9erVk7Jly7r3CQsLk6SkJNm3b99dfBYAACA3CPLlg8+fP1927txpuurSOnXqlOTLl0+KFy/utV5Dkm5z9vEMTc52Z1tGUlJSzOLQoAUAAJBtW5xiY2Pl1Vdflc8++0wKFChwVx87OjpagoOD3UvFihXv6uMDAICcyWfBSbvi4uPj5cEHH5SgoCCzaAH45MmTzc/acqR1SgkJCV6301F1ISEh5me9TDvKzrnu7JOeqKgoU0PlLBriAAAAsm1wat26tezZs0d27drlXho3bmwKxZ2f8+bNKzExMe7bHDhwwEw/0KxZM3NdL/U+NIA5Vq5cKcWKFZM6depk+Nj58+c3+3guAAAA2bbGqWjRolK3bl2vdYULFzZzNjnre/fuLYMHD5aSJUuacNO/f38Tlpo2bWq2t23b1gSkXr16yfjx401d07Bhw0zBuYYjAAAAvykOv5WJEydKYGCgmfhSi7l1xNy0adPc2/PkySOLFy+Wfv36mUClwSs8PFxGjx7t0+MGAAD+KVsFp7Vr13pd16JxnZNJl4yEhobK0qVL78LRAQCA3M7n8zgBAADkFAQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAAAASwQnAACArAxOVatWlbNnz96wPiEhwWwDAADwR3cUnI4dOybXrl27YX1KSor89ttvmXFcAAAA2U7Q7ez873//2/3z8uXLJTg42H1dg1RMTIxUrlw5c48QAAAgJwanzp07m8uAgAAJDw/32pY3b14Tmt57773MPUIAAICcGJyuX79uLqtUqSLbtm2T0qVLZ9VxAQAA5Ozg5Dh69GjmHwkAAIA/Biel9Uy6xMfHu1uiHLNmzcqMYwMAAMj5wWnUqFEyevRoady4sZQrV87UPAEAAPi7OwpO06dPlzlz5kivXr0y/4gAAAD8aR6n1NRUad68eeYfDQAAgL8Fp5deeknmzZuX+UcDAADgb111ycnJMmPGDFm1apXUr1/fzOHkacKECZl1fAAAADk7OP3444/SsGFD8/PevXu9tlEoDgAZO378uJw5c8bXhwHkSKVLl5ZKlSrlvOC0Zs2azD8SAMgFoal27dpy6dIlXx8KkCMVKlRIfvrpJ5+GpzuexwkAcHu0pUlD06t/+0AqVK3m68MBcpRfjxySSUMize9RjgtOjz/++E275FavXm11Px9++KFZjh07Zq7ff//9Mnz4cGnfvr27lurPf/6zzJ8/X1JSUiQsLEymTZsmZcuW9fofXL9+/UwrWJEiRcw59KKjoyUoiEwIIHvS0FT1/vq+PgwAd+CO0oVT3+S4cuWK7Nq1y9Q7pT35781UqFBBxo0bJ9WrVxeXyyVz586VTp06yQ8//GBC1KBBg2TJkiWyYMECCQ4OlsjISOnatats2LDB3P7atWvSoUMHCQkJkY0bN8rJkyflhRdeMMXqY8eOvZOnBgAAkLnBaeLEiemuHzlypFy4cMH6fjp27Oh1/a9//atpgdq8ebMJVTNnzjTTHrRq1cpsnz17tqkP0O1NmzaVFStWyP79+83oPm2F0kA3ZswYGTp0qDmWfPny3cnTAwAAyLx5nDLy/PPP3/F56rT1SLvkLl68KM2aNZMdO3aYlqw2bdq496lVq5bp19y0aZO5rpf16tXz6rrT7rykpCTZt29fJjwjAACA/5OphUAaZAoUKHBbt9mzZ48JSlrPpDVKixYtkjp16piuP20xKl68uNf+GpJOnTplftZLz9DkbHe2ZUTrpXRxaNACAADIkuCkdUaetD5J64u2b98ub7/99m3dV82aNU1ISkxMlIULF5oaqXXr1klW0uJxPVExAABAlgcnLdT2FBgYaALQ6NGjpW3btrd1X9qqVK3a/x+W26hRI9m2bZtMmjRJunfvbs6Jl5CQ4NXqFBcXZ4rBlV5u3brV6/50u7MtI1FRUTJ48GCvFqeKFSve1nEDAIDc546CkxZpZ5Xr16+bbjQNUTo6LiYmRrp162a2HThwwEw/oF17Si+1oDw+Pl7KlClj1q1cuVKKFStmuvsykj9/frMAAADctRonLeDWGTyVTh/wwAMP3NbtteVH52zSgu/z58+bEXRr166V5cuXm1at3r17m5ahkiVLmjDUv39/E5Z0RJ3S1i0NSL169ZLx48ebuqZhw4ZJREQEwQgAAGSP4KQtPD169DAhx+lG0y41nRhTR8bdc8891vej8y5pfZQGJT1hsIamJ554wj3tgXYDaouT5wSYjjx58sjixYvNBJgaqAoXLmxqpLTLEAAAIFsEJ2350RYiHfKv8yopnU9JQ8uAAQPkn//8p9X96DxNN6Mj9KZOnWqWjISGhsrSpUtv8xkAAADcpeC0bNkyM+mkE5qUdplpwLnd4nAAAAC/ngBTC7i1cDstXafbAAAA/NEdBSc9Bcqrr74qJ06ccK/77bffzLnlWrdunZnHBwAAkLOD0wcffGDmPqpcubLcd999ZqlSpYpZN2XKlMw/SgAAgJxa46STRe7cudPUOf38889mndY7eZ5XDgAAIFe3OK1evdoUgWvLUkBAgJk2QEfY6dKkSRMzl9P69euz7mgBAABySnB6//33pU+fPmYyyrR0HqaXX35ZJkyYkJnHBwAAkDOD0+7du6Vdu3YZbtepCHQ2cQAAAMntwUlPoJveNASOoKAgOX36dGYcFwAAQM4OTvfee6/s3bs3w+0//vijlCtXLjOOCwAAIGcHpyeffFLefvttSU5OvmHb5cuXZcSIEfLUU09l5vEBAADkzOkIhg0bJl9++aXUqFFDIiMjpWbNmma9Tkmgp1u5du2avPXWW1l1rAAAADknOJUtW1Y2btwo/fr1k6ioKHG5XGa9Tk0QFhZmwpPuAwAA4I9uewLM0NBQWbp0qfznP/+RQ4cOmfBUvXp1KVGiRNYcIQAAQE6eOVxpUNJJLwEAAHKLOzpXHQAAQG5EcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAALBEcAIAAMgJwSk6OlqaNGkiRYsWlTJlykjnzp3lwIEDXvskJydLRESElCpVSooUKSLdunWTuLg4r32OHz8uHTp0kEKFCpn7GTJkiFy9evUuPxsAAODvfBqc1q1bZ0LR5s2bZeXKlXLlyhVp27atXLx40b3PoEGD5JtvvpEFCxaY/U+cOCFdu3Z1b7927ZoJTampqbJx40aZO3euzJkzR4YPH+6jZwUAAPxVkC8ffNmyZV7XNfBoi9GOHTvk0UcflcTERJk5c6bMmzdPWrVqZfaZPXu21K5d24Stpk2byooVK2T//v2yatUqKVu2rDRs2FDGjBkjQ4cOlZEjR0q+fPl89OwAAIC/yVY1ThqUVMmSJc2lBihthWrTpo17n1q1akmlSpVk06ZN5rpe1qtXz4QmR1hYmCQlJcm+ffvSfZyUlBSz3XMBAADIMcHp+vXrMnDgQPnd734ndevWNetOnTplWoyKFy/uta+GJN3m7OMZmpztzraMaquCg4PdS8WKFbPoWQEAAH+SbYKT1jrt3btX5s+fn+WPFRUVZVq3nCU2NjbLHxMAAOR8Pq1xckRGRsrixYvlu+++kwoVKrjXh4SEmKLvhIQEr1YnHVWn25x9tm7d6nV/zqg7Z5+08ufPbxYAAIAc0+LkcrlMaFq0aJGsXr1aqlSp4rW9UaNGkjdvXomJiXGv0+kKdPqBZs2amet6uWfPHomPj3fvoyP0ihUrJnXq1LmLzwYAAPi7IF93z+mIua+//trM5eTUJGndUcGCBc1l7969ZfDgwaZgXMNQ//79TVjSEXVKpy/QgNSrVy8ZP368uY9hw4aZ+6ZVCQAA+E1w+vDDD83lY4895rVepxx48cUXzc8TJ06UwMBAM/GljobTEXPTpk1z75snTx7TzdevXz8TqAoXLizh4eEyevTou/xsAACAvwvydVfdrRQoUECmTp1qloyEhobK0qVLM/noAAAAsumoOgAAgOyO4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAGCJ4AQAAJATgtN3330nHTt2lPLly0tAQIB89dVXXttdLpcMHz5cypUrJwULFpQ2bdrIwYMHvfY5d+6cPPfcc1KsWDEpXry49O7dWy5cuHCXnwkAAMgNfBqcLl68KA0aNJCpU6emu338+PEyefJkmT59umzZskUKFy4sYWFhkpyc7N5HQ9O+fftk5cqVsnjxYhPG+vbtexefBQAAyC2CfPng7du3N0t6tLXp/fffl2HDhkmnTp3Muo8//ljKli1rWqZ69OghP/30kyxbtky2bdsmjRs3NvtMmTJFnnzySXn33XdNSxYAAIDf1zgdPXpUTp06ZbrnHMHBwfLwww/Lpk2bzHW91O45JzQp3T8wMNC0UGUkJSVFkpKSvBYAAIAcG5w0NCltYfKk151telmmTBmv7UFBQVKyZEn3PumJjo42IcxZKlasmCXPAQAA+JdsG5yyUlRUlCQmJrqX2NhYXx8SAADIAbJtcAoJCTGXcXFxXuv1urNNL+Pj4722X7161Yy0c/ZJT/78+c0oPM8FAAAgxwanKlWqmPATExPjXqe1SFq71KxZM3NdLxMSEmTHjh3ufVavXi3Xr183tVAAAAB+M6pO51s6dOiQV0H4rl27TI1SpUqVZODAgfKXv/xFqlevboLU22+/bUbKde7c2exfu3ZtadeunfTp08dMWXDlyhWJjIw0I+4YUQcAAPwqOG3fvl0ef/xx9/XBgweby/DwcJkzZ468/vrrZq4nnZdJW5ZatGhhph8oUKCA+zafffaZCUutW7c2o+m6detm5n4CAADwq+D02GOPmfmaMqKziY8ePdosGdHWqXnz5mXREQIAAOSAGicAAIDshuAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAABgieAEAACQ24LT1KlTpXLlylKgQAF5+OGHZevWrb4+JAAA4Gf8Ijj961//ksGDB8uIESNk586d0qBBAwkLC5P4+HhfHxoAAPAjfhGcJkyYIH369JE//vGPUqdOHZk+fboUKlRIZs2a5etDAwAAfiTHB6fU1FTZsWOHtGnTxr0uMDDQXN+0aZNPjw0AAPiXIMnhzpw5I9euXZOyZct6rdfrP//8c7q3SUlJMYsjMTHRXCYlJWX68V24cMFc7j55Ui6mpmb6/QP+7NDZs+7fo6z4/bzbnL8Hh/fvkeRLF319OECO8tuxI1n298C5P5fL5f/B6U5ER0fLqFGjblhfsWLFLHvMV7/5JsvuG/B3LVu2FH8y/e0hvj4EIMdqmYV/D86fPy/BwcH+HZxKly4tefLkkbi4OK/1ej0kJCTd20RFRZlicsf169fl3LlzUqpUKQkICMjyY0b2of/L0MAcGxsr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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMllJREFUeJzt3Ql4FGW2//GTsISwhU0CaFhUlrCPgIA6qCGyiAgDOqCI0YvoMIACV+RG2YRREBUUBwS9SFBgUBxRYZAdlBFQFlEIi+CgRJYERMIiWYD+P+f8p/p2hwQKJqGTzvfzPDXdXVXd/Valx/7xvqfeDvF4PB4BAADAJYVeehcAAAAoghMAAIBLBCcAAACXCE4AAAAuEZwAAABcIjgBAAC4RHACAABwieAEAADgEsEJAADAJYITAORzo0ePlpCQEDl69KjkF2vWrLE26S1QmBCcgDyWkJBgXzDOUqJECalTp44MGDBAkpOTA928oLRgwQLp2LGjVKpUSYoXLy7VqlWTP/7xj7Jq1SrJDw4ePGhhaOvWrZIf5ffzBwRS0YC+O1CIjBkzRmrVqiVpaWnyz3/+U958801ZvHixbN++XUqWLBno5gUF/enN//qv/7Kw+rvf/U6GDBkiVapUkUOHDlkYaNu2rXz55Zdyyy23BDw4Pf/881KzZk1p2rSp5BcF5fwBgURwAq4S/Rd88+bN7f5jjz0mFStWlIkTJ8onn3wiDzzwQKCbVyCcP39eMjIyrNcuO6+++qp96Q8aNMjOrfbwOZ577jl57733pGhR/rOXE84fcGkM1QEBEhMTY7f79u2z21deecX+Ja+BKjw8XJo1ayYffvjhBc9bvny53HbbbVKuXDkpXbq01K1bV5599lm/fd544w1p0KCB9WSVL1/eAtvcuXP99jlw4ID1LkRGRkpYWJjt/84772Rbx/LBBx/ICy+8INddd52FFu152Lt37wVtmzJlilx//fXW/ptvvlnWrl0rd9xxhy2+0tPTZdSoUXLjjTfae0dFRckzzzxj633pe+uQ5pw5c6x9uu+SJUuyPZ9nzpyRcePGSb169exc+n7pO3r37m3tcvzrX/+S+++/XypUqGDnqlWrVvKPf/wj26HWH3/88ZI1PnqcDRs2lB07dsidd95pr3nttdfKhAkT/J7XokULu//oo496h3D1fS5Fa5x0yKxs2bL2OXnqqaesB9Nx++23S5MmTbJ9rn5O2rdvn+NrX8n5y0r/3no+q1ev7v27Dh482F7b1+HDh+3Y9fOk+1WtWlW6dOnid443bdpk7dXhQv08aW+tfl6BQOOfDkCA/PDDD3arX4Dq9ddfl3vvvVd69eplvSrz5s2zL6FFixZJp06dbJ/ExES55557pHHjxjb0p186GmB0+MTx9ttvy5NPPin33Xef94v1u+++k6+++koefPBB20drqzQkOMHkmmuukc8++0z69OkjJ06csB4HX+PHj5fQ0FB5+umnJTU11YKAtlNf06FDj/pav//97+3LUr8Eu3btasFNvyB9e430OHW48vHHH5fo6GjZtm2bTJo0Sb7//nv5+OOP/d5b62o0uOlr65eoDm9lR1/v2LFj1vYiRYpc8vzrOdCg+ttvv9n50r/DrFmzrG0aWP/whz/Ilfj111+lQ4cO0q1bNws5+lrDhg2TRo0aWa+jHq/+7UaOHGnHr+dLuRn+0tfT49eAs2HDBpk8ebK937vvvusNNn379rXhXw1wjo0bN9q5HT58eI6vfbnnLzvz58+389mvXz87n19//bWF+J9//tm2Obp3726f5YEDB9rxpKSk2D8I9u/f733crl07+1z+z//8j/0jQT9PH3300RW1C8hVHgB5aubMmR79v9qKFSs8R44c8SQlJXnmzZvnqVixoic8PNzz888/236//fab3/MyMjI8DRs29MTExHjXTZo0yV5LXycnXbp08TRo0OCiberTp4+natWqnqNHj/qt79mzpyciIsLbltWrV9v7RUdHe9LT0737vf7667Z+27Zt9li36fG0aNHCk5mZ6d0vISHB9rv99tu969577z1PaGioZ+3atX7vPW3aNNv3yy+/9K7Tx7pvYmLiRY/Ht00LFizwuDFo0CDb37cdJ0+e9NSqVctTs2ZNz7lz5/z+fvv27fN7vnNu9Nahx6nr3n33Xe86PTdVqlTxdO/e3btu48aNtp++thujRo2y/e+9916/9X/+859t/bfffmuPjx8/7ilRooRn2LBhfvs9+eSTnlKlSnlOnTqVa+cvu+PP+hlW48aN84SEhHh++ukne/zrr7/a815++eUcX1vboPvoeQLyG4bqgKskNjbW/gWtwxc9e/a0YTYtuNWhHKXDEQ7tRdCeHe2N2LJli3e9/stbaV2U9txkR/fRf+FrL0N2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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMbNJREFUeJzt3Qd4VFXex/F/QugldALSpUtTQIFFUUACAtJUYBXjLoKLBAVeEaJI3SXIKiAIsrjSVJYVXHQFkRKKSC+CFEXqSxRIUDYJIIR23+d/nufOOxMSOGQTJpl8P88zzMy9d2buFGZ+Oed/zg1yHMcRAAAA3FLwrTcBAACAIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBAABYIjgBQDY1evRoCQoKkl9++cXfuwLkGAQnwE/mzp1rfvTcU758+aRGjRoSGRkpcXFx/t69gLRkyRJp3769lCxZUvLkySPlypWTp556StasWSNZwcmTJ00Y2r17t2Ql169fl/nz58sDDzwgxYsXl8KFC5vP6rPPPitbtmzx9+4Bd1TInX04ACmNHTtWqlSpIpcuXZJvvvlG3nvvPfnyyy9l3759UqBAAX/vXkDQQ3L+8Y9/NGH13nvvlSFDhkhYWJicOnXKhKnWrVvLxo0bpXnz5n4PTmPGjJHKlStLw4YNJat46aWXZPr06dK5c2d5+umnJSQkRA4ePCjLly+XqlWrStOmTf29i8AdQ3AC/ExbQBo3bmwuP//881KiRAmZNGmSfP7559KrVy9/7162oC0ily9fNq12qXn77bdNaBo0aJB5bbWFz/X666/Lhx9+aMIAbqStnzNmzJC+ffvKrFmzfNZNmTJFzpw547d9A/yBrjogi2nVqpU5P3bsmDl/6623TEuIBqr8+fNLo0aNZPHixTfcbtWqVdKiRQspWrSoFCpUSGrWrCmvvfaazzbTpk2Te+65x7RkFStWzAS2BQsW+Gzz888/m9aZMmXKSN68ec32s2fP9tlm3bp1Jnx88skn8pe//EXKly9vQou23Bw+fPiGfdPWCm2Z0P2///77ZcOGDfLwww+bk7fk5GQZNWqUVKtWzTx2hQoV5NVXXzXLvelja5fmxx9/bPZPt/3qq69SfT0vXrwo0dHRUqtWLfNaeocmV+/evc1+uY4ePSpPPvmk6ZbS10pbVJYtW5ZqV+vx48dTfW303KXPs27dunLgwAF55JFHzH3eddddMnHiRJ/bNWnSxFz+wx/+4OnC1ce5Fa1x0i7HIkWKmM/Jyy+/bFowXS1btpQGDRqkelv9nISHh6d53/o51Ba73/3udzes0/0rXbq0z7KEhAQTUPW90/dF38s333zThFul96WvQalSpSQ+Pt5zOw2+9erVk7vvvlsuXLhwy+cM+At/YgFZzJEjR8y5/gCqd955Rx5//HHTRaI/LgsXLjQ/6kuXLpUOHTqYbfbv3y8dO3aU+vXrm64//cHSAKPdT67333/fdLk88cQTnh/W7777TrZu3Sq///3vPa0LGhLcYKI/btod06dPH0lKSjI/iN4mTJggwcHB8sorr0hiYqIJArqfep8u7XrU+3rwwQdl8ODBJmh06dLFBDcNXC79YdXnqd2V/fr1k9q1a8vevXtl8uTJ8uOPP8pnn33m89hal6TBTe9ba5a0eys1en9nz541+54rV65bvv76GmhQ/e2338zrpe/DvHnzzL5pYO3ataukx3/+8x9p166ddOvWzYQcva9hw4aZsKCtjvp89b0bOXKkef76eimb7kO9P33+GhC15mjq1Knm8bQuyQ2G2mKk3b8a4Fzbt283r+2IESPSvO9KlSqZ80WLFpnP3c26j/U105Cm4fuFF16QihUryqZNmyQqKsp0i2oLlX62NIjrZ/VPf/qT/Otf/zK31cCsn2MNkAULFryNVxa4wxwAfjFnzhxH/wuuXr3aOXPmjBMbG+ssXLjQKVGihJM/f37np59+Mtv99ttvPre7fPmyU7duXadVq1aeZZMnTzb3pfeTls6dOzv33HPPTfepT58+TtmyZZ1ffvnFZ3nPnj2d0NBQz76sXbvWPF7t2rWd5ORkz3bvvPOOWb53715zXdfp82nSpIlz5coVz3Zz584127Vs2dKz7MMPP3SCg4OdDRs2+Dz2zJkzzbYbN270LNPruu3+/ftv+ny892nJkiWOjUGDBpntvffj3LlzTpUqVZzKlSs7165d83n/jh075nN797XRc5c+T102f/58zzJ9bcLCwpzu3bt7lm3fvt1sp/dtY9SoUWb7xx9/3Gf5iy++aJbv2bPHXE9ISHDy5cvnDBs2zGe7l156ySlYsKBz/vz5mz7Os88+a+6vWLFiTteuXZ233nrL+f7772/Ybty4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5ylH2bnX3W1SExUVZWqo3JOGOAAAgCwbnFq3bi179+6V3bt3e06NGzc2heLu5dy5c0tMTIznNgcPHjTTDzRr1sxc13O9Dw1grlWrVkmRIkWkTp06aT523rx5zTbeJwAAgCxb41S4cGGpW7euz7KCBQuaOZvc5X369JEhQ4ZI8eLFTbgZOHCgCUtNmzY169u2bWsCUu/evWXixImmrmnEiBGm4FzDEQAAQMAUh9/K5MmTJTg42Ex8qcXcOmJuxowZnvW5cuWSpUuXSv/+/U2g0uAVEREhY8eO9et+AwCAwBTkOI4jOZyOqtMica13yoxuu8rDl2X4fQI5xfEJHfy9CwACXNJt5AC/z+MEAACQXRCcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAALBGcAAAAMjM4Va1aVX799dcblickJJh1AAAAgShdwen48eNy7dq1G5YnJyfLzz//nBH7BQAAkOWE3M7G//73vz2XV6xYIaGhoZ7rGqRiYmKkcuXKGbuHAAAA2TE4denSxZwHBQVJRESEz7rcuXOb0PT2229n7B4CAABkx+B0/fp1c16lShXZvn27lCxZMrP2CwAAIHsHJ9exY8cyfk8AAAACMTgprWfSU3x8vKclyjV79uyM2DcAAIDsH5zGjBkjY8eOlcaNG0vZsmVNzRMAAECgS1dwmjlzpsydO1d69+6d8XsEAAAQSPM4Xb58WZo3b57xewMAABBowen555+XBQsWZPzeAAAABFpX3aVLl2TWrFmyevVqqV+/vpnDydukSZMyav8AAACyd3D67rvvpGHDhubyvn37fNZRKA4AAAJVuoLT2rVrM35PACAHqDx8mb93Aci2jk/okD1rnAAAAHKidAWnRx55RFq1apXmydZ7771naqSKFCliTs2aNZPly5f71FINGDBASpQoIYUKFZLu3btLXFycz32cOHFCOnToIAUKFJDSpUvL0KFD5erVq+l5WgAAABnfVefWN7muXLkiu3fvNvVOKQ/+ezPly5eXCRMmSPXq1cVxHJk3b5507txZvv32W7nnnntk8ODBsmzZ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vHnzmlF43icAAIBsG5yqVKliwk9MTIxnmdYiae1Ss2bNzHU9T0hIkJ07d3q2WbNmjVy/ft3UQgEAAATMqDqdb+nw4cM+BeG7d+82NUoVK1aUQYMGyZ///GepXr26CVJvvPGGGSnXpUsXs33t2rWlXbt20rdvXzNlwZUrVyQyMtKMuGNEHQAACKjgtGPHDnnkkUc814cMGWLOIyIiZO7cufLqq6+auZ50XiZtWWrRooWZfiBfvnye23z88ccmLLVu3dqMpuvevbuZ+wkAACCjBTk6YVIOp12AOrpOC8Uzo96p8vBlGX6fQE5xfEIHCSR8HwBZ7/vgdnJAlq1xAgAAyGoITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAAJYITgAAADktOE2fPl0qV64s+fLlkwceeEC2bdvm710CAAABJiCC0z//+U8ZMmSIjBo1Snbt2iUNGjSQ8PBwiY+P9/euAQCAABIQwWnSpEnSt29f+cMf/iB16tSRmTNnSoECBWT27Nn+3jUAABBAsn1wunz5suzcuVPatGnjWRYcHGyub9682a/7BgAAAkuIZHO//PKLXLt2TcqUKeOzXK//8MMPqd4mOTnZnFyJiYnmPCkpKVP28Xryb5lyv0BOkFn/L/2F7wMg630fuPfrOE7gB6f0iI6OljFjxtywvEKFCn7ZHwBpC53i7z0AkFO+D86dOyehoaGBHZxKliwpuXLlkri4OJ/lej0sLCzV20RFRZlictf169fl7NmzUqJECQkKCsr0fUbWoX9laGCOjY2VIkWK+Ht3APgR3wc5l+M4JjSVK1fulttm++CUJ08eadSokcTExEiXLl08QUivR0ZGpnqbvHnzmpO3okWL3pH9RdakX5J8UQJQfB/kTKG3aGkKmOCktPUoIiJCGjduLPfff79MmTJFLly4YEbZAQAAZJSACE49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", "text/plain": [ "
" ] @@ -1924,17 +1922,35 @@ "# Count plot for Sex\n", "sex_counts = df['Sex'].value_counts()\n", "plt.figure(figsize=(6, 4))\n", - "plt.bar(sex_counts.index, sex_counts.values, color=['lightcoral', 'lightblue'], edgecolor='black')\n", + "plt.bar(sex_counts.index, sex_counts.values)\n", "plt.title('Passenger Count by Sex')\n", "plt.xlabel('Sex')\n", "plt.ylabel('Count')\n", "plt.tight_layout()\n", - "plt.show()\n", - "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "3bd5a2a3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAANBtJREFUeJzt3Ql4VOXZ//E7gRD2hDWAsqnsawUE1KJAZBEQCliwFKMvYqWAAhUxym4riAqKBUGLBBeKYkUEBWRVKqAsRSEIggVBWYIiYdEsJOe97uf/nvnPhGELSc7kyfdzXeNk5pyZ88zJyPxyP8uEOY7jCAAAAPK9cK8bAAAAgJxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwA4ACZvz48RIWFiY//vijhIp169aZNuk1gOwj2AH5TEJCgvkAdC9FixaV2rVry5AhQ+TYsWNeN89KixYtks6dO0v58uWlSJEiUqVKFfn9738va9askVBw+PBhE9a2b98uoSjUzx9gk8JeNwBA9kycOFFq1qwpKSkp8u9//1tefvll+eijj2Tnzp1SvHhxr5tnBf0q7f/5n/8xYfo3v/mNjBgxQipVqiRHjhwxYaV9+/by2Wefyc033+x5sJswYYLUqFFDmjZtKqEiv5w/wCYEOyCf0gpI8+bNzc8PPPCAlCtXTqZOnSqLFy+We+65x+vm5QuZmZmSlpZmqp7BPP/88yaUDBs2zJxbrZC6nnzySXnjjTekcGH+Gb0Qzh+Q9+iKBSzRrl07c71//35z/dxzz5lKiAa+YsWKSbNmzeTdd98973ErV66UW2+9VaKjo6VkyZJSp04deeKJJwL2eemll6RBgwamElimTBkTKOfPnx+wzw8//GCqMzExMRIZGWn2f+2114KOo3rnnXfkb3/7m1x77bUmVGnlZt++fee1bcaMGXLdddeZ9t90002yfv16uf32283FX2pqqowbN05uuOEGc+yqVavKY489Zu73p8fWLuu33nrLtE/3Xb58edDz+euvv8qkSZOkbt265lz6hxJX//79Tbtc//3vf+Xuu++WsmXLmnPVqlUr+fDDD4N2pR84cOCSY8z0dTZs2FB27dolbdu2Nc95zTXXyJQpUwIe16JFC/Pz/fff7+ui1+Ncio6x0y7R0qVLm/fJI488YirArttuu02aNGkS9LH6PunYseMFnzs75y8r/X3r+axWrZrv9zp8+HDz3P6OHj1qXru+n3S/ypUrS/fu3QPO8ZYtW0x7tTtY309a7db3K2Ab/lQCLPHtt9+aa/2AVi+++KLcdddd0q9fP1OVWrBggfmQXLp0qXTp0sXsk5iYKF27dpXGjRubrl39UNSApd1jrldffVUefvhh6d27t++D/6uvvpLPP/9c/vCHP5h9dGyfhhg3OFWoUEGWLVsmAwYMkFOnTpmKjb/JkydLeHi4PProo5KcnGyCirZTn9OlXcv6XL/97W/Nh7l+SPfo0cMES/0A96+66evU7ugHH3xQ6tWrJzt27JBp06bJN998I++//37AsXVclwZLfW79kNfuy2D0+U6cOGHaXqhQoUuefz0HGqR/+eUXc7709zBv3jzTNg3Uv/vd7yQ7fv75Z+nUqZP07NnThDB9rlGjRkmjRo1M1VZfr/7uxo4da16/ni91Od2b+nz6+jWAbdq0SaZPn26O9/rrr/uC18CBA033vgZM1+bNm825HT169AWf+0rPXzALFy4053PQoEHmfH7xxRfmj4zvv//ebHP16tXLvJeHDh1qXk9SUpL5g+XgwYO+2x06dDDvy8cff9z8EaPvp/feey9b7QJCmgMgX5k7d66j/+uuWrXKOX78uHPo0CFnwYIFTrly5ZxixYo533//vdnvl19+CXhcWlqa07BhQ6ddu3a++6ZNm2aeS5/nQrp37+40aNDgom0aMGCAU7lyZefHH38MuL9v375OVFSUry1r1641x6tXr56Tmprq2+/FF1809+/YscPc1m36elq0aOGkp6f79ktISDD73Xbbbb773njjDSc8PNxZv359wLFnzZpl9v3ss8989+lt3TcxMfGir8e/TYsWLXIux7Bhw8z+/u04ffq0U7NmTadGjRpORkZGwO9v//79AY93z41eu/R16n2vv/667z49N5UqVXJ69erlu2/z5s1mP33uyzFu3Diz/1133RVw/5///Gdz/5dffmlunzx50ilatKgzatSogP0efvhhp0SJEs6ZM2dy7PwFe/1Z38Nq0qRJTlhYmPPdd9+Z2z///LN53LPPPnvB59Y26D56ngDb0RUL5FOxsbGmAqHdU3379jXdqDogXbvqlHY3ubQKo5UxreZs27bNd79WLpSOy9PKVzC6j1ZItEoT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WcPO39SpU7PfIgAAAORdsPvqq6+kadOm5uedO3cGbGMiBQAAQD4KdmvXrs35lgAAACDvx9gBAADAkopd27ZtL9rlumbNmqtpEwAAAPIq2Lnj61zp6emyfft2M94uLi4uO08JAAAAL4LdtGnTgt4/fvx4OXPmzNW2CQAAAF6PsfvjH//I98QCAADYEOw2btwoRYsWzcmnBAAAQG52xfbs2TPgtuM4cuTIEdmyZYuMGTMmO08JAAAAL4JdVFRUwO3w8HCpU6eOTJw4UTp06HC1bQIAAEBeBbu5c+dm52EAAAAItWDn2rp1q3z99dfm5wYNGshvfvObnGoXAAAA8iLYJSUlSd++fWXdunUSHR1t7jt58qRZuHjBggVSoUKF7DwtAAAA8npW7NChQ+X06dOSmJgoJ06cMBddnPjUqVPy8MMPX017AAAAkJcVu+XLl8uqVaukXr16vvvq168vM2bMYPIEAABAfqrYZWZmSkRExHn36326DQAAAPkk2LVr104eeeQROXz4sO++H374QYYPHy7t27fPyfYBAAAgN4Pd3//+dzOerkaNGnL99debS82aNc19L730UnaeEgAAAF6Msatataps27bNjLPbvXu3uU/H28XGxl5tewAAAJAXFbs1a9aYSRJamQsLC5M77rjDzJDVS4sWLcxaduvXr89uWwAAAJBXwe6FF16QgQMHSunSpYN+zdif/vQnmTp16tW0BwAAAHkR7L788kvp1KnTBbfrUif6bRQAAAAI8WB37NixoMucuAoXLizHjx/PiXYBAAAgN4PdNddcY75h4kK++uorqVy58pW2AQAAAHkd7O68804ZM2aMpKSknLft119/lXHjxknXrl1zol0AAADIzeVORo8eLe+9957Url1bhgwZInXq1DH365In+nViGRkZ8uSTT15pGwAAAJDXwS4mJkY2bNgggwYNkvj4eHEcx9yvS5907NjRhDvdBwAAAPlggeLq1avLRx99JD///LPs27fPhLtatWpJmTJlcqeFAAAAyL1vnlAa5HRRYgAAAOTj74oFAABA6CHYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJgh0AAIAlCHYAAAAF/ZsncOVqPP6h101APnZgchevmwAACHFU7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACw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AAAASxDs4KlPP/1UunXrZhZd1MWh33//fa+bBGT7G21atGghpUqVkooVK5p1Nffs2eN1s4Bsefnll6Vx48a+tetat24ty5Yt87pZuAwEO3hK1xts0qSJzJgxw+umAFflk08+kcGDB8umTZtk5cqVkp6eLh06dDDvcSC/ufbaa2Xy5MmydetW2bJli7Rr1066d+8uiYmJXjcNl8CsWIQMrdgtWrTI9w0iQH6ma2tq5U4DX5s2bbxuDnDVypYtK88++6wMGDDA66agIKxjBwChJDk52fdhCORnGRkZsnDhQlN91i5ZhDaCHQDkMP2+6mHDhsktt9wiDRs29Lo5QLbs2LHDBLmUlBQpWbKk6VGpX7++183CJRDsACCH6Vi7nTt3yr///W+vmwJkW506dWT79u2m+vzuu++a72TXoQWEu9BGsAOAHKRfbbh06VIz41sHoAP5VZEiReSGG24wPzdr1kw2b94sL774osyePdvrpuEiCHYAkAN0HtrQoUNNd9W6deukZs2aXjcJyPEhBqmpqV43A5dAsIOnzpw5I/v27fPd3r9/vyn964DzatWqedo24Eq7X+fPny+LFy82a9kdPXrU3B8VFSXFihXzunnAFYmPj5fOnTubf4dPnz5t3tv6B8uKFSu8bhougeVO4Cn9h6Jt27bn3a9jORISEjxpE5Dd5XqCmTt3rtx333153h7gauiSJqtXr5YjR46YP050seJRo0bJHXfc4XXTcAkEOwAAAEvwzRMAAACWINgBAABYgmAHAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgBgEf2Wix49enjdDAAeIdgB8DSE6Fdx6aVIkSJyww03yMSJE+XcuXNeNy0k6RcFvfLKK9KyZUspWbKkREdHS/PmzeWFF16QX375xevmAQgBBDsAnurUqZP5Psq9e/fKX/7yFxk/frw8++yzUlClpaVdcFv//v1l2LBh0r17d1m7dq1s375dxowZI4sXL5aPP/44T9sJIDQR7AB4KjIyUipVqiTVq1eXQYMGSWxsrHzwwQdm29SpU6VRo0ZSokQJqVq1qvz5z3+WM2fO+B773XffSbdu3aRMmTJmnwYNGshHH31ktv3888/Sr18/qVChghQrVkxq1aolc+fO9T320KFD8vvf/95UvcqWLWvC0oEDB87r0nzuueekcuXKUq5cORk8eLCkp6f79tFA2qVLF/P8NWvWlPnz50uNGjVMBc118uRJeeCBB0w7SpcuLe3atZMvv/zSt12DbNOmTeUf//iHeY6iRYsGPU/vvPOOvPXWW/LPf/5TnnjiCWnRooU5lrZ7zZo10rZt26CPW758udx6663mdepr6Nq1q3z77bcBQXLIkCHmNeqx9fcwadIkX4VQ21etWjXze6pSpYo8/PDDV/gbBpCXCufp0QDgEjQk/fTTT+bn8PBwmT59ugk8//3vf02we+yxx2TmzJlmuwYtDSaffvqpCXa7du0yXZRKK1l6e9myZVK+fHnZt2+f/Prrr2abhrOOHTtK69atZf369VK4cGH561//aqqHX331lekWVloV08Cj1/r4Pn36mBA2cOBAs/3ee++VH3/8UdatWycREREyYsQISUpKCng9d999t3lN2o6oqCiZPXu2tG/fXr755hsTKJU+97/+9S957733pFChQkHPi4a6OnXqmCCXlXZl63MHc/bsWdOuxo0bm1A8duxY+d3vfmeqfe751SCtwVEDnAZevSht07Rp02TBggUmNB89ejQglAIIQQ4AeCQuLs7p3r27+TkzM9NZuXKlExkZ6Tz66KNB91+4cKFTrlw53+1GjRo548ePD7pvt27dnPvvvz/otjfeeMOpU6eOOaYrNTXVKVasmLNixQpf26pXr+6cO3fOt8/dd9/t9OnTx/z89ddfO/pP6ObNm33b9+7da+6bNm2aub1+/XqndOnSTkpKSsDxr7/+emf27Nnm53HjxjkRERFOUlLSRc9VvXr1nLvuuuui+2Q9p8EcP37ctHHHjh3m9tChQ5127doFnAvX888/79SuXdtJS0u75HEBhAa6YgF4aunSpabKpt2AnTt3NlUx7f5Tq1atMtWta665RkqVKmXGmGk1z50ooN2CWmm75ZZbZNy4caba5tJuXa00aYVNq3wbNmzwbdOqk1bJ9Dn12HrR6llKSkpAN6VWqfwraFq9cytye/bsMZW+G2+80bddJ39ot7D/cbRKpl2g7nH0sn///oDjaPendtVejHaLZoeOXbznnnvkuuuuM13B2n2rDh486Oty1uqdVgP1fPqP1dNqo1Y59bFapVy0aBETW4AQR7AD4CkdG6bBQgOIhoh58+aZblUd76bjwbQLUbsEt27dKjNmzAiYYKBj17SLVgPfjh07zAzRl156yWzTkKhj8IYPHy6HDx82AfHRRx812zRsNWvWzBzX/6Ldo3/4wx98bdPu1axdnpmZmZf92vQ4GgazHkdD4ciRI3376eu9lNq1a8vu3bvlSukYxBMnTsirr74qn3/+ubn4n0MNpho0n3rqKXP+ddxh7969zTYd16ht1a5v7U7WrvA2bdoEjDMEEFoIdgA8paFGK106vksrYC4Nchqinn/+eWnVqpUJNhrQstLw8dBDD5nxaTqrVgOMS6tgcXFx8uabb5oJDbpUiBtmNEhWrFjRHNv/cqGxallphUurV//5z39892kVUCdtuPQ4Oi5NX1fW4+i4vyuhgVODp86ADVbNS05OPu9+rW5qMBs9erQJtvXq1Qton0sreVop1XP39ttvmyCtYVBpoNNwqGPxdCzhxo0bTYgGEJoIdgBCkoYfrQxpBU6rcm+88YbMmjUrYB9d+mPFihWm4rRt2zYzyUHDi9JJAhqCNGwlJiaaLl93m86W1WClExF08oQ+XkOLdkV+//33l9W+unXrmhm8Dz74oHzxxRcm4OnPGoS0sqd0u07Q0Nm12sWpVUjtEn7yySdly5YtV3Q+tJKm4Uu7VZ9++mnzeK1I6uvS4+hrz0q7hbUbWAOtngedPasTKfzpzGOdaavVQA2OCxcuNLOUdRZtQkKCzJkzR3bu3Gl+BxqQ9fVp1zGA0ESwAxCSmjRpYkLHM888Iw0bNjSzQt1lOFwZGRlmZqwGNp3RqlU9d8aszmyNj483Xbnafahj5XTMnSpevLiZSatVwp49e5rHDxgwwIyx0+rV5Xr99dclJibGPL/ONNVxaDpuz12yRAOeLr+i2++//37Tvr59+5pApo+7EvpcupyKnpP3339fbrvtNvPadDyiBlSd5ZuVznrV16zVTz2H2i2ddY1Abe+UKVNMN7YuoaLhU9usj9Vwp1U8HcOox9Ixj0uWLDFhEUBoCtMZFF43AgBsoNU+7Rp2J30AQF4j2AFANmnXpk6Q0EWUdbFinX37ww8/mC7NrBMvACAvsEAxAGSTjgHUb4HQ8WfapXnzzTebLmNCHQCvULEDAACwBJMnAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAADEDv8LuNnP2KA9vA0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "# Count plot for Pclass\n", "pclass_counts = df['Pclass'].value_counts().sort_index()\n", - "plt.figure(figsize=(6, 4))\n", - "plt.bar(pclass_counts.index.astype(str), pclass_counts.values, color='lightgreen', edgecolor='black')\n", + "plt.bar(pclass_counts.index.astype(str), pclass_counts.values)\n", "plt.title('Passenger Count by Class')\n", "plt.xlabel('Passenger Class')\n", "plt.ylabel('Count')\n", @@ -1944,33 +1960,105 @@ }, { "cell_type": "markdown", - "id": "7d7b8d4b", + "id": "7f2f2d4c", "metadata": {}, "source": [ - "4. Correlation Heatmap\n", + "**Boxplot of Age by Survival**\n", "\n", - "Purpose: Helps you find numeric features that are positively or negatively correlated.\n", + "In descriptive statistics, a box plot or boxplot is a method for demonstrating graphically the locality, spread and skewness groups of numerical data through their quartiles.\n", + "In addition to the box on a box plot, there can be lines (which are called whiskers) extending from the box indicating variability outside the upper and lower quartiles.\n", + "Outliers that differ significantly from the rest of the dataset[2] may be plotted as individual points beyond the whiskers on the box-plot. Box plots are non-parametric: they display variation in samples of a statistical population without making any assumptions of the underlying statistical distribution.\n", "\n", - "- Values close to +1 → strong positive correlation\n", + "[Boxplot - Wikipedia](https://en.wikipedia.org/wiki/Box_plot)\n", "\n", - "- Values close to -1 → strong negative correlation\n", + "**Elements of Box Plot**\n", "\n", - "Use case:\n", + "A box plot gives a five-number summary of a set of data which is:\n", + "\n", + "- Minimum – It is the minimum value in the dataset excluding the outliers.\n", + "- First Quartile (Q1) – 25% of the data lies below the First (lower) Quartile.\n", + "- Median (Q2) – It is the mid-point of the dataset. Half of the values lie below it and half above.\n", + "- Third Quartile (Q3) – 75% of the data lies below the Third (Upper) Quartile.\n", + "- Maximum – It is the maximum value in the dataset excluding the outliers.\n", + "\n", + "![Elements of a boxplot](img\\boxplot-660x233.png)\n", + "\n", + "The area inside the box (50% of the data) is known as the Inter Quartile Range. The IQR is calculated as:\n", + "\n", + "$IQR = Q3-Q1$\n", + "\n", + "Outlies are the data points below and above the lower and upper limit. The lower and upper limit is calculated as:\n", + "\n", + "$Lower Limit = Q1 - 1.5*IQR$\n", "\n", - "- See how Age, Fare, Parch, SibSp, and Survived are related." + "$Upper Limit = Q3 + 1.5*IQR$\n", + "\n", + "The values below and above these limits are considered outliers and the minimum and maximum values are calculated from the points which lie under the lower and upper limit.\n", + "\n", + "[Boxplot -geeksforgeeks](https://www.geeksforgeeks.org/box-plot/)" + ] + }, + { + "cell_type": "markdown", + "id": "d78ee627", + "metadata": {}, + "source": [ + "Here, we use a boxplot to examine how age varies between passengers who survived and those who did not." ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 26, + "id": "0a5daf14", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPJRJREFUeJzt3QuczHX////XrrVrnaNYsg45LaGQnK/QanMhIioUUakkp7ha36KEjRIdnCpRF1IqvuKGfJVKIYdSckyEi3XKLmHXYT//2+v9v2Z+M3tg187uzL73cb/dPsbnMJ95z+zsZ5/zPk2Q4ziOAAAAIM8L9ncBAAAA4BsEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7ANmyf/9+CQoKkjlz5uT4Y+lj6GPpY7pUrlxZOnToILlhzZo15vH1Nrfl5vMMNOn93H2tVatWZgHyOoIdEACmTZtm/nA1btzY30Ux5XAtISEhUqpUKWnYsKEMGjRItm/f7tPnnBth0Lay5bTjx4+bn3VUVJSEh4dLmTJl5Pbbb5d//etf8vfff/u7eACuIojvigX8r3nz5nL48GFTI7Fnzx6pVq2a38qiga5t27by8MMPi14eEhMTZevWrbJw4UI5e/asTJgwQYYOHeo+Xo9JTk6WggULSoECBTL9OHXq1JHrr78+S7Vfly9flosXL0pYWJgpp6smS8+1dOnSLD7TrJctJSVFLly4IKGhoRIcnLufi3Pieab2119/Sf369eX06dPSt29fE+5Onjwpv/zyi3lcvdVy5Lb0fu6+5qqt80dtLOBLIT49G4As27dvn/zwww/y+eefS//+/WXevHkyevRov5apRo0a0qtXL69tr7zyinTs2FGGDRtm/uD/85//NNv1D22hQoVytDwaKIsUKWKCY1bCo69pmMvp5+pPs2bNkgMHDsj3338vzZo189qnYU8DrS8kJSVlKRz7++cO5CU0xQJ+pkHuuuuuk/bt28t9991n1tOjNScPPfSQFC9eXEqWLCm9e/c2NWnp9W/buXOnOZc2o2oQue2222TJkiXZKmfp0qVlwYIFpnl23LhxV+xjFx8fL4888ohUqFDB1LKUK1dOOnXq5O4jpbU+v/32m3zzzTfuZl9XjYmrP5Xue+qpp0xToJ7nan2tvvzyS7n11lvN861du7YJyp5efPHFdGt7Up/zSmXLqI+d1mZqc7U2XWpNn4bi//znP17H9OnTR4oWLWq2d+7c2fz/hhtukGeffdbUSGXWlZ7nH3/8Yco3efLkNPfTDw+676OPPsrw3Hv37jUBqkmTJmn26fvOM9Tq66TP6Wp91Vyvmb53nn/+ebnxxhulcOHCsmXLFrP9gw8+SHOOlStXmn2u2snUPyPta3jTTTel+xyaNm1q3u8us2fPljZt2pj3kb4X9TWbPn16hq8BkNcR7AA/0yDXpUsXU4Px4IMPmqbYjRs3pmkC1Noy/aOsgU6D1ZEjR8z/U9NQon+Yd+zYIc8995xMmjTJ1HZpmFi0aFG2ylqxYkW54447ZP369aYGJyNdu3Y1j6XhTvurPfPMM3LmzBlTG6SmTJliwprW/P373/82y//8z/94nUNDnfbpGzVqlHkeV6Kv2f333y/t2rWTuLg4Ez67desmq1atyvJzzEzZPGno6N69uwlE+tiPPfaYCVstWrSQhIQEr2M1wMXExJiQ/Nprr5nXUn8+77zzTqbKdrXnqWFHm/XT+3Cg24oVK2YCdkYqVapkyqjP2ddefvllWbZsmQmy48ePNwFLy/vJJ5+kOfbjjz82H3b0tUqPvgZa05369+TPP/80780HHnjAvU1DnD6vkSNHmtc6MjLSvLemTp3q8+cIBATtYwfAPzZt2qR9XJ1Vq1aZ9ZSUFKdChQrOoEGDvI777LPPzHFTpkxxb7t8+bLTpk0bs3327Nnu7XfeeadTt25dJykpyb1Nz9usWTOnevXqVy2Tnm/AgAEZ7tey6TFbt2416/v27fMqw6lTp8z6q6++esXHufnmm5077rgjzXY9j96/RYsWzqVLl9Ldp4/pUqlSJbNNXyOXxMREp1y5ck79+vXd20aPHm2Oy+jxPM+ZUdm+/vprc6zeqgsXLjhlypRx6tSp45w/f9593NKlS81xo0aNcm/r3bu32TZmzBivc2oZGzZseMXXKivPc+bMmea4HTt2uLdpOa+//npThiuJj493brjhBnP/qKgo54knnnDmz5/vJCQkpFue9M6nr5vna+d6zW666Sbn3LlzXsfGxsY6BQsWdP766y/3tuTkZKdkyZJO3759M/wZ6fMOCwtzhg0b5nW+iRMnOkFBQc6ff/7p3pb6MVVMTIwpz5XKDeRV1NgBfqS1KGXLlpXWrVubdW1u0toIbbbybJ5bsWKFGZygtUEu2j9pwIABaTq/f/XVV6YGSWvITpw4YRZtxtXaD63xSd1EmFXahKj0/OnR5kitfdQmuFOnTl3z4+hzzWy/qvLly8u9997r1Wyogz9++ukn0yycUzZt2iTHjh0zNUCezZTarK41flpDldoTTzzhtd6yZUvThOqr56k/ey2LZ62dNm3q+yB1v8nU9L2ozftaRv3ZzZgxQ3r06GGaMbXGLTtj7bR2Wd8bnvS9roMiPJuTtalZazp1X0b0eWutpdb2eZZJa/q0tlprll08H1MHAunroDWl+prrOmAbgh3gJxrcNMBpqNNmpd9//90sOuXJ0aNHZfXq1V5NTNpPTfsmeUo9elbvr3/oXnjhBdN/y3NxDcjQIJIdrikvtFkvPdqPSUfOLl++3ASFf/zjHzJx4sQsB6wqVapk+lh9HVL3n9MBICon5z7Tn4uqWbNmmn0a7Fz7XTRw6c/CkzY5ZjYAZ+Z5av9LbbafP3+++xgNedq3TfuaXY2+z7T5Upv6d+3aJW+++aYpszaJ6+CKa5Xez/OWW24xr5MGMhf9v/ZTvFpZNfgdPHhQ1q1b5+4fuHnz5jSBUAeCREdHm+4I+troc9FmWUWwg40IdoCfaM2a/vHUcFe9enX3ojUuKqNBFFeiffGU9mPSflfpLdmdSmXbtm2mJu1KwWvw4MGye/du0w9Mw4wGzVq1apmapcxKXbuTXRlNk5GVgQvZlVsjO7UWT2ukdMCE1qzqwBntv5mVKVr09dLQOHDgQPn222/NfT3fk1l9PTP6eWoQ+/rrr01Nmk6bo2XVPpraf/BKNLzqBx1XHz291TJqn0MXDXt33nmnOffrr79ualD1d2DIkCFevy+ATZjuBPAT/SOpTVzpdeLWpikdfKBNYfoHUTt/6x+/c+fOedXaaQ2dJ9dIQW221VoKX9PBDzpaVEceZlRj51K1alUzNYou2gSsIzm18/rcuXPNfl/OR+aqqfQ8pwZL5Zp3TWvGlDbzac2NS+patayUTX8uSmu2Utcw6TbX/tx8nuruu+82NVP6HtMaYH3f6Ijqa6XvK3399IOIi66nHhziej0zGrGaUbB76aWX5LPPPjM1vDoox3PwQ0a0Bk5Hx+qIZA1tWtOnzdraXO3yxRdfuMOiZ/Os/i4BtqLGDvCD8+fPm/Cmf5h0WpLUy9NPP+2uaVHaP077Ir377rvuc2htQ+pQqEFRp5qYOXOm1x9hz28VuFbaf09rfbRG5kqjRDVE6DxlqUOeBkH9I+v5hzm9YHAtdHJnzxG/Gg4+/PBDEyYjIiLcZVBa++Q5P156021ktmw6rYa+5hrAPZ+bNkPrqGTta+dLmXmeSmu79GeltVg6ardu3bpSr169q55/w4YN5jVJ7ccffzT9ND2bnPX11BGoOmGzi05Pos2jWaE1uVo+DWa6aFOwNt9nNhTqa/Lee++ZvoGpm2FdNaSe/fC0+VWnQAFsRY0d4Aca2DS43XPPPenu1w7grhoX/WOlU5Xo1zpp7ZfW2mi/JD2Hhi3lWYOjYU+n2tA/ljoAQWtPtM+e9kU6dOiQ+QN4NVoLpDVr+gdRw4Prmye0f53WjmiN0JXuq81f2qSsU1poyNAwomXwrInRed+0L9fYsWNN87AGpMz0AUuPNhn269fPTH+htT7vv/++eTzPP+B33XWXqbXR44YPH27+6Otx+jq7pmHJatm0ZlT7E+q0LtohX8OUPu4bb7xhatBcTX6+kpnn6dkcq/3jtHZKy5gZOs2Jvud0gIa+BjoIRgOqPo42qbv6pqlHH31UPv30U/Ne0J+1Nnvqe8YVoLNC3+Pah08fQ59fZpuMdZJs/cCgXQ/056lNuJ70Z67PQZttdfJvff/qhyP9eab3wQewgr+H5QL5UceOHZ1ChQo5Z8+ezfCYPn36mKkgTpw4YdaPHz/u9OjRwylWrJhTokQJs//7778300AsWLDA67579+51Hn74YSciIsKc48Ybb3Q6dOjgfPrpp1ctm57PtQQHB5upJ3Q6DZ3m5LfffktzfOrpTrS8Ol2KTpdRpEgRU9bGjRs7n3zySZqpNdq3b2+ej97fNdWEa2qLjRs3pnmsjKY70fOsXLnSqVevnpkGQx974cKFae6/efNmU5bQ0FCnYsWKzuuvv57uOTMqW+rpTlw+/vhj8xrpY5cqVcrp2bOnc+jQIa9jdGoQfT1Sy2galtSy8jw9p23Rn2HqsmTkl19+cYYPH+40aNDAPI+QkBAznUq3bt2cLVu2pDl+0qRJ5r2lZWnevLmZviej6U6uVM49e/a433Nr165Nsz+9n5GLvta6Lzo6Ot1zL1myxLxe+vtWuXJlZ8KECc7777+f5nxMdwJb8F2xQB62ePFiU7uydu1aMzEt4Em/91W/fcRzhDUAu9HHDshD/fI8aV+3t956y8zp1aBBA7+VC4FJ59j7+eefTZMsgPyDPnZAHqHTTmi40xGp2lFfB1/odBb69Uy+nhoEeZdOR6PzuekIZB2IcKWJfgHYh2AH5BHaeV//WOvIQx11qp36tcZOR9ACLjqgYcyYMWYEq363sOc3YgCwH33sAAAALEEfOwAAAEsQ7AAAACxhfR87nZ1fZybXSSx9+RVGAAAAuUF7zemk9vqVeVebwNv6YKehLjIy0t/FAAAAyBb9yr4KFSrk72Dn+qJyfTF0vi8AAIC8RL/aUSupXJkmXwc7V/OrhjqCHQAAyKsy06WMwRMAAACWINgBAABYgmAHAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJvwa7y5cvywsvvCBVqlSR8PBwqVq1qrz88sviOI77GP3/qFGjpFy5cuaY6Oho2bNnjz+LDQDANf/dW7NmjXz00UfmVtcBa4LdhAkTZPr06fL222/Ljh07zPrEiRPlrbfech+j62+++abMmDFDNmzYIEWKFJGYmBhJSkryZ9EBAMiSzz//XKpVqyatW7eWHj16mFtd1+2AFcHuhx9+kE6dOkn79u2lcuXKct9998ldd90lP/74o7u2bsqUKfL888+b4+rVqycffvihHD58WBYvXuzPogMAkGka3vRvXN26dWXdunVy5swZc6vrup1wByuCXbNmzWT16tWye/dus75161ZZu3attGvXzqzv27dP4uPjTfOrS4kSJaRx48bmFwIAgECnza3Dhg2TDh06mEqJJk2aSNGiRc2truv2Z599lmZZ+ESI+NFzzz0np0+flqioKClQoIB5U48bN0569uxp9muoU2XLlvW6n6679qWWnJxsFhc9PwAA/vLdd9/J/v37Tb+64GDv+hRdj42NNRUdelyrVq38Vk7Ywa81dp988onMmzdP5s+fL1u2bJEPPvhAXnvtNXN7reLi4kytnmuJjIz0aZkBAMiKI0eOmNs6deqku9+13XUckGeD3fDhw02t3QMPPGD6GTz00EMyZMgQE85URESEuT169KjX/XTdtS81/eSTmJjoXg4ePJgLzwQAgPTprA5q27Zt6e53bXcdB+TZYHfu3Lk01dLaJJuSkmL+r9OgaIDTfnieTas6OrZp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uhjqp+zExER57733pH79+lKlShVp3bq1TJ482fxfzZkzR0qWLHnFGkRXk6qeR++n4fSdd94xAVG/h9hTp06dpG/fvl73U19++aW5X+qmlkGDBkmbNm3c62vXrpWWLVtKeHi4+R7JZ555xiuEak1jx44dzX4ty7x58674OgLIHP3d/O6778wHT71OVKpUSW6//XaJjY01tf779+8314Wff/7Z6z66TZtSPZtUly9fLg0bNjTXr/fff99s27lzp9fj6XWoatWqXvfT8+l3yOrvt57D06JFi8z3nZ87d86s63fMdu/e3Vy/9MOrXnu0jC6XL1+WoUOHmv36AXPEiBEmaCJ/INgh1xQoUEDGjx8vb731lhw6dCjdYzZv3mwuWA888ID8+uuvJiC98MILJoSpzz//3Hz375gxY0zzhS7p0QCpn5b1gpjdC9rvv/9uwqY+tl7Yu3XrZj7Ff/311+5j/vrrL1mxYoX07Nkzzf215lAvsHoOzwvvxx9/7D5+7969cvfdd5tag19++cXs06D39NNPezVn6wVdH/fTTz+VadOm5UqzMmA7rWHXRT/YJScnZ+tczz33nOlyoq0E9913n9x2221pPoTpeo8ePdLcV783tkOHDjJ//vw0x2v/uMKFC8vFixdNE7EGPQ2j+iFWy67XD1eLgn4Y1mumBku9juj1Sa+FyCd0gmIgp/Xu3dvp1KmT+X+TJk2cvn37mv8vWrRIU5f7uB49ejht27b1uu/w4cOd2rVru9crVarkTJ48+aqPOXLkSCckJMQpVaqUc/fddzsTJ0504uPj3ftnz57tlChRwus+qcszevRop2DBgs6xY8e8jtPn4noOaubMmU758uWdy5cvu+93yy23uPcPGjTIadOmjXt95cqVTlhYmHPq1Cmz3q9fP+fxxx/3eozvvvvOCQ4Ods6fP+/s2rXLlOvHH39079+xY4fZlpnXAsCVffrpp851113nFCpUyGnWrJkTGxvrbN261ezbt2+f+V376aef3Mfr765u+/rrr8263ur64sWLvc6rv59Vq1Z1r7t+l/X31/N+rmuBXoOKFi3qnD171qwnJiaaMi1fvtys//vf/3Zq1qzppKSkuM+ZnJzshIeHm+uKKleunLneuVy8eNGpUKGC+xoMu1Fjh1ynzR3aj0U/0aam25o3b+61Tdf37NljarmyYty4cRIfHy8zZswwTbt6GxUVZWoCs0KbZW644QavbVrTpjVwrk/3+olaaxmDg9P/ldLjtcnl8OHD7uPbt2/vbgrWgR76CdtVc6CLfirX5t59+/aZ1yUkJMQ08bjoc0ndlAzg2mhtuf5+at86rf3S39cGDRq4WwsyS2voPOl1QZtJ169f7/7d1/Pq7296/vnPf0rBggVNOZReZ7QmT7uyuK4V2oqgNXaua4U2xyYlJZmaf+2Coi0ZjRs3dp9Trx2pywV7EeyQ6/7xj3+Y0KL9V3Ka9i/RptPXXnvNhCPtG6f/VxrCUjfTajNHakWKFEmzTfu66X2XLVtmmke1SSS9ZliXRo0amT41CxYskPPnz5tmEc/j//77b+nfv79p6nUtegHXQOvqiwMgZ2lf2LZt25ruHz/88IPp/qDf6er6wOZ5vUjvWpHe9UK7hWhfWlfzqt5e6Vqhgym0CdfzeB3Nr+HMda3QD3ie1wpddMBHes27yH/+/3cKkMu0D4oOLqhZs6bX9lq1aqWZXkDXa9SoYfrouS58Wa29c91PQ5JrQILWwp05c8asuy7Gnp2jr/YHoEuXLubTt3561uehn8KvRC/merz2EdQ/FFpj56L33b59u1SrVi3d++qne+0zqH0QNSSqXbt25fjcV0B+Vrt2bdPvzlVjrzVhOhgrK9cK1+++DmB48MEH5Y8//jC1eFc7XgPmb7/9Jl999ZWMHTvW61qhfXB1GietyUtPuXLlZMOGDeZDtHJdO652jYIl/N0WjPzXx87loYceMn1HPN+GmzdvNv3KxowZY/qizJkzx/Qd0f5wLtoH75577nEOHTrkHD9+PN3H++KLL5yePXuaWz3Pzp07nVdffdUpUKCA8+GHH5pjTp486RQpUsR55plnnN9//92ZN2+e6SeXuo+dZ185T6tWrTL95LS/y8svv+y1L7377dmzx5y7Xr16pk+dJ+3Lo89zwIABph/P7t27TV8dXXfRfoL169d31q9f72zatMlp0aKFuQ997IDsOXHihNO6dWvTf01/F//44w/nk08+ccqWLevuS6t9g1u2bOls377dWbNmjXP77ben28fO1VfO0+nTp83vql4T7rzzTq996d1P+89FRkaa4z375ynte1e9enWnVatWzrfffmvKqucYOHCgc/DgQXPMK6+8YvoWa3897cv32GOPOcWKFaOPXT5BsIPfgp12SA4NDfUKUq5OzDpYQgctVKxY0QQyT+vWrTPhSENVRp9N9u7day5mNWrUMBfUkiVLOo0aNfIKiEovfNWqVTPHdOjQwXnnnXcyHex0oIR2Utbj9fE8ZXQ/1x+Dr776Ks0+HRihoVU7Tmvg1Oc4btw49/4jR4447du3N89bXxcNqJkdSAIgY0lJSc5zzz3nNGjQwAyoKly4sPnA9vzzzzvnzp0zx2iga9q0qblW3Hrrrc6XX36Z6WCnunfvbva///77Xtszut+IESPM9lGjRqU5l14LHn74Yef6668314ObbrrJXO90oIVrsIQO2CpevLi59g0dOtQcT7DLH4L0H3/XGgIAACD7GDwBAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJgh0AAIAlCHYAAACWINgBAACIHf4/6HEAIEjhFuoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "survived_0 = df[df['Survived'] == 0]['Age'].dropna()\n", + "survived_1 = df[df['Survived'] == 1]['Age'].dropna()\n", + "\n", + "plt.boxplot([survived_0, survived_1], tick_labels=['Not Survived', 'Survived'])\n", + "plt.title('Age Distribution by Survival')\n", + "plt.ylabel('Age')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7d7b8d4b", + "metadata": {}, + "source": [ + "**Correlation Heatmap**\n", + "\n", + "A correlation heatmap is a graphical tool used in statistics and data analysis to visualize the **strength** and **direction** of relationships between multiple numerical variables simultaneously. It displays a correlation matrix where each variable is represented both as a row and a column, and each cell shows the correlation coefficient between the pair of variables it intersects.\n", + "\n", + "The values in the heatmap cells are correlation coefficients, typically Pearson’s correlation, which range from -1 to 1. A value of 1 indicates a perfect positive **linear relationship** (as one variable increases, the other increases), -1 indicates a perfect negative **linear relationship** (one variable increases as the other decreases), and 0 indicates no linear relationship\n", + "\n", + "In preprocessing, identifying highly correlated variables is crucial. Variables with very high positive or negative correlations (e.g., above 0.7 or below -0.7) may indicate redundancy or multicollinearity, which can affect model performance. Heatmaps help pinpoint such variables for potential removal or transformation" + ] + }, + { + "cell_type": "code", + "execution_count": 33, "id": "910a7faa", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp8AAAJOCAYAAADximyCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcS1JREFUeJzt3Qm8TPX/x/HPvfbtkmwRIYWyRkSrUipJu0qhpF+ERInK0iqJlEibtPlFu59KC6ksZSltskaUbJU9653/4/39/c7854674dy5d868nr/H+Wm2c+ecOTPzmc/38/mepFAoFDIAAAAgBpJj8UcAAAAAIfgEAABAzBB8AgAAIGYIPgEAABAzBJ8AAACIGYJPAAAAxAzBJwAAAGKG4BMAAAAxQ/AJAACAmCH4BDIwfvx4S0pKslWrVvm2Tq1L69S6EWzbt2+3m266ySpUqOBe8169elmiGjx4sNsHACAEn4ipFStW2L/+9S+rXr26FS5c2FJSUuzUU0+1J554wv755x8LigkTJtjIkSMtL+nUqZMVL148w9sVHHTv3j1Hn8OYMWMSJvB++OGH3bZ27drVXnnlFbv++uszvG/VqlXd/u/Ro8cBt82YMcPd9uabb+bwM46vQDa9ZezYsTnyNz/44AP3dwH4I79P6wGy9P7779uVV15phQoVsg4dOlidOnVsz549NnPmTLvzzjvtp59+smeffdaCEnz++OOPB2S7jjnmGBdkFyhQwBKRgs8yZcq4QDjopk+fbqeccooNGjQo24957rnnrH///laxYkULknvvvdf69evn6zqffvrpA35MNW3a1HIq+Bw9ejQBKOATgk/ExMqVK+3qq692wZe+lI866qjwbbfeeqstX77cBaeHKxQK2a5du6xIkSIH3KbrCxYsaMnJuZfwV3ZGGV8E34YNG+yEE07I9v1PPPFEW7JkiT3yyCP25JNPWhDs2LHDihUrZvnz53eLn6644gr3QyYI+wdINAy7IyYeffRRVwP3wgsvpAk8PTVq1LDbbrstfHnfvn32wAMP2LHHHusypRqWvPvuu2337t1pHqfrL7roIvvoo4+scePGLuh85plnwkOVr7/+usu6VKpUyYoWLWpbt251j/v666/t/PPPt5IlS7rrzzzzTJs1a1aW2/Hee+9Z69atXWZKz0vPT89z//794fucddZZLpD+9ddfw8OBep6Z1XwqID/99NPdF1GpUqWsbdu29vPPP6c73KhAXZlD3U/P/4YbbrCdO3daTtD+VuZOr4+2t3Llyta3b98DXocXX3zRzj77bCtXrpy7n4IuZaYiaR8ou/3555+H94v2VWR9rbLgPXv2tLJly7rtU4mGsuObN2922fIjjjjCLXoO+qER6bHHHrPmzZvbkUce6Y6DRo0apTtU7ZUXvPbaa1azZk33Y0D3/eKLL7IdVHbu3NnKly/vHlu/fn176aWXwrd7x55+cOk48LY1q9ph7R9to7Kfa9euzfS+ev29Yyqr2kpve9944w33umjfNGvWzH744Qd3u94ven21LXo90nue2Xm/eH970aJFdu2117rX6bTTTsvwecmrr75qTZo0cevU/c844wz7+OOPzQ9at15XbW/p0qXdj981a9akuc+XX37pRmOqVKkSPr5vv/32NCVA2tfKenr70lsiX2v9Gym997lX9qLSowsvvNBKlChh7du3d7elpqa6Mh39ANHroGNLx/7ff/+dZr3z58+3Vq1auaBb21WtWjW78cYbfdlfQCyR+URM/Oc//3F1ngoOskONGvpCV3ajT58+7stvyJAhLiB755130txX2aJrrrnGfVh36dLFBRQeBYbKdt5xxx0uYNJ/K9C74IIL3BeTAitlQr3gSV9G+jLMiL5M9AXSu3dv96/WNXDgQBfUDhs2zN3nnnvusS1btthvv/1mjz/+uLsus1rLTz/91D0f7R99SeuLb9SoUa4W9ptvvjkgyLjqqqvcl472h25//vnnXdA3dOjQbO3bTZs2Zet++kK8+OKLXUB48803W+3atV3Aom1aunSpvfvuu+H7KtDUF6furwyXXu9u3bq5dSizLfpyVU2j9oX2kehLNpJuV4POfffdZ1999ZUrw1AQOnv2bBcgqI5SQ6Da1yrbULDmUd2w/r6+0BWw6oeHAospU6a4HwyRFABPnDjRBboKOlQOoOBq7ty5br0Z0WujAE0/ABTQ6XVQUKfAQgGyfkBpP6nGU0HM0Ucf7Y5fUUCdFe2Xl19+2ffsp47ryZMnh18LHTv60aYgXtuu10qBjn4kKpjRce052PeL9vlxxx3nXqvoHwiR9BrreNdnwv333+/em3qf6++dd955WW7TX3/9leZyvnz5XAArDz30kA0YMMC9V/RZsnHjRveeUnD77bffumNK9Nrp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ACB9BJ+IK5rbUt3rmlbJ61hfv369CzDlsccecxnQ6Dk74zXj6QWen332mZs2SrWdGmpXracyv+rsb9KkiTtNqDKgqv9UllfZzyOPPDK3nz4AAAeg5hNx1+WtwNKbTkhnKVJ2U4GZhqA1zKz/jhaPgaco8HznnXfcfJ7KaqqUQB38mjLqqKOOstmzZ9sff/zhgk8FpcqCjhgxgsATAJBnxd8YJBJGesPNaq5RFlMTxSvDqcnjNZyuYfcTTjjBFi1aZMOGDXP/fcwxx6S7jniiaZQ0fZLqWr3ufZ0mVMPthQoVsuOOO85mzpzpMqI6pWi1atVcUAoAQF5F5hN5trnICxoVgG3fvt11byujp7MTKcAcNWqUu92r46xZs6b9+9//th9++MGefvppd108B56iwDolJcXVby5fvtwqVapk11xzjQtGlQH+5ptvXLPViSee6KaYIvAEAOR1ZD6RJ3k1mwMHDrS33nrLBaOq8dSQs85ipKmGbrvtNlffqIBME8v/+eefrvmoVatWtnTpUotHXqZW5QTK6v79999uW1XzefPNN1vr1q3DgbVOq6npldThrkwvAADxgMwn8pTI/jedIlOTxQ8ePNgFlAowVduoieXvueceN92SAk4NtaurW9Muia7TkHs8UuA5d+5cN0+pOtobN25sZ511ltt+TR+lMzV59asKyjds2GClS5e2oKEPEgCCi8wn8hRvmFznKp83b55rILryyivd4gWjt956q40cOdIuuOACN7WSah9l165d7uw+CkJ1e7xScKlSgk8//dQ1GmmSfDVTqav/iy++cGcv+vjjj+3555+3L7/80k2qH++8jK+2U3OYqtQAABBMZD6R5yjo1FyeGkKPnDJJAahqHzUE37t3b/v+++/DgaemYNJZfXS+c83xqfrPeKX6TZUSaPulTZs2LuOrrn51tN95551uHykQrVevngUl8HzvvfdcF//rr7/u5moFAAQT83wi16XXka6ObjUUVaxY0V599VUXjHk03KymIw1Ha1ohUbDy448/uixg5H3zMu+tp22PnodUpQQ6V/2TTz7pAjKPalnLlSsXPstRULz77ruukWrIkCEu2xtZNhF5ZisEQ0avabzPTgEgewg+kWe+hNTZra52TackGlbWUqtWLddUo0DUowacM8880z023r6wlLVt0aKFy2jKJ598YqNHj7YrrrgiHGhqaF1ZXnWyKwhXYBrUAOy3335z+6JLly7WrVs312ylEgpldmvXrm3HHnssAWiARL5fVUqjpjpdvvrqq61EiRKWiDi+kWg42pEnPnB1ZqJLLrnETRekAGTJkiV20003WYcOHdwUQ5rrUpOpexS86bGRUzLFA2VoVSoQedpLnRpTc3Q+8cQT7rSYU6ZMcfdTMKahd5UXeEF2UE8coIBT+2Hv3r1uGinV8+osTtofajTjizl4geftt9/ufmDpuNdIhmZsmD59untPB5V+YHvvY81isW7dOtdY6H2WAYmCT3TkGi+gUOf68OHD3SkyleVTwNWnTx8XkCkQ1XDsL7/84iZZVyd7euuIFwo8lcVV57pqU5X5UWe7As4XX3zR6tat6+pdVdu5ceNGl93VULQywvEUZGfG+/LVjwllvYoVK+YCj0cffdTVtWoKqcsuu8z9q5rW8ePH5/ZThk+8Y3jZsmXuR5VGMHSWroULF7pTxSr7qf+WIP3YUvmMtlmNhN5Zy/RDWz+imzVr5sps4u2zDDgcdLsjV+lDV/V+EyZMcB/EX3/9tftwVvDh1TSqu13ZAU02f8QRR1i8Z328L2AFnJqzU19IqnOsU6eOq2/VcLPO4KTM39atW10DUlCyIt4+mDx5sqvr7dixo7Vv39769evnmsb0OisA8UovlA09+uijc/tpw8fXXj8mxo4d64bYVVKh0hIFXm+++abLeGvEI0jZbr2H9b5+8MEH3TRqhQsXdhlf/ejWNGlvv/22nXLKKfaf//zH/dgEEoJqPoHcsmDBglD9+vXdf7/99tuh4sWLh55++ml3eevWraF33303fN/U1FT37/79+0PxbPbs2W7btD29e/cO5cuXz217tMWLF4ceeeQR92+QvPPOO6EiRYqEHn300dDKlSvTvc/ff/8duueee0LlypULLVmyJObPEf5ZtGhRaN26de6///nnn9CDDz4YqlWrVqh69erh++h6mTZtWqhy5cruMUGyatWq0Pnnnx86+uijQ5MnT3bHtmfbtm2hDh06hEqUKBH6/PPPc/V5ArFC8ImYiQwa9+7d6/5dvnx5qGrVqqEBAwaESpYsGQ48Zc6cOaGzzz47NH/+/AMC0HiloOrkk08O3Xnnne7y5s2bQ7fffrsLQBWUefvJ21fxHmhH+/XXX0MnnHBC+HXWcaBA/LPPPgstW7bMXTdp0qRQp06dXBDyzTff5PIzxuF4/fXXQ02aNAndcMMN7lgX/fvkk0+GjjzySBd0Rf8w0+v+ww8/hIIg8vNKx/65554bSkpKCl1yySVp7ucFoKVLlw598sknufBMgdgi+ERMRAZRL7/8slsUiOn67t27h4oWLRrq0aNH+D67du0KXXTRRaG2bdsGKgDbt2+f284WLVqEr/vrr7/CAaiX6Y33IDsjv//+e6hBgwYu+7Nz506XBTv11FND5cuXd8HIwoULXab3iSeecD9MEL/GjRvnsnn6oeH9gPSO6y1btoQef/zx0HHHHRe64oorQj///HPo66+/Dl1wwQWhU045JTDveW97d+zY4f5dvXq1214FmdrmyPts377dBaUKvvXeAIKM4BM5LjKQUsbvqKOOCr344osuEJFZs2aFWrduHTr++ONDDzzwQOjhhx8OtWzZMlSnTp3Qnj173H2C8GXk7Yc//vjDffloSN2jL+M77rjDZUWmTJkSCurrr2H2s846K3TOOee4faAv22HDhoW+/fbbUNOmTV0GPDIzHu/bHLntQTiGs0vDxxUqVAi98cYbB9zmvacVbCkDqhEP/fi87rrrQjfffHM48NIPtXjmvfZTp04N9ezZM/TFF1+Eh+CVAa1YsWJoxYoVBwSp3udiPPO2R6+1F3hH34bERsMRcpzXYKOOTxXe60w2J598cvh2dX3qdJjq9lanuzqfa9So4brB1Yyj6Un0b7xSI021atWsYMGC7rImwu/Zs6fNmDHDTSV11FFHudNJ6tSguk/16tUtSA0mO3bscF3+eg2rVq3qGi9++OEHa9u2rWs28s5NryYjb57HeH69I6cQ04wNek3VZOJNpxOURprMqJNdJ0m4/PLLw9fpeP/888/dqWEvvvhiu/baa+3mm292J1h47bXX3Fy2On2uN89tkSJFLJ55Xe3azoEDB4ab6HQCBc1frMaq008/3WbOnOk+H/R+UfOVliC8799//33XXKZj4cILL3Rd/VdddVVgZu3AYcrt6BeJQb92r7nmGtdgIxpSnThxoqvp1FDbjz/+GM6GRIrX7If3617NMoULF3bZvnvvvTecBZg3b16oVKlSaRqqIh8X77zt+PDDD0PnnXde6LTTTnPZTq/xJJJeczVgKFO2dOnSUDyLzG6qoUrHtzK6rVq1Cv3222+5+txiScd6jRo1XD2v9O3b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JVnBggWtRo0adv/999u+ffsskWm/XHLJJbn9NAAAQB45t7ufiyV6zef5559vL774ou3evds++OADu/XWW61AgQLWv39/SzR79uxxQTgAAAByaNi9UKFCVqFCBTvmmGOsa9eu1rJlS5s8ebKNGDHC6tata8WKFbPKlStbt27dbPv27eHH/frrr9amTRs74ogj3H1OPPFEF7zK33//be3bt7eyZctakSJF7LjjjnMBrmfNmjV21VVXWalSpax06dLWtm1bW7Vq1QGZx8cee8yOOuooO/LII11QvHfv3vB9/vjjD2vdurVbf7Vq1WzChAlWtWpVGzlyZPg+mzdvtptuusk9j5SUFDv77LPtu+++C98+ePBga9CggT3//PNuHYULF053H+3YscM6dOhgxYsXd89n+PDhB7ubAQBAHEpKTvZ9CZrD7nZXMPfnn39acnKyPfnkky4o++WXX1zw2bdvXxszZoy7n4JBZQq/+OILF3wuWrTIBWcyYMAAd/nDDz+0MmXK2PLly+2ff/5xtymAbNWqlTVr1sy+/PJLy58/vz344IMuA/v999+HM4+fffaZC/T0rx7frl07Fyh26dLF3a5gcNOmTTZjxgyXqe3du7dt2LAhzbZceeWVbnv0PEqWLGnPPPOMnXPOObZ06VIX9IrW/dZbb9nbb79t+fKlX4hx55132ueff27vvfeelStXzu6++2775ptv3PPJjLLJWjxbt249jFcGAAAgQMFnKBSyadOm2UcffWQ9evRI00yjjKICxFtuuSUcfK5evdouv/xylx2V6tWrh++v2xo2bGiNGzcOP94zceJES01NddlG1ZqKsqLKgiqQPO+889x1yqg+9dRTLiCsVauWy3Lq+Sn4XLx4sX366ac2b9688N/Q+pRh9cycOdPmzp3rAlJld0WZ1HfffdfefPNNu/nmm911CqBffvlllx1Nj7K9L7zwgr366qsucJWXXnrJjj766Cz36ZAhQ+y+++7L9msAAAACfm73ZGo+bcqUKS5jqYykgsJrr73WDUcruFPwpEBPGTs1Ie3atct27txpRYsWtZ49e7ph+o8//tgN1SsQrVevnlunrtdlZQcVTGoIvXnz5u42DXsr21iiRIk0z0PrXrFiRfiyhvEjM5HKgv7www/uv5csWeIypieddFL4djVLKWD16O8ocNSQfSRlYCP/jsoNMgo8RfdVgNq0adPwdcqa1qxZM8t9q7pZZWQ92o8qYQAAAEjY4LNFixb29NNPu+HuihUruqBO9ZcXXXSRCyIfeughF2wpk9i5c2cXiCn4VC2lhs/ff/99F4AqUFUtpLKmF1xwgasJVQ3oJ5984jKGGqZX5lEBYaNGjey111474LlEBoEaSo+kLKmC4+zS31HAqmxqNGVZPSoZyCnKuHpZVwAAEH98P71mKHiZz4OuYlXwpaxhlSpVXOApCxYscIGegslTTjnFjj/+eFu7du0Bj1UWT0Pxqpfs06ePPffcc2kCyY4dO7rhajUBPfvss+56ZSuXLVvmaif1dyMX1WVmh7KOysR+++234euUTVWjk0d/Z926dW6bov+O6lCz69hjj3WB8Ndffx2+Tn9HdaMAACAxht39XILGlxYqBWgahh81apRrNnrllVds7Nixae6jmlDVh65cudINr6sxqHbt2u62gQMHuuYcBYQ//fSTG9r3blMXvII/dbir4UiPV3ZSw/i//fZbtp6fakA11K+6TdV1KgjVf6u5yKsj1e1qatKQvzKzyubOnj3b7rnnHps/f36294VKEpTxVdPR9OnT7ccff3Td+GrIAgAASHS+RET169d3Uy0NHTrU6tSp44bINaweaf/+/W4oXUGlOtWVHfWakTSEr3pH1YCeccYZrnbz9ddfd7dpyF4d8sq0XnbZZe7xCu5U86npkLJLTULly5d367/00ktdI5LqSL3pkhSEathft99www3u+V199dWuHECPOxjDhg2z008/3U0tpaD2tNNOc6UDAAAg2JKSfJ5qKSl4yaukkNrWE5CypioDUKOU15We16jhSKUFE5OPtaJBPL9WNuyb85Mlqt17g/eBczBKFf3/eXoTzaZtiX3yiuJF9luiypeUkF/JtnP7Vmt3VhnbsmXLQSWW8uJ39qyWp1rxAoc9k2XY9r377NRPZ8X1vonm397J4zQErqYiTfWkCec1B6mmdFKmEwAAwA9MtZS1hAk+VZOqyd5Vk6rhdk3lpPKA6C55AAAA5JyECT41zZMWAACAuJlqKZXMJwAAADLAsHvWErujAQAAADFF5hMAAMAn3hRJfq4vaIK3RQAAAMizyHwCAAD4hJrPrJH5BAAAQMyQ+QQAAPAJmc+sEXwCAAD4hOAzawy7AwAAIGbIfAIAAPia+fRzqqUkCxoynwAAAIgZMp8AAAA+Zir9PLd70n4ynwAAAMjDRo8ebVWrVrXChQtb06ZNbe7cuZnef+TIkVazZk0rUqSIVa5c2W6//XbbtWtXjj0/Mp8AAAAB6XafOHGi9e7d28aOHesCTwWWrVq1siVLlli5cuUOuP+ECROsX79+Nm7cOGvevLktXbrUOnXqZElJSTZixAjLCWQ+AQAAfD63u5/LwVDA2KVLF7vhhhvshBNOcEFo0aJFXXCZntmzZ9upp55q1157rcuWnnfeeXbNNddkmS09HASfAAAAedzWrVvTLLt37z7gPnv27LEFCxZYy5Ytw9clJye7y3PmzEl3vcp26jFesPnLL7/YBx98YBdeeGGObQvD7gAAAHl82L1y5cpprh80aJANHjw4zXWbNm2y/fv3W/ny5dNcr8uLFy9Od/3KeOpxp512moVCIdu3b5/dcsstdvfdd1tOIfgEAADI49asWWMpKSnhy4UKFfJlvTNmzLCHH37YxowZ42pEly9fbrfddps98MADNmDAAMsJBJ8AAAB5PPOZkpKSJvhMT5kyZSxfvny2fv36NNfrcoUKFdJ9jALM66+/3m666SZ3uW7durZjxw67+eab7Z577nHD9n6j5hMAACAADUcFCxa0Ro0a2bRp08LXpaamusvNmjVL9zE7d+48IMBUACsahs8JZD4BAAAConfv3taxY0dr3LixNWnSxE21pEymut+lQ4cOVqlSJRsyZIi73KZNG9ch37Bhw/Cwu7Khut4LQv1G8BkH9n061/YVzzzVHlT5m51oier9+2dZIjut+ZGWqAoXzJlsQ7woXSTnJrfO66oW+NUS0bak7RYUuT3PZ7t27Wzjxo02cOBAW7dunTVo0MCmTp0abkJavXp1mkznvffe6+b01L+///67lS1b1gWeDz30kOUUgk8AAIAA6d69u1syajCKlD9/ftc5ryVWCD4BAAB8cigTw2fGz3XlFcHbIgAAAORZZD4BAAD8kpT038XP9QUMwScAAIBP1Lzja8NRUvCCT4bdAQAAEDNkPgEAAHxCw1HWgrdFAAAAyLPIfAIAAARkkvl4QOYTAAAAMUPmEwAAwCfUfGaN4BMAAMAnScn+DpUnBS/2ZNgdAAAAsUPmEwAAwCc0HGWNzCcAAABihswnAACAX9Qg5GeTUHLw8oTB2yIAAADkWWQ+AQAAfJKUlOQWP9cXNASfAAAAPmGez6wFb4sAAACQZ5H5BAAA8AlTLWWNzCcAAABihswnAACAn+fD9LNOMyl4ecLgbREAAADyLDKfAAAAfvG55tMCWPNJ8AkAAOCTpKRkt/i5vqAJ3hYdghkzZrhJXDdv3pyjf6dTp052ySWX5OjfAAAAyMvyVPC5ceNG69q1q1WpUsUKFSpkFSpUsFatWtmsWbNy9O82b97c/vjjDytZsmSO/h0AABBwGib3ewmYPDXsfvnll9uePXvspZdesurVq9v69ett2rRp9ueffx7S+kKhkO3fv9/y5898MwsWLOgCXQAAACRI5lND3l9++aUNHTrUWrRoYcccc4w1adLE+vfvbxdffLGtWrXKDY0vXLgwzWN0nYbNI4fPP/zwQ2vUqJHLno4bN85dt3jx4jR/7/HHH7djjz02zeO0vq1bt1qRIkXcOiK98847VqJECdu5c6e7vGbNGrvqqqusVKlSVrp0aWvbtq17jh4Fvb1793a3H3nkkda3b18XDAMAgOCfXtPPJWjyzBYVL17cLe+++67t3r37sNbVr18/e+SRR+znn3+2K664who3bmyvvfZamvvo8rXXXnvAY1NSUuyiiy6yCRMmHHB/1WsWLVrU9u7d68oBFIwqYFZZgJ77+eef7zK3Mnz4cBs/frwLfmfOnGl//fWXC2ABAEDwz3Dk5xI0eSb41NC4gjUNuStbeOqpp9rdd99t33///UGv6/7777dzzz3XZTaVlWzfvr39+9//Dt++dOlSW7Bggbs+PbpeQbCX5VQ29P333w/ff+LEiZaammrPP/+81a1b12rXrm0vvviirV69OpyFHTlypMvaXnbZZe72sWPHZllTqqBbfytyAQAACJI8E3x6NZ9r1661yZMnuyyiArmTTjrJBaUHQ5nOSFdffbUbEv/qq6/CWUytt1atWuk+/sILL7QCBQq45yFvvfWWy4i2bNnSXf7uu+9s+fLlLvPpZWwV5O7atctWrFhhW7ZscQ1MTZs2TRNcRz+vaEOGDHEBqrdUrlz5oLYbAADksqSk/56VyLclyYImTwWfUrhwYZe1HDBggM2ePdtNTzRo0CBL/l/NQ2TdpIa/01OsWLE0l9VMdPbZZ4eH0vVvRllPrwFJw/WR92/Xrl24cWn79u2uplT1p5GLMqrpDeVnlzKlCly9RXWlAAAAQZLngs9oJ5xwgu3YscPKli3rLiuj6IlsPsqKgk0Nl8+ZM8d++eUXlw3N6v5Tp061n376yaZPn54mWFXWdNmyZVauXDmrUaNGmsXLWh511FH29ddfhx+zb98+N9SfGTVIKcMauQAAgPhBzWccBZ+aTknZyVdffdXVea5cudLeeOMNe/TRR10nuTrQTznllHAj0eeff2733ntvttev2stt27a5eUTVTV+xYsVM73/GGWe4jKmCzmrVqqUZQtd1ZcqUcc9LDUd6rioR6Nmzp/3222/uPrfddpt7rqodVad9t27dcnwSewAAgLwuzwSfqptUgKcpkBT41alTxw29d+nSxZ566il3H3WOK4OoIe9evXrZgw8+mO31qz6zTZs2rl4zsyF3j6Zeuuaaa9K9vzrev/jiCzcZvtdQ1LlzZ1fz6WUr+/TpY9dff7117NjRmjVr5v7+pZdeetD7BQAAxBGVCfq9BExSiMkn8yx1u2sI/7Xpf1rR4ok5BJ+/2YmWqN67P2fP7JXXndb8SEtUhQsm9sdyxZL/nWkkEVUt8Kslom3bt9uJjU5x/Q7xWnLmfWf/9sitllK4kH/r3bXbju43Oq73TbTghdMAAADIs/LU6TUBAADiWpLPQ+VJwcsTBm+LAAAAkGeR+QQAAPCJ39MjJTHVEgAAAHDoyHwCAAD4xTstpp/rCxiCTwAAAL9omNzPofJkht0BAACAQ0bmEwAAwCdJSclu8XN9QRO8LQIAAEhgo0ePtqpVq1rhwoXdqcvnzp2b6f03b95st956qx111FFWqFAhO/744+2DDz7IsedH5hMAACAgNZ8TJ0603r1729ixY13gOXLkSGvVqpUtWbLEypUrd8D99+zZY+eee6677c0337RKlSrZr7/+aqVKlbKcQvAJAAAQECNGjLAuXbrYDTfc4C4rCH3//fdt3Lhx1q9fvwPur+v/+usvmz17thUoUMBdp6xpTmLYHQAAwCdJycm+L7J169Y0y+7duy29LOaCBQusZcuW4euSk5Pd5Tlz5lh6Jk+ebM2aNXPD7uXLl7c6derYww8/bPv377ecQvAJAADgl6Qk/xczq1y5spUsWTK8DBky5IA/vWnTJhc0KoiMpMvr1q1L9+n+8ssvbrhdj1Od54ABA2z48OH24IMP5tAOYtgdAAAgz1uzZo2lpKSEL6sxyA+pqamu3vPZZ5+1fPnyWaNGjez333+3YcOG2aBBgywnEHwCAAD42nCU7HvDUUpKSprgMz1lypRxAeT69evTXK/LFSpUSPcx6nBXrace56ldu7bLlGoYv2DBguY3ht0BAAACoGDBgi5zOW3atDSZTV1WXWd6Tj31VFu+fLm7n2fp0qUuKM2JwFMIPgEAAPJ4zWd2aZql5557zl566SX7+eefrWvXrrZjx45w93uHDh2sf//+4fvrdnW733bbbS7oVGe8Go7UgJRTGHYHAADwSWSHul/rOxjt2rWzjRs32sCBA93QeYMGDWzq1KnhJqTVq1e7DniPGpk++ugju/32261evXpunk8FonfddZflFIJPAACAAOnevbtb0jNjxowDrtOQ/FdffWWxQvAJAADgF52L3c/zsScFr0IyeFsEAACAPIvMJwAAgF+SfD63e5KP68ojyHwCAAAgZsh8AgAA+CQpKdktfq4vaAg+48DufcmWb2/wDr7seP/+WZao2g481RLZpLsP7MhMFF3albBEtnW3P6cNjEdX99tkiWjf3h0WrDMc+ThUnsywOwAAAHDIyHwCAAD4hamWshS8LQIAAECeReYTAADAL4dwPvZMMdUSAAAAcOjIfAIAAPglOfm/i5/rCxiCTwAAAL/QcJSl4G0RAAAA8iwynwAAAH5hkvkskfkEAABAzJD5BAAA8HWqJT9rPpMsaMh8AgAAIGbIfAIAAPiFSeazRPAJAADgF+b5zFLwtggAAAB5FplPAAAAvzDsniUynwAAAIgZMp8AAAB+4fSaWQreFgEAACDPIvMJAADgZ6bSzw71pODlCQk+AQAA/ELDUZaCF04DAAAgzyLzCQAA4BcajrIUvC0CAABAnkXmEwAAwC/UfGaJ4BMAAMAvnNs9S8HbosN01llnWa9evXL7aQAAAARSIIPPTp06WVJSklsKFixoNWrUsPvvv9/27duX208NAAAEWCgpyfclaAI77H7++efbiy++aLt377YPPvjAbr31VitQoID1798/t58aAABAwgpk5lMKFSpkFSpUsGOOOca6du1qLVu2tMmTJ7vbZs2a5YbXixYtakcccYS1atXK/v7773TX88orr1jjxo2tRIkSbn3XXnutbdiwIXy7Hte+fXsrW7asFSlSxI477jgX9MqePXuse/fudtRRR1nhwoXdcxkyZEiM9gAAAMidhqNkH5ckC5rAZj6jKTD8888/beHChXbOOefY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w+4WvDxh8LYIAAAAeRbBZwbmzJlj+fLls9atW+f2UwEAAHFW8+nnEjQEnxl44YUXrEePHvbFF1/Y2rVrc/vpAACAuDnDUbKPS5IFDcFnOrZv324TJ060rl27uszn+PHj09w+efJkO+6446xw4cLWokULe+mllywpKck2b94cvs/MmTPt9NNPtyJFiljlypWtZ8+etmPHjlzYGgAAgLyD4DMdkyZNslq1alnNmjXtuuuus3HjxlkoFHK3rVy50q644gq75JJL7LvvvrN//etfds8996R5/IoVK+z888+3yy+/3L7//nsXyCoY7d69ey5tEQAAiAWG3bNG8JnBkLuCTlEQuWXLFvv888/d5WeeecYFpcOGDXP/Xn311dapU6c0jx8yZIi1b9/eevXq5TKkzZs3tyeffNJefvll27VrV4Z/d/fu3bZ169Y0CwAAQJAQfEZZsmSJzZ0716655hp3OX/+/NauXTsXkHq3n3zyyWke06RJkzSXlRHVUH3x4sXDS6tWrSw1NdVlTjOioLVkyZLhRcP1AAAg3mo+/V2Chnk+oyjI3Ldvn1WsWDF8nYbcCxUqZE899VS2a0Y1HK86z2hVqlTJ8HH9+/e33r17hy8r80kACgAAgoTgM4KCTg2NDx8+3M4777w0t6nG89///rcbav/ggw/S3DZv3rw0l0866SRbtGiR1ahR46D+vgJcLQAAID6FQklu8XN9QcOwe4QpU6bY33//bZ07d7Y6deqkWdQ8pKyoMpqLFy+2u+66y5YuXeqak7xueHW8i26bPXu2azBauHChLVu2zN577z0ajgAACLzk/57lyKfFDiFUGz16tFWtWtXNytO0aVNXTpiR5557zs3Oc8QRR7ilZcuWmd7fDwSfERRcaqer3jKags/58+fbtm3b7M0337S3337b6tWrZ08//XS4293LWup6NSgpONUL2rBhQxs4cGCaoXwAAAC/aYYdlfANGjTIvvnmG6tfv77rO9mwYUO6958xY4brc/nss8/cCXZU7qfR399//91ySlLIm0MIh+yhhx6ysWPH2po1a3xdr2o+FQi/9eUGK1Y8xRLRus0FLVFNm77OEtlVD59liWrqozmbdcjrKh1d3BLVmXV2WiLasX2rndf0aDe7TEpKfH7fed/ZC7790YqXKOHberdv22aNGtbJ9r5RplON0V6fipqdFVDqxDn9+vXL8vH79+93GVA9vkOHDpYTqPk8BGPGjHEv7JFHHmmzZs1y0y4xpA4AAHLK1qjpF9PrE9mzZ48tWLDANTB7kpOT3aiusprZsXPnTtu7d6+VLl3acgrD7odANZxt27a1E044wR544AHr06ePDR48OLefFgAACOgk85UrV04zHaOmZ4y2adMml7ksX758mut1ed267I2mqW9FZYIKWHMKmc9D8Pjjj7sFAAAgFtasWZNm2D0nZsd55JFH7PXXX3d1oGpWyikEnwAAAD7x+5SYof+tS4FnVjWfZcqUsXz58tn69evTXK/LFSpUyPSxjz32mAs+P/30U9c4nZMYdgcAAAjAud0LFixojRo1smnTpoWvU8ORLjdr1izDxz366KOujHDq1KnWuHFjy2lkPgEAAAKid+/e1rFjRxdE6vTfI0eOtB07dtgNN9zgblcHe6VKlcI1o0OHDnXTQU6YMMHNDerVhnqnB88JBJ8AAAABOcNRu3btbOPGjS6gVCDZoEEDl9H0mpBWr17tOuA9mq9cXfJXXHFFmvVontCcaqYm+AQAAAiQ7t27ZzgFpJqJIq1atcpijeATAAAgjzccBQkNRwAAAIgZMp8AAAA+IfOZNYJPAAAAnxB8Zo1hdwAAAMQMmU8AAAA/M59+TrVkZD4BAACAQ0bmEwAAwCepluQWP9cXNASfAAAAPqHhKGsMuwMAACBmyHwCAAAE5Nzu8YDMJwAAAGKGzCcAAIBPQj7XaYYseMh8AgAAIGbIfAIAAPiEms+sEXwCAAD4hKmWssawOwAAAGKGzGcc+HN7QfsnVNASUeGCQSy1zp4u7UpYIptYaq4lqvP7NrFE1uLzIZaoVhQ41RJSgX8sKBh2zxqZTwAAAMQMmU8AAACfaLwu1ef1BQ2ZTwAAAMQMmU8AAACfUPOZNYJPAAAAnzDVUtYYdgcAAEDMkPkEAADwCcPuWSPzCQAAgJgh8wkAAOATaj6zRuYTAAAAMUPmEwAAwCepof8ufq4vaAg+AQAAfMKwe9YYdgcAAEDMkPkEAADwCVMtZY3MJwAAAGKGzCcAAIBPQqH/Ln6uL2jIfAIAACBmyHwCAAD4JNWS3OLn+oKG4BMAAMAnNBxljWF3AAAAxAyZTwAAAJ/QcJQ1Mp8AAACIGTKfAAAAPuH0mlkj+AQAAPBJaui/i5/rCxqG3QEAABAzZD4BAAD84vNUS8ZUS8GUlJRk7777rvvvVatWucsLFy7M7acFAAAQOAkRfG7cuNG6du1qVapUsUKFClmFChWsVatWNmvWLHf7H3/8YRdccMFBrfOdd96xU045xUqWLGklSpSwE0880Xr16pVDWwAAAOJpqiU/l6BJiODz8ssvt2+//dZeeuklW7p0qU2ePNnOOuss+/PPP93tCkYVlGbXtGnTrF27dm69c+fOtQULFthDDz1ke/fuzcGtAAAAyNro0aOtatWqVrhwYWvatKmLVTLzxhtvWK1atdz969atax988IHlpMAHn5s3b7Yvv/zShg4dai1atLBjjjnGmjRpYv3797eLL774gGF3z+LFi6158+buhahTp459/vnn4dv+85//2Kmnnmp33nmn1axZ044//ni75JJL3IvtGTx4sDVo0MCeeeYZq1y5shUtWtSuuuoq27JlSwy3HgAA5Ma53f1cDsbEiROtd+/eNmjQIPvmm2+sfv36brR3w4YN6d5/9uzZds0111jnzp1dok7xjJYff/zRckrgg8/ixYu7RcHl7t27s/04BZZ9+vRxL0SzZs2sTZs2aTKlP/30U5YvzPLly23SpEkuWJ06dapbV7du3TK8v57f1q1b0ywAACB+5Paw+4gRI6xLly52ww032AknnGBjx451CbBx48ale/8nnnjCzj//fBf31K5d2x544AE76aST7KmnnrKcEvjgM3/+/DZ+/Hg35F6qVCmXsbz77rvt+++/z/Rx3bt3d8PqeiGefvppV9v5wgsvuNt69OhhJ598sktNK6199dVXuxc1OrjdtWuXvfzyyy4DesYZZ9ioUaPs9ddft3Xr1qX7N4cMGeL+jrcoYwoAAJAde/bscaWALVu2DF+XnJzsLs+ZMyfdx+j6yPuLMqUZ3d8PgQ8+RUHk2rVrXa2novsZM2a4qF5BaUaU7YwMYBs3bmw///yzu1ysWDF7//33XWbz3nvvdZlVZUk1nL9z587w49TgVKlSpTTrTE1NtSVLlqT7N1UKoGF5b1mzZo1PewAAAMSCplnye5HokdH0RnM3bdpk+/fvt/Lly6e5XpczSnzp+oO5vx8SIvgU1W6ee+65NmDAAFff0KlTJ1cPcTiOPfZYu+mmm+z55593dRWLFi1ytRaHSk1PKSkpaRYAAIDKlSunGR3VaGm8SpjgM5rqIHbs2JHh7V999VX4v/ft2+fS2BqCz4iG31VTEbnO1atXu4xr5DqV/laTEgAACO7pNf1cRKOhkaOjGi2NVqZMGcuXL5+tX78+zfW6rH6V9Oj6g7m/HwIffKpJ6Oyzz7ZXX33V1XmuXLnSTSnw6KOPWtu2bTN8nDrXNZenut5vvfVW+/vvv+3GG28Md7L37dvXDd9rfWok0m2aaknZ1chsa8eOHe27775zHfc9e/Z0He85+YICAIDgSYkaGU1visiCBQtao0aN3JSQHpX76XJkOWEkXR95f/nkk08yvL8fAn96TdVjao6rxx9/3FasWOECRKWu1QmmxqOMPPLII27RmY5q1Kjh6kX1i0LOPPNMF5x26NDB/To44ogjrGHDhvbxxx+nyWrqcZdddpldeOGF9tdff9lFF11kY8aMicl2AwCA2PN7YvjQQa5L0ywp8aVeFfWijBw50o3KqvtdFLuoH8Ubtr/ttttcXDN8+HBr3bq1a4yeP3++Pfvss5ZTAh986peBdnBmtRGhiFdWw+feZc17lR7NF6olO3RmJS0AACD4QpbkFj/XdzB0Ehyd2XHgwIGuaUgz7mi6R6+pSCWBKgH0aE7zCRMmuAZqJeWOO+44Nz2l5jjPKYEPPgEAABJJ9+7d3ZIelQxGu/LKK90SKwSfAAAAPkn9X9ORn+sLmsA3HOUWNSWpXhQAAAD/j8wnAABAQBqO4gGZTwAAAMQMmU8AAACfkPnMGsEnAACAT1JDSW7xc31Bw7A7AAAAYobMJwAAgE8Yds8amU8AAADEDJlPAAAAn5D5zBqZTwAAAMQMmU8AAAAfM5V+nl4zFMDMJ8EnAACAT0KhJLf4ub6gYdgdAAAAMUPmEwAAwCc0HGWNzCcAAABihswnAACAT1J9bjhKDWDmk+ATAADAJwy7Z41hdwAAAMQMmU8AAACfkPnMGplPAAAAxAyZTwAAAJ/QcJQ1Mp8AAACIGTKfAAAAPqHmM2sEn3GgeOH9VrTIfktEpYvsskS1dXchS2SVjk7cgZkWnw+xRPbZmf0tUdVaMtUS0f6knRYUqan/XfxcX9Ak7qc7AAAAYo7MJwAAgE8Yds8amU8AAADEDJlPAAAAn5D5zBqZTwAAAMQMmU8AAACfqDnd10nmLXgIPgEAAHwSCoXc4uf6goZhdwAAAMQMmU8AAACf0HCUNTKfAAAAiBkynwAAAD4J+Xx6zVAAO47IfAIAACBmyHwCAAD4hJrPrBF8AgAA+ERzfPo6z2fIAodhdwAAAMQMmU8AAACfMOyeNTKfAAAAiBkynwAAAD4JpYbc4uf6gobMJwAAAGKGzCcAAIBP6HbPGsEnAACAT2g4yhrD7gAAAAnor7/+svbt21tKSoqVKlXKOnfubNu3b8/0/j169LCaNWtakSJFrEqVKtazZ0/bsmXLQf1dMp8AAAA+SU0NucXP9eUUBZ5//PGHffLJJ7Z371674YYb7Oabb7YJEyake/+1a9e65bHHHrMTTjjBfv31V7vlllvcdW+++Wa2/y7BJwAAQIL5+eefberUqTZv3jxr3Lixu27UqFF24YUXuuCyYsWKBzymTp069tZbb4UvH3vssfbQQw/ZddddZ/v27bP8+bMXVjLsDgAA4HPNp59LTpgzZ44bavcCT2nZsqUlJyfb119/ne31aMhdw/bZDTyF4DMHzJgxw5KSkmzz5s25/VQAAEAAgs+tW7emWXbv3n1Yz3PdunVWrly5NNcpgCxdurS7LTs2bdpkDzzwgBuqPxgJEXx26tTJBYNaChYsaDVq1LD777/fpYgBAADyusqVK1vJkiXDy5AhQ9K9X79+/cIxT0bL4sWLD/v5KABu3bq1q/0cPHjwQT02YWo+zz//fHvxxRfdL4UPPvjAbr31VitQoID179//oNazf/9+98IpLQ0AABApNRRyi5/rkzVr1rjhbU+hQoUsPX369HFJt8xUr17dKlSoYBs2bEhzvZJy6mjXbZnZtm2bi6tKlChh77zzjounDkbCRFB6kbQzjznmGOvataura5g8ebKNGDHC6tata8WKFXO/Krp165ZmmoHx48e7mgjdV9G91rN69WoXxN51113uMbpO2dQXXnghzd9csGCBq6UoWrSoNW/e3JYsWZILWw4AAOJdSkpKmiWj4LNs2bJWq1atTBeNAjdr1syVBypW8UyfPt1SU1OtadOmmWY8zzvvPLcOxUaFCxc+6G1JmOAzmuan2rNnj8tgPvnkk/bTTz/ZSy+95HZ8375909x3586dNnToUHv++efd/VQj0aFDB/v3v//tHquOsWeeecaKFy+e5nH33HOPDR8+3ObPn+/qKG688cYYbyUAAIilUKr/S06oXbu2y1526dLF5s6da7NmzbLu3bvb1VdfHe50//33312wqtsjA88dO3a4hJsuqz5Ui0aGsythht09oVDIpk2bZh999JGbKLVXr17h26pWrWoPPvigm7NqzJgx4es195Uu169f311eunSpTZo0yc2LpQyql8KOpukHzjzzzHANhmojdu3aleGvBGVTIwuI9aICAADkhNdee80FnOecc45Lxl1++eUuqRYZ/2jUVkk4+eabb8Kd8BrxjbRy5UoXR2VHwgSfU6ZMcZlJ7UillK+99lpXIPvpp5+6ol0V3yrYU72DAkTtaA2Xi1LL9erVC69r4cKFli9fvnBgmZHIxxx11FHuX9VX6IwA6dHzuO+++3zaYgAAEGsh/c/Hms+Q5dwk8+psz2hCeVEwGbktZ511li/bljDD7i1atHBB47Jly+yff/5xQ+wbN260iy66yAWJmjRVdQ+jR49299eQfOQQvZqMIi9nR2QBrvd4Bb4ZUfOT5svyFhUXAwCA+KFh8lQfl1AODbvnpoTJfKqhKDpFrGBTwaDqMr3udQ2nZ0UNSnrc559/Hh5294OKhzMqIAYAAAiChMl8pkfBqIbhdTqpX375xV555RUbO3Zslo9TGrpjx46ugejdd991dQ6aWD47gSsAAAguDUv7vQRNQgefaiDSVEvqZNf5SlV4m9GkrdGefvppu+KKK9zUTOoEU7eYur8AAACQsaRQEEPqgFADlM5iMOGzP61o8f+fWDaRlC6yyxLV1t2JXYLx/fLE/W3cs9J7lsg+O/PgTv4RJLWWTLVEpEnLT2pYP3ye8Hj+zr5jzEYrVMS/bdj9z1Z7rFvZuN430RL30x0AAAAxlzANRwAAADktlBpyi5/rCxqCTwAAAJ+omNHPgsZQ8GJPht0BAAAQO2Q+AQAAfJKaGnKLn+sLGjKfAAAAiBkynwAAAD7xe2L4UACLPsl8AgAAIGbIfAIAAPgklPrfxc/1BQ3BJwAAgE9SQyG3+Lm+oGHYHQAAADFD5hMAAMAnNBxljcwnAAAAYobMJwAAgE+YZD5rBJ8AAAA+4dzuWWPYHQAAADFD5hMAAMDPhiMfh8pDAUx9kvkEAABAzJD5BAAA8DFT6efE8CEynwAAAMChI/MJAADgE9V7+lrzmRq8zCfBJwAAgE8IPrPGsDsAAABihswnAACAT5So9DNZmRq8xCeZTwAAAMQOmc84kC8p5JZEVLXAr5aoru63yRLZsKEnWaJaUeBUS2S1lky1RLW45vmWiHaG9ltQUPOZNTKfAAAAiBkynwAAAH6eXpNJ5jNF8AkAAOCT1FQtIV/XFzQMuwMAACBmyHwCAAD4hGH3rJH5BAAAQMyQ+QQAAPAJUy1ljcwnAAAAYobMJwAAgE/IfGaN4BMAAMAnqRayVB+bhFIteMEnw+4AAACIGTKfAAAAPmHYPWtkPgEAABAzZD4BAAB8wiTzWSPzCQAAgJgh8wkAAOBjjWYqNZ+ZIvMJAADgc8ORn0tO+euvv6x9+/aWkpJipUqVss6dO9v27duzXQ5wwQUXWFJSkr377rsH9XcJPgEAABJQ+/bt7aeffrJPPvnEpkyZYl988YXdfPPN2XrsyJEjXeB5KBh2BwAASLCGo59//tmmTp1q8+bNs8aNG7vrRo0aZRdeeKE99thjVrFixQwfu3DhQhs+fLjNnz/fjjrqqIP+22Q+AQAA8ritW7emWXbv3n1Y65szZ44bavcCT2nZsqUlJyfb119/neHjdu7caddee62NHj3aKlSocEh/m+ATAADAJ6HUVN8XqVy5spUsWTK8DBkyxA7HunXrrFy5cmmuy58/v5UuXdrdlpHbb7/dmjdvbm3btj3kv82wOwAAgE9Sfe52T/3futasWeMagzyFChVK9/79+vWzoUOHZjnkfigmT55s06dPt2+//dYOB8EnAABAHpeSkpIm+MxInz59rFOnTpnep3r16m7IfMOGDWmu37dvn+uAz2g4XYHnihUr3HB9pMsvv9xOP/10mzFjRra2heATAAAgIA1HZcuWdUtWmjVrZps3b7YFCxZYo0aNwsFlamqqNW3aNMOs6k033ZTmurp169rjjz9ubdq0yfZzJPgEAABIMLVr17bzzz/funTpYmPHjrW9e/da9+7d7eqrrw53uv/+++92zjnn2Msvv2xNmjRxGdH0sqJVqlSxatWqZftv03AEAACQgJPMv/baa1arVi0XYGqKpdNOO82effbZ8O0KSJcsWeI63P1E5hMAACABlS5d2iZMmJDh7VWrVs1y2P9QSgzIfP6PinM1U3/0snz58tx+agAAIE7EU+Yzt5D5jKDahxdffDHNddkp2o20f/9+F7RqklYAAJBYUvW/UKqv6wsaIqQImjPLK6b1lieeeMJ1chUrVsxN8NqtWzfbvn17+DHjx493Uw5o7qsTTjjBrWP16tXuzAN33HGHVapUyT1WnWPZnYIAAAAgqMh8ZkEZzCeffNJ1cf3yyy8u+Ozbt6+NGTMmfB8V4mpC1+eff96OPPJId8YAdYwtWrTIXn/9ddc19s4777jM6g8//GDHHXdcun9LAWvk6bJ0+iwAABA/lPT0c6g8FLzEJ8FnpClTpljx4sXDly+44AJ744030hTePvjgg3bLLbekCT7VDabL9evXd5eV+dTwvf71pitQFnTq1Knu+ocffjjdv69TZd133305uIUAAAC5i+AzQosWLezpp58OX9Zw+aeffuqCwsWLF7tMpGb/37Vrl8t2Fi1a1N2vYMGCVq9evfDjlN1U7efxxx+fZv3KaiozmpH+/ftb7969w5f19zTUDwAA4oPfTUIhGo6CTcFmjRo1wpdXrVplF110kXXt2tUeeughNyXBzJkzrXPnzrZnz55w8FmkSBHXZORRTWi+fPncWQP0b6TIzGo01YtmdK5WAACAICD4zISCR51mavjw4eHu9UmTJmX5uIYNG7rMp86ZqnOdAgCAxJDbp9eMBwSfmVAWVPWco0aNcucsnTVrljsFVVY03N6+fXvr0KGDC1wVjG7cuNGmTZvmhudbt24dk+cPAABiS0krLX6uL2iYaikTaiAaMWKE62SvU6eOOw2V6j+zQ41FCj779OljNWvWtEsuucTmzZvnzn8KAACQqJJCQcznBoQajkqWLGkTZ2yyosVTLBHVL7HUEtXVfTZZIhs29CRLVMUL+Hse5XhTNDlxt39xzfMtEe0M7bd2qStsy5YtlpKSEtff2ed1+NoKFMy4v+Ng7d2z3T5+uWlc75toZD4BAAAQM9R8AgAA+CQUSnWLn+sLGjKfAAAAiBkynwAAAD5hkvmsEXwCAAD4xefg0wIYfDLsDgAAgJgh8wkAAOCT1FCqW/xcX9CQ+QQAAEDMkPkEAADwCQ1HWSPzCQAAgJgh8wkAAODnJPOpTDKfGYJPAAAAnzDsnjWG3QEAABAzZD4BAAB8wrnds0bmEwAAADFD5hMAAMAn6jVK9bFOMzV4iU+CTwAAAL+o093XbvfU4EWfDLsDAAAgZsh8AgAA+ISplrJG5hMAAAAxQ+YTAADAJ0y1lDUynwAAAIgZMp8AAAA+oeYzawSfAAAAPmGqpawRfOZhodB/f+3s3LHNEtW2pO2WqPbt3WGJbMf2rZawCvxjiWx/0k5LVDtD+y0R7fxfXaP3vRfP9u/bkafXlxckhYLwSgfUb7/9ZpUrV87tpwEAQEysWbPGjj76aItHu3btsmrVqtm6det8X3eFChVs5cqVVrhwYQsCgs88LDU11dauXWslSpSwpKSkmP7trVu3usBXHwQpKSmWaBJ5+xN52xN9+xN52xN9+3N72xWKbNu2zSpWrGjJyfHbC60AdM+ePb6vt2DBgoEJPIVh9zxMb8Dc/gWoD6FE+xCOlMjbn8jbnujbn8jbnujbn5vbXrJkSYt3ChCDFCTmlPj9eQEAAIC4Q/AJAACAmCH4RLoKFSpkgwYNcv8mokTe/kTe9kTf/kTe9kTf/kTedsQeDUcAAACIGTKfAAAAiBmCTwAAAMQMwScAAABihuATAAAAMUPwCQAAgJgh+AQAAEDMEHwCAAAgZgg+AQAAYLHyf9rnPHvhbGXzAAAAAElFTkSuQmCC", + "image/png": "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6PufffaZVaNGDevpp5+2Ll68aJlGZGSk/l22bJk1f/58/feNGzes33//3WrTpo1VqlQpq1KlStbChQutOnXqWM2bN7euX79umXgMp0+fti5fvqzte+6556yKFSta6dOn13M/cuRI6+TJk1a1atWsrl27+rvJAcXhw4etJ554wtq9e7fe1//++6/eB5kzZ7Z27drlcg0eNvjdoX023333nZUnTx6rWLFiVsmSJa39+/f7pV0kevC8ee+99/R6QRYXLVoU7fZ//fWXlTJlSqtXr17WH3/8YY0fP95KlCiRtXz5cstXUKyDCDwISpQoYa1du1Zf//zzz1ayZMmsqVOnumw3bNgw6/XXX7fu3btnmYL7w7VLly5WSEiI/nic2bBhgzVgwAArbdq0+j7E++rVq5Zpx/H9999bTz75pPX111/r6507d+q/J02apOJi06RJE70eJGbndfr06VaVKlWsunXraifI+R6uX7++Vb58eb/d17gPH3nkEe00HDt2zDpz5oz+e+zYsdasWbOsZs2aWalTp7bWr1/vl/aRmBETse7Tp492vpxp2bKlVa9ePctXUKyDCFgVZcuW1X9D5MLCwlQcwLVr16zFixff9/AzSbDB1q1bta1oH3qt6K26CzY4ePCg9fHHH+tf08APPUWKFNYnn3yiD21PQLDRk8+SJYt16NChh97GQAFWy9mzZ/Xf//33nzVkyBC1UgsUKODYBuvBmjVrrNy5c+s+/uL48ePaaciVK5e1ZMkSvcY26Fy0bdtWBRudTnI/uJbo9Hi7XLly5b51t27dijexhnfyjTfecFk3bdo0K02aNF4df7Tt8tknE5/iLLJ3797Vv3/++aeVL18+q3///mp52kINtm3bpq5DWHg2/nIVRgUEDJbJ22+/ra/xg3vzzTdVsO0fD47bPnbTOhrgxIkT6t2wzz2uDTof69ats44cOaLr4N5v3769Csuvv/7q5xaby9y5c63KlStbHTp0cAzj4O+4ceOsjBkzqvC5d/RwTjFk8rBx/i3hHoBXBZ4fWNPO2IKdIUMGa9WqVQ+9naYLdXpJpGLp7RIWFnbfuoEDB8abWBcuXNj66KOPXNb9+OOPum94eLjlC1gUJcCDyTDtI0BwBCaqQBnRUaNGSceOHR2TWyAgC0E4iJZF9S8b09Jc0L6qVatqwBVA+lX//v3134gGR5pZ06ZN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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1980,18 +2068,13 @@ "source": [ "corr = df.select_dtypes(include=[np.number]).corr()\n", "\n", - "fig, ax = plt.subplots(figsize=(10, 6))\n", - "cax = ax.matshow(corr, cmap='coolwarm')\n", - "fig.colorbar(cax)\n", + "plt.matshow(corr, cmap='coolwarm')\n", + "plt.colorbar()\n", "\n", - "# Set axis ticks\n", - "ax.set_xticks(range(len(corr.columns)))\n", - "ax.set_yticks(range(len(corr.columns)))\n", - "ax.set_xticklabels(corr.columns, rotation=45, ha='left')\n", - "ax.set_yticklabels(corr.columns)\n", + "plt.xticks(range(len(corr.columns)), corr.columns, rotation=45)\n", + "plt.yticks(range(len(corr.columns)), corr.columns)\n", "\n", "plt.title('Correlation Heatmap of Numeric Features', pad=20)\n", - "plt.tight_layout()\n", "plt.show()" ] }, From 9ddaeea63fe3edbc0ec7df3eb7c8eac9577fbae1 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 18:18:07 +0200 Subject: [PATCH 26/33] Improved 'Feature Engineering' section --- lab-01.ipynb | 849 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 566 insertions(+), 283 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 5ed606d..2383420 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 210, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -37,8 +37,9 @@ "from scipy.stats import gaussian_kde\n", "from sklearn.base import BaseEstimator, TransformerMixin\n", "from sklearn.pipeline import Pipeline\n", + "from sklearn.compose import ColumnTransformer\n", "from sklearn.impute import SimpleImputer\n", - "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder" + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, OrdinalEncoder" ] }, { @@ -1757,24 +1758,6 @@ "\n" ] }, - { - "cell_type": "markdown", - "id": "bc8d8eb3", - "metadata": {}, - "source": [ - "1. Histogram + KDE\n", - "\n", - "Purpose: Shows how a numerical variable is distributed (e.g., Age).\n", - "\n", - "- A histogram shows how often values appear in a numeric column by splitting them into intervals (“bins”).\n", - "\n", - "- A KDE curve (Kernel Density Estimation) is a smooth line that represents the probability distribution of the data.\n", - "\n", - "Use case:\n", - "\n", - "- Analyze the distribution of Age, Fare, or any continuous variable." - ] - }, { "cell_type": "markdown", "id": "7454b04e", @@ -2174,7 +2157,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 34, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -2187,7 +2170,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 22, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2212,7 +2195,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 35, "id": "1d982743", "metadata": {}, "outputs": [ @@ -2226,7 +2209,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 23, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -2273,7 +2256,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 36, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -2291,7 +2274,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 37, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -2338,7 +2321,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 38, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -2372,7 +2355,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 39, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -2401,7 +2384,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 40, "id": "a5915326", "metadata": {}, "outputs": [ @@ -2430,7 +2413,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 41, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -2641,23 +2624,49 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "0 1 0 3 ... 7.2500 NaN S\n", - "1 2 1 1 ... 71.2833 C85 C\n", - "2 3 1 3 ... 7.9250 NaN S\n", - "3 4 1 1 ... 53.1000 C123 S\n", - "4 5 0 3 ... 8.0500 NaN S\n", - ".. ... ... ... ... ... ... ...\n", - "886 887 0 2 ... 13.0000 NaN S\n", - "887 888 1 1 ... 30.0000 B42 S\n", - "888 889 0 3 ... 23.4500 NaN S\n", - "889 890 1 1 ... 30.0000 C148 C\n", - "890 891 0 3 ... 7.7500 NaN Q\n", + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", "\n", "[891 rows x 12 columns]" ] }, - "execution_count": 29, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2669,7 +2678,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 42, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2880,23 +2889,49 @@ "" ], "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "0 1 0 3 ... 7.2500 NaN S\n", - "1 2 1 1 ... 71.2833 C85 C\n", - "2 3 1 3 ... 7.9250 NaN S\n", - "3 4 1 1 ... 53.1000 C123 S\n", - "4 5 0 3 ... 8.0500 NaN S\n", - ".. ... ... ... ... ... ... ...\n", - "886 887 0 2 ... 13.0000 NaN S\n", - "887 888 1 1 ... 30.0000 B42 S\n", - "888 889 0 3 ... 23.4500 NaN S\n", - "889 890 1 1 ... 30.0000 C148 C\n", - "890 891 0 3 ... 7.7500 NaN Q\n", + " PassengerId Survived Pclass \\\n", + "0 1 0 3 \n", + "1 2 1 1 \n", + "2 3 1 3 \n", + "3 4 1 1 \n", + "4 5 0 3 \n", + ".. ... ... ... \n", + "886 887 0 2 \n", + "887 888 1 1 \n", + "888 889 0 3 \n", + "889 890 1 1 \n", + "890 891 0 3 \n", + "\n", + " Name Sex Age SibSp \\\n", + "0 Braund, Mr. Owen Harris male 22.0 1 \n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "2 Heikkinen, Miss. Laina female 26.0 0 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "4 Allen, Mr. William Henry male 35.0 0 \n", + ".. ... ... ... ... \n", + "886 Montvila, Rev. Juozas male 27.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "890 Dooley, Mr. Patrick male 32.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "0 0 A/5 21171 7.2500 NaN S \n", + "1 0 PC 17599 71.2833 C85 C \n", + "2 0 STON/O2. 3101282 7.9250 NaN S \n", + "3 0 113803 53.1000 C123 S \n", + "4 0 373450 8.0500 NaN S \n", + ".. ... ... ... ... ... \n", + "886 0 211536 13.0000 NaN S \n", + "887 0 112053 30.0000 B42 S \n", + "888 2 W./C. 6607 23.4500 NaN S \n", + "889 0 111369 30.0000 C148 C \n", + "890 0 370376 7.7500 NaN Q \n", "\n", "[891 rows x 12 columns]" ] }, - "execution_count": 30, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -2908,7 +2943,7 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 43, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -2945,7 +2980,6 @@ " Fare\n", " Cabin\n", " Embarked\n", - " Title\n", " \n", " \n", " \n", @@ -2963,7 +2997,6 @@ " 71.2833\n", " C85\n", " C\n", - " Mrs\n", " \n", " \n", " 3\n", @@ -2979,7 +3012,6 @@ " 53.1000\n", " C123\n", " S\n", - " Mrs\n", " \n", " \n", " 6\n", @@ -2995,7 +3027,6 @@ " 51.8625\n", " E46\n", " S\n", - " Mr\n", " \n", " \n", " 10\n", @@ -3011,7 +3042,6 @@ " 16.7000\n", " G6\n", " S\n", - " Miss\n", " \n", " \n", " 11\n", @@ -3027,7 +3057,6 @@ " 26.5500\n", " C103\n", " S\n", - " Miss\n", " \n", " \n", " ...\n", @@ -3043,7 +3072,6 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " 871\n", @@ -3059,7 +3087,6 @@ " 52.5542\n", " D35\n", " S\n", - " Mrs\n", " \n", " \n", " 872\n", @@ -3075,7 +3102,6 @@ " 5.0000\n", " B51 B53 B55\n", " S\n", - " Mr\n", " \n", " \n", " 879\n", @@ -3091,7 +3117,6 @@ " 83.1583\n", " C50\n", " C\n", - " Mrs\n", " \n", " \n", " 887\n", @@ -3107,7 +3132,6 @@ " 30.0000\n", " B42\n", " S\n", - " Miss\n", " \n", " \n", " 889\n", @@ -3123,31 +3147,56 @@ " 30.0000\n", " C148\n", " C\n", - " Mr\n", " \n", " \n", "\n", - "

204 rows × 13 columns

\n", + "

204 rows × 12 columns

\n", "" ], "text/plain": [ - " PassengerId Survived Pclass ... Cabin Embarked Title\n", - "1 2 1 1 ... C85 C Mrs\n", - "3 4 1 1 ... C123 S Mrs\n", - "6 7 0 1 ... E46 S Mr\n", - "10 11 1 3 ... G6 S Miss\n", - "11 12 1 1 ... C103 S Miss\n", - ".. ... ... ... ... ... ... ...\n", - "871 872 1 1 ... D35 S Mrs\n", - "872 873 0 1 ... B51 B53 B55 S Mr\n", - "879 880 1 1 ... C50 C Mrs\n", - "887 888 1 1 ... B42 S Miss\n", - "889 890 1 1 ... C148 C Mr\n", + " PassengerId Survived Pclass \\\n", + "1 2 1 1 \n", + "3 4 1 1 \n", + "6 7 0 1 \n", + "10 11 1 3 \n", + "11 12 1 1 \n", + ".. ... ... ... \n", + "871 872 1 1 \n", + "872 873 0 1 \n", + "879 880 1 1 \n", + "887 888 1 1 \n", + "889 890 1 1 \n", "\n", - "[204 rows x 13 columns]" + " Name Sex Age SibSp \\\n", + "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", + "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", + "6 McCarthy, Mr. Timothy J male 54.0 0 \n", + "10 Sandstrom, Miss. Marguerite Rut female 4.0 1 \n", + "11 Bonnell, Miss. Elizabeth female 58.0 0 \n", + ".. ... ... ... ... \n", + "871 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 \n", + "872 Carlsson, Mr. Frans Olof male 33.0 0 \n", + "879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 \n", + "887 Graham, Miss. Margaret Edith female 19.0 0 \n", + "889 Behr, Mr. Karl Howell male 26.0 0 \n", + "\n", + " Parch Ticket Fare Cabin Embarked \n", + "1 0 PC 17599 71.2833 C85 C \n", + "3 0 113803 53.1000 C123 S \n", + "6 0 17463 51.8625 E46 S \n", + "10 1 PP 9549 16.7000 G6 S \n", + "11 0 113783 26.5500 C103 S \n", + ".. ... ... ... ... ... \n", + "871 1 11751 52.5542 D35 S \n", + "872 0 695 5.0000 B51 B53 B55 S \n", + "879 1 11767 83.1583 C50 C \n", + "887 0 112053 30.0000 B42 S \n", + "889 0 111369 30.0000 C148 C \n", + "\n", + "[204 rows x 12 columns]" ] }, - "execution_count": 129, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -3177,7 +3226,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 44, "id": "e0d2ab02", "metadata": {}, "outputs": [ @@ -3204,7 +3253,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 45, "id": "265a7ad4", "metadata": {}, "outputs": [ @@ -3237,7 +3286,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 46, "id": "b5bd80d5", "metadata": {}, "outputs": [ @@ -3265,7 +3314,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 47, "id": "c8a36007", "metadata": {}, "outputs": [ @@ -3298,7 +3347,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 48, "id": "8f07516a", "metadata": {}, "outputs": [ @@ -3307,7 +3356,7 @@ "evalue": "expected argument value expression (465633946.py, line 5)", "output_type": "error", "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[36]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[48]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" ] } ], @@ -3337,18 +3386,17 @@ "\n", "[What is Feature Engineering? - geeksforgeeks](https://www.geeksforgeeks.org/what-is-feature-engineering/)\n", "\n", - "Types of Feature Engineering\n", - "\n", "| Column Name | Data Type | Description | Possible Values / Examples |\n", - "|--------------------------|------------------------------|-------------------------------------------------------------------------|--------------------------------------------------------|\n", - "| Feature Extraction | String → Categorical | Extract useful parts from complex fields | From `Name` → `Title` = \"Mr\", \"Mrs\", \"Miss\", etc. |\n", - "| Feature Transformation | Numeric | Apply mathematical or rule-based transformation to values | `Fare` → log(Fare), `Age` → square root(Age) |\n", - "| Encoding Categorical | Categorical → Numeric | Convert string labels into numeric format for modeling | `Sex` = \"male\", \"female\" → 1, 0 using `get_dummies()` |\n", - "| Binning | Numeric → Categorical | Divide continuous values into discrete intervals | `Age` → \"Child\", \"Adult\", \"Senior\" |\n", - "| Feature Interaction | Multiple Columns | Combine two or more columns to create meaningful relationships | `FamilySize` = `SibSp` + `Parch` + 1 |\n", + "|--------------------------|-----------------------------|-------------------------------------------------------------------------|--------------------------------------------------------|\n", + "| Feature Extraction | String → Categorical | Extract useful parts from complex fields or derive new features (e.g., dimensionality reduction) | From `Name` → `Title` = \"Mr\", \"Mrs\", \"Miss\", etc.; PCA for dimensionality reduction |\n", + "| Feature Transformation | Numeric | Apply mathematical or rule-based transformation to values | `Fare` → log(Fare), `Age` → square root(Age) |\n", + "| Encoding Categorical | Categorical → Numeric | Convert string labels into numeric format for modeling | `Sex` = \"male\", \"female\" → 1, 0 using `get_dummies()` |\n", + "| Binning | Numeric → Categorical | Divide continuous values into discrete intervals | `Age` → \"Child\", \"Adult\", \"Senior\" |\n", + "| Feature Interaction | Multiple Columns | Combine two or more columns to create meaningful relationships | `FamilySize` = `SibSp` + `Parch` + 1 |\n", "| Datetime Decomposition | Datetime → Numeric/Categorical | Break down datetime into parts like year, month, day, etc. | `2023-04-19` → year = 2023, month = 4 |\n", - "| Scaling / Normalization | Numeric | Scale numeric values to a common range or distribution | `Fare` → 0–1 using MinMaxScaler |\n", - "| Missing Value Imputation | Any | Fill missing values with mean, median, mode, or prediction | `Age` → fill missing with median age (e.g., 28.0) |\n" + "| Scaling / Normalization | Numeric | Scale numeric values to a common range or distribution | `Fare` → 0–1 using MinMaxScaler |\n", + "| Missing Value Imputation | Any | Fill missing values with mean, median, mode, or prediction | `Age` → fill missing with median age (e.g., 28.0) |\n", + "\n" ] }, { @@ -3377,9 +3425,17 @@ "- Encoding categorical variables: Converting extracted features into formats suitable for modeling, such as one-hot encoding or numeric encoding." ] }, + { + "cell_type": "markdown", + "id": "83f5a24d", + "metadata": {}, + "source": [ + "This code extracts passenger titles (such as Mr., Mrs., Miss, etc.) from the Name column in the dataset. It uses a regular expression to capture the string that appears between a comma and a period, which typically corresponds to the title." + ] + }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 56, "id": "e620008d", "metadata": {}, "outputs": [ @@ -3387,22 +3443,43 @@ "name": "stdout", "output_type": "stream", "text": [ - "Unique titles found: ['Mr' 'Mrs' 'Miss' 'Master' 'Don' 'Rev' 'Dr' 'Mme' 'Ms' 'Major' 'Lady'\n", - " 'Sir' 'Mlle' 'Col' 'Capt' 'the Countess' 'Jonkheer']\n" + "Unique titles found:\n" ] + }, + { + "data": { + "text/plain": [ + "array(['Mr', 'Mrs', 'Miss', 'Master', 'Don', 'Rev', 'Dr', 'Mme', 'Ms',\n", + " 'Major', 'Lady', 'Sir', 'Mlle', 'Col', 'Capt', 'the Countess',\n", + " 'Jonkheer'], dtype=object)" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ "# Extract title from passenger name\n", - "df['Title'] = df['Name'].str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", + "name = df['Name']\n", + "title = name.str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", "\n", "# View unique titles\n", - "print(\"Unique titles found:\", df['Title'].unique())" + "print(\"Unique titles found:\")\n", + "title.unique()" + ] + }, + { + "cell_type": "markdown", + "id": "c3da16dc", + "metadata": {}, + "source": [ + "This code extracts two components from the Cabin column: the deck letter and the cabin number. The deck letter is taken as the first character of the string (e.g., 'C' from 'C85'), while the cabin number is extracted using a regular expression and converted to a numeric type. The results help identify the range of cabin locations, which may correlate with survival rates." ] }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 58, "id": "552e9286", "metadata": {}, "outputs": [ @@ -3437,7 +3514,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 59, "id": "a227b75e", "metadata": {}, "outputs": [ @@ -3465,12 +3542,14 @@ "id": "3cd3b1b2", "metadata": {}, "source": [ - "Alternatively we can use sklearn.preprocessing.OneHotEncoder: With one-hot, we convert each categorical value into a new categorical column and assign a binary value of 1 or 0 to those columns. Each integer value is represented as a binary vector. All the values are zero, and the index is marked with a 1." + "Alternatively we can use sklearn.preprocessing.OneHotEncoder: \n", + "\n", + "With one-hot, we convert each categorical value into a new categorical column and assign a binary value of 1 or 0 to those columns. Each integer value is represented as a binary vector. All the values are zero, and the index is marked with a 1." ] }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 60, "id": "448a9a82", "metadata": {}, "outputs": [ @@ -3589,7 +3668,7 @@ "[891 rows x 3 columns]" ] }, - "execution_count": 123, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -3668,7 +3747,7 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 61, "id": "c89ae9a6", "metadata": {}, "outputs": [ @@ -3712,7 +3791,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 62, "id": "06f0a398", "metadata": {}, "outputs": [ @@ -3753,17 +3832,7 @@ "source": [ "The process of transforming raw data into a model-ready format often involves a series of steps, including data preprocessing, feature selection, and model training. Managing these steps efficiently and ensuring reproducibility can be challenging. This is where sklearn.pipeline.Pipeline from the scikit-learn library comes into play.\n", "\n", - "The Pipeline class in scikit-learn is a powerful tool designed to streamline the machine learning workflow. It allows you to chain together multiple steps, such as data transformations and model training, into a single, cohesive process. This not only simplifies the code but also ensures that the same sequence of steps is applied consistently to both training and testing data, thereby reducing the risk of data leakage and improving reproducibility.\n", - "\n", - "Using pipelines offers several advantages:\n", - "\n", - "- Code Readability and Maintenance: By chaining multiple steps into a single pipeline, the code becomes more readable and easier to maintain. Each step in the pipeline is clearly defined, making it easier to understand the workflow at a glance.\n", - "\n", - "- Reproducibility: Pipelines ensure that the same sequence of transformations is applied to both training and testing data. This consistency is crucial for reproducibility and helps prevent data leakage.\n", - "\n", - "- Hyperparameter Tuning: Pipelines integrate seamlessly with scikit-learn's hyperparameter tuning tools, such as GridSearchCV and RandomizedSearchCV. This allows you to optimize the parameters of both the preprocessing steps and the model in a single search.\n", - "\n", - "- Modularity: Pipelines promote modularity by allowing you to encapsulate different stages of the machine learning process into reusable components. This makes it easier to experiment with different preprocessing techniques and models." + "The Pipeline class in scikit-learn is a powerful tool designed to streamline the machine learning workflow. It allows you to chain together multiple steps, such as data transformations and model training, into a single, cohesive process. This not only simplifies the code but also ensures that the same sequence of steps is applied consistently to both training and testing data, thereby reducing the risk of data leakage and improving reproducibility." ] }, { @@ -3829,8 +3898,10 @@ "A custom transformer is a class that inherits from BaseEstimator and TransformerMixin in scikit-learn. The primary responsibility of a custom transformer is to define two methods:\n", "\n", "- fit(...): This method is used to learn any necessary parameters from the data. For simple transformations that don't require fitting (like string manipulation), you can leave this method empty.\n", - "\n", + " \n", "- transform(...): This method performs the actual transformation of the data.\n", + " \n", + "- get_feature_names_out(...): (Optional but recommended) This method defines the names of the output features, useful when using pipelines or ColumnTransformers.\n", "\n", "Let’s look at an example where we create a custom transformer to preprocess the \"Cabin\" feature in the Titanic dataset.\n", "\n", @@ -3839,17 +3910,17 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 198, "id": "28ee7c92", "metadata": {}, "outputs": [], "source": [ "class CabinTransformer(BaseEstimator, TransformerMixin):\n", " def __init__(self):\n", - " self.scaler = MinMaxScaler() \n", + " pass \n", "\n", " def fit(self, X, y=None):\n", - " return self \n", + " return self\n", "\n", " def transform(self, X):\n", " X = pd.Series(X.flatten()) \n", @@ -3859,20 +3930,22 @@ " \n", " cabin_number = pd.to_numeric(number[0], errors='coerce')\n", " \n", - " cabin_number_scaled = self.scaler.fit_transform(cabin_number.values.reshape(-1, 1))\n", - " \n", " # Combine deck and scaled cabin number into a DataFrame\n", " transformed = pd.DataFrame({\n", " 'CabinDeck': deck,\n", - " 'CabinNumber': cabin_number_scaled.flatten() \n", + " 'CabinNumber': cabin_number\n", " })\n", "\n", - " return transformed" + " return transformed\n", + "\n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"Title\"\n", + " return np.array([\"CabinDeck\", \"CabinNumber\"])" ] }, { "cell_type": "code", - "execution_count": 182, + "execution_count": 199, "id": "e26883b2", "metadata": {}, "outputs": [ @@ -3905,27 +3978,27 @@ " \n", " 0\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", " 1\n", " C\n", - " 0.568493\n", + " 85.0\n", " \n", " \n", " 2\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", " 3\n", " C\n", - " 0.828767\n", + " 123.0\n", " \n", " \n", " 4\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", " ...\n", @@ -3935,27 +4008,27 @@ " \n", " 886\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", " 887\n", " B\n", - " 0.273973\n", + " 42.0\n", " \n", " \n", " 888\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", " 889\n", " C\n", - " 1.000000\n", + " 148.0\n", " \n", " \n", " 890\n", " B\n", - " 0.643836\n", + " 96.0\n", " \n", " \n", "\n", @@ -3964,24 +4037,23 @@ ], "text/plain": [ " CabinDeck CabinNumber\n", - "0 B 0.643836\n", - "1 C 0.568493\n", - "2 B 0.643836\n", - "3 C 0.828767\n", - "4 B 0.643836\n", + "0 B 96.0\n", + "1 C 85.0\n", + "2 B 96.0\n", + "3 C 123.0\n", + "4 B 96.0\n", ".. ... ...\n", - "886 B 0.643836\n", - "887 B 0.273973\n", - "888 B 0.643836\n", - "889 C 1.000000\n", - "890 B 0.643836\n", + "886 B 96.0\n", + "887 B 42.0\n", + "888 B 96.0\n", + "889 C 148.0\n", + "890 B 96.0\n", "\n", "[891 rows x 2 columns]" ] }, - "execution_count": 182, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -3992,7 +4064,7 @@ "\n", "\n", "transformed_cabin = cabin_pipeline.fit_transform(df[[\"Cabin\"]])\n", - "transformed_cabin" + "display(transformed_cabin)" ] }, { @@ -4006,8 +4078,6 @@ "\n", "In a machine learning pipeline, preprocessing is a crucial step to transform raw data into a suitable format for model training. The `ColumnTransformer` helps by enabling separate processing for different features, without needing to manually split the dataset or write custom logic.\n", "\n", - "--- \n", - "\n", "A `ColumnTransformer` allows you to specify a list of transformers to be applied to specific subsets of columns. The general format looks like this:\n", "\n", "```python\n", @@ -4031,13 +4101,162 @@ "id": "b319902e", "metadata": {}, "source": [ - "But before lets instantiate all of our Custom Transformations and Pipelines" + "Before instantiating our custom transformations and pipelines, let's first outline the transformations we need to apply to each column in the dataset:\n", + "\n", + "- `PassengerId`: This column will be dropped as it is just an identifier and not useful for prediction.\n", + "\n", + "- `Pclass`: We'll apply OneHotEncoding to convert the categorical values (e.g., 1, 2, 3) into separate binary columns representing each class.\n", + "\n", + "- `Name`: We will use a custom transformer to extract titles (e.g., Mr., Mrs., etc.) and then apply OneHotEncoding to these extracted titles.\n", + "\n", + "- `Sex`: Since the \"Sex\" column is binary, we will apply binary encoding to convert it into a numerical form.\n", + "\n", + "- `Age`: We'll handle missing values in the \"Age\" column by imputing them with the mean, and then apply MinMaxScaling to normalize the values.\n", + "\n", + "- `SibSp` & Parch: These columns will be transformed by the FamilySizeTransformer to compute the family size, followed by OneHotEncoding to represent it as a categorical variable.\n", + "\n", + "- `Ticket`: This column will be dropped as it doesn't provide valuable information for prediction.\n", + "\n", + "- `Cabin`: Due to too many missing values, the \"Cabin\" column will be dropped.\n", + "\n", + "- `Embarked`: We'll impute the missing values using the most frequent value and apply OneHotEncoding to the \"Embarked\" column." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e151c46f", + "metadata": {}, + "outputs": [], + "source": [ + "class NameTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass\n", + " \n", + " def fit(self, X, y=None):\n", + " return self\n", + " \n", + " def transform(self, X, y=None):\n", + " # Extract the Title from the Name column\n", + " names = X[\"Name\"]\n", + " titles = names.str.extract(r',\\s*([^\\.]*)\\s*\\.', expand=False)\n", + " return pd.DataFrame({\"Title\": titles})\n", + " \n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"Title\"\n", + " return np.array([\"Title\"])" ] }, { "cell_type": "code", - "execution_count": 183, - "id": "29497113", + "execution_count": null, + "id": "3e319ff2", + "metadata": {}, + "outputs": [], + "source": [ + "class FamilySizeTransformer(BaseEstimator, TransformerMixin):\n", + " def __init__(self):\n", + " pass\n", + "\n", + " def fit(self, X, y=None):\n", + " return self\n", + "\n", + " def transform(self, X, y=None):\n", + " # Compute family size\n", + " X_copy = X.copy()\n", + " X_copy['FamilySize'] = X_copy['SibSp'] + X_copy['Parch'] + 1\n", + " return X_copy[['FamilySize']]\n", + " \n", + " def get_feature_names_out(self, input_features=None):\n", + " # After transform, this transformer outputs a single column \"FamilySize\"\n", + " return np.array([\"FamilySize\"])" + ] + }, + { + "cell_type": "markdown", + "id": "809b38b9", + "metadata": {}, + "source": [ + "Now that we've defined our custom transformers, we can build individual pipelines for each feature or group of features. Each pipeline handles the specific preprocessing steps required for that column, such as imputation, scaling, encoding, or applying custom logic." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "34dc5372", + "metadata": {}, + "outputs": [], + "source": [ + "pclass_pipeline = Pipeline([\n", + " (\"ohe\", OrdinalEncoder())\n", + "])\n", + "\n", + "name_pipeline = Pipeline([\n", + " (\"custom_transf\", NameTransformer()),\n", + " (\"ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])\n", + "\n", + "sex_pipeline = Pipeline([\n", + " (\"binary_ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])\n", + "\n", + "age_pipeline = Pipeline([\n", + " (\"mean_imp\", SimpleImputer(strategy=\"mean\")),\n", + " (\"mm_scaler\", MinMaxScaler())\n", + "])\n", + "\n", + "family_pipeline = Pipeline([\n", + " (\"custom_trans\", FamilySizeTransformer())\n", + "])\n", + "\n", + "embarked_pipeline = Pipeline([\n", + " (\"most_freq_imp\", SimpleImputer(strategy=\"most_frequent\")),\n", + " (\"ohe\", OneHotEncoder(drop=\"first\", handle_unknown=\"ignore\", sparse_output=False))\n", + "])" + ] + }, + { + "cell_type": "markdown", + "id": "ee7561d1", + "metadata": {}, + "source": [ + "After defining all individual pipelines, we can combine them into a single ColumnTransformer. This allows us to apply the appropriate preprocessing steps to each subset of features in a clean and organized way, all within one unified transformation." + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "id": "223d4561", + "metadata": {}, + "outputs": [], + "source": [ + "final_transformation = ColumnTransformer(\n", + " transformers=[\n", + " (\"pclass_preprocess\", pclass_pipeline, [\"Pclass\"]),\n", + " (\"name_preprocess\", name_pipeline, [\"Name\"]),\n", + " (\"sex_preprocess\", sex_pipeline, [\"Sex\"]),\n", + " (\"age_preprocess\", age_pipeline, [\"Age\"]),\n", + " (\"sibsp_parch_preprocess\", family_pipeline, [\"SibSp\", \"Parch\"]),\n", + " (\"embarked_preprocess\", embarked_pipeline, [\"Embarked\"])\n", + " ],\n", + " remainder=\"drop\",\n", + " verbose_feature_names_out=True,\n", + " sparse_threshold=0\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5a02b047", + "metadata": {}, + "source": [ + "Before applying the transformation, we split the dataset into features (X) and the target variable (y). This ensures that the target variable (Survived) is not included in the transformations, as it should remain separate and only be used for model training or evaluation. The remainder=\"drop\" parameter in the ColumnTransformer ensures that any columns not explicitly specified for transformation are dropped from the final output." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e9392da", "metadata": {}, "outputs": [ { @@ -4061,169 +4280,233 @@ " \n", " \n", " \n", - " PassengerId\n", - " Survived\n", - " Pclass\n", - " Name\n", - " Sex\n", - " Age\n", - " SibSp\n", - " Parch\n", - " Ticket\n", - " Fare\n", - " Cabin\n", - " Embarked\n", - " Title\n", + " pclass__Pclass_2\n", + " pclass__Pclass_3\n", + " name__Title_Col\n", + " name__Title_Don\n", + " name__Title_Dr\n", + " name__Title_Jonkheer\n", + " name__Title_Lady\n", + " name__Title_Major\n", + " name__Title_Master\n", + " name__Title_Miss\n", + " ...\n", + " family__FamilySize_2\n", + " family__FamilySize_3\n", + " family__FamilySize_4\n", + " family__FamilySize_5\n", + " family__FamilySize_6\n", + " family__FamilySize_7\n", + " family__FamilySize_8\n", + " family__FamilySize_11\n", + " embarked__Embarked_Q\n", + " embarked__Embarked_S\n", " \n", " \n", " \n", " \n", " 0\n", - " 1\n", - " 0\n", - " 3\n", - " Braund, Mr. Owen Harris\n", - " male\n", - " 22.0\n", - " 1\n", - " 0\n", - " A/5 21171\n", - " 7.2500\n", - " NaN\n", - " S\n", - " Mr\n", + " 0.0\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " ...\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", " \n", " \n", " 1\n", - " 2\n", - " 1\n", - " 1\n", - " Cumings, Mrs. John Bradley (Florence Briggs Th...\n", - " female\n", - " 38.0\n", - " 1\n", - " 0\n", - " PC 17599\n", - " 71.2833\n", - " C85\n", - " C\n", - " Mrs\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " ...\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", " \n", " \n", " 2\n", - " 3\n", - " 1\n", - " 3\n", - " Heikkinen, Miss. Laina\n", - " female\n", - " 26.0\n", - " 0\n", - " 0\n", - " STON/O2. 3101282\n", - " 7.9250\n", - " NaN\n", - " S\n", - " Miss\n", + " 0.0\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", + " ...\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", " \n", " \n", " 3\n", - " 4\n", - " 1\n", - " 1\n", - " Futrelle, Mrs. Jacques Heath (Lily May Peel)\n", - " female\n", - " 35.0\n", - " 1\n", - " 0\n", - " 113803\n", - " 53.1000\n", - " C123\n", - " S\n", - " Mrs\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " ...\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", " \n", " \n", " 4\n", - " 5\n", - " 0\n", - " 3\n", - " Allen, Mr. William Henry\n", - " male\n", - " 35.0\n", - " 0\n", - " 0\n", - " 373450\n", - " 8.0500\n", - " NaN\n", - " S\n", - " Mr\n", + " 0.0\n", + " 1.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " ...\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 1.0\n", " \n", " \n", "\n", + "

5 rows × 30 columns

\n", "" ], "text/plain": [ - " PassengerId Survived Pclass ... Cabin Embarked Title\n", - "0 1 0 3 ... NaN S Mr\n", - "1 2 1 1 ... C85 C Mrs\n", - "2 3 1 3 ... NaN S Miss\n", - "3 4 1 1 ... C123 S Mrs\n", - "4 5 0 3 ... NaN S Mr\n", + " pclass__Pclass_2 pclass__Pclass_3 name__Title_Col name__Title_Don \\\n", + "0 0.0 1.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 1.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 1.0 0.0 0.0 \n", + "\n", + " name__Title_Dr name__Title_Jonkheer name__Title_Lady name__Title_Major \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " name__Title_Master name__Title_Miss ... family__FamilySize_2 \\\n", + "0 0.0 0.0 ... 1.0 \n", + "1 0.0 0.0 ... 1.0 \n", + "2 0.0 1.0 ... 0.0 \n", + "3 0.0 0.0 ... 1.0 \n", + "4 0.0 0.0 ... 0.0 \n", + "\n", + " family__FamilySize_3 family__FamilySize_4 family__FamilySize_5 \\\n", + "0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", "\n", - "[5 rows x 13 columns]" + " family__FamilySize_6 family__FamilySize_7 family__FamilySize_8 \\\n", + "0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "\n", + " family__FamilySize_11 embarked__Embarked_Q embarked__Embarked_S \n", + "0 0.0 0.0 1.0 \n", + "1 0.0 0.0 0.0 \n", + "2 0.0 0.0 1.0 \n", + "3 0.0 0.0 1.0 \n", + "4 0.0 0.0 1.0 \n", + "\n", + "[5 rows x 30 columns]" ] }, - "execution_count": 183, + "execution_count": 204, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df.head()" + "X, y = df.drop(columns=[\"Survived\"]), df[\"Survived\"]\n", + "\n", + "transformed_array = final_transformation.fit_transform(X)\n", + "feature_names = final_transformation.get_feature_names_out()\n", + "\n", + "transformed_df = pd.DataFrame(transformed_array, columns=feature_names, index=X.index)\n", + "transformed_df.head()" ] }, { "cell_type": "code", - "execution_count": null, - "id": "b42a79b9", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 78, "id": "38932d18", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "np.int64(0)" - ] - }, - "execution_count": 185, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Transformations\n", - "# - PassengerId: drop columns\n", + "# - PassengerId: drop column\n", "# - Pclass: OneHotEncoding\n", "# - Name: NameCustomTransformer -- OneHotEncoding\n", - "# - Sex: BinaryEncoding" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7ee10946", - "metadata": {}, - "outputs": [], - "source": [ - "class NameCustomTransformer(BaseEstimator, TransformerMixin):\n", - " def __init__(self):\n", - " pass" + "# - Sex: BinaryEncoding\n", + "# - Age: Mean Imputer -- MinMaxScaling\n", + "# - SibSP & Parch: FamilySizeTransformer -- OneHotEncoding\n", + "# - Tikcket: drop column\n", + "# - Cabin: drop column (too many missing values)\n", + "# - Embarked: SimpleImputer(most_frequent) -- OneHotEncoding" ] }, { From 5f4754d755b87d1f4e273ab415cca39d74073454 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 18:20:38 +0200 Subject: [PATCH 27/33] Enhance documentation in lab-01.ipynb by adding spacing for improved readability and clarifying transformation descriptions for dataset preprocessing steps. Removed redundant code cell related to transformations. --- lab-01.ipynb | 65 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 2383420..1965bc1 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -197,8 +197,11 @@ "With pandas, you can perform a wide range of data operations, including\n", "\n", "- Reading and writing data from various file formats like CSV, Excel and SQL databases.\n", + "\n", "- Cleaning and preparing data by handling missing values and filtering entries.\n", + "\n", "- Merging and joining multiple datasets seamlessly.\n", + "\n", "- ...\n", "\n", "[Pandas Tutorial - geeksforgeeks](https://www.geeksforgeeks.org/pandas-tutorial/)\n", @@ -463,7 +466,9 @@ "Here, you're checking the data type of each column (e.g., integer, float, object/string, datetime). This can be exploited for:\n", "\n", "- Understanding what kind of operations can be performed on each column\n", + "\n", "- Spotting incorrect data types (e.g., numeric values stored as objects)\n", + "\n", "- Preparing for data preprocessing (e.g., encoding categorical variables, converting dates)" ] }, @@ -512,7 +517,9 @@ "This is a concise summary of the dataset, showing:\n", "\n", "- Column names and types\n", + "\n", "- Number of non-null entries per column\n", + "\n", "- Memory usage\n", "\n", "It helps quickly assess missing data, data types, and memory footprint." @@ -644,8 +651,11 @@ "Before proceeding with any analysis or modeling, it is essential to verify the quality and integrity of our dataset. Data quality issues can arise in any dataset, including widely used ones like the Titanic dataset. Common problems include:\n", "\n", "- **Missing values**: Empty cells or NaN entries that may require imputation or removal.\n", + "\n", "- **Inconsistent formats**: Data types or formats that do not align with expectations (e.g., text in a numerical column).\n", + "\n", "- **Duplicate records**: Repeated rows that can distort statistical analysis and model performance.\n", + "\n", "- **Invalid or implausible values**: Outliers or entries that fall outside realistic ranges (such as negative ages).\n", "\n", "Identifying and addressing these issues early is crucial for ensuring reliable results and robust models. In this section, we will systematically check for missing data, duplicates, and obvious inconsistencies, setting the stage for effective data cleaning and analysis." @@ -793,7 +803,9 @@ "This part demonstrates how to identify invalid or inconsistent data entries in the Titanic dataset:\n", "\n", "- **Invalid 'Fare' values**: The first part filters rows where the 'Fare' column contains values that are less than or equal to zero. Negative or zero fares are invalid, as they don't make sense in the context of ticket prices.\n", + "\n", "- **Invalid 'Embarked' values**: The second part checks the 'Embarked' column for values that are not among the valid embarkation ports ('C', 'Q', or 'S'). Any entry outside these three values would be inconsistent and require attention.\n", + "\n", "- **Missing 'Age' values**: The third part filters rows where the 'Age' column contains missing values (NaN). These missing values need to be handled, either through imputation or removal, to ensure that the dataset is complete for analysis." ] }, @@ -1390,7 +1402,9 @@ "This step is crucial because:\n", "\n", "- It reveals the central tendency (mean, median) and spread (variance, range) of numerical features.\n", + "\n", "- It helps identify outliers, skewed distributions, and potential data imbalance.\n", + "\n", "- It offers insights into categorical distributions, which are vital for understanding group sizes and planning encoding strategies." ] }, @@ -1406,7 +1420,9 @@ "It's good practice for:\n", "\n", "- Understanding distributions and value ranges\n", + "\n", "- Spotting outliers or suspicious values\n", + "\n", "- Gauging variability in each feature" ] }, @@ -1769,6 +1785,7 @@ "\n", "Why this matters:\n", "- Class imbalance occurs when one class significantly outnumbers the other(s). For example, if most passengers did not survive, models might learn to always predict the majority class just to achieve higher accuracy — without actually learning useful patterns.\n", + "\n", "- This can lead to misleading performance metrics, especially if we rely solely on accuracy." ] }, @@ -1816,12 +1833,15 @@ "To understand the spread and shape of the data, we visualize the distribution of the Age feature using a histogram combined with a Kernel Density Estimate (KDE):\n", "\n", "- The histogram shows how passenger ages are distributed across intervals. It highlights concentrations of values — for example, many passengers appear to be between 20 and 40 years old.\n", + "\n", "- The KDE curve (in red) offers a smooth approximation of the underlying distribution. Unlike the rigid bins of a histogram, KDE helps us see the overall shape and continuity of the data — such as skewness or multiple peaks.\n", "\n", "This kind of plot is valuable for:\n", "\n", "- Identifying common age ranges\n", + "\n", "- Detecting skewed distributions or multi-modal trends\n", + "\n", "- Spotting areas where data is sparse, which may influence model performance\n", "\n", "By combining histogram and KDE, we get both discrete and continuous perspectives on the same feature, making it easier to decide on transformations (e.g., normalization, binning) or whether age should be treated differently in model pipelines." @@ -3740,8 +3760,11 @@ "\n", "Where:\n", "- $X_{\\text{normalized}}$ is the normalized value of the feature.\n", + "\n", "- $X$ is the original value of the feature.\n", + "\n", "- $X_{\\text{min}}$ is the minimum value of the feature.\n", + "\n", "- $X_{\\text{max}}$ is the maximum value of the feature." ] }, @@ -3784,8 +3807,11 @@ "\n", "Where:\n", "- $X_{\\text{standardized}}$ is the standardized value of the feature.\n", + "\n", "- $X$ is the original value of the feature.\n", + "\n", "- $\\mu$ is the sample mean of the feature.\n", + "\n", "- $\\sigma$ is the standard deviation of the feature." ] }, @@ -4092,7 +4118,9 @@ "\n", "Where:\n", "- **`name_of_transformer`**: This is a string label that names the transformation. It can be anything descriptive, like `'scaler'`, `'encoder'`, etc.\n", + "\n", "- **`transformer_object`**: This is the transformer object that will be applied to the selected columns. This could be a `StandardScaler`, `SimpleImputer`, `OneHotEncoder`, etc.\n", + "\n", "- **`columns_to_transform`**: A list or a string specifying which columns should be transformed. You can select columns by name, index, or condition (such as numerical columns).\n" ] }, @@ -4103,23 +4131,23 @@ "source": [ "Before instantiating our custom transformations and pipelines, let's first outline the transformations we need to apply to each column in the dataset:\n", "\n", - "- `PassengerId`: This column will be dropped as it is just an identifier and not useful for prediction.\n", + "- `PassengerId`: Drop column (since it's just an identifier and doesn't contribute to the model).\n", "\n", - "- `Pclass`: We'll apply OneHotEncoding to convert the categorical values (e.g., 1, 2, 3) into separate binary columns representing each class.\n", + "- `Pclass`: Ordinal Encoding (using OrdinalEncoder) — This variable has a meaningful order (1st class > 2nd class > 3rd class), so it's encoded as integers while preserving the ordinal relationship.\n", "\n", - "- `Name`: We will use a custom transformer to extract titles (e.g., Mr., Mrs., etc.) and then apply OneHotEncoding to these extracted titles.\n", + "- `Name`: Custom transformation (NameTransformer) to extract titles from the name, followed by OneHotEncoding (OneHotEncoder) — This helps to capture additional information about the passenger based on their title (e.g., Mr., Mrs., Miss) while also avoiding introducing a large number of dummy variables.\n", "\n", - "- `Sex`: Since the \"Sex\" column is binary, we will apply binary encoding to convert it into a numerical form.\n", + "- `Sex`: Binary Encoding using OneHotEncoder (OneHotEncoder(drop=\"first\")) — This encodes male and female as binary values, with the first category dropped to avoid multicollinearity.\n", "\n", - "- `Age`: We'll handle missing values in the \"Age\" column by imputing them with the mean, and then apply MinMaxScaling to normalize the values.\n", + "- `Age`: Mean imputation (SimpleImputer(strategy=\"mean\")) followed by MinMax scaling (MinMaxScaler) — Missing values are filled with the mean age, and the values are then scaled to the range [0, 1].\n", "\n", - "- `SibSp` & Parch: These columns will be transformed by the FamilySizeTransformer to compute the family size, followed by OneHotEncoding to represent it as a categorical variable.\n", + "- `SibSp & Parch`: Custom transformation (FamilySizeTransformer) to create a new feature FamilySize, which is the sum of SibSp and Parch — This gives a better representation of family size, which may be more informative than the individual columns.\n", "\n", - "- `Ticket`: This column will be dropped as it doesn't provide valuable information for prediction.\n", + "- `Ticket`: Drop column (not included in the transformation, as it doesn't add meaningful value or may contain too many unique values).\n", "\n", - "- `Cabin`: Due to too many missing values, the \"Cabin\" column will be dropped.\n", + "- `Cabin`: Drop column (too many missing values and potentially too complex to handle meaningfully without further preprocessing).\n", "\n", - "- `Embarked`: We'll impute the missing values using the most frequent value and apply OneHotEncoding to the \"Embarked\" column." + "- `Embarked`: Most frequent imputation (SimpleImputer(strategy=\"most_frequent\")) followed by OneHotEncoding (OneHotEncoder) — Missing values are imputed with the most frequent value, and then the categorical values are encoded using OneHotEncoding." ] }, { @@ -4490,25 +4518,6 @@ "transformed_df.head()" ] }, - { - "cell_type": "code", - "execution_count": 78, - "id": "38932d18", - "metadata": {}, - "outputs": [], - "source": [ - "# Transformations\n", - "# - PassengerId: drop column\n", - "# - Pclass: OneHotEncoding\n", - "# - Name: NameCustomTransformer -- OneHotEncoding\n", - "# - Sex: BinaryEncoding\n", - "# - Age: Mean Imputer -- MinMaxScaling\n", - "# - SibSP & Parch: FamilySizeTransformer -- OneHotEncoding\n", - "# - Tikcket: drop column\n", - "# - Cabin: drop column (too many missing values)\n", - "# - Embarked: SimpleImputer(most_frequent) -- OneHotEncoding" - ] - }, { "cell_type": "markdown", "id": "40060b97", From 9dbca96781b878165dbc64e5e96aa6872cc4d5a7 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 18:24:28 +0200 Subject: [PATCH 28/33] Update execution counts and modify column names in lab-01.ipynb for preprocessing steps --- lab-01.ipynb | 188 +++++++++++++++++++++++++++++---------------------- 1 file changed, 108 insertions(+), 80 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 1965bc1..1fbf0df 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -4152,7 +4152,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 212, "id": "e151c46f", "metadata": {}, "outputs": [], @@ -4177,7 +4177,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 213, "id": "3e319ff2", "metadata": {}, "outputs": [], @@ -4210,7 +4210,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 214, "id": "34dc5372", "metadata": {}, "outputs": [], @@ -4253,7 +4253,7 @@ }, { "cell_type": "code", - "execution_count": 185, + "execution_count": 215, "id": "223d4561", "metadata": {}, "outputs": [], @@ -4283,7 +4283,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 216, "id": "3e9392da", "metadata": {}, "outputs": [ @@ -4308,34 +4308,34 @@ " \n", " \n", " \n", - " pclass__Pclass_2\n", - " pclass__Pclass_3\n", - " name__Title_Col\n", - " name__Title_Don\n", - " name__Title_Dr\n", - " name__Title_Jonkheer\n", - " name__Title_Lady\n", - " name__Title_Major\n", - " name__Title_Master\n", - " name__Title_Miss\n", + " pclass_preprocess__Pclass\n", + " name_preprocess__Title_Col\n", + " name_preprocess__Title_Don\n", + " name_preprocess__Title_Dr\n", + " name_preprocess__Title_Jonkheer\n", + " name_preprocess__Title_Lady\n", + " name_preprocess__Title_Major\n", + " name_preprocess__Title_Master\n", + " name_preprocess__Title_Miss\n", + " name_preprocess__Title_Mlle\n", " ...\n", - " family__FamilySize_2\n", - " family__FamilySize_3\n", - " family__FamilySize_4\n", - " family__FamilySize_5\n", - " family__FamilySize_6\n", - " family__FamilySize_7\n", - " family__FamilySize_8\n", - " family__FamilySize_11\n", - " embarked__Embarked_Q\n", - " embarked__Embarked_S\n", + " name_preprocess__Title_Mrs\n", + " name_preprocess__Title_Ms\n", + " name_preprocess__Title_Rev\n", + " name_preprocess__Title_Sir\n", + " name_preprocess__Title_the Countess\n", + " sex_preprocess__Sex_male\n", + " age_preprocess__Age\n", + " sibsp_parch_preprocess__FamilySize\n", + " embarked_preprocess__Embarked_Q\n", + " embarked_preprocess__Embarked_S\n", " \n", " \n", " \n", " \n", " 0\n", + " 2.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -4345,14 +4345,14 @@ " 0.0\n", " 0.0\n", " ...\n", - " 1.0\n", - " 0.0\n", - " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 1.0\n", + " 0.271174\n", + " 2.0\n", " 0.0\n", " 1.0\n", " \n", @@ -4375,15 +4375,14 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", + " 0.472229\n", + " 2.0\n", " 0.0\n", " 0.0\n", " \n", " \n", " 2\n", - " 0.0\n", - " 1.0\n", + " 2.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -4392,15 +4391,16 @@ " 0.0\n", " 0.0\n", " 1.0\n", - " ...\n", - " 0.0\n", " 0.0\n", + " ...\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", " 0.0\n", + " 0.321438\n", + " 1.0\n", " 0.0\n", " 1.0\n", " \n", @@ -4423,15 +4423,15 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", + " 0.434531\n", + " 2.0\n", " 0.0\n", " 1.0\n", " \n", " \n", " 4\n", + " 2.0\n", " 0.0\n", - " 1.0\n", " 0.0\n", " 0.0\n", " 0.0\n", @@ -4446,64 +4446,92 @@ " 0.0\n", " 0.0\n", " 0.0\n", - " 0.0\n", - " 0.0\n", - " 0.0\n", + " 1.0\n", + " 0.434531\n", + " 1.0\n", " 0.0\n", " 1.0\n", " \n", " \n", "\n", - "

5 rows × 30 columns

\n", + "

5 rows × 22 columns

\n", "" ], "text/plain": [ - " pclass__Pclass_2 pclass__Pclass_3 name__Title_Col name__Title_Don \\\n", - "0 0.0 1.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 0.0 \n", - "2 0.0 1.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 0.0 \n", - "4 0.0 1.0 0.0 0.0 \n", + " pclass_preprocess__Pclass name_preprocess__Title_Col \\\n", + "0 2.0 0.0 \n", + "1 0.0 0.0 \n", + "2 2.0 0.0 \n", + "3 0.0 0.0 \n", + "4 2.0 0.0 \n", + "\n", + " name_preprocess__Title_Don name_preprocess__Title_Dr \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Jonkheer name_preprocess__Title_Lady \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Major name_preprocess__Title_Master \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " name_preprocess__Title_Miss name_preprocess__Title_Mlle ... \\\n", + "0 0.0 0.0 ... \n", + "1 0.0 0.0 ... \n", + "2 1.0 0.0 ... \n", + "3 0.0 0.0 ... \n", + "4 0.0 0.0 ... \n", "\n", - " name__Title_Dr name__Title_Jonkheer name__Title_Lady name__Title_Major \\\n", - "0 0.0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 0.0 \n", - "2 0.0 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 0.0 \n", + " name_preprocess__Title_Mrs name_preprocess__Title_Ms \\\n", + "0 0.0 0.0 \n", + "1 1.0 0.0 \n", + "2 0.0 0.0 \n", + "3 1.0 0.0 \n", + "4 0.0 0.0 \n", "\n", - " name__Title_Master name__Title_Miss ... family__FamilySize_2 \\\n", - "0 0.0 0.0 ... 1.0 \n", - "1 0.0 0.0 ... 1.0 \n", - "2 0.0 1.0 ... 0.0 \n", - "3 0.0 0.0 ... 1.0 \n", - "4 0.0 0.0 ... 0.0 \n", + " name_preprocess__Title_Rev name_preprocess__Title_Sir \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", "\n", - " family__FamilySize_3 family__FamilySize_4 family__FamilySize_5 \\\n", - "0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 \n", + " name_preprocess__Title_the Countess sex_preprocess__Sex_male \\\n", + "0 0.0 1.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 1.0 \n", "\n", - " family__FamilySize_6 family__FamilySize_7 family__FamilySize_8 \\\n", - "0 0.0 0.0 0.0 \n", - "1 0.0 0.0 0.0 \n", - "2 0.0 0.0 0.0 \n", - "3 0.0 0.0 0.0 \n", - "4 0.0 0.0 0.0 \n", + " age_preprocess__Age sibsp_parch_preprocess__FamilySize \\\n", + "0 0.271174 2.0 \n", + "1 0.472229 2.0 \n", + "2 0.321438 1.0 \n", + "3 0.434531 2.0 \n", + "4 0.434531 1.0 \n", "\n", - " family__FamilySize_11 embarked__Embarked_Q embarked__Embarked_S \n", - "0 0.0 0.0 1.0 \n", - "1 0.0 0.0 0.0 \n", - "2 0.0 0.0 1.0 \n", - "3 0.0 0.0 1.0 \n", - "4 0.0 0.0 1.0 \n", + " embarked_preprocess__Embarked_Q embarked_preprocess__Embarked_S \n", + "0 0.0 1.0 \n", + "1 0.0 0.0 \n", + "2 0.0 1.0 \n", + "3 0.0 1.0 \n", + "4 0.0 1.0 \n", "\n", - "[5 rows x 30 columns]" + "[5 rows x 22 columns]" ] }, - "execution_count": 204, + "execution_count": 216, "metadata": {}, "output_type": "execute_result" } From e03eee5bca1bcec8a09f87f93fb15f371573ff32 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Tue, 29 Apr 2025 18:27:17 +0200 Subject: [PATCH 29/33] Remove empty code and markdown cells from lab-01.ipynb to streamline the notebook. --- lab-01.ipynb | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index 1fbf0df..d5bacb3 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -4699,28 +4699,6 @@ "\n", "- The dataset is now cleaned, encoded, and normalized — ready for modeling!" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0c056fd6", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a3ca1a1a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "a40c3f3a", - "metadata": {}, - "source": [] } ], "metadata": { From daa83d201ae8519eb9b579dd820c6da25b99f153 Mon Sep 17 00:00:00 2001 From: Basarans Date: Wed, 30 Apr 2025 14:33:11 +0200 Subject: [PATCH 30/33] Update lab-01.ipynb --- lab-01.ipynb | 238 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 232 insertions(+), 6 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index d5bacb3..eac9bd3 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 210, + "execution_count": 6, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -39,7 +39,9 @@ "from sklearn.pipeline import Pipeline\n", "from sklearn.compose import ColumnTransformer\n", "from sklearn.impute import SimpleImputer\n", - "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, OrdinalEncoder" + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, OrdinalEncoder\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.manifold import TSNE" ] }, { @@ -211,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -353,7 +355,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 3, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -4699,11 +4701,235 @@ "\n", "- The dataset is now cleaned, encoded, and normalized — ready for modeling!" ] + }, + { + "cell_type": "markdown", + "id": "16ec2c61", + "metadata": {}, + "source": [ + "## EXTRA -- Unsupervised exploration (PCA, t-SNE)\n", + "\n", + "**Principal Component Analysis (PCA)**\n", + "\n", + "PCA is a dimensionality reduction technique that projects high-dimensional data into a lower-dimensional space while preserving as much variance (information) as possible.\n", + "\n", + "How it works:\n", + "\n", + "- Finds directions (called principal components) in which the data varies the most.\n", + "\n", + "- These directions are orthogonal (independent).\n", + "\n", + "- The first component captures the most variance, the second captures the next most, etc.\n", + "\n", + "- By projecting data onto the first 2 or 3 components, we can visualize high-dimensional data.\n", + "\n", + "Use cases:\n", + "\n", + "- Visualization of high-dimensional data.\n", + "\n", + "- Preprocessing step before machine learning.\n", + "\n", + "- Noise reduction or feature compression.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "dc302f50", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Explained Variance Ratio: [0.31120476 0.22941755]\n" + ] + } + ], + "source": [ + "df = df[['Survived', 'Pclass', 'Sex', 'Age', 'Fare', 'Embarked']].dropna()\n", + "\n", + "# Target\n", + "y = df['Survived']\n", + "\n", + "# Use multiple features including numeric + categorical (to allow n_components=2)\n", + "df_encoded = pd.get_dummies(df, columns=['Sex', 'Embarked'], drop_first=True)\n", + "\n", + "# Create X without using .drop()\n", + "X = df_encoded[[col for col in df_encoded.columns if col != 'Survived']]\n", + "\n", + "# Standardize multiple features\n", + "scaler = StandardScaler()\n", + "X_scaled = scaler.fit_transform(X)\n", + "\n", + "# Apply PCA (now on multiple features)\n", + "pca = PCA(n_components=2)\n", + "X_pca = pca.fit_transform(X_scaled)\n", + "\n", + "# Plot using matplotlib\n", + "plt.figure(figsize=(6,5))\n", + "colors = ['red' if label == 0 else 'blue' for label in y]\n", + "plt.scatter(X_pca[:, 0], X_pca[:, 1], c=colors, alpha=0.6, edgecolor='k')\n", + "plt.xlabel('Principal Component 1')\n", + "plt.ylabel('Principal Component 2')\n", + "plt.title('PCA on Titanic Data')\n", + "plt.grid(True)\n", + "plt.show()\n", + "\n", + "# Print explained variance\n", + "print(\"Explained Variance Ratio:\", pca.explained_variance_ratio_)" + ] + }, + { + "cell_type": "markdown", + "id": "fc88159b", + "metadata": {}, + "source": [ + "From graph we can understand that:\n", + "\n", + "- Datas are closer to Principal COmpontent 1 and we can say that captures the largest variance in the data, so it is better to use for decreasing dimension.\n", + "\n", + "- From the result we can also shat that PCA1 captures 31% and PCA2 captures 23%\n" + ] + }, + { + "cell_type": "markdown", + "id": "05513ac4", + "metadata": {}, + "source": [ + "**t-SNE (t-distributed Stochastic Neighbor Embedding)**\n", + "\n", + "t-SNE is a non-linear technique for visualizing high-dimensional data in 2D or 3D, often used to see clusters.\n", + "\n", + "How it works:\n", + "\n", + "- Preserves local relationships between points (similar samples stay close).\n", + "\n", + "- It maps similar objects in high dimensions to nearby points in lower dimensions.\n", + "\n", + "- Unlike PCA, t-SNE is not good for preserving global structure or variance.\n", + "\n", + "Limitations:\n", + "\n", + "- Slower than PCA.\n", + "\n", + "- Not useful for downstream modeling (only visualization).\n", + "\n", + "- Randomness makes results slightly different each time unless you fix the seed." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "6ab910a2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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t3///m5iYqIbHx/v9urVy508efI296lqtd2+5XTs2LHmdvl3T7TaCl999ZXboUMH87xt3Xa7cOFC0/or687IyHCvuOIK07a6fWuutNomJCT85m9VPddbs6MWVmnblZZbec38fr/bsmVL00K7fVvs9mz9Osj7JDU11bT3SovtggULdti6+/DDD5vnRv6O3Pfbb78169/++ZLXR9qEpU166zWvW7fOPf30083fSklJcc8880zTOv17rbmKsiew5H/VK3cURVEURdmf0W4XRVEURVGqFRUfiqIoiqJUKyo+FEVRFEWpVlR8KIqiKIpSraj4UBRFURSlWlHxoSiKoihKtaImY9shsw02bNhgzIr+7kRKRVEURdmfcF3XTGGW0RHiAPx7qPjYDhEee3tWhaIoiqLUZmTatUzS/j1UfGxH1QAneeL29syKXUXsksUqWWZxiJ33voDuU+1gX9ynfXW/dJ9qB6Fauk8yIkAu4KvOpb+Hio/tqEq1iPCojeJDBkrJumvTm/WP0H2qHeyL+7Sv7pfuU+0gVMv36c/KFrTgVFEURVGUakXFh6IoiqIo1YqKD0VRFEVRqpVaKz4effRRk1O64YYbttxWWVnJNddcQ506dUhMTGTQoEFs2rRpr65TURRFUZR9QHxMmzaNV199lU6dOm1z+4033sg333zDJ598wvjx403b7MCBA/faOhVFURRF2QfER2lpKeeffz6vvfYaaWlpW24vKipi6NChPP300/Tu3ZsuXbrw5ptvMnnyZH7++ee9umZFURRFUWpxq62kVU488USOO+44HnzwwS23z5gxw7Qmye1VtGvXjqZNmzJlyhQOP/zwHT5eIBAw29Y9yoI8lmy1iar11rZ1/xG6T7WDfXGf9tX90n2qHYRq6T7t7Hprlfj48MMPmTlzpkm7bE9WVhYxMTGkpqZuc3v9+vXNz36PRx55hPvuu+83t4u5i/RY10ZGjhzJvobuU+1gX9ynfXW/dJ9qByNr2T6Vl5fvW+JDHEevv/5680LExsbutse9/fbbuemmm37jziaucrXRZEyen759+9ZKU5odoftUO9gX92lf3S/dp9pBqJbuU1X2YJ8RH5JWyc7OpnPnzltui0QiTJgwgRdeeIEff/yRYDBIYWHhNtEP6XZp0KDB7z6u3+832/bIi12bXvB9Ze2/h+5T7WBf3Kc9sV9Soyb1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Apply t-SNE\n", + "tsne = TSNE(n_components=2, random_state=42, perplexity=30)\n", + "X_tsne = tsne.fit_transform(X_scaled)\n", + "\n", + "# Plot using matplotlib\n", + "plt.figure(figsize=(6,5))\n", + "colors = ['red' if label == 0 else 'blue' for label in y]\n", + "plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=colors, alpha=0.6, edgecolor='k')\n", + "plt.xlabel('t-SNE Component 1')\n", + "plt.ylabel('t-SNE Component 2')\n", + "plt.title('t-SNE on Titanic Data')\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6bbde52a", + "metadata": {}, + "source": [ + "From graph we can understand that:\n", + "\n", + "- SImilar features has similar result based on Survived results.\n", + "\n", + "- In some groups we can also see that it is hard to distinguish if person survived or not." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "1a0bfbe6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Passenger 100's 5 closest neighbors (t-SNE space): [331 270 474 551 468]\n", + " Survived Pclass Sex Age Fare Embarked\n", + "414 1 3 male 44.0 7.925 S\n", + "338 1 3 male 45.0 8.050 S\n", + "603 0 3 male 44.0 8.050 S\n", + "696 0 3 male 44.0 8.050 S\n", + "592 0 3 male 47.0 7.250 S\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.metrics.pairwise import euclidean_distances\n", + "\n", + "# Compute pairwise distances between all points in t-SNE space\n", + "distances = euclidean_distances(X_tsne)\n", + "\n", + "# Function to find k closest passengers to a given index\n", + "def find_closest(index, k=5):\n", + " # Exclude self by setting its distance to a very large number\n", + " distances[index, index] = np.inf\n", + " # Get indices of the k smallest distances\n", + " closest_indices = np.argsort(distances[index])[:k]\n", + " return closest_indices\n", + "\n", + "# Example: Find 5 closest passengers to passenger at index 100\n", + "closest = find_closest(100, k=5)\n", + "\n", + "# Show result\n", + "print(f\"Passenger 100's 5 closest neighbors (t-SNE space): {closest}\")\n", + "\n", + "print(df.iloc[closest])\n" + ] + }, + { + "cell_type": "markdown", + "id": "85583dfc", + "metadata": {}, + "source": [ + "- This code shows that the closest passengers and their survival results are not seperated so it is hard to say that the t-SNE is a good method for clustering.\n" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -4717,7 +4943,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.11.9" } }, "nbformat": 4, From a49c8f85513689d8d8dc6e32ed77c018207fc751 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Wed, 14 May 2025 17:29:09 +0200 Subject: [PATCH 31/33] Final part and revision --- lab-01.ipynb | 609 +++++++++++++++++++++------------------------------ 1 file changed, 250 insertions(+), 359 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index eac9bd3..bf6e5f9 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 25, "id": "ab0a0d4d", "metadata": {}, "outputs": [], @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 26, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -213,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 27, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -355,7 +355,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 13, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -405,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 28, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 29, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -476,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 30, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -529,7 +529,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 31, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -576,7 +576,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 32, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -593,7 +593,7 @@ "array([0, 1])" ] }, - "execution_count": 8, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -613,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 33, "id": "c039567b", "metadata": {}, "outputs": [ @@ -682,7 +682,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 34, "id": "bb8a742a", "metadata": {}, "outputs": [ @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 35, "id": "e32bd777", "metadata": {}, "outputs": [ @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 36, "id": "3c6b44b5", "metadata": {}, "outputs": [ @@ -813,7 +813,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 37, "id": "cc6a6a34", "metadata": {}, "outputs": [ @@ -1137,7 +1137,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 38, "id": "4205c152", "metadata": {}, "outputs": [ @@ -1240,7 +1240,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 39, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1430,7 +1430,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 40, "id": "8305e2d9", "metadata": {}, "outputs": [ @@ -1671,7 +1671,7 @@ "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 16, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1698,7 +1698,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 41, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1754,7 +1754,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 42, "id": "ecb40dad", "metadata": {}, "outputs": [], @@ -1772,8 +1772,7 @@ "\n", "After summarizing the dataset using statistics, the next step is to visualize the data. Visualization helps us spot patterns, trends, and anomalies that are hard to detect in raw numbers alone.\n", "\n", - "These visual tools make data intuitive and accessible, even for those without strong statistical backgrounds.\n", - "\n" + "These visual tools make data intuitive and accessible, even for those without strong statistical backgrounds." ] }, { @@ -1793,7 +1792,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 43, "id": "71fbe07b", "metadata": {}, "outputs": [ @@ -1851,7 +1850,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 44, "id": "ee827da3", "metadata": {}, "outputs": [ @@ -1908,7 +1907,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 45, "id": "69ca462b", "metadata": {}, "outputs": [ @@ -1937,7 +1936,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 46, "id": "3bd5a2a3", "metadata": {}, "outputs": [ @@ -2013,7 +2012,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 47, "id": "0a5daf14", "metadata": {}, "outputs": [ @@ -2055,7 +2054,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 48, "id": "910a7faa", "metadata": {}, "outputs": [ @@ -2095,7 +2094,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 49, "id": "33251565", "metadata": {}, "outputs": [ @@ -2179,7 +2178,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 50, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -2192,7 +2191,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 34, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -2217,7 +2216,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 51, "id": "1d982743", "metadata": {}, "outputs": [ @@ -2231,7 +2230,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 35, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -2278,7 +2277,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 52, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -2296,7 +2295,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 53, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -2343,7 +2342,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 54, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -2377,7 +2376,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 55, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -2406,7 +2405,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 56, "id": "a5915326", "metadata": {}, "outputs": [ @@ -2435,7 +2434,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 57, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -2688,7 +2687,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 41, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -2700,7 +2699,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 58, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2953,7 +2952,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 42, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -2965,7 +2964,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 59, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -3218,7 +3217,7 @@ "[204 rows x 12 columns]" ] }, - "execution_count": 43, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -3248,7 +3247,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 60, "id": "e0d2ab02", "metadata": {}, "outputs": [ @@ -3275,7 +3274,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 61, "id": "265a7ad4", "metadata": {}, "outputs": [ @@ -3308,7 +3307,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 62, "id": "b5bd80d5", "metadata": {}, "outputs": [ @@ -3336,7 +3335,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 63, "id": "c8a36007", "metadata": {}, "outputs": [ @@ -3368,21 +3367,11 @@ ] }, { - "cell_type": "code", - "execution_count": 48, - "id": "8f07516a", + "cell_type": "markdown", + "id": "017632ea", "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "expected argument value expression (465633946.py, line 5)", - "output_type": "error", - "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[48]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mimp_median = SimpleImputer(strategy=, fill_value=)\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m expected argument value expression\n" - ] - } - ], "source": [ + "```python\n", "# extract Age data\n", "cabin = df[\"Cabin\"].values\n", "\n", @@ -3392,7 +3381,8 @@ "# Apply imputing technique\n", "imputed_cabin = \n", "\n", - "print(imputed_cabin)" + "print(imputed_cabin)\n", + "```" ] }, { @@ -3457,7 +3447,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 64, "id": "e620008d", "metadata": {}, "outputs": [ @@ -3476,7 +3466,7 @@ " 'Jonkheer'], dtype=object)" ] }, - "execution_count": 56, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -3501,7 +3491,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 65, "id": "552e9286", "metadata": {}, "outputs": [ @@ -3536,7 +3526,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 66, "id": "a227b75e", "metadata": {}, "outputs": [ @@ -3571,7 +3561,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 67, "id": "448a9a82", "metadata": {}, "outputs": [ @@ -3690,7 +3680,7 @@ "[891 rows x 3 columns]" ] }, - "execution_count": 60, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -3742,10 +3732,7 @@ "\n", " For example, if two data points differ significantly in salary but have very similar distances to school, the KNN algorithm might incorrectly assign a higher weight to the salary difference due to its larger scale, making the distance metric less representative of the actual similarities between data points.\n", "\n", - " If both features were scaled to the same range, the distance between samples would be influenced equally by both features, leading to more accurate classifications or predictions.\n", - "\n", - "\n", - "\n" + " If both features were scaled to the same range, the distance between samples would be influenced equally by both features, leading to more accurate classifications or predictions." ] }, { @@ -3772,7 +3759,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 68, "id": "c89ae9a6", "metadata": {}, "outputs": [ @@ -3819,7 +3806,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 69, "id": "06f0a398", "metadata": {}, "outputs": [ @@ -3879,7 +3866,7 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 70, "id": "e933a3ee", "metadata": {}, "outputs": [ @@ -3938,7 +3925,7 @@ }, { "cell_type": "code", - "execution_count": 198, + "execution_count": 71, "id": "28ee7c92", "metadata": {}, "outputs": [], @@ -3973,7 +3960,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 72, "id": "e26883b2", "metadata": {}, "outputs": [ @@ -4154,7 +4141,7 @@ }, { "cell_type": "code", - "execution_count": 212, + "execution_count": 73, "id": "e151c46f", "metadata": {}, "outputs": [], @@ -4179,7 +4166,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 74, "id": "3e319ff2", "metadata": {}, "outputs": [], @@ -4212,7 +4199,7 @@ }, { "cell_type": "code", - "execution_count": 214, + "execution_count": 75, "id": "34dc5372", "metadata": {}, "outputs": [], @@ -4255,7 +4242,7 @@ }, { "cell_type": "code", - "execution_count": 215, + "execution_count": 76, "id": "223d4561", "metadata": {}, "outputs": [], @@ -4285,7 +4272,7 @@ }, { "cell_type": "code", - "execution_count": 216, + "execution_count": 77, "id": "3e9392da", "metadata": {}, "outputs": [ @@ -4533,7 +4520,7 @@ "[5 rows x 22 columns]" ] }, - "execution_count": 216, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -4555,151 +4542,90 @@ "source": [ "## Final Summary\n", "\n", - "At this point in the lab, you've:\n", - "\n", - "- Explored the Titanic dataset in depth\n", - "\n", - "- Identified and handled common data quality issues\n", - "\n", - "- Visualized key distributions and feature relationships\n", - "\n", - "- Created new, meaningful features\n", - "\n", - "- Prepared the data for the next step: modeling\n", - "\n", - "The Final Summary serves as a quick review of what your dataset looks like after preprocessing and what insights you've discovered. This is also a sanity check to ensure the data is clean, consistent, and ready for machine learning models.\n", - "\n", - "### Key Objectives for Final Summary\n", - "\n", - "1.Display the final shape and structure of the dataset\n", - "→ Are there the expected number of rows and columns?\n", - "\n", - "2.Print the updated column list\n", - "→ What features do we now have after feature engineering?\n", + "In this last step, we confirm that our preprocessing has produced a clean, complete dataset ready for modeling. We will:\n", "\n", - "3.Verify there are no more missing or duplicate values\n", - "→ A final cleanup check\n", - "\n", - "4.Summarize important observations or decisions made during EDA and preprocessing" + "1. Reconstruct the final DataFrame (`final_df`) with all features and the `Survived` target \n", + "2. Verify the shape and feature list \n", + "3. Check for any remaining missing or duplicate values \n", + "4. Display a quick head and summary statistics \n", + "5. Summarize our main observations" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "87e482ee", + "execution_count": 86, + "id": "f0d4ce15", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Final shape of the dataset:\n", - "(891, 13)\n", - "\n", - "Final column list:\n", - "['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked', 'Title']\n", + "Final shape: (891, 23)\n", + "Final features: ['pclass_preprocess__Pclass', 'name_preprocess__Title_Col', 'name_preprocess__Title_Don', 'name_preprocess__Title_Dr', 'name_preprocess__Title_Jonkheer', 'name_preprocess__Title_Lady', 'name_preprocess__Title_Major', 'name_preprocess__Title_Master', 'name_preprocess__Title_Miss', 'name_preprocess__Title_Mlle', 'name_preprocess__Title_Mme', 'name_preprocess__Title_Mr', 'name_preprocess__Title_Mrs', 'name_preprocess__Title_Ms', 'name_preprocess__Title_Rev', 'name_preprocess__Title_Sir', 'name_preprocess__Title_the Countess', 'sex_preprocess__Sex_male', 'age_preprocess__Age', 'sibsp_parch_preprocess__FamilySize', 'embarked_preprocess__Embarked_Q', 'embarked_preprocess__Embarked_S', 'Survived']\n", "\n", "Missing values per column:\n", - "PassengerId 0\n", - "Survived 0\n", - "Pclass 0\n", - "Name 0\n", - "Sex 0\n", - "Age 177\n", - "SibSp 0\n", - "Parch 0\n", - "Ticket 0\n", - "Fare 0\n", - "Cabin 687\n", - "Embarked 2\n", - "Title 0\n", + " pclass_preprocess__Pclass 0\n", + "name_preprocess__Title_Col 0\n", + "name_preprocess__Title_Don 0\n", + "name_preprocess__Title_Dr 0\n", + "name_preprocess__Title_Jonkheer 0\n", + "name_preprocess__Title_Lady 0\n", + "name_preprocess__Title_Major 0\n", + "name_preprocess__Title_Master 0\n", + "name_preprocess__Title_Miss 0\n", + "name_preprocess__Title_Mlle 0\n", + "name_preprocess__Title_Mme 0\n", + "name_preprocess__Title_Mr 0\n", + "name_preprocess__Title_Mrs 0\n", + "name_preprocess__Title_Ms 0\n", + "name_preprocess__Title_Rev 0\n", + "name_preprocess__Title_Sir 0\n", + "name_preprocess__Title_the Countess 0\n", + "sex_preprocess__Sex_male 0\n", + "age_preprocess__Age 0\n", + "sibsp_parch_preprocess__FamilySize 0\n", + "embarked_preprocess__Embarked_Q 0\n", + "embarked_preprocess__Embarked_S 0\n", + "Survived 0\n", "dtype: int64\n", "\n", - "Number of duplicated rows:\n", - "0\n", - "\n", - "Data types of final columns:\n", - "PassengerId int64\n", - "Survived int64\n", - "Pclass int64\n", - "Name object\n", - "Sex object\n", - "Age float64\n", - "SibSp int64\n", - "Parch int64\n", - "Ticket object\n", - "Fare float64\n", - "Cabin object\n", - "Embarked object\n", - "Title object\n", - "dtype: object\n", - "\n", - "Final preview of the dataset:\n", - " PassengerId Survived Pclass \\\n", - "0 1 0 3 \n", - "1 2 1 1 \n", - "2 3 1 3 \n", - "3 4 1 1 \n", - "4 5 0 3 \n", - "\n", - " Name Sex Age SibSp \\\n", - "0 Braund, Mr. Owen Harris male 22.0 1 \n", - "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", - "2 Heikkinen, Miss. Laina female 26.0 0 \n", - "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", - "4 Allen, Mr. William Henry male 35.0 0 \n", - "\n", - " Parch Ticket Fare Cabin Embarked Title \n", - "0 0 A/5 21171 7.2500 NaN S Mr \n", - "1 0 PC 17599 71.2833 C85 C Mrs \n", - "2 0 STON/O2. 3101282 7.9250 NaN S Miss \n", - "3 0 113803 53.1000 C123 S Mrs \n", - "4 0 373450 8.0500 NaN S Mr \n" + "Total identical feature-target rows (duplicates): 291\n" ] } ], "source": [ - "print(\"Final shape of the dataset:\")\n", - "print(df.shape)\n", - "\n", - "print(\"\\nFinal column list:\")\n", - "print(df.columns.tolist())\n", - "\n", - "# Final check for missing values\n", - "print(\"\\nMissing values per column:\")\n", - "print(df.isnull().sum())\n", + "# 1. Reconstruct final DataFrame (features + target)\n", + "final_df = pd.concat([transformed_df, df[\"Survived\"].reset_index(drop=True)], axis=1)\n", "\n", - "# Final check for duplicated rows\n", - "print(\"\\nNumber of duplicated rows:\")\n", - "print(df.duplicated().sum())\n", + "# 2. Shape & feature list\n", + "print(\"Final shape:\", final_df.shape)\n", + "print(\"Final features:\", final_df.columns.tolist())\n", "\n", - "# Overview of dtypes (check if types look correct)\n", - "print(\"\\nData types of final columns:\")\n", - "print(df.dtypes)\n", - "\n", - "# Quick preview of the cleaned and engineered dataset\n", - "print(\"\\nFinal preview of the dataset:\")\n", - "print(df.head())\n" + "# 3. Final data quality check\n", + "print(\"\\nMissing values per column:\\n\", final_df.isnull().sum())\n", + "print(\"\\nTotal identical feature-target rows (duplicates):\", final_df.duplicated().sum())" ] }, { "cell_type": "markdown", - "id": "f4f9b4a9", + "id": "87e482ee", "metadata": {}, "source": [ - "# Key Insights from the Titanic Dataset\n", - "\n", - "You can include some of the following example reflections:\n", + "**Why so many “duplicates”?** \n", + "After feature engineering and encoding, multiple distinct passengers end up with exactly the same values across all transformed features *and* the same survival label. \n", + "For example, two female passengers in 3rd class, both aged 24 (imputed or binned the same), with identical family size and embarkation port—all of those collapse to an identical feature vector. \n", + "These are *not* data errors but simply reflect that our pipeline maps different raw records to the same engineered profile.\n", "\n", - "- The Survival rate was higher among females and 1st-class passengers\n", + "### Key Observations\n", "\n", - "- Features like Sex, Pclass, and Title seem to be strong indicators of survival\n", + "- **Rows & Columns**: 891 rows × _N_ features + `Survived` \n", + "- **Missing values**: 0 across all columns \n", + "- **Identical engineered-profile rows**: 291 (expected) \n", + "- **Features after preprocessing**: \n", + " `Title_*`, `FamilySize`, `Pclass`, `Sex_female`, scaled `Age`, scaled `Fare`, `Embarked_*`, _(etc.)_.\n", "\n", - "- We created new features like Title and FamilySize to enrich the dataset\n", - "\n", - "- We handled missing values in Age and dropped columns like Cabin due to excessive missingness\n", - "\n", - "- The dataset is now cleaned, encoded, and normalized — ready for modeling!" + "Having validated that our final dataset is clean, complete, and fully numeric, we’re now ready to move on to model building and evaluation in Lab 2.\n" ] }, { @@ -4707,137 +4633,152 @@ "id": "16ec2c61", "metadata": {}, "source": [ - "## EXTRA -- Unsupervised exploration (PCA, t-SNE)\n", - "\n", - "**Principal Component Analysis (PCA)**\n", + "## EXTRA EXERCISE -- Unsupervised Exploration: PCA & t-SNE\n", "\n", - "PCA is a dimensionality reduction technique that projects high-dimensional data into a lower-dimensional space while preserving as much variance (information) as possible.\n", + "When we have many numeric features, it can be hard to visualize or understand the “shape” of the data in its full dimensionality. Two popular techniques—**PCA** and **t-SNE**—help us project high-dimensional data into 2D (or 3D) so we can:\n", "\n", - "How it works:\n", - "\n", - "- Finds directions (called principal components) in which the data varies the most.\n", - "\n", - "- These directions are orthogonal (independent).\n", - "\n", - "- The first component captures the most variance, the second captures the next most, etc.\n", - "\n", - "- By projecting data onto the first 2 or 3 components, we can visualize high-dimensional data.\n", - "\n", - "Use cases:\n", + "- **See clusters** or separations between classes. \n", + "- **Detect outliers** or unexpected structure. \n", + "- **Decide** if reduced representations might be useful for modeling or further feature engineering." + ] + }, + { + "cell_type": "markdown", + "id": "755efb43", + "metadata": {}, + "source": [ + "### Principal Component Analysis (PCA)\n", "\n", - "- Visualization of high-dimensional data.\n", + "PCA is a **linear** technique that finds new orthogonal axes (principal components) that capture the most variance in the data.\n", "\n", - "- Preprocessing step before machine learning.\n", + "1. **Standardize** each feature to mean 0, variance 1. \n", + "2. **Compute** the covariance matrix of the standardized data. \n", + "3. **Eigen-decompose** → get eigenvectors (directions) and eigenvalues (variance explained). \n", + "4. **Order** components by descending eigenvalue and **project** your data onto the top _k_ components.\n", "\n", - "- Noise reduction or feature compression.\n", - "\n" + "**Why it helps in EDA/preprocessing** \n", + "- You can plot the first two PCs and color by `Survived` to see if survivors cluster apart. \n", + "- The **explained-variance ratio** tells you how many components capture, say, 90% of the variance—guiding dimensionality reduction. \n", + "- By comparing model performance on the top _n_ PCs vs. all features, you learn how much information lives in those directions." ] }, { "cell_type": "code", - "execution_count": 32, - "id": "dc302f50", + "execution_count": 90, + "id": "fddd96b3", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Explained variance ratio (2 PCs): [0.127737 0.08552449]\n" + ] + }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAGGCAYAAACNCg6xAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQJFJREFUeJzt3QucTfX+//HPuIvcQy4ZIvcockuonCiFcuKomJBOitxSyOVIISE6/HXQ5VQc0r3IJUmd3G+ViqRE7hIyMi6z/4/39zz2/u2Z2TPWZsbYe17Px2Ox99prr/1da8/s/ZnP9/P9rhifz+czAAAAnFW2s28CAAAAIXACAADwiMAJAADAIwInAAAAjwicAAAAPCJwAgAA8IjACQAAwCMCJwAAAI8InAAAADwicAKQpldffdViYmJs+/btYT/3/vvvt9jYWIu0dmelNp2Phx9+2P7yl79YpDt16pSVLVvW/t//+3+Z3RREAAInIMQXm3/JkyePXXXVVdazZ0/bt29fiu217rHHHrMqVarYJZdcYvny5bM6derY008/bYcPHw75GvXq1XP7njp1qud26Ys2uF3JlzFjxpzXcWdVV199tV1xxRWW1pWnrr/+eitRooSdPn36grbtYvfzzz/bjBkzbPDgwYF1O3futBEjRrif8cKFC1uxYsWsWbNm9sknn3ja52effZbk5zpnzpxWoUIF69y5s/30008ptj969Kh7vVq1aln+/Pktb968VqNGDXviiSds9+7dno9Fr9OvXz975pln7MSJE56fh6wpR2Y3ALgYPfXUU1a+fHn3Ifrf//7XBTnz58+3TZs2uQBJ1qxZY7fddpsdO3bM7rvvPhcwydq1a10g8/nnn9uiRYuS7Hfr1q3uecrCzJw503r06BFWuzp27OheM7lrrrnGLkbTp0+3xMREu1jde++9NnDgQPviiy+sSZMmIQPWFStWuMA5R47z/7js1KmT/e1vf7PcuXNbpJs0aZL7HbnxxhsD695//3179tlnrW3bthYXF+eCzddee81lpV5++WXr0qWLp30/+uijdt1117lM0Pr1623atGk2b948++abb6xUqVJuGwVSzZs3tx07dtjdd99tDz74oOXKlcu+/vpre+mll+zdd9+1H374wfPxqG36WZg1a5Z17dr1HM4Isgxd5BfA/7zyyitKPfjWrFmTZH2/fv3c+lmzZrn7v//+u6906dK+EiVK+L7//vsU+9m7d69v5MiRKdYPGzbMV7x4cd/bb7/ti4mJ8f3888+e2qXt9PrPPfecL7POide2Xiy8tHvHjh3uffj73/8e8vFRo0a5faxcufK82nLs2DFfNDl58qSvWLFiviFDhiRZv2nTJt+BAweSrDtx4oSvSpUqvjJlypx1v0uXLnXne+7cuUnWv/DCC2693g85deqUr1atWr5LLrnE98UXX6TYz5EjR3yDBw8O+7huv/123w033BD285C10FUHeHDTTTcFuifkX//6l+3atcsmTJjguumSU9fOkCFDUqzXX7N//etf7fbbb7eCBQu6++np008/tWzZstmwYcNSvG7y7kHdVyZFma/KlSu7bkllzZQpOxtlFlq1auX++lf25Morr7SRI0famTNn0qxx8nc5jhs3zmUR9Dw9X9kFZeKS27x5sztfRYoUce2rW7euffDBBym2+/bbb917pK6aMmXKuK5SL5ku1bUo0/TWW2+57EZyOm9qY/369e2XX35xNT06V3qdokWLukxH8nolf3fvsmXL3PbFixd3bQp+LPg5Xs+lurzUDfXdd9+5LI8yn6VLl7axY8emaLcypf/4xz9cN7PO2+WXX2533XWXbdu2LbCNzs/EiROtevXqbhv9zP7973+333///aznTVnYgwcPuoxPMO1L3XPBdEzKkv7666/2xx9/WHr8/r399tv21Vdf2ZNPPmmNGzdOsX2BAgVct1twprddu3ZWsmRJd6x6P5T5O3LkSJLnKTOmYzt06NA5tRNZA111gAf+Lxx9WYq+vPXlqS91r1atWmU//vijvfLKK65LQV9kClqCa0TO5vjx4+4LK7lChQq5riR9wejLevTo0a675Nprr7U9e/ZYr1693JfcQw89lOR5+nKfM2eO6xrRF5yKY1u2bGmrV692X9KpUQCgmhLVheh/BWwK1lRz8txzz531OBSQ6EtUX9QKJPTlr/Oh7hfVm/iDIdUXKThQF4rqx9588013XPrivPPOO912e/fudYGEuoX82yko0/vjtbtO3TwLFy50Aa2fuoXUNesPQhXYLV++3H3h6otXwY8CUQU0Cmb8Xbh+eh8uu+wy9/z4+Ph0OZcKavT+6Fy1b9/eBXyq56lZs6bdeuutbhsFXDqOJUuWuLb27t3bnevFixe741FgJjr3em11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hB04aUJJAACArCjsmcMBAACyqnOaAFMj2d58801XvK1RdsHeeeed9GobAABAZGecNGpNo9u+//57N9Gk5k369ttv3bXqVFgFAAAQrcIOnEaNGmXPP/+8ffjhh24Sy0mTJrlry7Vv396uuOKKjGklAABAJAZO27ZtC1zORIGTJqzUaLq+ffsGJqIEAACIRmEHToULF7Y//vjD3das3v4pCQ4fPmzHjx9P/xYCAABEanF4kyZN3PXhatasaXfffbebEFP1TVp38803Z0wrAQAAIjFwmjx5sp04ccLdfvLJJ93M4cuXL7d27dq5S6EAAABEq7ADpyJFigRu6zpyAwcOTO82AQAARG7gpGu4+K/dottpyYhruwEAAERM4KSC8D179ljx4sWtUKFCIa9Jp2sFa/2ZM2cyop0AAACRETip+NvfRce16gAAQFblKXBq2rSp+//06dO2bNky69q1q5UpUyaj2wYAABC58zjlyJHDnnvuORdAAQAAZDVhT4B50003uawTAABAVhP2dAS33nqrm4Lgm2++sTp16li+fPmSPN66dev0bB8AAEDkBk4PP/yw+3/ChAkpHmNUHQAAiGZhB06JiYkZ0xIAAIBoq3ECAADIqsLOOEl8fLwrEN+xY4edPHkyyWOPPvpoerUNAAAgsgOnDRs22G233WbHjx93AZQmxjx48KBdcsklbmZxAicAABCtwu6q69u3r91xxx32+++/W968eW3lypX2yy+/uBF248aNy5hWAgAARGLgtHHjRuvfv79ly5bNsmfPbgkJCVa2bFkbO3asDR48OGNaCQAAEImBU86cOV3QJOqaU52TFCxY0Hbu3Jn+LQQAAIjUGqdrrrnG1qxZY5UqVXLXsBs2bJircXr99detRo0aGdNKAACASMo4+Se2HDVqlF1++eXu9jPPPGOFCxe2Hj162IEDB2zatGkZ11IAAIBIyTiVLl3a7r//fuvatavVrVs30FW3YMGCjGwfAABA5GWcHnnkEXvrrbesatWqdsMNN9irr77qpiQAAADIKjwHTkOHDrUff/zRlixZYhUqVLCePXu6Lrvu3bvbqlWrMraVAAAAkTiqrlmzZvbvf//b9u7da+PHj7fvv//eGjZsaNWrVw954V8AAADL6teqy58/vz3wwAP23//+1z788EMXSA0YMCB9WwcAABANgZPqm1TnpCkJWrdu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zZ8/P9VtH3roITfTORN3AgCATL9WnYrC77rrLrv66qvP6flz5syxfv36uYsHr1+/3mrVqmUtWrSw/fv3h9x++fLl1rFjR+vWrZsL1tq2beuWTZs2pdj23XfftZUrV7oRfwAAABdkVN0LL7zgeYf+bJRXEyZMsO7du7suQHnxxRdt3rx59vLLL7uuwOQmTZpkLVu2DHQLjhw50hYvXmyTJ092z/XbtWuX9erVyxYuXGitWrUKq00AAADnda06L9QlFk7gpFnH161bZ4MGDQqsy5Ytm+sCXLFiRcjnaL0yVMGUoXrvvfcC9xMTE61Tp04uuKpevbrn9gAAAJx34OQfRZfeDh48aGfOnLESJUokWa/7qp0KZe/evSG313q/Z5991nLkyOE5iEtISHCL39GjR8M8EgAAkBWcV42Tz+dzy8VEGSx157366qsuA+bF6NGjrWDBgoGlbNmyGd5OAACQRQKnl156yWrUqOFGtWnRbV16JVzFihWz7Nmz2759+5Ks1/2SJUuGfI7Wp7X9F1984QrLr7jiCpd10vLLL79Y//793ci9UNRVeOTIkcCyc+fOsI8FAABEv7ADp2HDhrlpB+644w43LYAW3dY0BXosHLly5bI6derYkiVLktQn6X7Dhg1DPkfrg7cXFYf7t1dt09dff20bN24MLBpVp3onFYqHomvuaRb04AUAAOC8r1Wni/tOnz7dTQng17p1azcdgUaxPfXUU2HtT4XecXFxVrduXatXr56bbyk+Pj4wyq5z585WunRp150mCtqaNm1q48ePd6PlZs+ebWvXrrVp06a5x4sWLeqWYDlz5nQZqcqVK4d7uAAAAOceOJ06dcoFOckpc3T69Olwd2cdOnSwAwcOuGyVCrxr165tCxYsCBSA79ixw42082vUqJGbcHPIkCE2ePBgq1SpkhtRp+5CAACAjBTjC7O6W1klZXA0/1Kwxx57zP788083C3ik06g6FYmr3ikjuu1iB85L930C0W77mOiaj43PAeDi+RwI53s/7IyTvzh80aJF1qBBA3d/1apVLjOkbrXgOZaSB1cAAACRLOzASZc2ufbaa93tbdu2BUbHaQm+7InXqQAAAACiNnBaunRpxrQEAAAg2qYjUCF3ar755pvzbQ8AAED0BE41a9Z0F+FNbty4cW46AQAAgGgVduCk4u927dpZjx493Ci6Xbt2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q6/OwBbjYkVXHaJevnz53PDjK664IvBhKfqL84cffnAjZ0Kl848cOXKBWwrgYv4cGDt2rI0cOdJdNF7TFSBrInBCltW+fXs3mkZDjEeNGmVr1661X375xaXuVbegYceiAlINT9ai2xp+rNs//vhjZh8CgAv0OfDss8+6KQpefvllN7p27969bjl27FhmHwIuMKYjQJYbhhxMtQ6a+E4fhproUn+JVqpUyQ0v7t69uxt5s337ditfvnyK5zZt2tTVOACI/s8BBUsKqJIbPny4q5VC1kHgBAAA4BFddQAAAB4ROAEAAHhE4AQAAOARgRMAAIBHBE4AAAAeETgBAAB4ROAEAADgEYETAACARwROADzT7MkTJ05M1xmd27Zta+lJs7nHxMS4maIBIL0ROAFZkAIWBRdadLV4Xfz0qaeestOnT6f5vDVr1tiDDz6Ybu2YNGmSvfrqq5YZNmzYYHfffbeVKFHC8uTJ4y6xoctr6IKvyLhgGYh0BE5AFtWyZUvbs2ePbd261fr37++ut/Xcc8+F3FYXN5bLLrvMLrnkknRrQ8GCBa1QoUJ2oekCrg0aNLCEhASbOXOmff/99/bGG2+49uhCrgCQGgInIIvKnTu3lSxZ0sqVK2c9evRwV4L/4IMPknShPfPMM1aqVCmrXLlyyOyDMlYzZsywO++80wVUytr49+Gni6befvvtVqBAAbv00kvthhtusG3btiV5Hb9mzZpZz5493aIgplixYi6QCb6k5uuvv25169Z1+1L777nnHtu/f7/n4z5+/Lh16dLFbrvtNtdWHbcu4ly/fn0bN26c/etf/wpsu2zZMqtXr547V5dffrkNHDgwSVZO7e3Vq5f16dPHChcu7LJX06dPt/j4ePcaaqOyeR9//HGKrsR58+bZ1Vdf7bJdCuI2bdqUpJ1vv/22Va9e3b22zvv48eOTPK51o0aNsq5du7rXueKKK9yFaoPt3LnT2rdv74LTIkWKWJs2bdxFq/3851/HreMrWrSoPfLII3bq1KnA8enCtn379g1kKIGsjsAJgKMrwPszS7JkyRLbsmWLLV682GVoUjNixAj35fz111+7YOTee++1Q4cOucd27dplTZo0cV/+n376qa1bt8590afVJfjvf//bXZ1+9erVritvwoQJLjjz05f6yJEj7auvvnJXu1cgoADAq4ULF9rBgwft8ccfD/m4PwOmtut4rrvuOvdaU6dOtZdeesmefvrpFO1VgKf2KohSEKouwEaNGtn69evtlltusU6dOrmALdiAAQNcMKTuT2Xy7rjjjkDAovOkc/q3v/3NvvnmG5cNVACZvFtTz1cQqW7Hhx9+2L223jP/eWrRooULqr744gv78ssvLX/+/C7TGPw+L1261AWy+l/Hotfwv84777xjZcqUcd24yk5qAbI8H4AsJy4uztemTRt3OzEx0bd48WJf7ty5fY899ljg8RIlSvgSEhKSPK9cuXK+559/PnBfHyFDhgwJ3D927Jhb9/HHH7v7gwYN8pUvX9538uTJs7ZDmjZt6qtataprk98TTzzh1qVmzZo17jX/+OMPd3/p0qXu/u+//x5y+2effdY9fujQoTTP0eDBg32VK1dO0pYpU6b48ufP7ztz5kygvY0bNw48fvr0aV++fPl8nTp1Cqzbs2ePe70VK1Ykad/s2bMD2/z222++vHnz+ubMmePu33PPPb6//OUvSdozYMAAX7Vq1ZK8F/fdd1/gvtpZvHhx39SpU939119/PUX79X7qdRYuXBg4/9qP2u139913+zp06JDqew5kdWScgCxKWSRlINRVdOutt1qHDh1cZsOvZs2arnD8bNTd5JcvXz7XJefvOtu4caPrmsuZM6fndqnbKrhLqGHDhq4O68yZM4FsjLIz6ppSNqVp06Zu/Y4dOzztP7jbLy2qe9JrB7fl+uuvt2PHjtmvv/4a8vizZ8/uurt07vzUfSfJuxO1bz91o6k7VK/pf229VjDdDz4PyV9b7VTXpf91lCX78ccf3TnS+6xFr3PixIlAV6moO1Dt9lOXXThdn0BWkyOzGwAgc9x4442u+0nBkeqY1D0WTEGQF8mDIn2BJyYmBrr/0pNqh9T9pEVF3eriUsCk+8HdT2m56qqr3P+bN29OErycq1DHH7zOH3j5z0l6SuvcK8CrU6eOO0/J6bx52QeAlMg4AVmUAiMVLitzkzxoSi/KiKi+xl+748WqVauS3F+5cqUrOldWRMHOb7/9ZmPGjHGZrCpVqoSdHVHNkWqSxo4dG/Jx//xPVatWtRUrViTJUKlOSBkc1f2cLx2X3++//+6mQdBr+l9brxVM9xX0BWeH0nLttde6DFXx4sXd+xy8qPDeKwXWwVkuIKsjcAKQYTQ67ujRo67Iee3ate6LXKPi/AXMoSiD1K9fP7fNf/7zH/vnP/9pvXv3do8pyNMXudb99NNPblScCsXDDRhVbK5Rba1bt7ZPPvnEFZirfSoYf+ihh9x2KrbWqDQVfCtge//992348OGubdmynf9HpwquVYCv0XQqblcw5x9hqOkh9JiOTQGVirYnT55sjz32mOf9q0hf+9RIOgWvP//8sxvR9+ijjybpajwbjd77/PPPXbG8iuqBrI7ACUCGUb2PRtOp20i1SOo60nD9tGqeOnfubH/++aebBkBD4xU0+SfdVBeTRnzNnTvXqlWr5jJPGkofLgUTy5cvd+3QdAbKXHXs2NGOHDkSGDVXunRpmz9/vhstV6tWLRdQdevWzYYMGWLpQW3Xsemc7N271z788MNATZmyRW+++abNnj3batSoYcOGDXOBVjijBzU9hAIeBZt33XWXy2Kp/apxUh2aV3pdBZZXXnllki4+IKuKUYV4ZjcCAPzzBtWuXTuqZ6pW1kf1Zeqey4zJPwGcHzJOAAAAHhE4AQAAeERXHQAAgEdknAAAADwicAIAAPCIwAkAAMAjAicAAACPCJwAAAA8InACAADwiMAJAADAIwInAAAAjwicAAAAzJv/DxJsGGRJVIdBAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, "metadata": {}, "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Explained Variance Ratio: [0.31120476 0.22941755]\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAm5RJREFUeJztnQeYE2XbhU+2sgssvYsUC0iz00RFPhSkqmBXwMJvAQU7+KmIDeyIKFYQbNgBESmKiNI/EWmiooBKr7vUbcl/PW92liQ7M3nTdlPOzbVXyGR2ZpJNJmeech6Hy+VygRBCCCGE+CXJ/yqEEEIIIUSgcCKEEEII0YTCiRBCCCFEEwonQgghhBBNKJwIIYQQQjShcCKEEEII0YTCiRBCCCFEEwonQgghhBBNKJwIIYQQQjShcCKEhJUBAwagYcOGpb7fTZs2weFw4J133in1fXfs2BEtWrRAIjJ//nz1usttvL2nCDGDwomQMCJf2vIlYvyUK1cOJ598MgYPHowdO3aUWF+W3XvvvWjatCkyMzNRvnx5nHnmmXjiiSewf/9+0320bt1abXv8+PEBiwrjJzk5GccffzwuvfRSrFy5ErHEBx98gDFjxiAROXjwIEaMGKFEmrxXqlWrhtNOOw1DhgzB1q1by/rwCEkIHJxVR0h4hdMNN9yAxx57DI0aNcLRo0fx448/4t1330WDBg2wZs0aJZCE5cuXo1u3burL8LrrrlOCSfjf//6HKVOmoH379pgzZ47X9v/44w8lxOTqu169emrbusJJjufqq69W+ywsLMSvv/6qxFdubi6WLFmivoDDQX5+PpxOJ9LT0xEJevTooV5HeU6eyKlMnktqaqoShqUdcdq9e7c6rkghr2ubNm2wfv169O/fX/295L2zdu1afPnll/jkk0/UcZQ28rfOy8tDWloakpKSIhZxkoiW79+ckLIgpUz2Skicc/HFF+Oss85S/7/55ptVZOCFF17AtGnTlHiRaJJEe+QL/ueff1YRJ0+efPJJvPnmmyW2+95776FmzZp4/vnn0bdvX/VFEkgK44wzzlAizeCcc85Br169lIB6/fXXTX/n0KFDKrqhiwiXssCI8MUrU6dOVe+V999/H9dcc43XYyLQRbyEg4KCAiWGRAjpIGIpnl93Qnxhqo6QUqBTp07qduPGjepWRMqWLVuUmPIVTUKtWrXw0EMPmaapRDBJ1KVSpUrqfjiPy0g1fv/997j99tuVSDvuuOOK13/11VfRvHlzFU2qW7cuBg0aVCKlaFaPIl/Ekl6T35UvWXl+t9xyC/bt21fimL7++mucf/75qFixIrKysnD22WcXP0+JqHz11VfYvHlzcdrR2JdVjdO8efNw7rnnKvFXuXJl9O7dW0XbPHn00UfV727YsEEdv6wnr69EDw8fPqz9ev70008qUpiRkaEifK+99lrxYxIdkmOQtJov//77rxLRo0aNstz2n3/+WSx2fZHXVF4rA3mdzKJPvn8b4zV77rnn1N/nhBNOUH9bEWgpKSkYOXJkiW389ttv6nfGjRtnWuMkaekKFSqYvm5y0VC7dm0V8RTkQqJ79+7qvST7lf0//vjjxY8TEo1QOBFSChhfehJ5EqZPn66+XEUE6bJ06VL1xS5fPhINuOyyy1T0IZzHZSCiad26dXjkkUcwbNiwYnEhQkm+5CTi1adPHyUAL7roIpVGskNE0n333ae+9F966SUlSOTYu3Tp4vW7Inrki3Tv3r0YPnw4Ro8erVJSs2bNUo//97//VferV6+u0p/yY1fv9M0336h97Ny5Ux3/3XffjUWLFqnjMEv7XHHFFThw4IASMPJ/OR4z8WCGiEBJg0rK9ZlnnlGC87bbbsOECRPU4yImJMr40UcflRAGH374oUo1XnvttZbbl1SvMHnyZLVuOJk4cSJefvll/N///Z/629apU0eJ148//rjEunL8IvIuv/xy021deeWVKkopAtcTEVKSUpT3vJFKlddXXhf5u8j7Ql47z/ccIVGJ1DgRQsLDxIkT5RvN9c0337h27drl+ueff1xTpkxxVatWzZWRkeH6999/1XpVqlRxnXrqqQFte/Dgwa769eu7nE6nuj9nzhy1r59//tnv727cuFGtO3LkSHVc27dvd82fP991+umnq+WfffaZ1/F36NDBVVBQUPz7O3fudKWlpbkuuugiV2FhYfHycePGqfUnTJhQvKx///6uBg0aFN//4Ycf1Drvv/++1zHNmjXLa/n+/ftdFStWdLVp08Z15MgRr3WN5yx0797da/u+z1Geg8Fpp53mqlmzpmvPnj3Fy3755RdXUlKSq1+/fsXLRowYoX73xhtv9NrmpZdeqv52/jj//PPV7z///PPFy3Jzc4v3n5eXp5bNnj1brff11197/X6rVq3UNuw4fPiwq0mTJur35fkPGDDA9fbbb7t27Nhhejxm2/P92xivWVZWlvobe/L666+rx1avXu21vFmzZq5OnToV3//uu+/UenJr/K3q1avn6tOnj9fvffzxx2q9BQsWeD0nX2655RZXZmam6+jRo5bHTUhZwogTIRGgc+fOqFGjBurXr4+rrrpKXVV/8cUXqqBbyMnJUamoQOpO5EpfruYlLWKk2SSVFkjUSTqy5LgkXSKpHIk4Pf300yp65cnAgQO9CqwlciM1NEOHDvUqAJb1JEXkG13wRIqWJe114YUXqgJq40eiC/K6fPfdd2q9uXPnqmiPRBt8a2aM5xwI27ZtUx2Dkp6qWrVq8fJWrVqpY5k5c2aJ37n11lu97kuKb8+ePerv5Q9JbUlkzUCignJfol2SwjPeFxKx8/ybSUH5qlWrvGrPzJAIpUQdJXJnRGtuuukmFR264447VGF8sEj0UN4Xnsh7Qp6TvO88j1UikfI+tEL+VhKNktdX0pMGsh15/3fo0MHrORnI317eF/KaS3RKiuAJiUYonAiJAK+88ooSAiIK5Ivmr7/+UikjAxEb8kWhi3TX7dq1S1kRSLpOfqQu6YILLlBpHqkh0kFSMXJc3377rfoyly/1+++/v8R6Up/jidQUCU2aNPFaLuKgcePGxY+bIZ2A2dnZSuTJl7Pnj3yxyjF4pg3D5YdkdczCKaecor6kJaXkiVg0eFKlShV1a1aL5YsIIt8ieumAFIy0oIhOScdJobdRAyQiSoSiVerLExGgkgaU7cnP22+/rZ6f1BtJbVCw+P69BUmH/uc///FK14n4ETHlK7R9EWF15MgRlZIW5O8sQkqeo6cIlo5ASV/K85LPhLwnDAEp7xlCohF21RESAUTgGF11ZkhBuERDjDZufxgRCqm7MUOKuUVE+eOkk05SUQ9/eEYCQkVEnV1kzDfSUZZY2RiEs6aoX79+ePbZZ5V4kno1KXw3iv0DQWqebrzxRiU8RLzK6yv+X4KIE7Njtiq6tvp7S7RU6tHkvSq1ZSKiREyJqLKjbdu2qghd1pcOQKltEiHlGamSpgKpoxLBJPYdUhguAnLFihV44IEHtC8GCCltKJwIKQN69uyJxYsX47PPPlNfnnZIVES6j+RLx6yY/M4771RfmjrCKViMwmTpqJIvaQMRfhL5shNj8oUoqT4pyLYTZLKekQ468cQTLdfTTdt5HrMvkgaSL/9AbBb8IQaUvtYNv//+u7r17GSTiNrpp5+u/mZSQP7333+rwuxgkaiYvHaeHlKyTKKcvthFBs245JJLVLrRSNfJ85GifR1E5EvBt6Q55fflNRBBZSBdeJIG/fzzz3HeeecVLzc6PAmJVpiqI6QMkFoaqU255557ir9cPZH0lRE9kNoo+UKWjjYRTr4/Eq0QARZKjYs/RBhJZGzs2LFekQxJFUlKRTrh7L5AJdJhlkqS2i3DzkC686TuSzraxJfIE899ijDRSePI6ytRkkmTJnlZJojAkNSndMCFE3kunl5YIirlvkTUDHNTg+uvv14dg3QESkej+H7545dfflHpRTMxJOlgz5SkCCkRh5Le9fz9hQsXBvScxJZBUswSORJTVnkPiJjSQYS+vCfl9ZeuSN9oqRHd8/zbymsmlheERDOMOBFSBkhEQASRfHnLl7unc7ikKqRuqV27duq+RCbky1X8gcwQA0sxy5QCbX+1J8EiX/4SaZDW/K5du6p9SiRHvuTEZ8musFnSMRK1EEEkKR8RSGKSKbVPUjguUQkRgJKyefHFF5VhqGxTUjzyOskXvtQDyRewIK+TRDCkhV3WkwJzieCZISkxESXyWkohtaSLJLojaTGxJwgnUuMkhfZSeyS1TXKM8nzfeOONEqag8tyktkzeA2JZoGMaKrVpUtwvr71EbuR5S1RJ7A5EoHg+H0nhiUeYiB553iLExVNKfLR0Ct19BZD8feVvLdsTMaVrtiqRQ7GQkOPzLSiX97P8fcUFXaKmEkkUewkOsyBRT5n29BESZxjt/MuXL9daf+vWra677rrLdfLJJ7vKlSun2rDPPPNM15NPPunKzs5WreYpKSmu66+/3nIb0tItvyet81YYbefPPvtsSMcv9gNNmzZ1paamumrVquW67bbbXPv27fNax6p1/I033lDPTWwZxHagZcuWrvvvv1+9Bp5Mnz7d1b59e7WetMm3bt3a9eGHHxY/fvDgQdc111zjqly5cnFrvpUdgSDWEOecc07x9nr27Olat26d1zqGHYFYNZi9HrJtO6T1v3nz5q7//e9/rnbt2qm/pRyXvF5WdOvWTW170aJFLh3++usv1yOPPOJq27atsjiQ90WNGjWUPcO8efNKrP/ee++5GjdurGwkxBZBrBCs7Ajs3hc5OTnqtZP1ZJu++NoRePLf//5XPXbiiSeabnvhwoXq+cj269atq94PhmWD5/ZoR0CiCc6qI4SEFUlDSf2WdP4Ra6Soe/Xq1XydCIkxWONECAkr4p/kr+sq0ZHXSFKrIjIJIbEFa5wIIWFBTBylxX7BggXFJo3EG+kYkwLtt956S9U1eRpmEkJiAwonQkhYkLZyKbwW7x/dlvVEQ/y2xBdJjDal2F0c3AkhsQVrnAghhBBCNGGNEyGEEEKIJhROhBBCCCGaJFSNk8w+krEI4k4czLR1QgghhMQfUrUkg9fFyFaGcduRUMJJRFP9+vXL+jAIIYQQEoX8888/aoakHQklnCTSZLwwMt6BEEIIISQnJ0cFVgydYEdCCScjPSeiicKJEEIIIZ7olPGwOJwQQgghRBMKJ0IIIYQQTSicCCGEEEI0oXAihBBCCNGEwokQQgghRBMKJ0IIIYQQTSicCCGEEEI0oXAihBBCCNGEwokQQgghRBMKJ0IIIYQQTSicCCGEEEI0SahZdYQQQkih04VlG/di54GjqFmxHFo3qorkJP8zyggRKJwIIYSULc5CYPMi4OAOoEItoEF7ICk5IruatWYbRn65DtuyjxYvq1OpHEb0bIauLepEZJ8kvqBwIoQQUnasmw7MegDI2XpsWVZdoOvTQLNeYRdNt723Ai6f5duzj6rl4687g+KJ+IU1ToQQQspONH3cz1s0CTnb3Mvl8TCm5yTS5CuaBGOZPC7rEWIHhRMhhJCySc9JpMlOyswa5l4vDEhNk2d6zmyP8risR4gdFE6EEEJKH6lp8o00eeECcra41wsDUggezvVI4kLhRAghpPSRQvBwrucH6Z4L53okcaFwIoQQUvpI91w41/ODWA5I95yV6YAsl8dlPULsoHAihBBS+ojlgHTP2UmZrHru9cKA+DSJ5UDRln33pJDH6edE/EHhRAghpPQRnyaxHLCTMl1Hh9XPSawGxHKgdiXvdJzcpxUB0cXhcrkSpvcyJycHlSpVQnZ2NrKyssr6cAghhJj6ONVzi6Yw+zgZ0DmchKIPaIBJCCGk7BBx1LR7qTmHCyKS2p1QLWLbJ/ENhRMhhJCyRURSo3PL+igIie8ap9GjR8PhcGDo0KFlfSiEEEIISRBiUjgtX74cr7/+Olq1alXWh0IIIYSQBCLmhNPBgwdx7bXX4s0330SVKlXK+nAIIYQQkkDEnHAaNGgQunfvjs6dO5f1oRCih8za2vgDsPpT922YZm8RQggpfWKqOHzKlClYsWKFStXpkJubq3482w0JKftW67pu/5oItVoTQgiJHDETcfrnn38wZMgQvP/++yhXTm+W0KhRo5Qvg/FTv379iB8nIV6i6eN+JQeZ5mxzL5fHCSGExBQxY4A5depUXHrppUhOPubtUVhYqDrrkpKSVGTJ8zGriJOIJxpgkogj6bgxLWymv8s4ibrA0NUR9ashhBCSoAaY//nPf7B69WqvZTfccAOaNm2KBx54oIRoEtLT09UPIaWOmPlZiibBBeRsca9H/xpCCIkZYkY4VaxYES1atPBaVr58eVSrVq3EckLKHHFADud6hBBCooKYqXEiJKaQsRHhXI8QQkhUEDMRJzPmz59f1odAiDkya0tqmKQQXNJyVjVOsh4hhJCYgREnQiKBFHyL5YDCd+p60X2Z/s7CcEIIiSkonAiJFOLTdMVkIKuO93KJNMly+jgRQkjMEdOpOkKiHhFHTbu7u+ekEFxqmiQ9x0gTIYTEJBROhEQaEUm0HCCEkLiAqTpCCCGEEE0onAghhBBCNKFwIoQQQgjRhMKJEEIIIUQTCidCCCGEEE0onAghhBBCNKEdASGEkPjDWUj/NBIRKJwIIYTEF+umA7MeAHK2ejv2yxgkOvaTEGGqjhBCSHyJpo/7eYsmQQZuy3J5nJAQoHAihBASP+k5iTTBZfJg0bJZw9zrERIkFE6EJCry5bHxB2D1p+5bfpmQWEdqmnwjTV64gJwt7vUICRLWOBGSiLAGhMQjUggezvUIMYERJ0ISDdaAkHhFuufCuR4hJlA4EZJIsAaExDNiOSCRUzgsVnAAWfXc6xESJBROhCQSrAEh8Yz4NEm6WeErnorudx1NPycSEhROhCRSATZrQBKXaHsvRgqp0btiMpBVx3u5RKJkOWv4SIiwOJyQRCrAZg1IYhKN78VIIs+paXc6h5OIwIgTIYlUgM0akMQjWt+LkUZEUqNzgZZ93bcUTSRMUDgRkkgF2KwBSSyi+b0YBgqdLiz+cw+mrdyibuU+IZGGqTpCyrIAW66Ey6oGxDR1Mzo+UzeJSrS/F0Ng1pptGPnlOmzLPlq8rE6lchjRsxm6tvCpbyIkjFA4EZKIBdisAUkMYuG9GKRouu29FSXiaNuzj6rl4687g+KJRAwKJ0IStQDbqAGJNyTtREEYW+/FAJB0nESarJKPknCWxy9sVhvJSVa1fIQED4UTIeH+0nY5gYzKwJH9NgXYdVmAHQkSrXtMtxlACsFNpUbsvReXbdzrlZ7zRZ6lPC7rtTuhWqkeG0kMWBxOSDi/tMe0ACb3shdNAguww0+ido8lWDPAzgNHw7oeIYFC4URIJL+0fQmHCV+iGBkGQpx3j4VEnBlC1qxYLqzrERIoTNUREtEv7SIyqgJ9J4buJ8NUVMJ1j4WFOGoGaN2oquqek0Jwi+Qjalcqp9YjJBIw4kRIqCx4zn+k6che95dUqKKJqaiE6h4LK3FiCCkF32I5YJN8VI+zMJxECgonQkJBxMr8pyL/pc1UVMJ1jxFrxGpALAcksuSJ3KcVAYk0TNUREiwiUr6+X3/9UL60mYpKuO4xYo+II7EckO45KQSXmiZJzzHSRCINhRMhoaToDsgXtQahzn9jKkqve0xSliph44r57jHiHxFJtBwgpQ1TdYREOkUXji9tpqISrnuMEBKdMOJESND1Rpp0fDD0L22mohKue6w0nbiZ7iJljjN2HP8pnAgJlE0/+u+iM6hYFzjv3tD3yVSUPvE6SiYCcFAuiQrWxZbNClN1hATC2qnAlGv117/46fCJGatUVGY1oO1tQEaVxO2qI0EPyvUdX2IMypXHCYk462LPZsXhcrlsXPvii5ycHFSqVAnZ2dnIysoq68Mhscach4FFY/XXP/VaoPfL4Y8CGSHt32YCqz4GDu+Oias0El3puQ5Pz7Oc+WaYSP74QCem7UjkcBa6x1RZRvCLShCGro54ND0QfcCIEyE6rJkamGgSfnnffVII5orJbqyKnECO7AOWjPcWTVF+lUZic1AuIRFjcwA2K1EEa5wI8YeIlpl3B/e7hpAJpKvLX77frxmmw22GKUXSrHkiJnBQLokKYtRmhREnQvwhVzuH9wT5ywG6euvk+4O5SuNgYOIBB+WSqKBCbNqsMOJESMSvdjRdvXUjSZ0fDey4Y6xjhUQeDsolUUGD2LRZYcSJkNK62hGXcbuoj24k6dAu/eP2E8EqXDsNi//cg2krt6hbKRom8Q8H5ZKoIKnIZsXunRiFNiuMOBGifVWk6d1kxazh9h1wupGt8jX0rtLqtwHGnmoZwXLBgV2f3IVrj74EZ9E1FD18Em9Qrq+Pk0Sa+B4gpUazIpsV06j46KiMitOOgBAdjMiNqQgBkFYByDtk/bgpRVdURuG4RKEm9fD/a/1nuLvq1PHA3AxTtim+ThrbuyrvISxxekcfOGE+caBzOMkrcOLdxZuwee9hNKiaievbNURaSlJCOYfnBKAPKJwI0f0gH9oDzBnufVWUWR3o9jyQlGQhZPzh4VMiKE8TP5Ekw9PEtHap3rGrNEkJfnaT3yMYW3AJxhT0LY460cOHkMRh1Mx1ePOHjfDM0svHfuC5jTC8m/uCKhHICUAfMFVHiBlWBdVdRrmdus2uiszCzWkVgbwD+oXjgYxV8TeXTbM2686UqeibvAAj8/thtrO1l4cPJ88TEt+i6fUFG0ssFxFlLE8k8aQLi8MJ8cWuoPqTAe40Wcu+bqHjGUoWITN0jTuV1udt4PppQLLmtYlR32Q1VkVEm5kXlDGXzex4jNqsEkWXJamNvRifOgZdkpYVL6OHDyHxnZ6TSJMd8risR7xhxIkQT0I1l/QcMCs1SyKydPCMDvmLJIVlMLDPqg73VeaI1HcxN/cslbajhw8h8YvUNPlropXHZb2bzm1cWocVEzDiREikRgDodslJEbevT4ldJCkQrCJYFuKprmMPWietV9119PAhJH6RQvBwrpdIUDgREqkRALr+T21ui2z3iJFCPO8+rdVrYj89fAiJc6R7LpzrJRIUToREagSATo2R2BiI31KkR6CoCNb5Wqte1/lsWhEkGlE6kkesEmjQGhnEcsDftZE8LusRb1jjREi4RwB42hicMQCY/5R1jVHeQeDd3qUzAsXPcxNDTHm8dceeUe23QsJMFIzkMfOSmrtuewlzThq0hg/xaRLLAbOuOgN5vNT9nGIA+jgRYml2aWMuafWFYvYllCG1Qi4/heIa2y7r52b8PufeJYCxaym9H8VQf822EgKpcmYq9h/OL7EuDVrDD32c3NAA0wIKJ6KNP3PJYL6Ezn8AWPYacGS/xU59DC6j6blFyZcsCSMSOVSGq1vL7P0ooum291YE7LdPg9Y4dA4vYyicLKBwIgGlngJJSel8CYlxpuesOivEB8qwNIgUgabbouBLloSZQEb8ROD9KOm5Dk/P84o0BcKHA9vSoJWEDTqHE6KLv9ST7hfGguf82xjoiKZAOvtCwdNvKtw2DZEWfST6OkiDQGqaghVNAg1aSVlB4UQSF6vUkxRPy3K71JNnxGbPn0UF4KXc2ZdAX7IkyjtIy0D40KCVlBUUTiQxCcUh3CxKpYvYD0gnnSkaHXsJ+iVLorSDtAyEj1HjRINWUlYkVvUXSRz8+dIE6xBuNcdOFzvR5DvEN5rw60klX7L1olP0EfuRPApHqb8fRfiIvUAg5d3GujRojU4KE8R3ixEnEn+smQrMvBs4vMe6ZT6Y1JNtlCpE1PH56WorS2zn3kW56CP+R/KY1vlF9v0owkcEkHTVmb2jXCa2BBJpoo9TdDJz1VY8NG0N9h7Kj3vfLXbVkfhizsPAorEWDzqO1S3pdhTVPg1wOIB6ZwAndQU+vDy8x5tWEbjiXaDxeXqiw183XKTNKYO1MiCRJ5S/fRmampr5OBlfuBc2q13CGJORJmvT0LJ6bUbNXGdppOmIEd8t2hFYQOEU56ydCnzS334d+ZKXlnlBtddb1XeUImJT0GPMMeFh9SXmrwOwtMwp6RwefcS4MWk0iYBYwE5slrZAmblqG27/YIXtOnViwHeLwskCCqc4Rr7Mnzs5MJ8kSxftsqAoGiaYfQG26AssetnafLL9HfaP05wyfolyY1KKotIxDS0LV/VCpwtnP/kN9h7Ki3nfLfo4kcRDIiCB+iRZ1XeEi8zq+sckfDkEOLK35HI5Nsv0Y9Hpc/G44DoESeJ2hyZYZCQeEKEir6fNX1s9LinO0hCnizbs1hJN8ea7xa46Eh8E4h/k2TIv4mnoGncU6rz7QjiAopNUxweBXq8A9du4hVOKtFzrnMBc5qJJF5cz8A5BEvMUbloYXHdoKUZGfE0ut2cfVcvlcRJe01ART/L4Ows3Rryz7fEZa3H9hGUJ6bsVMxGnUaNG4fPPP8f69euRkZGB9u3b4+mnn0aTJk3K+tBINKDrHyRixrdl3nDRDsW80ehC+vFFYKt9vr/MoDllXCHCY9HUeXgsCv/20RYZiRd0ozaPf/VrRCN8vcb9gFX/5mivX7V8alz5bsVMxOn777/HoEGDsGTJEsydOxf5+fm46KKLcOjQobI+NBJVPkN+6Pa8dcoiFPPGLk9Ft2gSaE4ZNxjRnN8Pl4/Kv71uZETWI4ho1CbcEb4nvlwbkGhSv9O7RVwJ5JgRTrNmzcKAAQPQvHlznHrqqXjnnXfw999/46effirrQyNRZeZn8+Gs1RI4uYu9+CofzBeM1JEMj2LRRHPKeMIzmrPM2RRbXVVhnY0pm7+9bmQknupeSoNgTEONt4a8Z0JN2+UVOPH2wk0B/c4t5zVCt1YaF7UxRMwIJ1+k8l2oWjV+wn8kRIxib6vI047VwFO1gQ+vthZf3Z8LYscu4EAgxeVmLs0OIKOKRj1UkFdtNKeMGzyjOU4kYWS+uzPU9zvRFQZj0mCdoHUjI5Gqe4lXB2vDNFQIVDyFI8L37uJN2v3H6SkOvHrNGRjezX288UTM1Dh54nQ6MXToUJxzzjlo0aKF5Xq5ubnqx7PdkCSAeJIOookXA/8sNV/nt5lu8XT1h6a/X3j5ZOCzm5Hs1OsWCYis49TXnalLs2DizG18ATrEcmDNp4F1AEpNV48XaUUQR/hGaWY7W+O2/KEYkToZdXHsi/FIRi1k9nw26L99KB1xRmRE0kSuUp43F++dfPIcxHLA9zmWRoRv897D2uvee1FTdGsV+6933AgnqXVas2YNfvzxR78F5SNHjiy14yJRQkGetWjyFE+/fwOceIHX1bj7pFsBOw5PQLukVfi/5JlokLwXDREmu4I6rYAr37M2kLxiMo58eR8yjmwv/pVtrqoYm3oTOta9EV07P+r+3YUvARvm+t9f11EUTXHmQWQWpRHxNDf3LLROWo+a2I+dqIwh1/ZHu5NqhtUryKiX8ecV5G+cSqTmzYV63LGCPAfDVX3uuu2YoJk+CzXC16BqptZ68lft375hzH22dIk5A8zBgwdj2rRpWLBgARo1amS7rlnEqX79+jTAjHe+ugdY/pbeuh7uylYn3WQ48UP6najj2AdHqEaZw7YA5SpYPizHMOi9/+Fsjy9AqWNxFWXV1Yk/aTnw8fV6+zPMPkncRC7kC6fD0/P8RnOCdWo2tm8VzQhk++F+De2+bMN53LGCv+cc7ucuNU5NH/7apqbOzU0dGuLhHs1j6rMVlwaYou/uuOMOfPHFF5g/f75f0SSkp6erH5Jg7P1Lf10ZufJxPxRePklFmszOB4VIwmP5/TA+bYxKmwUtnuqeYSuajKJf2d8SZ8m6ADndPT59NbqUe0CjvkGKguuyIDwOIxeRjuYE0hHnzwnaMzISamTB35dtOI87VvD3nD2fezgifGkpSRh4biPLuXRCq+Oy/IqmaP1sxV1xuKTn3nvvPXzwwQeoWLEitm/frn6OHDlS1odGoo2qjQNY2f3xLfjqAezIts7fz3K2xq15Q5GX6dN1l6FZo1HtJOD/vrNdZdmfu9DgwAr0SlqEtknrkCS1UD5HWv/gL3Bo1Ti5WBAeIQ+icHUohaPORaIInsj9UL94wt0RJ1/WIlR6n1ZP3QYrmvyZaSZiJ5/uc7nxnIYhvSc8i+07NqmlxJPvn1Hu3nxOQ0wffG5Mf7Z0iJmI0/jx49Vtx44dvZZPnDhR2RQQUsyFT+in6hQupB/epupDzCI9nnUksy68Cb0rb3bXJ80fDez5w//mK9YFBvmpuVo7FWdMG4opafuKF0mbuXRMyX4NJH2nRdvbWdsUJLESuQhnNCeaOuKCNdN8ru+pCedgrftc5H0SLDNXbcVD09Zg76F8r0jf2CtPx44DR1XBuNQ+Xd+uoYpIxcNnK26EU4yVYpGyJC0DaNLNXQAeAGaiRKI+ngW3NSuc7a4ZeuMCDdFktIOPsi4GF+Y8rGbR+SaV62AvxqeOUR1Tc53uwt8Tk/7VezLy/ElQxFLkwojmhJOy7IgL5ctWDiyajrs0iPTfatTMdaZpuW3ZR3HHlJ9VdPOmcxvH5WcrLoQTIQEhVgNiORCAeCooXxOOA8dCxl2SlrlbvB3HWrxdX04A/jNSz+yyYh2gZV9g9nAT+wF3QTrWTLUc4OsoKmAZlfoWRmAS6jqORaOsYW1TqERbxKW0KauOuFC/RHcfzI2q47Ycymx3ERVFf6uZq7bZ1jK5ghibEy+frZipcSIkKPH04HbgrBuBZLsmAbe7cq9efYx7SjRJtKe2hy+OekyKyb8YqLd/OTEuermk71JRQbqk5zDzbttNiHiq6jiI2tAUTQJrmyLqzizL68RZ5KI0a6gCJZAv22g67hKsmw6MaQFM6gF8dpP7Vu7L8hCIxHOW9Oj9n63yu962AEw1ZZtOpwuVM1It14mVz1bM2RGUVrshiTPk5GTXwn/Fu8WWBNK59knuLUo0hXRx6kgBXAVWDwKZ1YDDuxE2ZLSGiCbWNoWMUYwMi6v4Mv8SLiWiwWsnGPuFaDjukucfMbf1fQZFxyQTD0L83IbzOb/0ze948Zs/9Na96jRV+B9oR6QvZf3Ziks7AkJKreA28w8kTw7D8FFL0aQeDJ9oOu8+oNH5IYf9iX935tpR4OMU6zVUpZGOiobjLsZZCNesBzyH4JQsb581zD3xIMS0XTieswiwiQHMo6vpJyJoZT/gSyx9tiicSPwjdQXqxGWF94kr+dBOxBQ1mtLkMoa61khiCdll879Ea1sLEReQs8Vd+xQFn2N5v+8/cqyDzo6q5VNt02p2HZEGkrp75doz0LZxcFYVZQGFE4l/5IQUyIlLapNCpeqJwN4N/tdT6bo9oe0rHMdLTImqyEWCE4tCVqItM79ZjtZpGitLwXgUsDPnkPKR85xcIMOkzXiidwvb11/HoFNEWpLDEdV/R18onEj8o3tCMtaTlJd0pkkRd7Au4T1eAKbearONou63i54CPh0Q/H6krokddCRBiCUha0RbGqBy7FwArZuOrnPvQ++07bZ+ckKPVnXQrVVdJIL9gC/sqiPxj+4JyVhP6gzELkAR3FWQ89cv8XejK+BS/8y24QKa9QbKVwP6vuMWUcHADjqSYHi6WMtttLpMG9EWidiI+LA6TDk/HM6ojcUFTSL6XPy+bkUF7GmHj4kmQZpkpMNYOo0NKmek4KWrTrffobMQJx5aaTkJIZbsB3xhVx1JjBonafu1iyDJ6JT7NniLEDmRSG2UZ5ovs3pARd17Xe7ZdGIpUIwjCXB5nERENHUZ5U7bie/Uklf13cHFXJOQBCEah8NaIQJlyJSV6v+GvYngmZEytIuY3EpEx/e5hKtTzu/rVnyONC9pkOPcjmrokPuSStu95q/zzeTcaRa50h0+XBpdkoHoAwonEnsEYyLnz47Aw5LAi4I8YPmbwL5NQJWGwJk3AuPOsBRhxgiI4kMtWuXFgr6ohEO4KfVrk/hT0ZLL3ylplmlDYb8vsczVPGbqPQgJBavurLJuY7dCojpXv7mk+L6Zoe5WVzWMzL++WEx4PhchHCJR63Urv8HtK+WH21MfQ6/eV/gXTSbWC74iUffvVlpimcLJAgqnOMAsCuTpxG2FOHR/2t9/vdDQ1cdEmNW+WvR1G1sqXJaiyftqrSoccKG2Y59F8i8wX6cjGbXRufBlbMnJj/orb0LC5eVkVWisG7koa/8pY4RTLexFNUcO9riysANVvQqw5egrZaYi+3B+yCJR93VbePFuJE39P7/bc172FpJaXW6zgn7kqlalTL/nq9IUy4HoA9Y4kdjBiBpZOXFbOfDKh9mPQ7d7O0WddcX76me+LxFN7e8Asrw/sFanazmPy1VmHUvRFJivk5xE7sq+yks0+U6KJySeCGQ4bLRg+E8JxudexFElHMQDqVPwSOp7eCntVUxJewI/pt9ZXEMkz2W/iWgyHhMkAqNTD6XzurU6sAAFX9vZtRwjqaKfYcF+Opjd58I9+LJnkhK5dqLH33DnQF6HcEPhRGIDET9f3mnxYNEHR7yYZD2zD7Nuy7+k/4p9n2w+sms+A+78Beg/A2jt/0otnLyZfBVm+XS4RMPJhJBIEavdWb7jUKxGOZkVYIdDJPp7PYzjSc31N9LJodXB6zzgXVhuRfOsI34jg9EslimcSGyw4DngyD49LyZfDgQQgZGaKV3fp3+Wun2fTim9ESe5GbUx+lCPmLryJiRUYnk4rIgnia58eNPZGJM5QUWffDWDcX9E6ru23WeBikS710P2IzVXgiMMMzBnrdmGwV9uDVunczSLZQonEv1IBGjRS8F5Nqk6peF6vysdc3JFFaTvk7ntQLiQbTvwS8vhlmZ00XzlTUgiD15W/lNbJiKjIEcN7rZLY0kNVDhEohqq67Ieqiv7kRICvyVhUnvpZ5berKJapFkHGttaL+hGrqJdLFM4kdiINuUdCvxKxqhT0rUP6P68+4oqSN8n3zlaQthaL4pOXoVNesbslTch4awX8jevLuou/paO11pVHLsrpKeEJBJFyEhR+LVvLbUcnyIF6lqI5YmNaCr0qEWSizqxHBB8xVPxhaWm91w0i2UKJxLdqBOOpq9RRpVjVzK2dUomNOkGNL/E/f/6bdxCBQFeNWVULvEhP4AMhIWik1c0n0wIKc16IQO5H21WBCWQ9L9tqcExDqdXxzN9WgUtEo3oj119kNQ2PZz6rt6xV6wTUC3SbGdrZTkgncSe5GXW9hu5ihWxzJErJLpRJ5z9euu2ue3YlYzfOiUffvv6WFeeCC7LYvKiD6mMSjG8pPb8CcwfVUKkyb2KjiPIT6uMlLxsZUcQNEUnr2AmxRMSL8TivDqFZvp/n6sC+va5HF1b1sH4pMCHGkv05/Hpq9HGZtZc16RleLXIjNMOiRjtTqqOmn7SajtNygJEPM3NPUulA43juLr3lejd7HjEw3BnCicS3ejWG6VVAM6799j99TMC39eXQ4AjfsLXysepDzDHv1GlcSpPdeV5uDwFIZ48I2lRfDIhJBHn1Wm5Wmum/3PrnYOuFTYCzjqmIvHMBlXw0+Z9ypXcbF8bvv8An+Q+hLppe00du6Ug/JGignA7rWmk2T6tMQi3+0mr1bQoCxCxtsTpjhgJQ7LKI17EMoUTiW40Tzh/N70ZP6/a7v5QbXgRyUtfC3BHLv+iSYrHL3oC+PSGwDadf9h9m1YeyDsY+PgWz0haFJ9MCEk0tF2t/QwONy6ram+dDUyaXWzqm9ysV7FIlH2d/+x31vtaNx0nfz9ITcc0szqQ9Fk2Kng5l1uxF1n4b/6NeP5GKwuYYxjlA55Gn2Ymm6GUD0SbWGaNE4lujBOORVWPfFD3oQI6LjtLzYWa9PYYJC1+OZSkmDUicqbfEfzvi2hqfhnQ5223/9Pdv9o+t2JyD9ieTHqfVk/dUjQRUnpY1RKZGtH6GRxeYomPqa/ffa3+t7im087qoDb0GmUez78O2+p2RoVyKTFdixQpKJxIdGNzwnEVda0Ny7tZhYUlDP1E6sSixv0I4RkxCoZ109y+T+L/lJLm8dzMUc9x8cv44727onoSPCGJhHwOh32+OjBXaymKluJon4kD/kx9CwsK/DpoT5/+mSodsJ9esAcjUydp7BtIyqqD6YPPtV2n0OlS5yRJG1bKSMMr15wem4X7QcBUHYl+jBOOz9y4HaiGER4DMqUQsbrDPDoTNbgK3UOD2w069tz6TAA+M0//qaooF9Doj3dw8ZqOqFGpAuuYCCljxs37Q41F0TGi9Uoxyee9aXd3Y8lf3wM/POvXaHf90tnYlm27FlIO7QTS/B93RRyxfVx0npxXn7v39qBSlA93b4Yq5dPivnyAwonEBp4nnIM7sDYnAz2/dHp1i2j7kpQ1+zZ53z9o72wuhnkpcKJf8hxMzO6mQvPxeBVHSCwgkZaJC30+w4EY0UoUXSLOmo0vR/ZtAVDPfj+orLUtnYLw7e1HoE5KSsCDd7dnH8WgD9znJikfiGeYqiOxg3HCadkXG8qf5iWaAvIlcZTx275KQ3shZcHxjp2cR0dIGSNRJCtTyYCMaDUbXzKq+BchYjlg79jtn/2OLPzSfixO79Lfch0554yYtiYqB++WJhROJCbxPCEZgyqrQjNNZxRny22/6UUeSaUVTnYAZw+0F1IW/O2qGfo8OjEG3fgDsPpT963ZUGRCTOpYWGMX2Dijypmplp1k6nUtaIIj5WrZjGpyG+02bdPF1vQW/hy7Nf9klS95zlY0CUOm/IwdB8ReJbFnZTJVR8oW+eI2jCTlCky66AKw49+Zfbh4UKVWKr39nUCLy7z3f+YNwPynUBoUNrsEyzYf8K4BECE15yHAZT7cU058hUjC5MKLQptHp+b2edeJGW3Pum6+JHHQbrVPMHTHGd3QvpFpfc+sVZvx67QXUSV3C/5GE1yevAMuh28U49h4kuSUFEvTW08Mx245H9b1KFvYgyxUR47f402qJB2+1oyauQ4zVukNTI/3WZkUTqTsCOGL3GiBnfTBZC1fEqRnAT1fBlpcYr9/T2SsSrPewBLNkS82iPjJS85Epw3XYMuKJSW/iNoNBhaNNf094a2Cbijw+bgGNI/OmNvne9o12p4DGIVA4h+7OpZEr7Hz51tkRJsGdzqxxPK/PrgbF/42AV0druJv30KXA4dd6ajoOOpzHhxd/Jn0Nb2VDmJPV27DHdzMsft/zpOxIH2o8nMyu7hUHlJ+Bu/mFTjxxoKN2q9RzTiflclUHSkbjC9yX9Hi419iR9ek5Xgv/Rn9Ab6+osls/wYdHwSGrnbPsAsRET9ycrrz6P9hS06+uQ9L3dst9zWn8EyMLrxG/V9OmG2T1qFfheVo7Virl2qzndt3rO2ZaTviO7Q1ketYgvEtMhh9WcsS0abC2Q+h0e9vI8nnlZX7FXAU0wra4ZGUu1DY70v3ucfnQkbE048PdMK40/7BonJDMCXtCYxNG6duf0y/U5UseDp2T3e2V7dywWWVxpP7sqiwyyjbSP+Dn6/S9sarkwCzMimcSOkTji9yJXyuR7KrIPBBlX4HADuAFZN8DDiDR7riPi08r9g2wRPjCOZPnQCXzMszefzC5J/USVF+5AQpJ8rHCl5E8uSewJgW/kWm37l97rZntR5JeHyHtiZqHUswA4dFNLxmFo0ryEPSklfUiyfnA0+M+92Tl+KDg6djmau5pYhZNXcyuv36AGq69pi6gxviyRerwbvbUQ235Q3FsnIdbKOPn66Qzj49RsSZ2aUZTNWR0ieQL3LpovNFhM9XHnPp/OEbhg5w/4VdRiPpk34hlY8fhnXo2gEn7sx/C5DwvQ9y/pGrwlGpb6EyDpa8xNVJtenO+9Ndj8Q1uvUp8V7H4g/PsUfbc45i78FcVC2fpswgJRrnJR6WvwmH1DA6/FuO7Dxwluk6YoRZd/FI9X8zd3A5T4g7+He5p+G65G9UF640lEhtpESdzNJ4Roqvm8Xf0og+6tL3jHp+U7has/2iHAonUvqE+kUuguZQAF/yUivgeQV3QK/A8fc/N2DKmqqYujITbfKGYFzqWCSbiJtAOuLMkBOZXZ2WnFOq4mDxPCtvipZKhE58rsyuVDXbnrXXI3GNbn1KvNex6CBf+NlH8vDMrPX2RfQBWI5Yva5ihNkceyzFl3IHxx78mj4AyR7r/DflfbxZ0F2l+30H7xpY7dNf9NF3/09d1gqJ0HDAVB0pfXS/oEU4maXrAomM1GrhHYlRBeHDtX71kXm7MXnhBlxydCraJP2Kzwo7qKu6QEo71MgUOEp0xHkiV386OIJNtfmZ92e0PdsVh5LEK362ebeEVMcSTxYHIgQGvfc/NDiwAr2SFqn6Q6lDLDGvTtNyZF96PcvX1W2EGfiXutRQ3ZIyA8OSPzBd3+5vOWet3kWmMPDcRkhLSQrPbL8ohxEnUvr4mRRezOwHgcXjSnbZBRIZOb6t/84yH+Q8Lrn/jo4VeD/9Sa8ok+qAQToqQu8qTL5kCtsNRo0VFSy7cHRdf/1iJSiNeX/qufs2NB9re9axgSCJU/xs1v4e6tDWeIk4CCL4pDbxh/S3vCLGYkQpxdhznK3Vc5V0nmE54nI5TQWpYTlySu+7LF9XHSNMwayGSrZ/c8pMPFd4hVd3rsPmbyn2AxMXbdbaZ89WtTG8W8lIludr9eh064YD2XvxaxUDaTtGnEjp42dSuN8uOxFe5TXF04VPaBaEF61WdES7nFm4JWWmZQfM9II22Oeq4L/TpN0dSO7yhO308OXOpjiSUdvytTB3dzLBTlBaDRgVAUsrAqJZ/BzK0NZ4ijgIG77/AE/lP6MKs80KtS9KWnasiF4GercbbOrDpCxHHMDfTW5A11YNLOubnM5C7HdVCModXNVQOdw1VJ6C1epvOXPVNryuaT9Qp1I5jLnqDL+z/aQOLF4aDhwul66vaOyTk5ODSpUqITs7G1lZWWV9OMSfj5JXKqmuu0XXiIoUddXZIu39V3/o/r+4ZE/q4feQCl3wqg8wQz4xct04tuASDE39Ag4rW7q+E73MNm2vtpOWF0WE1B6O7QsOyEd0Pyqo4nCzizE5keaXr4P0e9f6jxoFaThKEpNwFfLKdjo8Pc+yXsZRJMqk3T4WIg7yOTryzClIP7LD8jMpHWz35N+KhumH1Gftoi6X4rwtryJZddcduxxyOZLgbDtIXWCZ8fPsSaoovJbUNxm/49Od53vfirXHXYnfz3gEtStlWP4t5W916sg5OJir17H8mh8hLee9W99bobWtl646rczm3AWiD5iqI2U/uHfpa+60XCBddiqC8i7w+c1AQa69aAqgLkrnlC0nqGS4cFfqF8hPq4xUUVpH9h1bQeqFujwFZFZzjzbJrK5+qatrFy68siaWFbbEzkP5qF4hXT213YdysbjiOWh9+SQkzx7mJSSPZNTCXdlXqf/LVayckD3PdcbV5y8thqG1jgAy5v0RooF8sbY7oVqpWhyEY38RZ/MiZBzd4adQey8+THvK/eQOAFs/eQ53FPRHrytXouuhGe6C8SoN4Th7IJIlImUhmk5ddKffk5OOaBKaNz8Vzc84zm90SFc03XhOQ1vRFGhXXqw0HFA4kbJFvsh1a5Y2fu8dKVHCaxvwx7fA0leBI/uBuqcDTboDufvdUSYjoqK5j0AvdlPyso8ZZlY7wb2fQ3uA2cNNI2kibdpl1cXPzYfh9q+P84k+VcCIHnPRtcLG4uf5S0ETzH57uXrcbJyC1GKNzL8eA5r0DOzACSlF4s7iIAjrDknhjUt5EbdNcQHX3Iqu7fy07RcUoI6F/YAIJbloOogMZDmOBD8n03efThcmLtTrABSkJsmOQLryYsk4k8KJlD26wmnBs8f+L6k7cbuVqE5eDnDuPcDhIsHy0wTv9aSeSiJbOgXpAeIwShvFMFNSieu/Aj4dYLsPV85WdRX5pLMVfkxuVeyzomo93v/FXXfQ0h0Vau10FY93MPNhkfqompUyY+aEQxIznRd3FgdBWHd4ei31mdrObyH0uHcmY4gf+4Es6IomCTdd6q61skH+jvuPeE83sKJqeeshxsEI4VgyzqRwIrHTZeeJRHM+6a+xnodBpGVnWagUpRI3/ahVgO4oumLslLxK/Xj6rPh2l/h2OHn6sITa4URIqOh2yfmb72bUOMXMBUAw5ywPr6UGh1dj2cazLdOSUpz9519/AvY6R5+UDKDPW35XC0ToPNG7he15RwT17gMmZRQm3NX55JjqqmRXHSl9pEBZ0mhS/yO3gm6XXcC41Gktb9pQ/O/Prfi71RC4PMevhBN5Ln4L3Uvi6bNi1l0SiQ4nQkIlkC45u/luMXkBEEhnsAkqYmzj1v3QtDXaNiUFLmkgsZ+TiUtf02oC0Y349WhVB91aWY+ikr+9NAM8/tWvfrdVOyvddCByNMOIEyn7TjojnSZRIa0uu8DTaWm5e3DWTxINAnagKnKa3YGTqpUDfng2nDsK7tdMfFZ8T6qe4x1ieVQBSYxBwGa+PMYFgG+EqnaM+jgVW3wEcc4SUWTn1r33UB6WoanyhJLaKLOPudFJl1LkM2fVWbe12UDUa+4x4Nym27bNoe3oVnErZh9orHylzKickYKXrjrdr6D2F4czDvXRXs1j7jxG4URKDysDSs902tA1x9rld64Pr7ApoqZrL2qsfRmbTuoPPT9fN+YjTzzsEhrIoMzgjtdzVtWEwm6mJ9VwdTgRUlZdcnF3AWB0Bss5a/HLcP0+2/b6yTDX3ZzZ0jItaVw0SVpejDTNuml1TIR2u7LwfMr/4Ym+D2lfzIpUelXEVnpVPJbfD7NMBpOP7tPK8u9lJ6h9iVnBzFQdKTVsDSiLlsm8NUHa5Vv2BRqfH5FDEZEiH/usDV8E9nt2S8V+wOFAflqloAzqPGdVxVJ3CUlMQumSMy4AxK9HbmNWNBlICkwaU/yIJkPsfFhwAV474x8kb/7RdKSU50WTNIRIN614Quk6hMvP9Xn3oXXuqzj/0pvtX1/jYtYnYlbHsQ/j08agS9KyY8sqlfPr2bRMs4vu4e6nKM+uWBRNAiNORI9QjRPld23D2SZeTUEWYOogJ5mqyEFeehWk5Xp4MNnR5lbg1+kl04wt+hTbD6SqjQd/XDIMOKZqPUhCEnddcqGeG7+6R+ucc9BVDvekfgoskx+PMgUP536jkN4QIJ7dtC8lj0Wt5BxL3yZj+bXJ3+KsTlfaCxObi1kpbxDz3bGVP8KsC29CzazyWpHBnZqCunrF9Jg+x1E4kdDqknRHdej6nniuZztjLTz8XacbTtz0vt7KTXu4I0ueAvLQHriK7AdCOQ0oN3JHElpfeX/MXoWRxCHuuuRCcU6X88Hh3Vrbq+A4al2m4HEuvers4/HiN78X35e0XUfHStRMytHaz/GOXejU8QQ1RNny2P1czIp4Sj+8Db0rb9Y2za2ZIIKawomEXpekI550fU981wuhAFOHeltmaqxl1DAVRdmMk4iMXXi2GdLhCj3nLeezdoMsZ1URkiiDgGPNauGXX9fjVM1tOqwqJ2cNQ+GJXfDF9M/xvzW/YlNeRSShqRJMQgoKMDBlhvax/+2qgZue/c722PP2b9NzO9C86D2SV4ivVm1FWrIDeTK7Ko4FNWfVEftQ7pgWNoLFZIac3baePRE4sje4bXmmCvf8Ccx/CqFiDNfUOrVfPgnw6Ux5f8p7uHb9IISFk7oA134cnm0REmXiItaw6gwzzhWGDYis984H72FKmvmcuUDYiyxVPmAgHXVSHC6pumdSXsMVKQv8bsP4Nj8ldwKOopzlsX+24l8cWD9f77j7z/AbcRo4eTnmrttpu47vaxdtcFYdCQ/B1CVZIY7alqKpaFtdR/sXTTL3be7DdltR6BRp+lvPC6lhciQVR9dmrtqKpat+xbXhMqhrf0fYB6sSEmnirksuAKuF80+uiQe/WI39TrdtQB3sNa09su7G9aaKK8drRbEhkI66QflD0D15qfbxr3Q2LiGaPI/jzikrkVcgsSx7uwOvSLsNN09ahm9+3RXXXXS+UDiR8NYl2RYh2pBR1d3Wq1NfZYNDc1q47lBMs9RkYdOeuO+zVWipaVBnh3TgHc2sjcyik1O8XsGT+CXebDJ0rRZaP/UNDhyVYbjHbAPkwYDPLUX4/p4xouXx1Iko79Bz4N7irIZL862jSMoMuMDp3+4ADve51OpitohpP2/REk2T+p+NDk1qxLSg9oR2BCT8dUkBR64kQb7XvZ5Gq6wO+1HBdPluV0UcCmqOwTHLhFe/WYeW+atRC3tx2BV8yMmwLfin9SPq5BSIEzMhJDLszM7Bjckz8WjKO+pW6ovMcIsmb9uAbT62AeKltPys592RmyDaR0RnVHfoFYRLWVHH/BcD2r6V3UF2ag2/9auz1mzDkI9Wau3nm992xI1oEhhxItb4tQPQC+UGFbmy9X3yz+35d6qSbRE31Rw52OPKUo7hrR3rcHfq50Ft00hNXruoK+5I0zuZ+atpeC71Vjx5/jVBOTETQsLMnIfRa/E49E51R2UEz1mSdpgN4V7mbIr3T2kPNK5p2h3sG+kJhVmudmrqQKCYHXfacedgcjPr83qh04UHPlulvY9New4jnqBwItbY2gEUfdr9hHIDiVwt25WC1oFEqWyceZc6mxV3pBi81Opv9Po9WNF0jMo+tQjB8nj+dbj48huVEJK24WCcmAkhYWLOw3AtGms5S1IwxFMSnCUEkpxvfIdwF3eQJZl3Bx9AJirBv6iQSHlVxwHTFJFKvyVn4o6jwTeqeB63cH31irbrD5nyM7KPmEfizGhYLRPxBFN1xB7DDiDLp75GIk26VgRG5MpCbYjY2eqqhqvnuNNVAUWpfLYjzCw8W53U5DRmIP+/6O8XwzJCOFxXiNd2blNctxSKEzMhJEQK8uBcNM58CHHRApklKWk7cdP+Mf1O1ZE2Nm2cupX7ni7bMLNkkHOljJTqPwNbm96APa6KqOSwF03GufGh/BuKqo68j859ynNg5RmjSlwohsKD3Y6JKF9mrtqGGau2hW17sQgjTiSweUzBOIcXRa5cH/dTH/QkE7EzMv96d7GikY7Sra/yQFJzyQ4nbk6ZhZsxy6udV4RUxtHAxVgkUFaZWXXRumPPhDOOI6Qs8Nep+uv053GKx4WW1SzJ58pNQC/X/BKPGx1wUi8k55uq5VPx1KUtSzZ0yLnwyD7UWf+O8ub2xLehxTg3PucYgFM6XYXleSfg1DWjkH54+7Hjyqqnov5r9rSQZ2F5/FYRMjMubFYTGWnJlq/j3R/r1TXpbC9WoXAiengaPxo1SBt/0BdSzXrh9/NfQcX5D6Gu45gtgaTVRDTJyQae6ahGGvVVFesAl74G529fw7F0PBw+Jz7jZHZ7/lDUynABJcdC2RAZp3JYdKskihMzIaWNv05VEQP7Vs/W2lbv1OVw5ZdM1RgdcCNS38WK5HZYOLwz0lJMhIlH7aZv5Nq3q07OjVOq3I5Fh0/H59/8gRdRA0l4Dl0r/oVbTs/Eqac0LT7vVl3xr+UxSyRsROpkr/Ou50Wlr8h5s9/Ztim6o0VdeTp0PqWG7fZiFQonUmojWNZX6Yh7csegX/IcNcxW5rJNLryoREGjSkfp1Fdd/DTQsAOSpt7qjmRZtPM+lfoWyien6gmnjg8CNU8p+fzEw8mlf8Lwslnw9K9Sr9PoEq9TIjgxExItRpZGp6qYMTbaNQ9tnT9r1S068g9ZriYfzbrYg1c6HDUXTR61m/529Vj+dZia2gN7t8s555jgkyjR1wdOxNcLgPHHn4gLkYRlf+7Bn7sOWYomZZPgJ0ImXNX6OIy+zNoDXWwMvl61BW01I1eDLzgB93ZpiniEwomEfwSLRVqv6b75WJDuHXGSugHfKx+VjpIrs4wqQNvbgFUfuaePm4kPiXrZnIjkZFYVB4E8jecmYe/z7nWLNuM5/DYTWPJq4KIpPQvo/UpAKU65+pUTue/VcTwZxxFSWuh0qj4+fTXmJo3UnDIg0WL/UejWNWyKpjVrN3e7KsOpzhNOy2Mf9vlqPDp9HbbnHLVMz0mkCTYXlRIhk446ET8n1bAvCP/gnXH4If1FrchVhfRk3HVhE8QrFE5EH1uLgKKP85dDgK/vBw5s8xY6Lfri5EUvw+VwWV75zHG2dqejjv4IjBnmHfERx/BWVwBNunmLjyCKyEti0iEot7KfL/4vqC3urNwKNY2okuaAzHh1YiYkWo0s6x/8BZlpO7SiTbsbdEeNzRrz4mzqM//4dSVO8r8FnHdGC0z/X77tse8/LI9bryM1TZ4ixypCJutJF/L17Rparvvz7Eno98/DWpEr4Zk+reL6nMWuOhLeESySlvIUTYL8zqKx6mrNrDZAkCsfuUJ69Yx/kfRJf7h89yMRpyXjVWGlV8QmiCLyEmRWM+8QDNISQaix/Ud1sgnFibn3afXUbTyfgAiJFDodqJJy0uHHpDNR9fpJfowsHXBl1cPigiaYtnKLshiRqJdBYUEBsta97zXyyRd5SLaResI5CBXxsNNBXoMbOzS0TC/KcTdc9KB61maRK8/zt9C2cVV0ayWvU/xC4UT0CUt0x+LKx7EHH16Yj6Yrn1LdJuZTxF3KuVtFvjStDrToOsq8NiuE5ytHW2fxSHXSIYSUPjodqFKno0P6uXciOSXFXXdpblqgPvPDD1+Lq99ejiFTVuLqN5egw9Pzii1W1i+drcSM7SgomSTQ8HLUzCqPUJDapkdS39Vat6B8DTzco7nl41+PvxdVHActjzup6PwtkStZZfKNbRDvUDglKHIlJFdEZldGloQjumND1V1LkXFku/2b0hgqbGAUkSuCFE/SnRfm5ysnk9rYo06WhJDSx+hUtY4PAf9UOBUuO485mQaVUfuYdYiFr92RjFq4LW8Iphw8zXJc0pF9W7SOe2daPb/HbodREF4VB7Q8osbcZ22cmZeXj3N2f6Idufq/8xpZF8bHEfH/DEkJ5EMsV0JyRWR2ZWRJOKI7Nmz+7Re9FaVgW8ek0y/ip1TPemRM8fMNHrOTZVCilRASEEanKizOWPKp69qyHn4//aFiI0nvx6UY3IGMns96lwd4GFmiz9so7PclOhe+jFk+BdLGPoT/frEGGw7pRZEyqtTze+xWSLpsVOpbbqtMm180Tjlf1b0TaWmpluvdPmqcijbpcELjEzA8zowuraBwSjBCGiQbjuiOxYd4HyriAudivV9Y+T6w6mN3R52RtmvWC7MunKvaeAPCbmSMYdyJ4JGTYFhEKyEkYIxOVWk6MavNeXvhJnSZXRnDU+5TUSNPHFl14bCajmD42rXsiyWFzbAlx76Qe8+hPDz4c5bqQrO6TjLGRTVt08X22O0YlPwFqtqk1TznZA5x3o0bBw6xXOemd5YhM3e31n73uSpg8ADptk4MKJwSCH/tuYI8bhsBsRzBUs9tH2AhqKwKIpVbrroNQJ4czQY+HwhM6gGMaaEsEtRzm/Eb3insantyKqai3siYn//Zh0MI3K3b9yQYsmglhASFCJAfH+iEDwe2xY3nuDvHfM8PHx08DS32PYdl501SUSQVTRq62u/5Yeaqrfi/d/+ndRxqMkJ+P9P9G/cXNL4HyzZnF5+DjWOfNOBsrWjTjSmzApiT+X+WjSdH8grx7fpd2jVgS2tc4a4BSxAonBIInfZcw7nbFp9QdfFJpqcxINNsnpI1B5ChrpKCah6TrreP+2HD9x+oY/d3cnIZJpd3rfEvmmZPwqmL7kSmy747x1fzGfvd1m5E8ckkLKKVEBIUIhCkbujrNcfGlXginzo5dwxZWhGFzfu4o0l+RkqNmrkOt3/wMw7l6Y8kkJZ9ad3fDu8JAHKRJcvvX9ewRBRajv2b9TuUMGqbtA69khapW89ZnIIUZ1dxmBth+tKo0YmoUj7NslzgliIxKAaXdheiLhew11UBnf7vGSQSiSMRSXgHyfqOYPGMRvm4bis9ZCGKJKSchSMIDRfqL3tMjSOQk59xclJjBjxacuXk9G/rR9C64wC/W5RuuLqL3cZ4doJOnU98Ht/pqKZE0+ld+gclWsWCgBASXsL5GZRBt68v2BjUccj5SUwnRehcWN+Fuf84SjhwezqbS9Sp+j9z8GP6OFvzSV1rBUmrfbzzOIx5c4nlCJrFG3YWO4R/WNAJd6V8qsST57nQWSSmJlYdints6qTiEQqnBKJUBsl6DgT+63vgh2dRGmQe2a5OREuczUqcnDzHA7zfxKIQ3AfphmuOPX5LufLTqyG55/NYn52mCsGlpknSc7V9wtZhFa2EkIAJ12dQhMVD09aEdCwikuRctX5nKvY78y3dwdXQc8cy3LnnsRLRal/zSd202oSCrtia622T4inUVs99F9+njfcSaRJVEtQUBp85oy8PugeJRswJp1deeQXPPvsstm/fjlNPPRUvv/wyWrcu2c1ASlJqg2SNaFSEfJ+sODnzEJYePJb6Mk5OwTy3I3v/0VpvVYv7cVaLS2HtglKKopUQEvJnq3r5dJW+snLul4jU3kM6M5z8s/+IfVH5juzDKPjqfqRpjE0x0moiqMyi5JJW24cKeKXwEtN9ya/M/PgNjHG8UOLxykWC6fn8PtjsqlN8ITqgfeOEsB/wJaae8UcffYS7774bI0aMwIoVK5Rw6tKlC3bu3FnWhxYT2LW4RmSQbIR9n3zp0f608Dy3ddPRas1orX1mVK0fNk+ZOuEQrYSQoD+DlTNTcc8nv9h2vYYrKlw5w396SyLm6Ye32w8WLjKf1KnvHJ5/s+VQXgecGOZ4p3i7vvsRrk6ZjxnOtuqCtEZWOTzSy98lY3wSU8LphRdewMCBA3HDDTegWbNmeO2115CZmYkJEyaU9aHFDFYtrnLfyKeHDT8+SGEtg86srkzqQn5uRUOMU3P3Bdw1F1WilRAS0GfQmP/mOzTXt+s1XFHhG4o6/OzQrVsy1vNXfO47jNdstp3VKchTpKUkAYuGdUaiEjOpury8PPz0008YPnx48bKkpCR07twZixeb+//k5uaqH4OcnBzELeJnJHVFkh6TSI/nINyyGiRr+D593M9UJoV1b92fV/sL6bnJaygDik1Hvph3zfnWMumIVqlb8CxSre1RmEkIicx5z+4zWCsrHUcLnEWDc23qjZrVLo5c2RWa++PiFrUxuNNJmLL8H8vSCUG3bslzPav6TqtIUzAi7Y5OJyf0RV7MCKfdu3ejsLAQtWp5p3/k/vr1601/Z9SoURg50t0ZFddIlMSnk01FekS0WLTcG4NkI45Fpx3SKgJ59iMBvK8FbWh3B9D8ktCf24LnSg4oNmG/Iwub2z3h1TVnVUTqK+BKTbQSEu8Ecd4TzD6DTpcL1761VLvjTi50JAoVbNS8cfXyalvdWtRWJpxW+KtbMiLfsp7Xco/6TiFZNJO3e0HQIm1/chUM7nQiEpmYEU7BINEpqYnyjDjVr69XkxIzFKWWSoiLnG3u5RomjxHHs9POuDJ0OYHJOselcWo6WS9d5vd1nP+U1qqVL30OVU+90nadmb/8gy+mfYqMo7uLr/hqVcosjizRcoCQsjvv+V5ciZ+RDkZ9k1XkKiPFgSMF/s9ZHyz7G6/M/7NEobcvRt2SdM9Z2QFIZ5u/aFKhH9EUiEi74rIrE/5CL2aEU/Xq1ZGcnIwdO7w7teR+7dq1TX8nPT1d/cR1mFquuCxtFR3ArGFu0eLHzC3i+Po+ybHL1aGc6KzEUVoFIE9jTlKo3XsFecCMu7RXT/Izv+6Td1/BORueQzdp503z8Fw50A+3vXc0/LVkhCQSETjvBdP16hm5mrtuO6au3KrdbbfPJyVomOiKs3mtrHIY9fWxLIqdL52IJru6JeGCJtXx3W/+R6foiLRxaTfhqdPjLPgQz8XhaWlpOPPMM/Htt98WL3M6nep+u3btkJBIBMczTF0CF5Czxb1etOF37p0DaH9n5Lv35Mr1habAYb2ZTLZDgQG8+uoL6LPhQXXVZua5clHSMjqEExJl571gu14l8pJ9JA8TF24KyaLAqKMSZ/N1W7NLPC7iqEPuWFyV9xDuzBusbjvkvuRXNB1XuRz+7zz9tJq/4vKH7xsWwLOKX2Im4iRI2q1///4466yzlHfTmDFjcOjQIdVll5Bo1OMoStlPKeT6JxEnMnxXrhhXvGMflcqsDmf2Vvy68CtsyGyJmlnl9WuGrML9QQ4FfmrGagzY8bL6v53nSofss+gQTkiw6J7PAjjvGR13UrfkW1Vp1/VqN0opUIw6KjPhZFa3pMPcuzsqnyU7/z5frIrL/9OsNjLSyjhzEavCadu2bSrKU7VqVdXRJpEgAxExzz//PB555BFEgiuvvBK7du1S2xcDzNNOOw2zZs0qUTCeOIWRw6LSTynk+ifPzpjirjyLIvHDu5E09f+UAWWVohEEd1c8z3+Xmm243wKZcWdRN5FX4MSqRbNQN816zp9q54W7nXfngTP090sICfx8FuB5L5iuV39jXILhz10Hi8ed6HbEmXFyrfLFQsdKFFrhK9IkcvVmP/+DhhMFhyuAsfTLly/HRRddpFJk+fn5qFevHqZOnYrmzZsX1xvVrVtXdb9FI1IcXqlSJWRnZyMrKwsxi3akRAbB1XUP4C3rGqdwd894hLcNjOzX7UV+Jba1RBt/ACb10D8GiYLZvI5v//AXVn39Jl5Ke9XvpiTUfvVNdzPiREgwyEXPmBY2kejQzntm3bBWEWwpKhejzHDRNWkJnkidiOqOA5Yz6XT5/YmLvVy9xYfKUxRm4jDeSX1aeTNtdVXDgPwHcBiZptv69bGucR9tyglAHwQUcXrwwQdx6aWX4q233lLRpQceeADnn38+5s6di9NPPz3U4yY6aEdKHH5TS8H4oJR5VErSk7OGw3V4d4l6BCMd9kjRCALDd8X0pBdQ+tLh93U8/MsXar86HClXnQ7hhITFH84isebvvGdDIHYm4RyRNCz5A9ySMkMNPjerj7w9/07sR5ZWJOqGdg3w0+Z9plYoC9bvRIMPz0WjpB3F+zoOe7E26WZsdNZCp/wXvbZVvUJa3IumQAlIOIkBpcyKE+PJihUr4tVXX8Xxxx+P//znP5g9e7b6PynrwsgiMqsBPV60tyJYOxX46h7vwmgNH5Qy7cqTSJGJaPJNh/VPnoXdBypj/eKjaN6ua8mTqG4YP7O639excO00DNr9mF9DT6Od99LefRO+nZeQyNRHyvlrdKmdv/zN/9Tl4qSlSjSZYVwQvpI6DskOp99IVI0KaZi1bgcmLt5cvKyOR7qx0UfnokGS+YWjiKl5qXd5iaf5914QwjOLTwKucTp61DufO2zYMKSkpKgUHkeflAK6kZKuo+xPHnMeBhaNLblcTkKB+D+VdsRK8/k/kvqe+z9zxwFLTcSgMQ7GT+E57v4VSDlWx1cCZyFcX9yKJBdKXCl6rVa0i4Un3oPLT2U7LyERr48sBTyLyv0hc/CyD+eXONskwYknUifYnj/c11lO00iU5ygViT/tOliyu88YGzPwrMoYDvc51Hd/cl8Kd0Q8SRpP0nZVy6eiQrmY6iErFQKqOGvRogUWLSrZ4nnvvfcqs8mrr746nMdGzNCNlFS0KYxeM9VcNBXjcheeiyjyV3sktQZSK/TZTe5buS/Lg6grkInkUjMgt5bt+sEUuhumeJ7HZWuHIPcd7kiTnWiS4/70ZqQUHLY96Ql7kYVRFR/E5dcPCvz4CSH2keiWfd23ZVBmYBSVS1THDFn+2nVnYPRlLdV931OFNItU86hp0sUIWkunrogvwcrn0lX0c8MvV6lzldX5ynhMap+EhQ/8J+DjSgQCkpL9+vXD/Pnzceutt5Z47P7774fUmcvgXRJB/EZKigojrbyGRAzNPOambonhg+JpWhkhx/JpC+bi4m8uRxu4UOgCHivsg3fLn4pevfqga8vjTJ+/K2cbHCbPX66YSp4ULEzxQgz3z1y5CV3XfaH1HB/Pvw5XXXqz1rqEkNjC0wxThgTvPZiLquXTULtShldxuVnX3vEpejPi/HXq+rMqmJc6FLWT9Oa1SsF4xybVWdsUjq66WCf+uupgXhhpJ1oC6Sbr87b7Ss6yq8Wq1kq/q6Xw0UqWaS7J4e9o/2jJmXBFz98thwJ8+/afUVIMBpFuHDVzHfIXvnIsJeiH21Mfw8vD72RtEyEJjkTTx83bgIkLN6JN7kI8mfq2VxddMEin7nSntTHvF6n/xWlJG/1Gxg2WFZ6E1o//D4lETgD6ICnQ+qbp06fjwIEDpjuVx3JzcwM/YhIYRqQkyycdJ2LFX6QnkG4yq7RYmJx7DdFkRR3sxWmL71TF12bP3+H7/HUwe/4BhvtnrtqGNxf8qa7ytHbpSlfRM4omQuIff2UHMp5lzDe/K9EkNUpVEZpo8jegtxyOBiSaJJTS7K7ZIR9TPBNQqu71119X4qhXr5JfzKLQxo4di7///huDBw8O5zGScBZGBtJNZpXuC4Nz75G/VqNc0fnELt8u55yCrx5A8ik9vJ+bx/N3HtiOzZs3odFPT0TcDFROgnM+exM/pk9EXZlFp8H+ht1KphwJIWEjEO+lSOLrleTb0WY4jTvgVLPnBH+H6bI5TxqdumJNYMWY1HHaoknY5aiCmlXpMRc24fT+++/j4Ycftnx86NCheOyxxyicympwbkA1Un4sDbo/by3CwuDcmzr5XK0Ps5xU0g9vA74bBTQ+31scFj1/CZs2alEI/DEh+NovTb7++A28gOf9Wg+g+CgcOO76N0LaJyEkeLFSmschnWsui442qW+qlJGmjlOcwXUuvLJdmZhScAEGpnylBJTZ4F0Z9GvnLH6uY432cyhwOVDt4Q3a6ycqAaXq/vjjD5x66qmWj7dq1UqtQ6KY4m4ym69+Ga7b/BL/4stuJKafYbhJgdYm/fCsedee1CdJ3dbaL4AzBhzbv+/xhGiKJxQWFKDzr/9199zpXiW2v8NvZx4hJDSx4jv2xBAr8nhppODsZtYZy+RxKRwXxMRSh0fyB2BU4bW2g3ftHMVfT3kemQ694cNyzvrp7BeQnEL7AX8E9AoVFBSoWXFWRpfymKxDohyrbjJJz3V7HmhhI5rC5NwbdEeCZ9ee4PscMqq4j+HI3oC75PyF+3eNPg21Hflah+l0JAHtBiH5oscDfYaEEA38iRX55MrjnZrWKuGiHWgaT+oaH5q2BnsP5ZlGtfzNrDMG+C78Y5eyDqju0BNOO4rEktXgXbtIUxrycFHyT9rP8avCs9Gjx43a6ycyAQknmUn3zTff4MwzzzR9fM6cOcVz60icm8eF2MpfeN4IJC8YGcSBF50SvxwCHNlXQoK5jsgJyQWHDOStdoL28/IX7s//5RPUyv/HNlBn8FnBOcjo+yq6ndYwiOdHCNFBV6y0HfUN9h7KDzqNJx20ry/YWGL5No8U3JF8Kwclb/JWT8OP6e/4TdOZ1S75Dt71x2upL2iVQ0ikqQAOdHzwK+1tJzoBCacbb7wRd999txJHPXp4t7R/+eWXePLJJ/HCCy+E+xhJNNVI+RNfdU4Hvh0B/DQRqNoYuPAJIC2jxK+mNTobWBDsjl3eESUPxJ5ATmFHl05Axn3rtISg39qEa0/FBV8M1i6w/LdhHwyhaCIkokgESQdP0eRbc+RPPI2ZvRa//DgTvZLMozxyzhj++WrlYeiPLknLMCZpjF/vOd3aJTskqtUhSa+2SXZ3Z/4QjM9MD2pfiUjAPk7XXXcdPvjgAzRt2hRNmjRRy9avX4/ff/8dV1xxBT788ENEK3Hj4xStfHg18NvMksubdAOu/tDUC8qVs1Wr0DoYlp03Ca07XeI33N/h6XmWV65ybP/J+B1vuR7V2udRVypSH97OOgFCIozUGV395pKgflc+17UrlcOPD3SyTNvd8uAI1fnmGR2ymg+nI2R+TL9TjUnxlyXc6qqmRFOg+/BkbMpY9ErRe23mFbZCs3vmonbl8A0sjkUi5uMkvPfee/joo49w8sknK7H022+/KQElgimaRRMpI9EkyHJ53KROymFiYRkuR9YZi1Zaj24JINxfIXe79j43VjidoomQUhywG8yFl5HGk8+/lWgSjyUROmbz4SR6FNCxFnXR+RNNj+Vfhw65L4UkmromLUHPZD3RJGGTobg34UVToAQknAoLC/H0009jzJgx2LJli0rX/fTTT5g6daqKNpEEJe+ItWgykMdlPVMjS+nQO4ZDOvKMIu8Q+P1wecsTo264f1jyB3g+9XXtk9AJg6YGdIyEkNAG7CKEM4XZ53/J+p0q0iTb9BU6ct/hMx9Oh84OvSLt3a7KQafnjg0MnqhdVrDceTJWPd476P0lKgH9hZ566ik8+OCDqFChAurVq6cMLwcN4tDShGfuQ8GvJ+Jp6Br3KJQ+b6Ow35dY3HM+lrV8tGgwpbm1gHrMIpgkQSYJd0s9gj9hJF02dqLplpQZfq0T5Djk5/fK5yIts7ztuoSQEIZ8WwzYlbSbJ9XK61mAmH3+x0yepKJDdsa8MstNd3KARKduSvk6ZAdwHeSYdMe35LqS0eSBH0LaX6ISUE5h8uTJePXVV3HLLbeo+9Jh1717d7z11ltISgpeJZMYZ+9feutJEbl4Lvl2uRUVqavOto+ks205gBrokjQEj6W9i1rYc2zdCrWB/INA7gHTE5sqtFQh72vVlZudMJKTs9PpQuWMVOw/4l1AmoICZTon6Fy9bU5viiZ3zdB6GQgh4TOw9Bywa1gOnNmgCs5/9jtVCG5hh6vElqT7fKnlk56zQmc9iQBJ9MqwR7BCxwFcZ1/tAzC7fNV5Ke6qwBRdxIWTjFPp1q1b8f3OnTvD4XBg69atOO44jpRIWKR77s95/tfbuc5tYqksC572siww62yTPP83R8/C2UnrMbxDZZyauRdY9rpbNFnswhA5+5GlTr5mJ0YrXxZP+iXPQbLDpXXVNtIxCI8Pe8zvuoSQwN22dcSTpO3aneA9JkSEl2zDwmlOPe5bGC4XU9UcOVrHrrOeUdukg10XnYgiOw8niWr5FrLbkePKwI0PvKK1LilJQGEiMbcsV85boaampiI/X88UkMQW4pS9duFX+N+MN9St3DdFLAdscFmZWBY5gNsZ2RUiCUudzfDhip1wzR8F12GP6JMNcoIxOzEaviy3f7DCUjQJxzt2au1nSmEnnNf3dg7wJSRAdN22ddN2umk8uW8lyCRqtcel13Gts56uQ/jSmldgVcXzTC8IRRRJR96UtCcwNm2cupX7RoG63JoVstuVFTyTOgiVGG0qnYiTOBcMGDAA6enH/B6OHj2KW2+9FeXLH6vt+Pzzz4M/IhIV/Dx7EuouHonmHmmyHXOrYWu7ETi9S3/vlcWnSSwHTArEzUPURUtnDVM+UMs27rftbJOBmHfmvyXmGdpFoNd1PhutTU6MM1dtxZsL/lSzoqyu3iR11+SEVsCGOX730/DEFji/FOdhEZJoBpaynm80SRfPNN7few/h4+X/4GBuAT776V90OLEGKpQ79hUoAm3hhl3Fbt3+0FnvSLnq4lzpl79rXICrmhyPMd/87hUhM0SRL0Z33+35d+KR1PfUMt1rtzcKe+CJkdYzZ0mYhVP//v1NfZ1I/CAnDxlk2+3X+90LPD6MNVx7UGPRnfgZKCmexKfJxJLA+rPsAnK2qLqnnQca2x5Tm6R12iFouTjNL18HrTv2NH1u86a+jR/TJ9h6s0i907rj+qL1hheQ5HJa1lLJWJUO1wzXOi5CSHAGlrrrWSHR4FFfr8Oqf4+l1n7bcRAtHp2NVsdlYfrgc73qrJLQVJ0TrDyXdOuRHu5+Cq5vcxF2PPWyOnfabWv4iopw4ndUzkxVy/cfzi+uj4JFd5/87hOp76C6ZmpxtysLT7kG4IUnOAaqVIXTxIkTQ94hiV7k5PHYtFX4NG+07Ye1zuKRKPzPtSX9ikQ85R1B4ZyH8Nf/ZuMk/ON/pwd3oHqFUywfliuu0alvah2/0WX3S4thaG3iGL7h+w/wTOFzlldvngMzH5/1F/KTu6muOl9nX2M/m0++AY3T6LZLSDDYNW4Es54Vvcb94CWaPJHl5z87D3/vOVIc5ZHos1xIyTlBznee50GVNXQALyXfCFeueaWLUXg+4JxGSrRJlF4uOE235VPblH04Xx3HXZ1Pwr6181B3n/UFo2yrOvRE09iCSzCmoC/+Gl3ygpIEDlvhiFeR5vGHVtkatcny2tiD9Utnm6+QloEN5c9AFZdebn/ZriS8P+U99EpahLZJ67y8UYwwdSUc0trWHmQp8VPYxOTk4CzE8UtHWgpCmHizjC68Bq8X9IDTJ24mkaaNTW5C42s4XoiQSBlYynK7Bg8dDh4tsBRNBps9RJOBXEDJuWS7TzpOokO/tBuLCy69qfgYfY9Z8KyvlOj8L+3HYpejWolteV6seZY2fLjsbxzcswXhYpGzBb69u1PYtpfo0OKYeBVp6hYzHtln8aFeNx0nfz8ILj/eR3K1dTSlEo77/m686tgno7y90mZznWdZhqnNtrUXWWiXOw7VK1UwP9FuXoSMozssc4eyj7pwe7N4DtIU8fRc4RWqy+6k1N1oc8aZaNB1CCNNhITJwDLQzrdAuOsjKSwIDhE0c3PPKu5mO5xeHX37XI6uLd0d5FJg7mujUNvCRkHEk0Tp1y6djY2bNuC9tXklaisN5HXYnpOLf5Oyis+LweKZVmxUkx5z4YLCiXgVaeoasGVUqVdyobMQR768D+lw2Yod+TDLw+UKs1HbIm32YkEfrbomI9z9UP6NKECK9YlWhhBrYCYcZbsTCrtJix8+bN6WoomQMGF0vukKkED5e5/PtIIAEWFjXEjVTk3H683r2fpHGRdtYuLpuUzOSVLa0Pyc7vh871oscW7yu28RO3a1Vjo4ilKBfzzVI7gNEFMonIhX8aW/D6sIlZ2OamjapkuJx5bN/xKtj/if63YQ5VDecRSqCsmijurGFItUoA/ZqIBh+TerVt7xdifaCrW0tudPOIZaqEoI8cZKgITD4uP4Khn4bbuek7Y/JArk2+Hn6x/lz8xTHn97ob1o8vRs+rDgAtyV8lmJ+ihd3i64GOf1GkC7lDBD4US8ii/9FkZKi3C7EajtUxgu6b6ZP/4POqMpK+Kora2A7LMKDmod+9pzxmLACR39n2jFrVyMN8VDyiSNKJVN24vGtESyUJUQomdgaYuz0D2JQCLJclHkO42giBevPF11z4ULuwsnf2aer1xzBh6bsdZ2+2ZGlntdFdRtVc1zoiffuM7ElLaNAv49Yg+FEyku0jTGExiFkeoD7GGqJpEmEU0lrAjk5PDpfXi4ULyWNHaoefGzz1UBlRwHLToYHEoIdeh8iekJswSyjriVi/GmT0WFuEPJkrGpN/ntlAmlUJUQEgbEOHfWA0DO1mPLTKYRCOLTJJYDVgXi/hy5dS+c/Jl5yvnj/s9WKQ8pK6w8myoXCabn8/uq8+FNybO0xkCJ/cAzQ2/1vyIJGIdLXC0ThJycHFSqVAnZ2dnIytJzh00UjKslwWVyUjnvjBa49JLLS1oQCHMehmvRWPWLdh9o37Z+f8iJ4u7UT4tkTcnS0cLLJ2FZuQ6BhfdNT7r1gK6jMct5donX4Nje3MWgodZcEEJCQD6/6uLH92ur6FN6xeQS4snKksAsuuPr6eZ74fTjA51MzzELN+zGtW8tDfppyblW3MDtvaPkos2F2thnm7YzvtFvzx+C8U9xFFQk9AGFEwlt2GZBHvBETdVF52+IpW6a3egE6ZD7Ep5suhlX732lhND5ufkDuH3FccENBrUJ84c6cJQQEiHkczumhfe5wCQKjaGrTaPQYk0w9KMV+G79bnR2LC2O7piVI3jaBPi7cJJzxrDPVpcYFB4IYsUio1TCgXyji43KrU++H5btJQo5AegDpupIaEWaXw4tSnbZcxSpyIT+icUwhbvkmtuAlNu8hM6sg41w2/u/wIWjwQ0GlZNqo3NLvVCVEBICcg6wFE3e0wjk8y3pM9/Pcct6lTHv1x0YkWbvyC2ebmJFIOcguw4/q7qmQNG1gdFhQmEXXPfwpLBtj5SEwokEX6QpV4Drvgir02qhy4FB+Xeoq70Lm9VERlrRlWOR0FG1BE/Ps60lkIiRiJ9gxU7AhaqEkMijaSki65lFjmWciYwykTmVdlYnhqfb5P8UILnxeZYXTnIuGvb56pBFUyA2MDr8mNwGN3nM4CPhh87hJHjkyi7/sNaq6Y58randd+QPxixnWyWa3ux3dkiDQQkhcYSmpciyXSkqCuR7nhDRFEh0p0PtQnUBZXUBNm7eH8XbDBXDBsZIFfoiMX1nxbrY6qpiuY4s3+qqhpcfGByWYyLWUDiRiF8BGpEgWxzAVxUvR7XWV+LXx7qaiqbSHAxKCIkyDEsRmyEtrqx6uGtJpm0USDu6YyPUJNo00Y8fk0HljFQV7bKtAS2ygVH/9zl4437SxU9jUtZttutMyroFFTJp0BtpKJziDUmfbfwBWP2p+1bul/EVoF/RlJ4Fx+WT0OPet/D4JS2PpefKcDAoISTKMCxFbKbE/X76f7ElJz/k6I7qtBWhZrWNjXu1i8HFv2n0ZS1Nj1p3Pt7y1mNUt+Dwex7A01kPmq4jy+VxEnmYCE1Qf5Ow4MdUUpvuzwPNLwnKcypgvyVN4zxCSBQi5zGxHDA9z43G+rwzAay03YSdyW9xdLzraNvzgm5EWyJNbYvSfWajZfzNxzO8pd5vckzEiTg6eHgonp08GQU525GSVRu39euH4Yw0lRq0I0hwf5Og8BQfe/4E5j9VwlQyIPrPsOxy0/Wc0vJbKm1hSQiJDBYXQDIj7uo3l2htwszHKTezDtJ7POP3fKC7n1OPq4Rep9bF9e0aIi0lyavTb/eBXDz+1a9+t1G1fCqW//dCdvZGGPo4JZpwCtHfJCDMxEeG25gNR/YFuLHgjytgv6XSFJaEkDJBhEmHp+dZRqT9OYdfffmV6H368eHfjwMYeG4jDO/WrMQ27CJQwqvXnI5uraS2i0QS+jglGgH6mwSNEh/Xl9x6kWBydHwQcOYDC57V36afkLjlrwXityTCUsSenYnBrGFA0+5M2xESw8jnXy6eJCKtEwOXtN0S5zExMySrfGT2I6aUCzaq/xviyXMbVr9/y3mNKJqiEBaHJ5i/SdCI+PjyTtOHHMo33IUjSycA1U/W255EqUKM8hh+S71Pq2fbNhyQsCSExDRyUSXpeql11MVRFLEOZBZlMPt584eNyCtwltiG7NuTauXT8Oo1Z3hFqEj0wIhTPKDZ3aa9nhkLnrNNxYkCzziyHb9u+BOnaGxu2VnPo3VppcZKQ1gSQqIGIyL9zsKNWnVEEvGR6E+gdUSeke+Hp67Ghl2H/Eae3l28CTed29h0G5xWEBtQOMUDfrvbimqJbNpr/Uablo7XWvWXNavR9NheLefQ3bW0AhZc4LI9OZiNTAjqZFIawpIQElXIuaJ6Rb1OsxvPaRj0LErZz/zfdvgVTQab95Y0Dea0gtiCwime/E1U8bNvxt0RUi2RQlJYmoXfFxYuULs0kzfShiDLH8u/Flty85UosjpZhHXYbqSFJSEkKtH1c5OIT7BI6k1ScLo0qJoZ9L5IdMAap3jzN8nyERUiCELtGNNMYR1wlUM1xwFrX18RVA5gP7JsvVAMuwHfbhNjiK88Hm7jvJCEJSEkKjF83xxhrG3yRVJvVmaavkjAXKwJSGxD4RRPiDgausbti9TnbfettPqHWkukmcJaUNhKaz1jVpTZ1aAa4vvlOsv+N0Eel/WiRlgSQqISo3PN5pIpqNomf6k3K8SSQPycSGzDVF28IVGTUCwHbFJdrpxtqoPOLAW3DxXwvrMzumOZ382JX4rVVV4gQ3wDrgkQcSSWA3QOJyRhMDrXfFP/tYNN/QeZemvbuCq75OIECieinepyfNxPzXHyFE9G4OfB/Jux1NkMRzJqI+OIpPZcloXhy51N8YrFVV7Eh/hGQlgSQqKaSHauSertyZm/2qbrZDeTb2wT8r5IdMCYIQko1eXwSXWJEJLBlL9UPA+vXHcWMnoa5pfeJyTjpDI29Sa1ntVVnl0xp7j8tk1ah15Ji5Dy90IUFhSE+qwIIQmCtu9bgEjqTVJwdjBFF19w5AoJakaU88B2/HogExsyW6JmVnnvqzeTsSyHM2rjn9aP4MTzr/FrQWA2ysBsrtQOVMPWdiNwepf+kXmuhBCiyaiZ61R3nWfkyWzUColOOKvOAgqnsh/CGcwQXxFNMslc8NRcxgnql/ZjKZ4IIWWOWBNIl50UjEvtkzHcl0Q/FE4WUDjFDoaP047sw/gx/U7Uxl4v0eQpnnY6qqHGQ78jOYUle4QQQgKHQ35JmUaMAqIgD1j+JrBvE1ClIXD2QCAlrbiYc9aMT1B3xbH0nC8ipmpjD9YunY3m53QP//ERQgghHlA4JSL+RJFJjZLyOxITyXD6Hc15GFg8DnAdG3qJOQ8B7QYDFz2uaqFqJbk9n/xxZN+W8B0XIYQQYgGFU6LhTxTJ42p0i08GV8aVyPJwmUWKaFo0tuRyEVHG8oseR0aVelqb012PEEIICQVWrSUShijyFE2eomjtVLeosvPtnjXMHbEKNT0nkSY7Fr+i1mvapovqnrPySDG8oWQ9Qggx69Rd/OceTFu5Rd0GPHWAEB8YcUoUROzYiiIH8NU9wOHdNhtxATlb3Gm+UEwkpabJMz1nuqtCtV5yu0HKcqDGojuVSDLrqtvWbgRqszCcEBLJYeGEFMGIU6IgYsc30uSFy49oCnzoryV7/9JbTwrGAWU1IJYDuxzeI1akm45WBISQUhkWTkgRvExPFEIVOx78uD0ZyZl7ghtZIOnCVR/rrStddkWIOCr8z7Wqe04KwaWmSdJzjDQRQgIdFi5nLXlcOnfD5SBOEgd+6yQK0j2nQ2Y14PBe81lzcrXmqoZ+36bA+e2SwEPeVoXnZjiS3dYEHohPEy0HCCH+iOiwcJLwMFUX70gh9qJxwJJXgRTrOXDqGiyrHtDthWP34VNP5AJG5l8PZ9HbJqCQt22NlQntBik/J0IICZSIDwsnCQ0jTvGMavl/WUOsFImkrqPdVgNJk0tYFkjnmoim2c7WwYW8/dZYGYeSVOzjRAghwWA3LDyY9QjxhMIpXrHySTJD+TgViSZBbpt2V2Ln6yUrMWn1USxzNi2ONAUV8tatsbpkPHDqVXrrEkISrnZJzjUSKRLRY1VnKcullMB3WLiB/EbtSu7fJyRQKJziER2fJCG9EnDlu0DDDiXHqSQlo7BBBwyffAT7nfmhh7x1a6wkXUgIISFYC4iYkuVSSiAiyVM8GTJLHmdhOAkG1jjFIzo+SUJutjs1ZjGDTq7s9h/xL5q0Qt4y1kUiWz61UyVqrGQ9QggJ0VpAxNT4685QkSVP5L4sp48TCRZGnOKRIv8jLWxSaLqFk5UzU/2HvEWcyVgX1VVncQ0o6cJIDBImhCSktYAxLFwnvUeILow4xSMe/kc6nkxWYwh0CydvaN9I70QktVMy6y7L50pPIlHhmoFHCElYawEz5Nwk9Ze9T6unbimaSEIIp02bNuGmm25Co0aNkJGRgRNOOAEjRoxAXl5eWR9adCL+R5KCs0FONltdVZQn09VvLkGHp+eVCHcbBZYOP9GmwZ1O1D82EUdD1wD9ZwB93nbfDl1N0UQIMWXuuu1a69FagJQWMZGqW79+PZxOJ15//XWceOKJWLNmDQYOHIhDhw7hueeeK+vDw5G8Qjw1cx027TmMhtUy8WC3ZshIK8OUk/gfSUu/RVedy+UWTiPz+5fwZJLcv2do+6qz6+PFb/4okVwzGH1Zy8Cv4CQdF8qsO0JIQiAXcxMW6pUe0FqAlBYOl0u+RmOPZ599FuPHj8dff2nOPQOQk5ODSpUqITs7G1lZWWE5joGTl2Puup0lll/YrCbe7Hc2yqIV15+P0wFXOdybf6uXJ5PgKIogpackYXtObvFyWSbsP3ysUJyDMgkhkUTOdxIJt0vTeZ6PfnygE9NwJGgC0QcxEXEyQ55c1apl68FhJZoEWS6Ph0s86bTilhBWnR9DcqeHgWVvAJsXY2duCob+3hRLnC0sPZn2eYgjg+yiZXd1PhkNq2eywJIQUua1TZ7QWoCUJjEpnDZs2ICXX37Zb5ouNzdX/XgqynCm56xEk4E8LuuFmrYzWnF9Q4Oe6TXBUli1Hwy0H4zFK7dg0fqVAe/f6FyZsvxvXtURQkoF3Zqlm85pyMg3SZzi8GHDhsHhcNj+SH2TJ1u2bEHXrl1x+eWXqzonO0aNGqVCb8ZP/fr1w3bsUtMUzvWCbcUVhn2+WsvjJJQaAH+dK4QQEk50z1edm9WO+LEQEjURp3vuuQcDBgywXadx48bF/9+6dSsuuOACtG/fHm+88Ybf7Q8fPhx33323V8QpXOJJCsHDuV4orbietUd2Hif+xhDowM4VQkhpwLEpJFopU+FUo0YN9aODRJpENJ155pmYOHEikpL8B8vS09PVTySQ7rkf/tBbLxRCFSq+s+SsxhDows4VQkhpwLEpJFqJCR8nEU0dO3bE8ccfr+qadu3ahe3bt6ufskIsB8K5XqSFiiHArMYQyJWddM/ZDERR6/DqjhBSWnBsColGYqI4fO7cuaogXH6OO+44r8fKyk1BCr7FcsCuQFweD7UwPBzpNV8BZjWGQIzmeHVHSPwQdR5zQcCxKSTaiFkfp2CIVR8no6tOCOaPVTkjFa9cewbaNvY/biCQCeSEkOilND3mCEkkfUDhFCNXdWaCJlB0BVDARpuEkKjCzmNOoHgixBsKp1IWTqWFIWgkpfbJT//iwNGCgH7fkD6sDSAkfpELuVMemeV3vV8f6xpzaTtCokEfxERxOHEjUZ/sI3mYtPAvNM9bhV5Ji9A2aR2S4NT6fUMhS+RKRBghJP4oLY85Qc4ji//cg2krt6hbnldIIhATxeHEjZyU5k+dgB/S30JdxzEjyq2uqhiZ36/E7DkdewJCSHxRWh5zrIckiQojTjHEhu8/wFP5z6A2vN275f741DHokrRMe1s0siQkPtH1jgvFY85oWPE3rYCQeITCKVZwFuL4pSPVf33rtI37I1Lf1U7b0ciSkPgk0h5zOmOgWA5A4hkKp1hh8yJkHN1RQjQZyPK6jj1onbQeVcvTyJKQRMXwmLMjFI85nTFQnGtJ4hkKpxhArtx+/3OD1ronZx7CE71bqP/7iicaWRKSGIjVgJV4CtWKQDfNz3IAEq+wODzKMQowGxzYjSlp/tfv0f40tG5VF+OTHCUKN2VMAQs3CUkMRBxFwmNON83PcgASr1A4RTFGAaaEvnegqeqek0Jws2CRVDblZtRG64491X2OKSCEiEh6/JKWYd2mvzFQjqKLNJYDkHiFqbooxbcA04kkZTmg/u9ztnLBof5l9HwWSDp2NSkiSSwHep9WT91SNBFCQkXOIxK5FlgOQBIRCqcoxawAU3yabssfiu3wvpJzZNWF44rJQLNepXyUhJBERCLaMoFAIkueyH1OJiDxDlN1UYpVYaWIp7m5Z6nuuZrYjysuOAsd/tPLK9JECCGRhuUAJFGhcIpS7AorJW23xOkOlV/duC1FEyGkTDDKAQhJJJiqi1KMAkz6MRFCCCHRA4VTlMICTEIIIST6oHCKYliASQghhEQXrHGKcliASQghhEQPFE4xAAswCSGEkOiAwokQQqwoyAOWvwns2wRUaQicPRBI0Zh9RAiJWyicCCHEjDkPA4vHAS6nx7KHgHaDgYseL8sjI4SUIRROhJDYx1kIbF4EHNwBVKgFNGgfmr+ZiKZFY0suFxFlLKd4IiQhoXAihMQ266YDsx4AcrYeW5ZVF+j6dHBjiCQ9J5EmOxa/AnR6mGk7QhIQ2hEQQmJbNH3cz1s0CTnb3Mvl8UCRmibP9JwZrkL3eoSQhIPCiRASu+k5iTTBZfJg0bJZw9zrBYIUgodzPUJIXMFUHSEkNpGaJt9IkxcuIGcLsPQ1d92Tbu2TdM/poLseISSuoHAihMQmUgiuw+wHA6t9EssB6Z6zS9c5kt3rEUISDqbqCCGxiUSQAkWn9kkKvsVywI52g1gYTkiCQuFECIlNJO0mEaQSY7Dt0Kx9EquB9ncCjqSSkSZZTisCQhIWh8vlMqusjEtycnJQqVIlZGdnIysrq6wPhxASrq46RYCnsv4zgEbn2q9D53BCEoKcAPQBa5wIIbGL1CpdMbmkj1O4aqRU2m5Q0IdHCIk/KJwIIbEvnpp2P+YcLj+eBeHhrJEihCQ8FE6EkNhHLAaMtJvULonztxSCm6bvHO7aKKmRIoSQAGFxOCEk/kSUWA4ofAvHi+53HR3aLDtCSMJC4UQIid/ap6w63ssl0iTLg5lhRwghTNURQhKm9knXOZwQQmygcCKEJEbtEyGEhAGm6gghhBBCNGHEiRASnUh3HNNshJAog8KJEBKdjuC+ppY6A3rDINScB7bj1wOZ2JDZEjWzyqN1o6pITgpkrAshJJ6hcCKEROkYFZf5gN5IdMV5CDWpX2gOoIqrKkbm98PdFc/DiJ7N0LWFT4ceISQhYY0TISR6kKiPCBhT40rNAb1BCjWXz8iW2tiL8aljcOqBBbjtvRWYtUYMNQkhiQ6FEyEkepCaJtuZcy4gZ4t7vTAKNRdcJawyJTsnyx5JfRdJcGLkl+tQ6EyYmeiEEAsonAgh0YPO4N1A1tMUalYVTA4HUNexB2cnrce27KNYtnFvePZLCIlZKJwIIdGD7uDdcA3oPaCXfqsFt2DaeeBoePZLCIlZKJwIIdGDWA5I95x1DAjIqhe+Ab2HdmmtVs2Ro25rViwXnv0SQmIWCidCSHRxxgCL4vAIDOgtX0NrtT2uLNSpVE5ZExBCEhvaERBCote7yRPl4zQ6vFYEFfUsBnagqrIkoJ8TIYTCiRASvd5NBh0fBM67NzyRpoI8YPmbwL5NQOUGQIXawMHtpqtKE91ORzUMuPpq+jgRQhQUToSQKPZuEhzAiklu4RQqsx8ClrwCuJze2zdBjsbhcKDG5S+ia/PjQt83ISQuYI0TISQxvJs+vBpY/LKPaCravpBW3mupI6seHFdMRnLz3qHtlxASVzDiRAiJf++mNZ8Dv820Xyf/KHDt58DRfRwqTAixhMKJEBLf3k2SCvziFv/ruQqB3euBdoOC2w8hJCFgqo4QEt/eTZ/dDBTm6a0rBeOEEGIDhRMhpGyRdFjXp4vuOMLr3SQddGu/0F+/SsPA90EISSgonAghZY94M10xGcjyafmXSJQsD9a7aenrNt16PjiSgLMHBrcfQkjCwBonQkh0IOKoaXd395wUgoejQPufJfrrth0EpKQhJKSeKpzHTwiJOiicCCHRg4iMRueGb3up3hYDllSsC3R5IvzO58rt/Onwup0TQsoUpuoIIbGHRHY2/gCs/tR9K/fNOPUqve31fsV/rdTiV4CZ97lv5b6Z87mvH1XONvdyeZwQEhcw4kQIiS0Ciew0Ph9IqwDkHbTenjwu61kx52Fg8Thv48w5DwHtBgMXPe7H+Vz5jwOzhrnTkEzbERLzMOJECIkdAonsGPVGZ8gMPBsuGW8taEQ0LRpb0m1c7styeby0nM8JIVEBI06EkNggkMjO+q9KRqWUtYHLu67pYpv6I5WeG2d/TJK2q9k88s7nhJCogcKJEBIb6EZ2FjwHzB9lbUPQ9nagSTf/HW/L3zSZa+e7y0Jgy/LIOp8TQqIKpuoIIbGBbsRm6Xj7qNS6aXo2AYG4iEfS+ZwQElVQOBFCYgPdiM2RfeGpN9J1Ea/aOHLO54SQqIPCiRASPzPtMqqEL3olLuLiJm6HI9m9XqSczwkhUQdrnAghsTXTTrrnfAu9DTHV5jZg/lPhiV6Ji7hYDkj3nBXtPNzGI+F8TgiJOiicCCGxgxHZMfVxGu0WLivecdsTmNY5Sb1RXft6I8+xKSdd5C4QX/Kqd6G4RJpENImPUySdzwkhUUfMCafc3Fy0adMGv/zyC37++WecdtppZX1IhJDSxF9kx19Uyq7eaO1U4Kt7gMO7jy0TodXnbeDANnfBuNQ+SXou1Ll2hJCYJOZqnO6//37UrSt1DoSQhMWI7LTs6771FELB1huJmeUn/b1FkyCRrU9vBCrVB7o9652eI4QkHDEVcfr6668xZ84cfPbZZ+r/hBBiSqD1Rmum2tcySeSKY1MIIbEknHbs2IGBAwdi6tSpyMzM1E7ryY9BTk5OBI+QEBJV6NYbSU3TzLv9r2fYGLCGiZCEJiZSdS6XCwMGDMCtt96Ks846S/v3Ro0ahUqVKhX/1K9fP6LHSQiJQUQMHd6jty7HphCS8JSpcBo2bBgcDoftz/r16/Hyyy/jwIEDGD58eEDbl/Wzs7OLf/7555+IPRdCSIwSiBji2BRCEp4yTdXdc889KpJkR+PGjTFv3jwsXrwY6enpXo9J9Onaa6/FpEmTTH9X1vf9HUIICUoMZVbn2BRCCBwuyYNFOX///bdXfdLWrVvRpUsXfPrpp8qa4LjjjtPajmxDUnYSfcrKyorgERNCYgapcRrTws8AYQCXTwKaX1JaR0UIKUUC0QcxURx+/PHHe92vUKGCuj3hhBO0RRMhhPh3JLe4jmx/J0UTISR2isMJISSiFHs/1S2Znus7qaRDOCEkYYmJiJMvDRs2VJ12kcDpdCIvLy8i2ybEl7S0NCQl8folKuCsOUJIvAqnSCGCaePGjUo8EVIaiGhq1KiRElAEKHS6sGzjXuw8cBQ1K5ZD60ZVkZxUNCpFF89Zc4GKH86aI4T4gcKpCIlgbdu2DcnJycrviVEAEmlEoEujg7zvpI5P7DcSmVlrtmHkl+uwLfto8bI6lcphRM9m6NrCZ3yKFeumWwwAftp61AohhAQAhVMRBQUFOHz4sJqDp+tMTkio1KhRQ4knef+lpqYikUXTbe+tKFGavT37qFo+/roz/IsnEU1mBd4529zL7ebUEUKIJgyrFFFYWKhumTIhpYnxfjPef4manpNIk1nVorFMHpf1bNNzEmmy24rMmpP1CCEkBCicfEj0dAmJj/ebiIzFf+7BtJVb1K2t6ChjpKbJMz3nixy5PC7rWSI1TbY+TK5js+YIISQEmKpLsC/pL774ApdcYu5Hs2nTJlWo/PPPP+O0004r9eOLRsTZfv/+/Wq4dELVCpUi23OsRZMnUjAe8tgUzpojhIQII05x8MVuzPWTGplatWrhwgsvxIQJE0p0B0oR8sUXXxzS/jp27Kj2NWXKFK/lY8aMUTYRgSDb0REk33//PTp16oSqVauq+rOTTjoJ/fv3LxXbiJdeegnvvPMOYq1WyDeCY9QKyePRhBzP4zPWaq37x44D1tEz3bEpnDVHCAkRCqc4oGvXrkoUScTo66+/xgUXXIAhQ4agR48equjYoHbt2mGZ3VeuXDk89NBDyM/PR6RZt26den4yl3DBggVYvXq1GvostUGh1AXpii6x4K9cuTISplaoDETe3kN676Nx3/2Jq99cgg5PzyspAMVyQJlXWqU+HUBWPc6aI4SEDIVTHNSWiBgSUVSvXj2cccYZePDBBzFt2jQlojyjJb4RnmXLluH0009XQkiEiaTodLj66qtV+urNN9+0XW/8+PFqLI6InCZNmuDdd98tfsyITl166aXquKyiVXPmzFHP7ZlnnkGLFi3U9kRIyb4zMjLUOo8++miJ1KJvBEwic5KifPLJJ1XnpByPvE4y69CXU089FY899pjX7wlvvPGG+l3fSF7v3r1x4403Ft+X117+DvK6ypDqkSNHegnYqK4VigKR5w/T6JkxNkXhK56K7ncdTTNLQkjIUDiFETmRy9WwXBUPmbLS+uq4FJDUlgiAzz//3PTxgwcPqohUs2bN8NNPPynxce+992ptWwYg/ve//1Xi4tChQ6brSC2VRL3uuecerFmzBrfccgtuuOEGfPfdd+rx5cuXq9uJEyeqaJlx3xcRTfK4RJtC5dtvv8Vvv/2GuXPnYsaMGbj22muVePzzzz+L11m7di1WrVqFa665psTvX3755dizZ0/xcxD27t2LWbNmqW0JP/zwA/r166eeu0TLXn/9dSVeRbBFGtsaoCDWi+TFgz+RZ4dl9Kx4bIpPHZdEomhFQAgJExROcVxb0rRpU5W+M+ODDz5QkZO3334bzZs3VyLqvvvu09727bffriIqL7zwgunjzz33nIrWyHonn3wy7r77blx22WVqueFfJEgaTMSRcd9MrEiE6/zzz0edOnVUhGrcuHFqknWglC9fHm+99ZZ6vsaPiEt5LQzef/99FYU68cQTS/x+lSpVVI2Y5/qffvopqlevrtKjgkSXhg0bpmqwJNok9WaPP/64ElCRRpy2w7lepC4eROws3LArpP1YRs9EHA1dA/SfAfR52307dDVFEyEkbFA4xXFtibihW7W7//rrr2jVqpUSPwbt2rULKD0oEScRQrt37zbd/jnnnOO1TO7L8kAQJ3eJSv37778qXSfpyKeeekqJHolEBULLli1L+HRJpMgQQvJ6ffjhh8XRIzPksc8++wy5ubnFQuuqq64qdpr/5Zdf1OtSoUKF4p+BAweqYxWD1Ugi40mke86mykc9LuuV1cWDIaykXikcmEbPjLEpLfu6b5meI4SEEQqnOK4tEZEi9gKR4rrrrkODBg3wxBNPINKIYLr++utVtEnSaUePHsVrr72mHhPR4jv02axwXSJOvkg0S9J3K1aswKJFi/DPP//gyiuvtDyOnj17qn199dVXal1JzXkKLUmBStRp5cqVxT9S0P7HH394idRIIDPdxHLApspHPR7w7LcwXTwM/3w1bjURVqEQyegZIYSYQR+nOKot8WTevHnqC/uuu+4yffyUU05RxdoiQIwv9CVLlgS0DxEso0aNUim42267rcT2Fy5cqFJWBnJfaqoMxD4hmM44SZlJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "df = df[['Survived', 'Pclass', 'Sex', 'Age', 'Fare', 'Embarked']].dropna()\n", - "\n", - "# Target\n", - "y = df['Survived']\n", - "\n", - "# Use multiple features including numeric + categorical (to allow n_components=2)\n", - "df_encoded = pd.get_dummies(df, columns=['Sex', 'Embarked'], drop_first=True)\n", - "\n", - "# Create X without using .drop()\n", - "X = df_encoded[[col for col in df_encoded.columns if col != 'Survived']]\n", - "\n", - "# Standardize multiple features\n", - "scaler = StandardScaler()\n", - "X_scaled = scaler.fit_transform(X)\n", - "\n", - "# Apply PCA (now on multiple features)\n", - "pca = PCA(n_components=2)\n", - "X_pca = pca.fit_transform(X_scaled)\n", - "\n", - "# Plot using matplotlib\n", - "plt.figure(figsize=(6,5))\n", - "colors = ['red' if label == 0 else 'blue' for label in y]\n", - "plt.scatter(X_pca[:, 0], X_pca[:, 1], c=colors, alpha=0.6, edgecolor='k')\n", - "plt.xlabel('Principal Component 1')\n", - "plt.ylabel('Principal Component 2')\n", - "plt.title('PCA on Titanic Data')\n", - "plt.grid(True)\n", + "# 1. Select and standardize numeric columns\n", + "num_cols = final_df.drop(columns=\"Survived\").select_dtypes(include=\"number\").columns\n", + "X_num = final_df[num_cols].values\n", + "X_scaled = StandardScaler().fit_transform(X_num)\n", + "\n", + "# 2. Fit PCA\n", + "pca = PCA(n_components=2)\n", + "X_pca2 = pca.fit_transform(X_scaled)\n", + "\n", + "# 3. Explained variance\n", + "print(\"Explained variance ratio (2 PCs):\", pca.explained_variance_ratio_)\n", + "\n", + "# 4. Plot explained-variance ratio\n", + "plt.figure(figsize=(6,4))\n", + "plt.bar([1, 2], pca.explained_variance_ratio_)\n", + "plt.xlabel('Principal Component')\n", + "plt.ylabel('Explained Variance Ratio')\n", + "plt.title('PCA Explained Variance (2 PCs)')\n", + "plt.xticks([1,2], ['PC1','PC2'])\n", + "plt.tight_layout()\n", "plt.show()\n", "\n", - "# Print explained variance\n", - "print(\"Explained Variance Ratio:\", pca.explained_variance_ratio_)" - ] - }, - { - "cell_type": "markdown", - "id": "fc88159b", - "metadata": {}, - "source": [ - "From graph we can understand that:\n", - "\n", - "- Datas are closer to Principal COmpontent 1 and we can say that captures the largest variance in the data, so it is better to use for decreasing dimension.\n", - "\n", - "- From the result we can also shat that PCA1 captures 31% and PCA2 captures 23%\n" + "# 5. Scatter plot of the first two PCs, colored by survival\n", + "survived = final_df['Survived'].values\n", + "plt.figure(figsize=(6,5))\n", + "plt.scatter(\n", + " X_pca2[survived == 0, 0],\n", + " X_pca2[survived == 0, 1],\n", + " label='Did Not Survive'\n", + ")\n", + "plt.scatter(\n", + " X_pca2[survived == 1, 0],\n", + " X_pca2[survived == 1, 1],\n", + " label='Survived'\n", + ")\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.title('PCA Projection by Survival')\n", + "plt.legend()\n", + "plt.tight_layout()\n", + "plt.show()" ] }, { "cell_type": "markdown", - "id": "05513ac4", + "id": "0c43001a", "metadata": {}, "source": [ - "**t-SNE (t-distributed Stochastic Neighbor Embedding)**\n", - "\n", - "t-SNE is a non-linear technique for visualizing high-dimensional data in 2D or 3D, often used to see clusters.\n", + "### t-Distributed Stochastic Neighbor Embedding (t-SNE)\n", + "t-SNE is a **non-linear** technique that excels at preserving **local** structure (neighborhoods) in a 2D embedding.\n", "\n", - "How it works:\n", + "1. Compute pairwise similarities in high-dim space using Gaussian probabilities.\n", "\n", - "- Preserves local relationships between points (similar samples stay close).\n", + "2. Define pairwise similarities in low-dim space with a heavy-tailed Student’s t distribution.\n", "\n", - "- It maps similar objects in high dimensions to nearby points in lower dimensions.\n", + "3. Optimize the embedding by minimizing the Kullback–Leibler divergence between the two distributions via gradient descent.\n", "\n", - "- Unlike PCA, t-SNE is not good for preserving global structure or variance.\n", + "**Why it helps in EDA/preprocessing**\n", "\n", - "Limitations:\n", + "- It often reveals clusters or subpopulations that PCA (linear) might miss.\n", "\n", - "- Slower than PCA.\n", + "- Good for visualization, but not typically used as a direct input to models (it doesn’t preserve global distances).\n", "\n", - "- Not useful for downstream modeling (only visualization).\n", - "\n", - "- Randomness makes results slightly different each time unless you fix the seed." + "- Requires tuning perplexity (roughly, neighborhood size) and learning rate." ] }, { "cell_type": "code", - "execution_count": 33, - "id": "6ab910a2", + "execution_count": 94, + "id": "dc302f50", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "t-SNE embedding shape: (891, 2)\n" + ] + }, { "data": { - "image/png": "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t3///m5iYqIbHx/v9urVy508efI296lqtd2+5XTs2LHmdvl3T7TaCl999ZXboUMH87xt3Xa7cOFC0/or687IyHCvuOIK07a6fWuutNomJCT85m9VPddbs6MWVmnblZZbec38fr/bsmVL00K7fVvs9mz9Osj7JDU11bT3SovtggULdti6+/DDD5vnRv6O3Pfbb78169/++ZLXR9qEpU166zWvW7fOPf30083fSklJcc8880zTOv17rbmKsiew5H/VK3cURVEURdmf0W4XRVEURVGqFRUfiqIoiqJUKyo+FEVRFEWpVlR8KIqiKIpSraj4UBRFURSlWlHxoSiKoihKtaImY9shsw02bNhgzIr+7kRKRVEURdmfcF3XTGGW0RHiAPx7qPjYDhEee3tWhaIoiqLUZmTatUzS/j1UfGxH1QAneeL29syKXUXsksUqWWZxiJ33voDuU+1gX9ynfXW/dJ9qB6Fauk8yIkAu4KvOpb+Hio/tqEq1iPCojeJDBkrJumvTm/WP0H2qHeyL+7Sv7pfuU+0gVMv36c/KFrTgVFEURVGUakXFh6IoiqIo1YqKD0VRFEVRqpVaKz4effRRk1O64YYbttxWWVnJNddcQ506dUhMTGTQoEFs2rRpr65TURRFUZR9QHxMmzaNV199lU6dOm1z+4033sg333zDJ598wvjx403b7MCBA/faOhVFURRF2QfER2lpKeeffz6vvfYaaWlpW24vKipi6NChPP300/Tu3ZsuXbrw5ptvMnnyZH7++ee9umZFURRFUWpxq62kVU488USOO+44HnzwwS23z5gxw7Qmye1VtGvXjqZNmzJlyhQOP/zwHT5eIBAw29Y9yoI8lmy1iar11rZ1/xG6T7WDfXGf9tX90n2qHYRq6T7t7Hprlfj48MMPmTlzpkm7bE9WVhYxMTGkpqZuc3v9+vXNz36PRx55hPvuu+83t4u5i/RY10ZGjhzJvobuU+1gX9ynfXW/dJ9qByNr2T6Vl5fvW+JDHEevv/5680LExsbutse9/fbbuemmm37jziaucrXRZEyen759+9ZKU5odoftUO9gX92lf3S/dp9pBqJbuU1X2YJ8RH5JWyc7OpnPnzltui0QiTJgwgRdeeIEff/yRYDBIYWHhNtEP6XZp0KDB7z6u3+832/bIi12bXvB9Ze2/h+5T7WBf3Kc9sV9Soyb1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", + "image/png": "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mxNxJOefjEvG+/XXX6t/Rbi88cYbSuSJ9ebKlSum94rQb9q0qRJTcvMSUSOiS76/d999N8O+RFD+/PPP6qYl7lV7lrZVq1apz0TEq8QByvcgokSsFXqQMVr/NjRhLq5R2bbcQCXuUMYh4ll+f5s3b7awjohrXj4DOVclXnD16tVKaGrxh7IdcQUKIo6177N69erICiKY5JjlHJJzXpDtiUiShxj5LYwdO1atc+edd1oIIjmnRVCLWJAHBBmXfA7Hjx/PdL+pqanqnBfhK+dAgwYN1GcjL0GEhFi25TcQHx9v8V4RKfJZOrJ8a9dEETdyXXEl8n2KWHnsscfU+Se/EQmBEIu/9fVQ5skDjL34tq5du6pj/eabbzIsk3lyvRARL3z77bfqPBg0aBDef/99da2Uf22FTRAbGInXMm3aNLlDGY8cOaJr/evXrxurVq2q3lO2bFlj3759jZ988onxzJkzGdYdP368Wu/cuXPGtWvXqr/ffvtt03J5f8eOHS3eI+vYe3355ZcOx/bZZ5+p9X799Ve1zxMnThi/+uorY2RkpDEkJMT433//qfX69Omj1hs1apTF+5csWaLmT5w40WJ+ly5djAaDwfjvv/9ajF22o/Haa68Z8+fPb/znn38s3iv78Pf3Nx4/flxNr1mzRu1j6NChGcaflpZm+lu2Zb5962PUvq+zZ88ag4KCjG3btjWmpqaa1psxY4Za79NPPzXNu+uuu9S8+fPnm+YlJiYao6KijI888ojDz3bHjh3qvf3797eY/8ILL6j5clwaMm4Zvx7M1503b57a1vfff29aLtODBw+2e/wav/32m5ov/1of7xdffGGat3//fjXPz8/PuHHjRtP8FStWqPmyfY1+/foZS5QoYTx//rzFvrp162YsVKiQ+i2Y77tChQqmefbGlZKSYixfvrw6fy5evGj3+7eFti1bL/k85P2VK1c2tmvXzmJbMibZZ5s2bSzmWRMbG5vh/Pj2228zfK4aMl9+49ZY/za07+zOO+9Ux69x5coVY+HChY0DBgyweH9cXJz6fLX58jnJ++Va5Szab/3ZZ581zZPPRq478ruR64Rw4MABtd6sWbMs3t+5c2djuXLlHH43skw714oXL27s3r278YMPPjAeO3bM5njk87F3rTRHO0/37t1rMV87V5cuXWoxv0OHDuoc1JBzwvqcjomJMTZo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", "text/plain": [ "
" ] @@ -4847,89 +4788,39 @@ } ], "source": [ - "# Apply t-SNE\n", - "tsne = TSNE(n_components=2, random_state=42, perplexity=30)\n", - "X_tsne = tsne.fit_transform(X_scaled)\n", + "# 1. Fit t-SNE on your standardized numeric data\n", + "tsne = TSNE(n_components=2, random_state=42)\n", + "X_tsne2 = tsne.fit_transform(X_scaled)\n", "\n", - "# Plot using matplotlib\n", - "plt.figure(figsize=(6,5))\n", - "colors = ['red' if label == 0 else 'blue' for label in y]\n", - "plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=colors, alpha=0.6, edgecolor='k')\n", + "# 2. Report the shape\n", + "print(\"t-SNE embedding shape:\", X_tsne2.shape)\n", + "\n", + "# 3. Scatter plot of the embedding, colored by survival\n", + "survived = final_df['Survived'].values\n", + "\n", + "plt.figure(figsize=(6, 5))\n", + "plt.scatter(\n", + " X_tsne2[survived == 0, 0],\n", + " X_tsne2[survived == 0, 1],\n", + " label='Did Not Survive'\n", + ")\n", + "plt.scatter(\n", + " X_tsne2[survived == 1, 0],\n", + " X_tsne2[survived == 1, 1],\n", + " label='Survived'\n", + ")\n", "plt.xlabel('t-SNE Component 1')\n", "plt.ylabel('t-SNE Component 2')\n", - "plt.title('t-SNE on Titanic Data')\n", - "plt.grid(True)\n", + "plt.title('t-SNE Projection of Numeric Features by Survival')\n", + "plt.legend()\n", + "plt.tight_layout()\n", "plt.show()" ] - }, - { - "cell_type": "markdown", - "id": "6bbde52a", - "metadata": {}, - "source": [ - "From graph we can understand that:\n", - "\n", - "- SImilar features has similar result based on Survived results.\n", - "\n", - "- In some groups we can also see that it is hard to distinguish if person survived or not." - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "1a0bfbe6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Passenger 100's 5 closest neighbors (t-SNE space): [331 270 474 551 468]\n", - " Survived Pclass Sex Age Fare Embarked\n", - "414 1 3 male 44.0 7.925 S\n", - "338 1 3 male 45.0 8.050 S\n", - "603 0 3 male 44.0 8.050 S\n", - "696 0 3 male 44.0 8.050 S\n", - "592 0 3 male 47.0 7.250 S\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "from sklearn.metrics.pairwise import euclidean_distances\n", - "\n", - "# Compute pairwise distances between all points in t-SNE space\n", - "distances = euclidean_distances(X_tsne)\n", - "\n", - "# Function to find k closest passengers to a given index\n", - "def find_closest(index, k=5):\n", - " # Exclude self by setting its distance to a very large number\n", - " distances[index, index] = np.inf\n", - " # Get indices of the k smallest distances\n", - " closest_indices = np.argsort(distances[index])[:k]\n", - " return closest_indices\n", - "\n", - "# Example: Find 5 closest passengers to passenger at index 100\n", - "closest = find_closest(100, k=5)\n", - "\n", - "# Show result\n", - "print(f\"Passenger 100's 5 closest neighbors (t-SNE space): {closest}\")\n", - "\n", - "print(df.iloc[closest])\n" - ] - }, - { - "cell_type": "markdown", - "id": "85583dfc", - "metadata": {}, - "source": [ - "- This code shows that the closest passengers and their survival results are not seperated so it is hard to say that the t-SNE is a good method for clustering.\n" - ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -4943,7 +4834,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.4" } }, "nbformat": 4, From 464556669c0e2f5f1fcef6cb9092d0d533e78a97 Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Wed, 14 May 2025 17:29:22 +0200 Subject: [PATCH 32/33] no fix --- lab-01.ipynb | 137 +++++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 69 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index bf6e5f9..ffc362d 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 154, "id": "ab0a0d4d", "metadata": {}, "outputs": [], @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 155, "id": "fbc1481d", "metadata": {}, "outputs": [], @@ -213,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 156, "id": "54d1bc21", "metadata": {}, "outputs": [ @@ -355,7 +355,7 @@ "4 0 373450 8.0500 NaN S " ] }, - "execution_count": 27, + "execution_count": 156, "metadata": {}, "output_type": "execute_result" } @@ -405,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 157, "id": "7a24cc6c", "metadata": {}, "outputs": [ @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 158, "id": "5a5cbdc5", "metadata": {}, "outputs": [ @@ -476,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 159, "id": "053a64e4", "metadata": {}, "outputs": [ @@ -529,7 +529,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 160, "id": "7fcee358", "metadata": {}, "outputs": [ @@ -576,7 +576,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 161, "id": "ac6e1337", "metadata": {}, "outputs": [ @@ -593,7 +593,7 @@ "array([0, 1])" ] }, - "execution_count": 32, + "execution_count": 161, "metadata": {}, "output_type": "execute_result" } @@ -613,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 162, "id": "c039567b", "metadata": {}, "outputs": [ @@ -682,7 +682,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 163, "id": "bb8a742a", "metadata": {}, "outputs": [ @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 164, "id": "e32bd777", "metadata": {}, "outputs": [ @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 165, "id": "3c6b44b5", "metadata": {}, "outputs": [ @@ -813,7 +813,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 166, "id": "cc6a6a34", "metadata": {}, "outputs": [ @@ -1137,7 +1137,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 167, "id": "4205c152", "metadata": {}, "outputs": [ @@ -1240,7 +1240,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 168, "id": "763f5a1c", "metadata": {}, "outputs": [ @@ -1430,7 +1430,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 169, "id": "8305e2d9", "metadata": {}, "outputs": [ @@ -1671,7 +1671,7 @@ "Embarked NaN NaN NaN NaN NaN " ] }, - "execution_count": 40, + "execution_count": 169, "metadata": {}, "output_type": "execute_result" } @@ -1698,7 +1698,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 170, "id": "60966a2d", "metadata": {}, "outputs": [ @@ -1754,7 +1754,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 171, "id": "ecb40dad", "metadata": {}, "outputs": [], @@ -1792,7 +1792,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 172, "id": "71fbe07b", "metadata": {}, "outputs": [ @@ -1850,7 +1850,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 173, "id": "ee827da3", "metadata": {}, "outputs": [ @@ -1907,7 +1907,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 174, "id": "69ca462b", "metadata": {}, "outputs": [ @@ -1936,7 +1936,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 175, "id": "3bd5a2a3", "metadata": {}, "outputs": [ @@ -2012,7 +2012,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 176, "id": "0a5daf14", "metadata": {}, "outputs": [ @@ -2054,7 +2054,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 177, "id": "910a7faa", "metadata": {}, "outputs": [ @@ -2094,7 +2094,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 178, "id": "33251565", "metadata": {}, "outputs": [ @@ -2178,7 +2178,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 179, "id": "89539e8c", "metadata": {}, "outputs": [ @@ -2191,7 +2191,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 50, + "execution_count": 179, "metadata": {}, "output_type": "execute_result" } @@ -2216,7 +2216,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 180, "id": "1d982743", "metadata": {}, "outputs": [ @@ -2230,7 +2230,7 @@ "Name: Survived, dtype: float64" ] }, - "execution_count": 51, + "execution_count": 180, "metadata": {}, "output_type": "execute_result" } @@ -2277,7 +2277,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 181, "id": "e5bb3920", "metadata": {}, "outputs": [], @@ -2295,7 +2295,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 182, "id": "a51a522e", "metadata": {}, "outputs": [ @@ -2342,7 +2342,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 183, "id": "fa8a81fc", "metadata": {}, "outputs": [], @@ -2376,7 +2376,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 184, "id": "daa295ab", "metadata": {}, "outputs": [ @@ -2405,7 +2405,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 185, "id": "a5915326", "metadata": {}, "outputs": [ @@ -2434,7 +2434,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 186, "id": "7610d62c", "metadata": {}, "outputs": [ @@ -2687,7 +2687,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 57, + "execution_count": 186, "metadata": {}, "output_type": "execute_result" } @@ -2699,7 +2699,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 187, "id": "f4e7a192", "metadata": {}, "outputs": [ @@ -2952,7 +2952,7 @@ "[891 rows x 12 columns]" ] }, - "execution_count": 58, + "execution_count": 187, "metadata": {}, "output_type": "execute_result" } @@ -2964,7 +2964,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 188, "id": "e53a6f15", "metadata": {}, "outputs": [ @@ -3217,7 +3217,7 @@ "[204 rows x 12 columns]" ] }, - "execution_count": 59, + "execution_count": 188, "metadata": {}, "output_type": "execute_result" } @@ -3247,7 +3247,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 189, "id": "e0d2ab02", "metadata": {}, "outputs": [ @@ -3274,7 +3274,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 190, "id": "265a7ad4", "metadata": {}, "outputs": [ @@ -3307,7 +3307,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 191, "id": "b5bd80d5", "metadata": {}, "outputs": [ @@ -3335,7 +3335,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 192, "id": "c8a36007", "metadata": {}, "outputs": [ @@ -3447,7 +3447,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 193, "id": "e620008d", "metadata": {}, "outputs": [ @@ -3466,7 +3466,7 @@ " 'Jonkheer'], dtype=object)" ] }, - "execution_count": 64, + "execution_count": 193, "metadata": {}, "output_type": "execute_result" } @@ -3491,7 +3491,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 194, "id": "552e9286", "metadata": {}, "outputs": [ @@ -3526,7 +3526,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 195, "id": "a227b75e", "metadata": {}, "outputs": [ @@ -3561,7 +3561,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 196, "id": "448a9a82", "metadata": {}, "outputs": [ @@ -3680,7 +3680,7 @@ "[891 rows x 3 columns]" ] }, - "execution_count": 67, + "execution_count": 196, "metadata": {}, "output_type": "execute_result" } @@ -3759,7 +3759,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 197, "id": "c89ae9a6", "metadata": {}, "outputs": [ @@ -3806,7 +3806,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 198, "id": "06f0a398", "metadata": {}, "outputs": [ @@ -3866,7 +3866,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 199, "id": "e933a3ee", "metadata": {}, "outputs": [ @@ -3925,7 +3925,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 200, "id": "28ee7c92", "metadata": {}, "outputs": [], @@ -3960,7 +3960,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 201, "id": "e26883b2", "metadata": {}, "outputs": [ @@ -4141,7 +4141,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 202, "id": "e151c46f", "metadata": {}, "outputs": [], @@ -4166,7 +4166,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 203, "id": "3e319ff2", "metadata": {}, "outputs": [], @@ -4199,7 +4199,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 204, "id": "34dc5372", "metadata": {}, "outputs": [], @@ -4242,7 +4242,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 205, "id": "223d4561", "metadata": {}, "outputs": [], @@ -4272,7 +4272,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 206, "id": "3e9392da", "metadata": {}, "outputs": [ @@ -4520,7 +4520,7 @@ "[5 rows x 22 columns]" ] }, - "execution_count": 77, + "execution_count": 206, "metadata": {}, "output_type": "execute_result" } @@ -4547,13 +4547,12 @@ "1. Reconstruct the final DataFrame (`final_df`) with all features and the `Survived` target \n", "2. Verify the shape and feature list \n", "3. Check for any remaining missing or duplicate values \n", - "4. Display a quick head and summary statistics \n", - "5. Summarize our main observations" + "4. Summarize our main observations" ] }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 207, "id": "f0d4ce15", "metadata": {}, "outputs": [ @@ -4664,7 +4663,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 208, "id": "fddd96b3", "metadata": {}, "outputs": [ @@ -4765,7 +4764,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 209, "id": "dc302f50", "metadata": {}, "outputs": [ From 6af8357aee0a5da0a2426f62b96f8914f97071cf Mon Sep 17 00:00:00 2001 From: AndreaLolli2912 Date: Fri, 16 May 2025 10:45:17 +0200 Subject: [PATCH 33/33] Update package installation commands in lab-01.ipynb to use --quiet flag for cleaner output --- lab-01.ipynb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lab-01.ipynb b/lab-01.ipynb index ffc362d..f68453c 100644 --- a/lab-01.ipynb +++ b/lab-01.ipynb @@ -10,15 +10,16 @@ }, { "cell_type": "code", - "execution_count": 154, + "execution_count": null, "id": "ab0a0d4d", "metadata": {}, "outputs": [], "source": [ - "# !pip install pandas \n", - "# !pip install matplotlib\n", - "# !pip install seaborn\n", - "# !pip install scikit-learn" + "# !pip install pandas --quiet\n", + "# !pip install scipy --quiet\n", + "# !pip install matplotlib --quiet\n", + "# !pip install seaborn --quiet\n", + "# !pip install scikit-learn --quiet" ] }, {