├── README.md ├── data ├── kirby127a_3_1_ax_283Labels_M2_corrected_stats.csv ├── kirby21.csv ├── oasis.csv ├── orings.csv └── swiss.csv ├── notebooks ├── EDA.ipynb ├── Intro_to_DFT.ipynb ├── Least_squares_correction.ipynb ├── LinearModels_and_FFTs.ipynb ├── basicRegression _in_pytorch.ipynb ├── logisticRegression_in_pytorch.ipynb ├── multivariable_nn_in_torch.ipynb ├── notebook1.ipynb ├── notebook2.ipynb ├── notebook3.ipynb ├── notebook4.ipynb ├── notebook5.ipynb ├── notebook5_a.ipynb ├── notebook6.ipynb ├── regression_examples.ipynb ├── regression_through_the_origin.ipynb └── tensorflow_example.ipynb ├── old ├── labSyllabus.md ├── syllabus.md └── test └── presentations ├── lecture1.html ├── lecture1.org ├── lecture2.html └── lecture2.org /README.md: -------------------------------------------------------------------------------- 1 | # ds4bme_intro 2 | 3 | A **github** repo for the intro to data science for BME (ds4bme_intro) course where we will post code, open access data and jupyter notebooks. 4 | 5 | Please go to the Teams site for course information 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /data/oasis.csv: -------------------------------------------------------------------------------- 1 | "FLAIR","PD","T1","T2","FLAIR_10","PD_10","T1_10","T2_10","FLAIR_20","PD_20","T1_20","T2_20","GOLD_Lesions" 2 | 1.14369177818298,1.58621907234192,-0.799859464168549,1.63446724414825,0.437568068504333,0.823800206184387,-0.00205940613523126,0.573662877082825,0.279831767082214,0.548341274261475,0.219135880470276,0.298661708831787,0 3 | 1.65255188941956,1.76667249202728,-1.25099194049835,0.921229839324951,0.663036644458771,0.880249798297882,-0.422059565782547,0.542597413063049,0.422182232141495,0.549710631370544,0.0615727305412292,0.280972093343735,0 4 | 1.03609907627106,0.262042492628098,-0.858564674854279,-0.0582113042473793,-0.0442795343697071,-0.30856865644455,0.0147655792534351,-0.256075173616409,-0.13653177022934,-0.35090509057045,0.0206727329641581,-0.259913682937622,0 5 | 1.0376923084259,0.0111043155193329,-1.22879648208618,-0.470221787691116,-0.0139714246615767,-0.000497660890687257,-0.395574659109116,-0.221899583935738,0.000807147414889187,-0.00308544747531414,-0.193249180912971,-0.13928434252739,0 6 | 1.5805891752243,1.73015177249908,-0.860949039459229,1.24560928344727,0.617957413196564,0.866351902484894,-0.0999190211296082,0.384261071681976,0.391132593154907,0.608826279640198,0.0716475918889046,0.340601474046707,0 7 | 1.4995105266571,0.849708199501038,-0.296700298786163,0.485523194074631,0.320211499929428,0.499454081058502,0.227659523487091,0.0845474079251289,0.197349667549133,0.240661308169365,0.219429731369019,-0.0467141568660736,0 8 | 1.23963332176208,1.67899429798126,-0.185181006789207,0.31120565533638,0.254567950963974,0.647315144538879,0.248118057847023,0.272649317979813,0.206424593925476,0.494852542877197,0.201202735304832,0.265054374933243,0 9 | 1.85899078845978,2.06332111358643,-1.20683908462524,0.841860413551331,1.19953465461731,1.35891306400299,-0.209406107664108,0.66003954410553,0.617001056671143,0.694207608699799,0.0182399712502956,0.36247318983078,0 10 | 1.09367108345032,0.421785593032837,0.430292576551437,-0.266973078250885,-0.260211378335953,0.0614233948290348,0.933939754962921,-0.112700246274471,0.0436858348548412,0.157738089561462,0.638235032558441,0.0104408860206604,0 11 | 1.22593808174133,1.00809037685394,-0.214959025382996,0.986815929412842,0.177659019827843,0.00628016144037247,0.180357351899147,0.0070654172450304,0.129836112260818,0.0487759597599506,0.142737910151482,0.0633871555328369,0 12 | 1.02489805221558,0.14578503370285,-1.16016983985901,0.0306199323385954,-0.282920598983765,-0.132623121142387,-0.360790252685547,-0.021325558423996,-0.0507729351520538,0.0365965217351913,-0.159394681453705,0.0120075438171625,0 13 | 1.77419376373291,1.40436553955078,-0.995246052742004,0.890809178352356,0.610443592071533,0.321413546800613,-0.340411961078644,0.368571072816849,0.280213803052902,0.0683056637644768,-0.086399108171463,0.102672129869461,0 14 | 1.00620496273041,0.188974633812904,-0.0735897719860077,-0.185830697417259,0.209084585309029,0.456010937690735,0.140759542584419,0.407412886619568,0.149182856082916,0.262679010629654,0.235633686184883,0.287972718477249,0 15 | 0.658985018730164,0.320689171552658,-0.0258702840656042,-0.331202179193497,-0.16380412876606,-0.125496670603752,0.488124161958694,-0.0460207462310791,-0.161943808197975,-0.141756430268288,0.375978738069534,-0.118423141539097,0 16 | 1.46320009231567,1.45886194705963,-0.151950150728226,0.457866847515106,0.588164627552032,0.717067360877991,-0.0417803078889847,0.399758964776993,0.142993748188019,0.421358913183212,0.209221467375755,0.245565980672836,0 17 | 1.38583934307098,1.01963639259338,0.0404450260102749,0.80832427740097,0.323363363742828,0.58298534154892,0.41255795955658,0.180894151329994,0.143683210015297,0.354319244623184,0.207174062728882,0.184266850352287,0 18 | 2.00648331642151,1.71887874603271,-0.518136084079742,0.658009946346283,0.972506284713745,0.921510815620422,-0.248349189758301,0.534808933734894,0.473283141851425,0.463124841451645,0.212824508547783,0.277212768793106,0 19 | 1.40784776210785,0.836790442466736,-0.924218058586121,0.495574861764908,0.496129035949707,0.0227466020733118,0.0358979105949402,-0.00733095640316606,0.189484760165215,-0.0505843311548233,0.0939848721027374,-0.099294014275074,0 20 | 1.34850966930389,0.956979334354401,-0.556246876716614,0.637187838554382,0.114044211804867,0.814999938011169,-0.41235888004303,0.408114582300186,0.166225984692574,0.458828747272491,-0.00607394613325596,0.161436408758163,0 21 | 1.09654760360718,0.725126445293427,-0.982222318649292,0.311494708061218,0.292493641376495,-0.24655345082283,-0.0689686089754105,-0.150393530726433,0.0587724708020687,-0.303885579109192,0.0428124405443668,-0.160668060183525,0 22 | 1.75514721870422,1.37583577632904,-0.976857304573059,0.880208194255829,-0.0212008953094482,0.229372143745422,-0.133675068616867,0.0311086252331734,0.0668849050998688,0.193882897496223,-0.0798569992184639,0.037780586630106,0 23 | 1.41932189464569,1.75401544570923,-0.616847574710846,1.08219051361084,0.386155426502228,0.651641964912415,-0.021246787160635,0.413855850696564,0.169553101062775,0.355648398399353,0.164277538657188,0.154075667262077,0 24 | 1.90788912773132,0.710655570030212,-0.949294686317444,0.495903611183167,0.746844470500946,1.01839184761047,-0.470209777355194,0.890315473079681,0.391638845205307,0.499606341123581,0.04185950756073,0.345546394586563,0 25 | 1.2805985212326,1.06295132637024,-0.570455610752106,0.432222276926041,0.178458407521248,0.433561861515045,-0.0186033919453621,0.28883969783783,0.0794574022293091,0.279524564743042,0.0710449069738388,0.214885622262955,0 26 | 1.41052293777466,1.46859848499298,-0.840699136257172,1.06012916564941,0.249262988567352,0.136486068367958,0.320002287626266,0.0627541393041611,0.130708768963814,0.0807227566838264,0.220746040344238,0.0710927918553352,0 27 | 1.7464075088501,1.36807882785797,-0.38007441163063,0.66759991645813,0.287393450737,0.581473827362061,-0.204441249370575,0.279824405908585,0.06553003937006,0.386029332876205,-0.00896004866808653,0.193782761693001,0 28 | 1.30604958534241,0.491692453622818,-0.724167883396149,0.549023687839508,0.132176354527473,0.0938042551279068,-0.466998100280762,0.443574786186218,-0.00123029842507094,0.00475553190335631,-0.0549116618931293,0.0789024606347084,0 29 | 1.57865214347839,1.31053531169891,-0.419940143823624,0.682762086391449,0.29908162355423,0.2462357878685,0.0872066840529442,0.176996037364006,0.126085087656975,0.0185931250452995,0.164321333169937,-0.00187988032121211,0 30 | 1.44595634937286,1.16469669342041,-1.05749988555908,1.41412472724915,0.10667710006237,0.323473751544952,0.0806566551327705,0.180197462439537,0.108644634485245,0.157588675618172,0.156962439417839,0.127087220549583,0 31 | 2.09004974365234,1.49509346485138,-0.523847937583923,1.93288993835449,0.611775159835815,0.694464206695557,0.104262866079807,0.583759665489197,0.319031238555908,0.338938921689987,0.209241211414337,0.296874642372131,0 32 | 1.20701479911804,1.40475606918335,-0.165903314948082,0.125158801674843,0.505419313907623,0.650925755500793,0.499477028846741,0.236141949892044,0.21219177544117,0.297727882862091,0.403947621583939,0.0504242554306984,0 33 | 1.12364017963409,0.432720303535461,0.144649118185043,0.548008859157562,0.41220360994339,0.515054762363434,0.0349939502775669,0.357081174850464,0.164992317557335,0.2114247828722,0.171241536736488,0.109063401818275,0 34 | 1.27366435527802,0.836745083332062,0.0493151843547821,0.670421957969666,0.228030577301979,0.266359478235245,0.803059995174408,0.0769222378730774,0.156371310353279,0.262916296720505,0.639710962772369,0.100977897644043,0 35 | 1.45955562591553,0.896015524864197,0.307746231555939,0.493910580873489,0.662733733654022,0.627587914466858,0.228924512863159,0.49120968580246,0.324458181858063,0.433138459920883,0.256137579679489,0.273586094379425,0 36 | 1.32361900806427,0.787438869476318,-0.562803208827972,0.101431146264076,0.223200663924217,0.195771053433418,0.0196298491209745,0.0275521073490381,0.173445016145706,0.132194846868515,0.0483812987804413,0.0338624231517315,0 37 | 0.949355065822601,0.547123789787292,-0.438097834587097,-0.142072215676308,0.0784583017230034,-0.0623198933899403,0.27314281463623,-0.20876944065094,-0.0179037228226662,-0.0120917707681656,0.144581869244576,-0.135049089789391,0 38 | 1.9066036939621,0.528764247894287,-0.531904399394989,-0.149778470396996,0.203499928116798,0.457184553146362,0.32559809088707,0.318407714366913,0.132886156439781,0.288980036973953,0.472949355840683,0.154662355780602,0 39 | 1.72438156604767,1.49850344657898,0.960290253162384,1.04655230045319,1.06535077095032,0.966203451156616,-0.146731421351433,0.534392535686493,0.5816650390625,0.544186472892761,0.00923195015639067,0.357780456542969,0 40 | 1.53575074672699,1.99965286254883,-0.251002430915833,1.15824961662292,0.264936417341232,0.244882851839066,0.0966936498880386,0.000670264824293554,0.0482361428439617,-0.0115712909027934,0.110549494624138,-0.121029704809189,0 41 | 1.36293959617615,-0.715722560882568,-0.998400330543518,-0.52089262008667,0.403898775577545,0.378533363342285,0.371455788612366,0.129578679800034,0.194461062550545,0.157684668898582,0.224191352725029,-0.0159009452909231,0 42 | 1.02975130081177,0.779167711734772,-0.970384836196899,0.114822514355183,-0.204821214079857,-0.212328553199768,0.266196340322495,-0.288874328136444,-0.093324176967144,-0.0899330228567123,0.0853959992527962,-0.109584756195545,0 43 | 1.78423702716827,0.769447326660156,0.585335612297058,0.124346651136875,0.208378374576569,0.40847572684288,0.706096768379211,0.118883557617664,0.103056773543358,0.160986542701721,0.50874125957489,-0.0167458448559046,0 44 | 1.06629061698914,-0.149933844804764,0.33853217959404,-0.250670582056046,-0.11237308382988,-0.432844638824463,0.0157524049282074,-0.152947947382927,-0.0395209044218063,-0.300161689519882,0.058358758687973,-0.144690617918968,0 45 | 2.20479941368103,1.42767012119293,-0.318965584039688,0.852285206317902,0.557009279727936,0.220944195985794,0.132750108838081,-0.160988807678223,0.10440906137228,-0.0772966369986534,0.0891691893339157,-0.166103437542915,0 46 | 1.26055693626404,0.0315372310578823,-0.111593008041382,-0.555507302284241,0.0400714948773384,0.0317689627408981,-0.0036309277638793,0.0184911489486694,0.0757385343313217,0.0717597082257271,-0.0114918211475015,0.0445329062640667,0 47 | 1.63072383403778,0.757428348064423,-0.853122115135193,0.671679675579071,-0.0142345484346151,0.101338215172291,-0.20146332681179,0.105756409466267,-0.0239058304578066,0.0234504695981741,0.0264170486479998,0.025099866092205,0 48 | 1.01417362689972,0.0650981962680817,-0.100129246711731,-0.070407822728157,0.352336704730988,0.458854228258133,-0.350350022315979,0.519513726234436,0.246888130903244,0.363506972789764,-0.0202966406941414,0.252352148294449,0 49 | 1.13628673553467,0.201641067862511,-0.0292230080813169,-0.401153206825256,0.392691284418106,0.372037708759308,0.493449956178665,0.251163959503174,0.210837662220001,0.237309664487839,0.45915475487709,0.0975069925189018,0 50 | 1.153599858284,-0.0440770126879215,0.7733074426651,-0.124004639685154,0.388389021158218,0.559458076953888,0.278184920549393,0.480758517980576,0.138825267553329,0.244125470519066,0.328741252422333,0.135581403970718,0 51 | 0.901973009109497,-1.18300819396973,-0.386432141065598,-0.746644377708435,-0.360070794820786,-0.594739317893982,-0.645611226558685,-0.164600059390068,-0.265225738286972,-0.461146861314774,-0.306570529937744,-0.132073596119881,0 52 | 1.44520449638367,0.604376554489136,-0.81662380695343,0.545917212963104,0.046185065060854,-0.436912834644318,0.124857343733311,-0.243548780679703,-0.0799469798803329,-0.363233804702759,0.0514528676867485,-0.216474443674088,1 53 | 2.07413458824158,0.310854852199554,0.33592090010643,0.523280739784241,0.275890320539474,-0.0179554652422667,0.251982301473618,-0.00898152589797974,0.0938533917069435,-0.00361910159699619,0.0727767422795296,0.00610406696796417,1 54 | 1.25865364074707,-0.312526524066925,1.0846905708313,-0.434007197618484,-0.0601027868688107,-0.223760470747948,0.520406424999237,-0.369599908590317,-0.0976593568921089,-0.102522037923336,0.178956151008606,-0.201486796140671,1 55 | 1.35432374477386,0.00290384003892541,0.946654736995697,-0.221604913473129,0.121256530284882,-0.233184486627579,0.677806854248047,-0.125999495387077,-0.032717052847147,-0.144420832395554,0.324233174324036,-0.116178557276726,1 56 | 1.72861754894257,0.504756569862366,0.482620179653168,0.0410376042127609,0.509362995624542,0.818982720375061,-0.173600167036057,0.412977427244186,0.135386750102043,0.328370213508606,0.168847769498825,0.105603031814098,1 57 | 1.67200779914856,-0.123612105846405,0.288049578666687,-0.0917005240917206,-0.0704195275902748,-0.0204955413937569,-0.146891579031944,-0.30099618434906,-0.105573639273643,0.0492134355008602,-0.165662541985512,-0.171203523874283,1 58 | 2.95938658714294,1.28289270401001,-0.575901508331299,1.8819727897644,0.612697839736938,0.16545307636261,0.188437402248383,0.275311887264252,0.240176275372505,0.0487816892564297,0.16121943295002,0.136459976434708,1 59 | 1.48410534858704,1.56484138965607,-0.896159827709198,1.50276172161102,-0.122334614396095,-0.0754511430859566,0.949612081050873,-0.0738759338855743,-0.0272355265915394,-0.0096270153298974,0.524364233016968,-0.0680447444319725,1 60 | 1.97552382946014,-0.626760959625244,-0.340124756097794,-0.231411889195442,0.278312712907791,-0.325327783823013,-0.0599766299128532,0.0328315123915672,0.000913481460884213,-0.299320906400681,-0.00625293981283903,-0.0713708475232124,1 61 | 2.69247174263,1.01801097393036,0.238184735178947,0.782958805561066,0.524435102939606,-0.080331414937973,0.326368004083633,0.100935406982899,0.131832510232925,-0.122718922793865,0.193814903497696,-0.0248521976172924,1 62 | 1.47560024261475,0.82903254032135,-1.2311224937439,1.75283932685852,0.362623929977417,-0.278510093688965,0.326545387506485,-0.0503294169902802,0.0363953113555908,-0.278168797492981,0.135124281048775,-0.131138160824776,1 63 | 2.57112002372742,1.83579218387604,-1.10243535041809,1.96491241455078,-0.0112772630527616,0.0834541395306587,0.404183357954025,-0.296392440795898,1.68870167271962e-06,0.0845326036214828,0.126434728503227,-0.167811632156372,1 64 | 4.16529417037964,1.55711269378662,-0.248459562659264,1.77784740924835,0.286127299070358,0.1643335968256,0.371634215116501,-0.0804966017603874,0.0833151042461395,0.132177159190178,0.247091099619865,-0.0675359666347504,1 65 | 1.29979491233826,-0.164261192083359,0.523556172847748,-0.48170605301857,0.128287315368652,-0.111610919237137,0.244898647069931,-0.167789399623871,-0.00607682671397924,-0.138491526246071,0.0943526849150658,-0.132020086050034,1 66 | 1.58944571018219,-0.352171689271927,1.09836566448212,-0.290888756513596,0.458830296993256,-0.0674109160900116,0.379944562911987,-0.045907836407423,0.144626319408417,-0.112398684024811,0.0891341790556908,0.00170208385679871,1 67 | 2.00631928443909,3.02689027786255,-1.78087508678436,2.85260486602783,0.511567294597626,0.430189967155457,0.110212132334709,0.326317667961121,0.243562161922455,0.263534277677536,0.192154347896576,0.185110703110695,1 68 | 2.15111780166626,-0.270047038793564,0.357879996299744,-0.135227799415588,0.400904387235641,-0.311391890048981,0.426215797662735,-0.13480632007122,0.0691335275769234,-0.164391368627548,0.163497611880302,-0.106658399105072,1 69 | 1.60097575187683,0.69148200750351,0.328796565532684,0.702664077281952,0.426353335380554,0.145796939730644,0.106302529573441,0.184230104088783,0.136735782027245,0.050672322511673,0.0501955933868885,0.0683622509241104,1 70 | 1.92339301109314,-0.00645120861008763,0.574924051761627,0.115144655108452,0.534927546977997,-0.136265054345131,0.165925294160843,0.0615009889006615,0.15633262693882,-0.219948217272758,0.0217866487801075,-0.0401453860104084,1 71 | 2.80910587310791,0.450441539287567,-0.0910064652562141,0.617645442485809,0.40461939573288,-0.244353383779526,-0.698099315166473,-0.0235942024737597,0.127843126654625,-0.233185440301895,-0.310559958219528,-0.127658128738403,1 72 | 1.5713951587677,-0.376644223928452,0.580110371112823,-0.323180049657822,0.225696906447411,-0.3278728723526,0.390715390443802,-0.267747968435287,0.00882830284535885,-0.131183639168739,0.141682028770447,-0.179065868258476,1 73 | 1.23431158065796,0.767243921756744,0.293327987194061,1.30545878410339,0.376420617103577,-0.0984604209661484,0.718816459178925,0.109810143709183,0.119753688573837,-0.0882692486047745,0.369708359241486,-0.0486374758183956,1 74 | 2.636075258255,1.36353969573975,-1.15040242671967,2.36517214775085,0.272945940494537,-0.0101026529446244,0.0638271570205688,-0.00828953739255667,0.0777152478694916,-0.00777522195130587,-0.0861442238092422,0.00720066763460636,1 75 | 1.15259039402008,0.0230590254068375,0.858435273170471,0.864575862884521,0.108643665909767,-0.310603827238083,0.587428033351898,-0.102299556136131,0.00639212410897017,-0.143920794129372,0.21539880335331,-0.00588907022029161,1 76 | 1.51780438423157,0.96623283624649,-0.111781999468803,0.768312633037567,0.0198943335562944,-0.114659301936626,0.132650434970856,-0.0118709448724985,-0.00880136527121067,-0.0538712032139301,0.149929001927376,-0.00251341122202575,1 77 | 1.81767392158508,0.526187181472778,0.615699291229248,0.63332211971283,0.439027279615402,0.0169948916882277,0.590376079082489,0.284403055906296,0.132907375693321,0.0346252210438251,0.258850157260895,0.150277897715569,1 78 | 2.7413489818573,0.569153070449829,0.102932758629322,0.797128200531006,0.0205439832061529,-0.0381271205842495,0.143244311213493,-0.186830297112465,-0.0819653272628784,0.0302656795829535,0.0872351378202438,-0.10054787248373,1 79 | 3.35401821136475,-0.117458768188953,0.898323833942413,-0.49298095703125,0.178587675094604,-0.109094947576523,0.380382120609283,-0.131803587079048,0.0571092218160629,-0.1457699239254,0.177884548902512,-0.106551229953766,1 80 | 1.19931197166443,0.277365535497665,1.3775030374527,0.503785490989685,0.135819643735886,-0.170273989439011,0.48535293340683,-0.182686552405357,0.00401218608021736,-0.0677009299397469,0.168214827775955,-0.0673577412962914,1 81 | 1.09179210662842,1.06252872943878,-0.917455196380615,1.19392514228821,0.444341510534286,-0.0754940137267113,0.147710561752319,0.114661738276482,0.0800483003258705,-0.185371354222298,0.136848613619804,-0.069715641438961,1 82 | 2.19810628890991,0.394073963165283,-0.654060900211334,0.210527673363686,0.263291448354721,-0.0284441690891981,-0.0413065366446972,-0.0555430240929127,0.100878193974495,-0.00162777188234031,-0.128841236233711,0.0345086194574833,1 83 | 0.898813664913177,0.391765624284744,0.576237559318542,-0.410258859395981,0.319929301738739,0.267112255096436,0.207480669021606,-0.0310561526566744,0.100074224174023,0.0765321254730225,0.0567167215049267,-0.0678292885422707,1 84 | 3.18347907066345,2.26259136199951,-1.65072309970856,2.15977168083191,0.315957725048065,-0.280228465795517,0.312822729349136,-0.118488281965256,0.0828864127397537,-0.219411239027977,0.1093585267663,-0.0684246569871902,1 85 | 1.83357059955597,-0.087848961353302,1.48034632205963,-0.350962728261948,0.280185133218765,0.043209582567215,0.532972276210785,-0.187959581613541,0.0311471875756979,-0.0286803040653467,0.180741161108017,-0.107229806482792,1 86 | 2.46663546562195,1.60657858848572,-0.713682472705841,2.2677800655365,0.158599019050598,-0.106462851166725,0.574222266674042,-0.183726876974106,0.0241966284811497,-0.0851237773895264,0.283582925796509,-0.105007566511631,1 87 | 2.26626944541931,0.980247378349304,-0.0782462731003761,1.55110132694244,0.229703113436699,0.0143455779179931,0.519643306732178,-0.198780164122581,0.125756233930588,0.0883856192231178,0.188041925430298,-0.0593938566744328,1 88 | 1.10510230064392,-0.389800846576691,0.632572829723358,-0.134675741195679,0.511861026287079,-0.119999065995216,0.402510344982147,-0.00858114566653967,0.133523419499397,-0.101735860109329,0.196377545595169,-0.0454073213040829,1 89 | 2.09999346733093,0.357199430465698,1.09616327285767,0.106689929962158,0.587351202964783,0.123885996639729,0.673339366912842,-0.0023381388746202,0.158274278044701,0.0637402981519699,0.280450582504272,-0.0114760352298617,1 90 | 1.59202694892883,0.212507620453835,1.45146071910858,-0.669719815254211,0.2887904047966,0.18786133825779,0.653433680534363,-0.0237896572798491,0.110470704734325,0.0936272814869881,0.291586101055145,0.032118022441864,1 91 | 1.44785213470459,1.03482484817505,-0.46356001496315,1.2280650138855,0.295518219470978,0.0707347765564919,0.169635772705078,0.0594702884554863,-0.0761608853936195,0.0158323831856251,0.105017028748989,-0.0187235660851002,1 92 | 1.17867505550385,0.61412513256073,0.76158207654953,0.0263432264328003,0.297185987234116,0.235900536179543,0.815682888031006,0.150079280138016,0.200168505311012,0.199528649449348,0.556596755981445,0.13150754570961,1 93 | 2.4379289150238,0.512363493442535,0.624382317066193,0.357834935188293,0.339645683765411,0.120857819914818,0.399689197540283,0.144857332110405,0.135444507002831,0.0540998131036758,0.163259878754616,0.0935600027441978,1 94 | 2.67402315139771,1.48869490623474,0.498463094234467,1.05852091312408,0.375807672739029,0.250650197267532,0.602893710136414,-0.0952944606542587,0.168838307261467,0.192951664328575,0.219637989997864,-0.0186338536441326,1 95 | 1.64705610275269,-0.379105269908905,0.647709846496582,-0.632490992546082,0.234484359622002,0.0460752919316292,0.422674089670181,-0.136517956852913,-0.00480056647211313,-0.0122605534270406,0.1552894115448,-0.09676393866539,1 96 | 3.10535287857056,1.23218679428101,0.254863202571869,1.08702981472015,0.532934725284576,0.129635736346245,0.38172447681427,-0.107593171298504,0.111112765967846,0.0510449074208736,0.131385445594788,-0.0993920564651489,1 97 | 3.87320971488953,0.539508819580078,1.07518434524536,0.741516888141632,0.490890651941299,-0.0720040202140808,0.490218341350555,-0.202589526772499,0.209200650453568,-0.0775128304958344,0.209763363003731,-0.10273116081953,1 98 | 1.49755239486694,-0.323060363531113,0.751151204109192,-0.15130278468132,0.0918999463319778,-0.482855290174484,0.296389579772949,-0.25590518116951,-0.0232485868036747,-0.339572936296463,0.115855112671852,-0.151665329933167,1 99 | 1.63445961475372,-0.240130051970482,1.53014159202576,-0.817860782146454,0.195918366312981,0.268416523933411,0.378933727741241,0.0507038608193398,0.0186022724956274,0.165713012218475,0.246405825018883,0.0733736902475357,1 100 | 1.48477470874786,0.567067325115204,-0.353472083806992,0.542373061180115,-0.00520605780184269,-0.0638251751661301,0.136869326233864,-0.120704837143421,0.0157185550779104,0.0934383273124695,0.0103434082120657,-0.00683669559657574,1 101 | 1.74822604656219,0.633330464363098,0.583969950675964,0.750313460826874,0.503703951835632,0.0306200534105301,0.418389648199081,0.173065915703773,0.0811500027775764,-0.0962281823158264,0.195649787783623,0.0268908720463514,1 102 | -------------------------------------------------------------------------------- /data/orings.csv: -------------------------------------------------------------------------------- 1 | "","Temperature","Erosion","Blowby","Total" 2 | "1",53,3,2,5 3 | "2",57,1,0,1 4 | "3",58,1,0,1 5 | "4",63,1,0,1 6 | "5",66,0,0,0 7 | "6",67,0,0,0 8 | "7",67,0,0,0 9 | "8",67,0,0,0 10 | "9",68,0,0,0 11 | "10",69,0,0,0 12 | "11",70,1,0,1 13 | "12",70,0,0,0 14 | "13",70,1,0,1 15 | "14",70,0,0,0 16 | "15",72,0,0,0 17 | "16",73,0,0,0 18 | "17",75,0,0,0 19 | "18",75,0,2,1 20 | "19",76,0,0,0 21 | "20",76,0,0,0 22 | "21",78,0,0,0 23 | "22",79,0,0,0 24 | "23",81,0,0,0 25 | -------------------------------------------------------------------------------- /data/swiss.csv: -------------------------------------------------------------------------------- 1 | "Region","Fertility","Agriculture","Examination","Education","Catholic","Infant.Mortality" 2 | "Courtelary",80.2,17,15,12,9.96,22.2 3 | "Delemont",83.1,45.1,6,9,84.84,22.2 4 | "Franches-Mnt",92.5,39.7,5,5,93.4,20.2 5 | "Moutier",85.8,36.5,12,7,33.77,20.3 6 | "Neuveville",76.9,43.5,17,15,5.16,20.6 7 | "Porrentruy",76.1,35.3,9,7,90.57,26.6 8 | "Broye",83.8,70.2,16,7,92.85,23.6 9 | "Glane",92.4,67.8,14,8,97.16,24.9 10 | "Gruyere",82.4,53.3,12,7,97.67,21 11 | "Sarine",82.9,45.2,16,13,91.38,24.4 12 | "Veveyse",87.1,64.5,14,6,98.61,24.5 13 | "Aigle",64.1,62,21,12,8.52,16.5 14 | "Aubonne",66.9,67.5,14,7,2.27,19.1 15 | "Avenches",68.9,60.7,19,12,4.43,22.7 16 | "Cossonay",61.7,69.3,22,5,2.82,18.7 17 | "Echallens",68.3,72.6,18,2,24.2,21.2 18 | "Grandson",71.7,34,17,8,3.3,20 19 | "Lausanne",55.7,19.4,26,28,12.11,20.2 20 | "La Vallee",54.3,15.2,31,20,2.15,10.8 21 | "Lavaux",65.1,73,19,9,2.84,20 22 | "Morges",65.5,59.8,22,10,5.23,18 23 | "Moudon",65,55.1,14,3,4.52,22.4 24 | "Nyone",56.6,50.9,22,12,15.14,16.7 25 | "Orbe",57.4,54.1,20,6,4.2,15.3 26 | "Oron",72.5,71.2,12,1,2.4,21 27 | "Payerne",74.2,58.1,14,8,5.23,23.8 28 | "Paysd'enhaut",72,63.5,6,3,2.56,18 29 | "Rolle",60.5,60.8,16,10,7.72,16.3 30 | "Vevey",58.3,26.8,25,19,18.46,20.9 31 | "Yverdon",65.4,49.5,15,8,6.1,22.5 32 | "Conthey",75.5,85.9,3,2,99.71,15.1 33 | "Entremont",69.3,84.9,7,6,99.68,19.8 34 | "Herens",77.3,89.7,5,2,100,18.3 35 | "Martigwy",70.5,78.2,12,6,98.96,19.4 36 | "Monthey",79.4,64.9,7,3,98.22,20.2 37 | "St Maurice",65,75.9,9,9,99.06,17.8 38 | "Sierre",92.2,84.6,3,3,99.46,16.3 39 | "Sion",79.3,63.1,13,13,96.83,18.1 40 | "Boudry",70.4,38.4,26,12,5.62,20.3 41 | "La Chauxdfnd",65.7,7.7,29,11,13.79,20.5 42 | "Le Locle",72.7,16.7,22,13,11.22,18.9 43 | "Neuchatel",64.4,17.6,35,32,16.92,23 44 | "Val de Ruz",77.6,37.6,15,7,4.97,20 45 | "ValdeTravers",67.6,18.7,25,7,8.65,19.5 46 | "V. De Geneve",35,1.2,37,53,42.34,18 47 | "Rive Droite",44.7,46.6,16,29,50.43,18.2 48 | "Rive Gauche",42.8,27.7,22,29,58.33,19.3 49 | -------------------------------------------------------------------------------- /notebooks/Least_squares_correction.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Least squares correction", 7 | "provenance": [], 8 | "authorship_tag": "ABX9TyMy2ynmrp6kOLuGKXg266mN", 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": { 30 | "id": "558cC4d_R8kq", 31 | "colab_type": "text" 32 | }, 33 | "source": [ 34 | "# Least sqaures proof of minimization for regression through the origin\n", 35 | "\n", 36 | "Consider minimizing $\\sum_{i=1}^n (y_i - \\beta x_i)^2 = f(\\beta)$.\n", 37 | "\n", 38 | "The first derivative is\n", 39 | "$$\n", 40 | "f'(\\beta) = -2\\sum_{i=1}^n y_i x_i + 2\\beta \\sum_{i=1}^n x_i^2.\n", 41 | "$$\n", 42 | "\n", 43 | "Setting equal to 0, this yeilds the solution\n", 44 | "$$\n", 45 | "\\hat \\beta = \\frac{\\sum_{i=1}^n y_i x_i}{\\sum_{i=1}^n x_i^2}.\n", 46 | "$$\n", 47 | "\n", 48 | "The second derivative is\n", 49 | "$$\n", 50 | "f''(\\beta) = 2\\sum_{i=1}^n x_i^2 \n", 51 | "$$\n", 52 | "which is strictly positive provided any $x_i \\neq 0$. Thus, excepting the case where all $x_i$ are 0, $f$ is convex and so the root of our derivative is indeed a minimum." 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "du5kEWjkTukl", 59 | "colab_type": "text" 60 | }, 61 | "source": [ 62 | "# (optional) More generic proof that doesn't require differentiation and works for $x$ and $y$ as functions or any other algebraic object\n", 63 | "\n", 64 | "Let $x$ an $y$ be objects that exist in a space with an inner product $<,>$ and norm, $||a||^2 = $ that follow the standard rules (often such a space is called a Hilbert space). We show that $\\hat \\beta = /$ is the unique minimizer of $||y - \\beta x||^2$ . (Note this proof requires that you know the answer and isn't constructive, like the derivative proof when $x$ and $y$ are real vector).\n", 65 | "\n", 66 | "$$\n", 67 | "\\begin{align} \n", 68 | "||y - \\beta x||^2 & = ||y - \\hat \\beta x + \\hat\\beta x - \\beta x||^2 \\\\\n", 69 | "& = ||y - \\hat \\beta x||^2 + 2 \n", 70 | "+ ||\\hat\\beta x - \\beta x||^2 \\\\\n", 71 | "& = ||y - \\hat \\beta x||^2 + 2 \\hat \\beta - 2 \\beta + 2 \\hat \\beta^2 + 2 \\hat\\beta\\beta + ||\\hat\\beta x - \\beta x||^2 \\\\\n", 72 | "& = ||y - \\hat \\beta x||^2 +\n", 73 | "2\\frac{^2}{||x||^2} - 2 \\beta + 2\\frac{^2}{||x||^2} + 2 \\beta + ||\\hat\\beta x - \\beta x||^2 \\\\\n", 74 | "& = ||y - \\hat \\beta x||^2 + ||\\hat\\beta x - \\beta x||^2 \\\\\n", 75 | "& \\geq ||y - \\hat \\beta x||^2\n", 76 | "\\end{align}\n", 77 | "$$\n", 78 | "The inequality comes about since $||\\hat\\beta x - \\beta x||^2$ is necessarily non-negative so that dropping it can only make the quanitity smaller. Thus, \n", 79 | "for any $\\beta$, the quantity $||y - \\hat \\beta x||^2$ is larger than $||y - \\hat \\beta x||^2$ and so $\\hat \\beta$ must be the minimum.\n", 80 | "\n", 81 | "Note, I used some rules about inner products there.\n", 82 | "\n", 83 | "* $ = + + + $\n", 84 | "* $ = = c$ for constant $c$\n", 85 | "\n", 86 | "Example, let $ = \\int_0^1 f(t) g(t) dt$ for functions on $[0,1]$. Let $x = 1$ (i.e. the constant function) and let $y$ be any function. What's the best approximation of $y$ of the form $\\beta x$? According to our result, it has to be \n", 87 | "$$\n", 88 | "\\frac{}{||x||^2} = = \\int_0^1 y(t) dt.\n", 89 | "$$\n", 90 | "So, if you define $\\bar y = \\int_0^1 y(t) dt$ as the average, it's still the best approximation if you have no information." 91 | ] 92 | } 93 | ] 94 | } -------------------------------------------------------------------------------- /notebooks/logisticRegression_in_pytorch.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "logisticRegression in pytorch", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "machine_shape": "hm", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "python3", 14 | "display_name": "Python 3" 15 | } 16 | }, 17 | "cells": [ 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "id": "view-in-github", 22 | "colab_type": "text" 23 | }, 24 | "source": [ 25 | "\"Open" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": { 31 | "id": "uiVM4lOtpJVt" 32 | }, 33 | "source": [ 34 | "This is an extension of using pytorch to perform linear regression to using it to perform logistic regression." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "metadata": { 40 | "id": "6nKZWgTDvTTK", 41 | "outputId": "264fb349-cfa2-42cd-ddb4-1efc49f2d883", 42 | "colab": { 43 | "base_uri": "https://localhost:8080/", 44 | "height": 195 45 | } 46 | }, 47 | "source": [ 48 | "import pandas as pd\n", 49 | "import torch\n", 50 | "import statsmodels.formula.api as smf\n", 51 | "import statsmodels as sm\n", 52 | "import seaborn as sns\n", 53 | "import matplotlib.pyplot as plt\n", 54 | "import numpy as np\n", 55 | "\n", 56 | "## Read in the data and display a few rows\n", 57 | "dat = pd.read_csv(\"https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/oasis.csv\")\n", 58 | "dat.head(4)\n", 59 | "\n", 60 | "## Create a binary outcome variable (people will use gold lesions in HW)\n", 61 | "m = np.median(dat.T2)\n", 62 | "dat = dat.assign(y = (dat.T2 > m) * 1 )\n", 63 | "## Create a normalized regression variable\n", 64 | "dat = dat.assign(x = (dat.PD - np.mean(dat.PD)) / np.std(dat.PD))\n", 65 | "dat.head()\n" 66 | ], 67 | "execution_count": 113, 68 | "outputs": [ 69 | { 70 | "output_type": "execute_result", 71 | "data": { 72 | "text/html": [ 73 | "
\n", 74 | "\n", 87 | "\n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | "
FLAIRPDT1T2FLAIR_10PD_10T1_10T2_10FLAIR_20PD_20T1_20T2_20GOLD_Lesionsyx
01.1436921.586219-0.7998591.6344670.4375680.823800-0.0020590.5736630.2798320.5483410.2191360.298662011.181648
11.6525521.766672-1.2509920.9212300.6630370.880250-0.4220600.5425970.4221820.5497110.0615730.280972011.426453
21.0360990.262042-0.858565-0.058211-0.044280-0.3085690.014766-0.256075-0.136532-0.3509050.020673-0.25991400-0.614749
31.0376920.011104-1.228796-0.470222-0.013971-0.000498-0.395575-0.2219000.000807-0.003085-0.193249-0.13928400-0.955175
41.5805891.730152-0.8609491.2456090.6179570.866352-0.0999190.3842610.3911330.6088260.0716480.340601011.376909
\n", 201 | "
" 202 | ], 203 | "text/plain": [ 204 | " FLAIR PD T1 T2 ... T2_20 GOLD_Lesions y x\n", 205 | "0 1.143692 1.586219 -0.799859 1.634467 ... 0.298662 0 1 1.181648\n", 206 | "1 1.652552 1.766672 -1.250992 0.921230 ... 0.280972 0 1 1.426453\n", 207 | "2 1.036099 0.262042 -0.858565 -0.058211 ... -0.259914 0 0 -0.614749\n", 208 | "3 1.037692 0.011104 -1.228796 -0.470222 ... -0.139284 0 0 -0.955175\n", 209 | "4 1.580589 1.730152 -0.860949 1.245609 ... 0.340601 0 1 1.376909\n", 210 | "\n", 211 | "[5 rows x 15 columns]" 212 | ] 213 | }, 214 | "metadata": { 215 | "tags": [] 216 | }, 217 | "execution_count": 113 218 | } 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "metadata": { 224 | "id": "ehiVfmYHJ4EL", 225 | "outputId": "eb701a2c-88e2-46ee-b2cf-3d5b6cc8eaa8", 226 | "colab": { 227 | "base_uri": "https://localhost:8080/", 228 | "height": 290 229 | } 230 | }, 231 | "source": [ 232 | "fit = smf.logit('y ~ x', data = dat).fit()\n", 233 | "fit.summary()" 234 | ], 235 | "execution_count": 114, 236 | "outputs": [ 237 | { 238 | "output_type": "stream", 239 | "text": [ 240 | "Optimization terminated successfully.\n", 241 | " Current function value: 0.427855\n", 242 | " Iterations 7\n" 243 | ], 244 | "name": "stdout" 245 | }, 246 | { 247 | "output_type": "execute_result", 248 | "data": { 249 | "text/html": [ 250 | "\n", 251 | "\n", 252 | "\n", 253 | " \n", 254 | "\n", 255 | "\n", 256 | " \n", 257 | "\n", 258 | "\n", 259 | " \n", 260 | "\n", 261 | "\n", 262 | " \n", 263 | "\n", 264 | "\n", 265 | " \n", 266 | "\n", 267 | "\n", 268 | " \n", 269 | "\n", 270 | "\n", 271 | " \n", 272 | "\n", 273 | "
Logit Regression Results
Dep. Variable: y No. Observations: 100
Model: Logit Df Residuals: 98
Method: MLE Df Model: 1
Date: Wed, 30 Sep 2020 Pseudo R-squ.: 0.3827
Time: 02:50:12 Log-Likelihood: -42.785
converged: True LL-Null: -69.315
Covariance Type: nonrobust LLR p-value: 3.238e-13
\n", 274 | "\n", 275 | "\n", 276 | " \n", 277 | "\n", 278 | "\n", 279 | " \n", 280 | "\n", 281 | "\n", 282 | " \n", 283 | "\n", 284 | "
coef std err z P>|z| [0.025 0.975]
Intercept 0.0367 0.269 0.136 0.892 -0.491 0.565
x 2.2226 0.436 5.095 0.000 1.368 3.078
" 285 | ], 286 | "text/plain": [ 287 | "\n", 288 | "\"\"\"\n", 289 | " Logit Regression Results \n", 290 | "==============================================================================\n", 291 | "Dep. Variable: y No. Observations: 100\n", 292 | "Model: Logit Df Residuals: 98\n", 293 | "Method: MLE Df Model: 1\n", 294 | "Date: Wed, 30 Sep 2020 Pseudo R-squ.: 0.3827\n", 295 | "Time: 02:50:12 Log-Likelihood: -42.785\n", 296 | "converged: True LL-Null: -69.315\n", 297 | "Covariance Type: nonrobust LLR p-value: 3.238e-13\n", 298 | "==============================================================================\n", 299 | " coef std err z P>|z| [0.025 0.975]\n", 300 | "------------------------------------------------------------------------------\n", 301 | "Intercept 0.0367 0.269 0.136 0.892 -0.491 0.565\n", 302 | "x 2.2226 0.436 5.095 0.000 1.368 3.078\n", 303 | "==============================================================================\n", 304 | "\"\"\"" 305 | ] 306 | }, 307 | "metadata": { 308 | "tags": [] 309 | }, 310 | "execution_count": 114 311 | } 312 | ] 313 | }, 314 | { 315 | "cell_type": "code", 316 | "metadata": { 317 | "id": "F6gUNlf6LbJc" 318 | }, 319 | "source": [ 320 | "# The in sample predictions\n", 321 | "yhat = 1 / (1 + np.exp(-fit.fittedvalues))" 322 | ], 323 | "execution_count": 115, 324 | "outputs": [] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "metadata": { 329 | "id": "9LZ4MgGEPxEN", 330 | "outputId": "6fe594a1-85f9-4644-f41c-6991e120e91c", 331 | "colab": { 332 | "base_uri": "https://localhost:8080/", 333 | "height": 34 334 | } 335 | }, 336 | "source": [ 337 | "n = dat.shape[0]\n", 338 | "\n", 339 | "## Get the y and x from \n", 340 | "xtraining = torch.from_numpy(dat['x'].values)\n", 341 | "ytraining = torch.from_numpy(dat['y'].values)\n", 342 | "\n", 343 | "## PT wants floats\n", 344 | "xtraining = xtraining.float()\n", 345 | "ytraining = ytraining.float()\n", 346 | "\n", 347 | "## Dimension is 1xn not nx1\n", 348 | "## squeeze the second dimension\n", 349 | "xtraining = xtraining.unsqueeze(1)\n", 350 | "ytraining = ytraining.unsqueeze(1)\n", 351 | "\n", 352 | "## Show that everything is the right size\n", 353 | "[xtraining.shape, \n", 354 | " ytraining.shape,\n", 355 | " [n, 1]\n", 356 | " ]\n", 357 | "\n" 358 | ], 359 | "execution_count": 116, 360 | "outputs": [ 361 | { 362 | "output_type": "execute_result", 363 | "data": { 364 | "text/plain": [ 365 | "[torch.Size([100, 1]), torch.Size([100, 1]), [100, 1]]" 366 | ] 367 | }, 368 | "metadata": { 369 | "tags": [] 370 | }, 371 | "execution_count": 116 372 | } 373 | ] 374 | }, 375 | { 376 | "cell_type": "code", 377 | "metadata": { 378 | "id": "OZKrXwTjPdrB" 379 | }, 380 | "source": [ 381 | "## Doing it more now the pytorch docs recommend\n", 382 | "## Example taken from \n", 383 | "## https://medium.com/biaslyai/pytorch-linear-and-logistic-regression-models-5c5f0da2cb9\n", 384 | "\n", 385 | "## They recommend creating a class that defines\n", 386 | "## the model\n", 387 | "class LogisticRegression(torch.nn.Module):\n", 388 | " def __init__(self):\n", 389 | " super(LogisticRegression, self).__init__()\n", 390 | " self.linear = torch.nn.Linear(1, 1, bias = True)\n", 391 | " def forward(self, x):\n", 392 | " y_pred = torch.sigmoid(self.linear(x))\n", 393 | " return y_pred\n", 394 | "\n", 395 | "## Then the model is simply \n", 396 | "model = LogisticRegression()\n", 397 | "\n", 398 | "## MSE is the loss function\n", 399 | "loss_fn = torch.nn.BCELoss() \n", 400 | "\n", 401 | "## Set the optimizer\n", 402 | "optimizer = torch.optim.SGD(model.parameters(), lr=1e-4)\n", 403 | "\n", 404 | "## Loop over iterations\n", 405 | "for t in range(100000):\n", 406 | "\n", 407 | " ## Forward propagation\n", 408 | " y_pred = model(xtraining)\n", 409 | "\n", 410 | " ## the loss for this interation\n", 411 | " loss = loss_fn(y_pred, ytraining)\n", 412 | "\n", 413 | " #print(t, loss.item() / n)\n", 414 | "\n", 415 | " ## Zero out the gradients before adding them up \n", 416 | " optimizer.zero_grad()\n", 417 | " \n", 418 | " ## Backprop\n", 419 | " loss.backward()\n", 420 | " \n", 421 | " ## Optimization step\n", 422 | " optimizer.step()\n", 423 | "\n" 424 | ], 425 | "execution_count": 117, 426 | "outputs": [] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "metadata": { 431 | "id": "fd1wjXgukgqs", 432 | "outputId": "91f22597-1686-4b25-ee01-67dcba4753ca", 433 | "colab": { 434 | "base_uri": "https://localhost:8080/", 435 | "height": 282 436 | } 437 | }, 438 | "source": [ 439 | "ytest = model(xtraining)\n", 440 | "ytest = ytest.detach().numpy().reshape(-1)\n", 441 | "plt.plot(yhat, ytest, \".\")\n", 442 | "plt.plot([0, 1], [0, 1], linewidth=2)" 443 | ], 444 | "execution_count": 118, 445 | "outputs": [ 446 | { 447 | "output_type": "execute_result", 448 | "data": { 449 | "text/plain": [ 450 | "[]" 451 | ] 452 | }, 453 | "metadata": { 454 | "tags": [] 455 | }, 456 | "execution_count": 118 457 | }, 458 | { 459 | "output_type": "display_data", 460 | "data": { 461 | "image/png": "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\n", 462 | "text/plain": [ 463 | "
" 464 | ] 465 | }, 466 | "metadata": { 467 | "tags": [], 468 | "needs_background": "light" 469 | } 470 | } 471 | ] 472 | }, 473 | { 474 | "cell_type": "code", 475 | "metadata": { 476 | "id": "hZpPdBPYy53z", 477 | "outputId": "8ee26a76-37fd-4dc4-ea84-9a7f17cd5c3a", 478 | "colab": { 479 | "base_uri": "https://localhost:8080/", 480 | "height": 52 481 | } 482 | }, 483 | "source": [ 484 | "for param in model.parameters(): \n", 485 | " print(param.data)\n" 486 | ], 487 | "execution_count": 119, 488 | "outputs": [ 489 | { 490 | "output_type": "stream", 491 | "text": [ 492 | "tensor([[1.4062]])\n", 493 | "tensor([-0.0502])\n" 494 | ], 495 | "name": "stdout" 496 | } 497 | ] 498 | } 499 | ] 500 | } -------------------------------------------------------------------------------- /notebooks/multivariable_nn_in_torch.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "multivariable_nn_in_torch", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "machine_shape": "hm", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "python3", 14 | "display_name": "Python 3" 15 | } 16 | }, 17 | "cells": [ 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "id": "view-in-github", 22 | "colab_type": "text" 23 | }, 24 | "source": [ 25 | "\"Open" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": { 31 | "id": "uiVM4lOtpJVt" 32 | }, 33 | "source": [ 34 | "This is an extension of using pytorch to perform a simple neural network. Note since this dataset is really small. I'm not splitting into a testing and training sets." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "metadata": { 40 | "id": "6nKZWgTDvTTK", 41 | "outputId": "c31668c8-f0f9-4a36-a55b-476e20d04373", 42 | "colab": { 43 | "base_uri": "https://localhost:8080/", 44 | "height": 195 45 | } 46 | }, 47 | "source": [ 48 | "import pandas as pd\n", 49 | "import torch\n", 50 | "import matplotlib.pyplot as plt\n", 51 | "import numpy as np\n", 52 | "from sklearn.linear_model import LinearRegression\n", 53 | "\n", 54 | "## Read in the data\n", 55 | "dat = pd.read_csv(\"https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/oasis.csv\")\n", 56 | "\n", 57 | "def normalize(x):\n", 58 | " return (x - np.mean(x)) / np.std(x)\n", 59 | "\n", 60 | "## Create x variables that are normalized\n", 61 | "dat = dat.assign(\n", 62 | " y = dat.PD,\n", 63 | " x1 = normalize(dat.FLAIR),\n", 64 | " x2 = normalize(dat.T1), \n", 65 | " x3 = normalize(dat.T2),\n", 66 | " x4 = normalize(dat.FLAIR_10),\n", 67 | " x5 = normalize(dat.T1_10),\n", 68 | " x6 = normalize(dat.T2_10))\n", 69 | "dat = dat.filter(['y', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6'], axis = 1)\n", 70 | "dat.head()" 71 | ], 72 | "execution_count": 7, 73 | "outputs": [ 74 | { 75 | "output_type": "execute_result", 76 | "data": { 77 | "text/html": [ 78 | "
\n", 79 | "\n", 92 | "\n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | "
yx1x2x3x4x5x6
01.586219-0.841279-0.9041281.4663530.556695-0.5692181.921010
11.766672-0.049795-1.5011280.5341211.403361-1.8113741.800152
20.262042-1.008629-0.981815-0.746050-1.252711-0.519458-1.307041
30.011104-1.006151-1.471756-1.284565-1.138899-1.733044-1.174082
41.730152-0.161726-0.9849700.9580991.234082-0.8586391.184153
\n", 158 | "
" 159 | ], 160 | "text/plain": [ 161 | " y x1 x2 x3 x4 x5 x6\n", 162 | "0 1.586219 -0.841279 -0.904128 1.466353 0.556695 -0.569218 1.921010\n", 163 | "1 1.766672 -0.049795 -1.501128 0.534121 1.403361 -1.811374 1.800152\n", 164 | "2 0.262042 -1.008629 -0.981815 -0.746050 -1.252711 -0.519458 -1.307041\n", 165 | "3 0.011104 -1.006151 -1.471756 -1.284565 -1.138899 -1.733044 -1.174082\n", 166 | "4 1.730152 -0.161726 -0.984970 0.958099 1.234082 -0.858639 1.184153" 167 | ] 168 | }, 169 | "metadata": { 170 | "tags": [] 171 | }, 172 | "execution_count": 7 173 | } 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "metadata": { 179 | "id": "KlKINCcFrw_D" 180 | }, 181 | "source": [ 182 | "y = dat.y\n", 183 | "x = dat.drop('y', axis = 1)\n", 184 | "\n", 185 | "## I find it easier to convert to np arrays before torch tensors\n", 186 | "y = pd.DataFrame.to_numpy(y)\n", 187 | "x = pd.DataFrame.to_numpy(x)\n", 188 | "\n", 189 | "## This will give you a sense of the\n", 190 | "## in sample prediction using just a linear model\n", 191 | "#reg = LinearRegression().fit(x, y)\n", 192 | "#yhat = reg.predict(x)\n", 193 | "#plt.plot(y, yhat, \".\")\n", 194 | "\n", 195 | "## have to switch floating point precision for torch\n", 196 | "xtraining = torch.from_numpy(x).float()\n", 197 | "ytraining = torch.from_numpy(y).float()" 198 | ], 199 | "execution_count": 8, 200 | "outputs": [] 201 | }, 202 | { 203 | "cell_type": "code", 204 | "metadata": { 205 | "id": "9LZ4MgGEPxEN", 206 | "outputId": "8342769b-4398-4f06-b503-6b8fa114013b", 207 | "colab": { 208 | "base_uri": "https://localhost:8080/", 209 | "height": 34 210 | } 211 | }, 212 | "source": [ 213 | "n = x.shape[0]\n", 214 | "p = x.shape[1]\n", 215 | "\n", 216 | "## Show that everything is the right size\n", 217 | "print([xtraining.shape, ytraining.shape, [n, p]])" 218 | ], 219 | "execution_count": 10, 220 | "outputs": [ 221 | { 222 | "output_type": "stream", 223 | "text": [ 224 | "[torch.Size([100, 6]), torch.Size([100]), [100, 6]]\n" 225 | ], 226 | "name": "stdout" 227 | } 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "metadata": { 233 | "id": "CnbdQ-kP4c5u" 234 | }, 235 | "source": [ 236 | "## Two layers\n", 237 | "model = torch.nn.Sequential(\n", 238 | " torch.nn.Linear(p,3),\n", 239 | " torch.nn.ReLU(),\n", 240 | " torch.nn.Linear(3,1)\n", 241 | ")\n", 242 | "\n", 243 | "## MSE is the loss function\n", 244 | "loss_fn = torch.nn.MSELoss(reduction='sum') \n", 245 | "\n", 246 | "## Set the optimizer\n", 247 | "#optimizer = torch.optim.SGD(model.parameters(), lr=1e-4)\n", 248 | "optimizer = torch.optim.Adam(model.parameters())\n", 249 | "\n" 250 | ], 251 | "execution_count": 11, 252 | "outputs": [] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "metadata": { 257 | "id": "OZKrXwTjPdrB", 258 | "outputId": "059251fe-8512-4e0e-d05c-8128b2c96a7e", 259 | "colab": { 260 | "base_uri": "https://localhost:8080/", 261 | "height": 72 262 | } 263 | }, 264 | "source": [ 265 | "## Loop over iterations\n", 266 | "for t in range(100000):\n", 267 | "\n", 268 | " ## Forward propagation\n", 269 | " y_pred = model(xtraining)\n", 270 | "\n", 271 | " ## the loss for this interation\n", 272 | " loss = loss_fn(y_pred, ytraining)\n", 273 | "\n", 274 | " ## Zero out the gradients before adding them up \n", 275 | " optimizer.zero_grad()\n", 276 | " \n", 277 | " ## Backprop\n", 278 | " loss.backward()\n", 279 | " \n", 280 | " ## Optimization step\n", 281 | " optimizer.step()\n", 282 | "\n" 283 | ], 284 | "execution_count": 12, 285 | "outputs": [ 286 | { 287 | "output_type": "stream", 288 | "text": [ 289 | "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/loss.py:445: UserWarning: Using a target size (torch.Size([100])) that is different to the input size (torch.Size([100, 1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n", 290 | " return F.mse_loss(input, target, reduction=self.reduction)\n" 291 | ], 292 | "name": "stderr" 293 | } 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "metadata": { 299 | "id": "fd1wjXgukgqs", 300 | "outputId": "6d32f7bc-4d14-4f77-e0f6-f754a0662944", 301 | "colab": { 302 | "base_uri": "https://localhost:8080/", 303 | "height": 282 304 | } 305 | }, 306 | "source": [ 307 | "#How are we doing in sample?\n", 308 | "yhat = model(xtraining).detach().numpy().reshape(-1)\n", 309 | "plt.plot(ytraining, yhat, \".\") " 310 | ], 311 | "execution_count": 13, 312 | "outputs": [ 313 | { 314 | "output_type": "execute_result", 315 | "data": { 316 | "text/plain": [ 317 | "[]" 318 | ] 319 | }, 320 | "metadata": { 321 | "tags": [] 322 | }, 323 | "execution_count": 13 324 | }, 325 | { 326 | "output_type": "display_data", 327 | "data": { 328 | "image/png": "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\n", 329 | "text/plain": [ 330 | "
" 331 | ] 332 | }, 333 | "metadata": { 334 | "tags": [], 335 | "needs_background": "light" 336 | } 337 | } 338 | ] 339 | } 340 | ] 341 | } -------------------------------------------------------------------------------- /notebooks/notebook5_a.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "notebook5.a.ipynb", 7 | "provenance": [], 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | } 14 | }, 15 | "cells": [ 16 | { 17 | "cell_type": "markdown", 18 | "metadata": { 19 | "id": "view-in-github", 20 | "colab_type": "text" 21 | }, 22 | "source": [ 23 | "\"Open" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "metadata": { 29 | "id": "GMMLqAkYRxb5", 30 | "colab_type": "code", 31 | "colab": {} 32 | }, 33 | "source": [ 34 | "import numpy as np\n", 35 | "import pandas as pd\n", 36 | "import seaborn as sns\n", 37 | "import matplotlib.pyplot as plt\n", 38 | "import sklearn.linear_model as lm\n", 39 | "import sklearn as skl\n", 40 | "import statsmodels.formula.api as smf\n", 41 | "import statsmodels as sm\n", 42 | "\n", 43 | "## this sets some style parameters\n", 44 | "sns.set()\n", 45 | "\n", 46 | "## Read in the data and display a few rows\n", 47 | "dat = pd.read_csv(\"https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/oasis.csv\")" 48 | ], 49 | "execution_count": 14, 50 | "outputs": [] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "metadata": { 55 | "id": "K8Yp-vpBC2Yh", 56 | "colab_type": "code", 57 | "colab": { 58 | "base_uri": "https://localhost:8080/", 59 | "height": 195 60 | }, 61 | "outputId": "19a8f4f8-2072-4df4-d757-f11c92f42c90" 62 | }, 63 | "source": [ 64 | "dat.head()" 65 | ], 66 | "execution_count": 15, 67 | "outputs": [ 68 | { 69 | "output_type": "execute_result", 70 | "data": { 71 | "text/html": [ 72 | "
\n", 73 | "\n", 86 | "\n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | "
FLAIRPDT1T2FLAIR_10PD_10T1_10T2_10FLAIR_20PD_20T1_20T2_20GOLD_Lesions
01.1436921.586219-0.7998591.6344670.4375680.823800-0.0020590.5736630.2798320.5483410.2191360.2986620
11.6525521.766672-1.2509920.9212300.6630370.880250-0.4220600.5425970.4221820.5497110.0615730.2809720
21.0360990.262042-0.858565-0.058211-0.044280-0.3085690.014766-0.256075-0.136532-0.3509050.020673-0.2599140
31.0376920.011104-1.228796-0.470222-0.013971-0.000498-0.395575-0.2219000.000807-0.003085-0.193249-0.1392840
41.5805891.730152-0.8609491.2456090.6179570.866352-0.0999190.3842610.3911330.6088260.0716480.3406010
\n", 188 | "
" 189 | ], 190 | "text/plain": [ 191 | " FLAIR PD T1 ... T1_20 T2_20 GOLD_Lesions\n", 192 | "0 1.143692 1.586219 -0.799859 ... 0.219136 0.298662 0\n", 193 | "1 1.652552 1.766672 -1.250992 ... 0.061573 0.280972 0\n", 194 | "2 1.036099 0.262042 -0.858565 ... 0.020673 -0.259914 0\n", 195 | "3 1.037692 0.011104 -1.228796 ... -0.193249 -0.139284 0\n", 196 | "4 1.580589 1.730152 -0.860949 ... 0.071648 0.340601 0\n", 197 | "\n", 198 | "[5 rows x 13 columns]" 199 | ] 200 | }, 201 | "metadata": { 202 | "tags": [] 203 | }, 204 | "execution_count": 15 205 | } 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "metadata": { 211 | "id": "fDJOnSsxe2N5", 212 | "colab_type": "code", 213 | "colab": { 214 | "base_uri": "https://localhost:8080/", 215 | "height": 404 216 | }, 217 | "outputId": "07acb08e-572d-4318-85b2-b59099335efb" 218 | }, 219 | "source": [ 220 | "#results = smf.ols('PD ~ FLAIR + T1 + T2 + FLAIR_10 + T1_10 + T2_10 + FLAIR_20', data = dat).fit()\n", 221 | "results = smf.ols('PD ~ FLAIR + T1', data = dat).fit()\n", 222 | "print(results.summary2())\n" 223 | ], 224 | "execution_count": 19, 225 | "outputs": [ 226 | { 227 | "output_type": "stream", 228 | "text": [ 229 | " Results: Ordinary least squares\n", 230 | "=================================================================\n", 231 | "Model: OLS Adj. R-squared: 0.368 \n", 232 | "Dependent Variable: PD AIC: 180.8632\n", 233 | "Date: 2020-09-20 19:46 BIC: 188.6787\n", 234 | "No. Observations: 100 Log-Likelihood: -87.432 \n", 235 | "Df Model: 2 F-statistic: 29.82 \n", 236 | "Df Residuals: 97 Prob (F-statistic): 8.04e-11\n", 237 | "R-squared: 0.381 Scale: 0.34688 \n", 238 | "------------------------------------------------------------------\n", 239 | " Coef. Std.Err. t P>|t| [0.025 0.975]\n", 240 | "------------------------------------------------------------------\n", 241 | "Intercept 0.0718 0.1658 0.4333 0.6657 -0.2572 0.4009\n", 242 | "FLAIR 0.3448 0.0917 3.7621 0.0003 0.1629 0.5267\n", 243 | "T1 -0.5354 0.0780 -6.8662 0.0000 -0.6902 -0.3807\n", 244 | "-----------------------------------------------------------------\n", 245 | "Omnibus: 6.896 Durbin-Watson: 2.127\n", 246 | "Prob(Omnibus): 0.032 Jarque-Bera (JB): 7.092\n", 247 | "Skew: -0.443 Prob(JB): 0.029\n", 248 | "Kurtosis: 3.958 Condition No.: 6 \n", 249 | "=================================================================\n", 250 | "\n" 251 | ], 252 | "name": "stdout" 253 | } 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "metadata": { 259 | "id": "uxE_9nEIA3mE", 260 | "colab_type": "code", 261 | "colab": { 262 | "base_uri": "https://localhost:8080/", 263 | "height": 34 264 | }, 265 | "outputId": "5dc9c314-aeb9-4ca0-aa3b-dc2230580849" 266 | }, 267 | "source": [ 268 | "y1 = dat.PD\n", 269 | "x1 = np.zeros(y.size) + 1\n", 270 | "x2 = dat.FLAIR\n", 271 | "x3 = dat.T1\n", 272 | "\n", 273 | "def resid(x, y):\n", 274 | " return y - x * np.sum(x * y) / np.sum(x ** 2)\n", 275 | "\n", 276 | "## Regress x1 out of everything\n", 277 | "ey1x1 = resid(x1, y1)\n", 278 | "ex2x1 = resid(x1, x2)\n", 279 | "ex3x1 = resid(x1, x3)\n", 280 | "\n", 281 | "## Regress the residual for x2 out of everything\n", 282 | "ey1x1x2 = resid(ex2x1, ey1x1)\n", 283 | "ex3x1x2 = resid(ex2x1, ex3x1)\n", 284 | "\n", 285 | "\n", 286 | "np.sum(ex3x1x2 * ey1x1x2) / np.sum(ex3x1x2 ** 2)\n", 287 | "\n" 288 | ], 289 | "execution_count": 20, 290 | "outputs": [ 291 | { 292 | "output_type": "execute_result", 293 | "data": { 294 | "text/plain": [ 295 | "-0.5354478184289665" 296 | ] 297 | }, 298 | "metadata": { 299 | "tags": [] 300 | }, 301 | "execution_count": 20 302 | } 303 | ] 304 | } 305 | ] 306 | } -------------------------------------------------------------------------------- /notebooks/notebook6.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "notebook6.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": { 30 | "id": "QliNPatWGeQF", 31 | "colab_type": "text" 32 | }, 33 | "source": [ 34 | "This example from the pytorch documentation [here](https://pytorch.org/tutorials/beginner/pytorch_with_examples.html) displays generating random y ad x dat and fitting a multi-layer neural network." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "metadata": { 40 | "id": "54gmWH2_GILQ", 41 | "colab_type": "code", 42 | "outputId": "460f97b3-7974-484e-9ad5-428fb776b4e8", 43 | "colab": { 44 | "base_uri": "https://localhost:8080/", 45 | "height": 108 46 | } 47 | }, 48 | "source": [ 49 | "# -*- coding: utf-8 -*-\n", 50 | "import torch\n", 51 | "\n", 52 | "# N is batch size; D_in is input dimension;\n", 53 | "# H is hidden dimension; D_out is output dimension.\n", 54 | "N, D_in, H, D_out = 64, 1000, 100, 10\n", 55 | "\n", 56 | "# Create random Tensors to hold inputs and outputs\n", 57 | "x = torch.randn(N, D_in)\n", 58 | "y = torch.randn(N, D_out)\n", 59 | "\n", 60 | "# Use the nn package to define our model as a sequence of layers. nn.Sequential\n", 61 | "# is a Module which contains other Modules, and applies them in sequence to\n", 62 | "# produce its output. Each Linear Module computes output from input using a\n", 63 | "# linear function, and holds internal Tensors for its weight and bias.\n", 64 | "model = torch.nn.Sequential(\n", 65 | " torch.nn.Linear(D_in, H),\n", 66 | " torch.nn.ReLU(),\n", 67 | " torch.nn.Linear(H, D_out),\n", 68 | ")\n", 69 | "\n", 70 | "# The nn package also contains definitions of popular loss functions; in this\n", 71 | "# case we will use Mean Squared Error (MSE) as our loss function.\n", 72 | "loss_fn = torch.nn.MSELoss(reduction='sum')\n", 73 | "\n", 74 | "learning_rate = 1e-4\n", 75 | "for t in range(500):\n", 76 | " # Forward pass: compute predicted y by passing x to the model. Module objects\n", 77 | " # override the __call__ operator so you can call them like functions. When\n", 78 | " # doing so you pass a Tensor of input data to the Module and it produces\n", 79 | " # a Tensor of output data.\n", 80 | " y_pred = model(x)\n", 81 | "\n", 82 | " # Compute and print loss. We pass Tensors containing the predicted and true\n", 83 | " # values of y, and the loss function returns a Tensor containing the\n", 84 | " # loss.\n", 85 | " loss = loss_fn(y_pred, y)\n", 86 | " if t % 100 == 99:\n", 87 | " print(t, loss.item())\n", 88 | "\n", 89 | " # Zero the gradients before running the backward pass.\n", 90 | " model.zero_grad()\n", 91 | "\n", 92 | " # Backward pass: compute gradient of the loss with respect to all the learnable\n", 93 | " # parameters of the model. Internally, the parameters of each Module are stored\n", 94 | " # in Tensors with requires_grad=True, so this call will compute gradients for\n", 95 | " # all learnable parameters in the model.\n", 96 | " loss.backward()\n", 97 | "\n", 98 | " # Update the weights using gradient descent. Each parameter is a Tensor, so\n", 99 | " # we can access its gradients like we did before.\n", 100 | " with torch.no_grad():\n", 101 | " for param in model.parameters():\n", 102 | " param -= learning_rate * param.grad" 103 | ], 104 | "execution_count": 129, 105 | "outputs": [ 106 | { 107 | "output_type": "stream", 108 | "text": [ 109 | "99 1.9933761358261108\n", 110 | "199 0.020633060485124588\n", 111 | "299 0.00045402691466733813\n", 112 | "399 1.4306728189694695e-05\n", 113 | "499 5.802120313092018e-07\n" 114 | ], 115 | "name": "stdout" 116 | } 117 | ] 118 | }, 119 | { 120 | "cell_type": "markdown", 121 | "metadata": { 122 | "id": "qWcVUq9RGxTB", 123 | "colab_type": "text" 124 | }, 125 | "source": [ 126 | "Let's update that example for our setting using the voxel level data." 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "metadata": { 132 | "id": "62iyChkPGwZD", 133 | "colab_type": "code", 134 | "colab": {} 135 | }, 136 | "source": [ 137 | "import torch\n", 138 | "import numpy as np\n", 139 | "import pandas as pd\n", 140 | "import seaborn as sns\n", 141 | "import matplotlib.pyplot as plt\n", 142 | "import sklearn.linear_model as lm\n", 143 | "## this sets some style parameters\n", 144 | "sns.set()\n", 145 | "\n", 146 | "## Download in the data if it's not already there\n", 147 | "! if [ ! -e oasis.csv ]; \\\n", 148 | " then wget https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/oasis.csv; \\\n", 149 | "fi;\n", 150 | "\n", 151 | "## Read in the data and display a few rows\n", 152 | "dat = pd.read_csv(\"oasis.csv\")" 153 | ], 154 | "execution_count": 0, 155 | "outputs": [] 156 | }, 157 | { 158 | "cell_type": "code", 159 | "metadata": { 160 | "id": "neIwiOlRTIor", 161 | "colab_type": "code", 162 | "colab": {} 163 | }, 164 | "source": [ 165 | "trainFraction = .75\n", 166 | "\n", 167 | "sample = np.random.uniform(size = 100) < trainFraction\n", 168 | "trainingDat = dat[sample]\n", 169 | "testingDat = dat[~sample]\n" 170 | ], 171 | "execution_count": 0, 172 | "outputs": [] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "metadata": { 177 | "id": "-tVT-AsOTPgN", 178 | "colab_type": "code", 179 | "colab": { 180 | "base_uri": "https://localhost:8080/", 181 | "height": 89 182 | }, 183 | "outputId": "1f938b04-48b9-4fa2-8b94-160c233b8a7e" 184 | }, 185 | "source": [ 186 | "x = torch.from_numpy(dat[['PD','T1', 'T2', 'FLAIR_10', 'T1_10', 'T2_10', 'FLAIR_20']].values)\n", 187 | "y = torch.from_numpy(dat[['FLAIR']].values)\n", 188 | "\n", 189 | "##pytorch wants type as float\n", 190 | "x = x.float()\n", 191 | "y = y.float()\n", 192 | "\n", 193 | "xtraining = x[sample]\n", 194 | "xtesting = x[~sample]\n", 195 | "ytraining = y[sample]\n", 196 | "ytesting = y[~sample]\n", 197 | "\n", 198 | "[\n", 199 | " xtraining.size(),\n", 200 | " ytraining.size(),\n", 201 | " xtesting.size(),\n", 202 | " ytesting.size(),\n", 203 | "]\n" 204 | ], 205 | "execution_count": 4, 206 | "outputs": [ 207 | { 208 | "output_type": "execute_result", 209 | "data": { 210 | "text/plain": [ 211 | "[torch.Size([75, 7]),\n", 212 | " torch.Size([75, 1]),\n", 213 | " torch.Size([25, 7]),\n", 214 | " torch.Size([25, 1])]" 215 | ] 216 | }, 217 | "metadata": { 218 | "tags": [] 219 | }, 220 | "execution_count": 4 221 | } 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "metadata": { 227 | "id": "D2UxGTdkaBdO", 228 | "colab_type": "code", 229 | "colab": {} 230 | }, 231 | "source": [ 232 | "## Define the model\n", 233 | "## Dimension of the hidden layer\n", 234 | "H = 10\n", 235 | "\n", 236 | "## Number of predictors\n", 237 | "D_in = xtraining.size()[1]\n", 238 | "D_out = 1\n", 239 | "\n", 240 | "model = torch.nn.Sequential(\n", 241 | " torch.nn.Linear(D_in, H),\n", 242 | " torch.nn.ReLU(),\n", 243 | " torch.nn.Linear(H, D_out),\n", 244 | ")\n", 245 | "\n" 246 | ], 247 | "execution_count": 0, 248 | "outputs": [] 249 | }, 250 | { 251 | "cell_type": "code", 252 | "metadata": { 253 | "id": "lnoPaqh7Rm2M", 254 | "colab_type": "code", 255 | "colab": { 256 | "base_uri": "https://localhost:8080/", 257 | "height": 108 258 | }, 259 | "outputId": "9067a2a4-7d16-4efa-8ee0-8ef8d44db9d2" 260 | }, 261 | "source": [ 262 | "loss_fn = torch.nn.MSELoss(reduction='sum')\n", 263 | "\n", 264 | "learning_rate = 1e-4\n", 265 | "for t in range(500):\n", 266 | " y_pred = model(xtraining)\n", 267 | " loss = loss_fn(y_pred, ytraining)\n", 268 | " if t % 100 == 99:\n", 269 | " print(t, loss.item())\n", 270 | " model.zero_grad()\n", 271 | " loss.backward()\n", 272 | " with torch.no_grad():\n", 273 | " for param in model.parameters():\n", 274 | " param -= learning_rate * param.grad\n" 275 | ], 276 | "execution_count": 6, 277 | "outputs": [ 278 | { 279 | "output_type": "stream", 280 | "text": [ 281 | "99 31.615375518798828\n", 282 | "199 28.612531661987305\n", 283 | "299 27.466083526611328\n", 284 | "399 26.587757110595703\n", 285 | "499 25.88320541381836\n" 286 | ], 287 | "name": "stdout" 288 | } 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "metadata": { 294 | "id": "eZswhY21bcwK", 295 | "colab_type": "code", 296 | "outputId": "bbefd7ef-cf11-4bd1-9ffc-7e99344e2755", 297 | "colab": { 298 | "base_uri": "https://localhost:8080/", 299 | "height": 292 300 | } 301 | }, 302 | "source": [ 303 | "## try prediction\n", 304 | "ytesting_pred = model(xtesting)\n", 305 | "a = ytesting_pred.detach().numpy()\n", 306 | "\n", 307 | "plt.scatter(a[:,0], ytesting[:,0])" 308 | ], 309 | "execution_count": 7, 310 | "outputs": [ 311 | { 312 | "output_type": "execute_result", 313 | "data": { 314 | "text/plain": [ 315 | "" 316 | ] 317 | }, 318 | "metadata": { 319 | "tags": [] 320 | }, 321 | "execution_count": 7 322 | }, 323 | { 324 | "output_type": "display_data", 325 | "data": { 326 | "image/png": "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\n", 327 | "text/plain": [ 328 | "
" 329 | ] 330 | }, 331 | "metadata": { 332 | "tags": [] 333 | } 334 | } 335 | ] 336 | } 337 | ] 338 | } -------------------------------------------------------------------------------- /notebooks/regression_examples.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "regression_examples", 7 | "provenance": [], 8 | "authorship_tag": "ABX9TyPD6YfE7eh7Lu8TLxXjNkFR", 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "metadata": { 30 | "id": "oIimJROu2Hc_", 31 | "colab_type": "code", 32 | "colab": {} 33 | }, 34 | "source": [ 35 | "import pandas as pd\n", 36 | "import numpy as np\n", 37 | "from sklearn.linear_model import LinearRegression\n", 38 | "import matplotlib.pyplot as plt\n" 39 | ], 40 | "execution_count": 43, 41 | "outputs": [] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "metadata": { 46 | "id": "vsVJc6lS2Qov", 47 | "colab_type": "code", 48 | "colab": { 49 | "base_uri": "https://localhost:8080/", 50 | "height": 201 51 | }, 52 | "outputId": "fc0b2fe3-eccd-4f2a-819f-084bc8e2602d" 53 | }, 54 | "source": [ 55 | "dat = pd.read_csv(\"https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/swiss.csv\")\n", 56 | "dat.head()\n" 57 | ], 58 | "execution_count": 45, 59 | "outputs": [ 60 | { 61 | "output_type": "execute_result", 62 | "data": { 63 | "text/html": [ 64 | "
\n", 65 | "\n", 78 | "\n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | "
RegionFertilityAgricultureExaminationEducationCatholicInfant.Mortality
0Courtelary80.217.015129.9622.2
1Delemont83.145.16984.8422.2
2Franches-Mnt92.539.75593.4020.2
3Moutier85.836.512733.7720.3
4Neuveville76.943.517155.1620.6
\n", 144 | "
" 145 | ], 146 | "text/plain": [ 147 | " Region Fertility Agriculture ... Education Catholic Infant.Mortality\n", 148 | "0 Courtelary 80.2 17.0 ... 12 9.96 22.2\n", 149 | "1 Delemont 83.1 45.1 ... 9 84.84 22.2\n", 150 | "2 Franches-Mnt 92.5 39.7 ... 5 93.40 20.2\n", 151 | "3 Moutier 85.8 36.5 ... 7 33.77 20.3\n", 152 | "4 Neuveville 76.9 43.5 ... 15 5.16 20.6\n", 153 | "\n", 154 | "[5 rows x 7 columns]" 155 | ] 156 | }, 157 | "metadata": { 158 | "tags": [] 159 | }, 160 | "execution_count": 45 161 | } 162 | ] 163 | }, 164 | { 165 | "cell_type": "code", 166 | "metadata": { 167 | "id": "T34j2o8u2cH_", 168 | "colab_type": "code", 169 | "colab": { 170 | "base_uri": "https://localhost:8080/", 171 | "height": 54 172 | }, 173 | "outputId": "61309a3a-8ff6-489d-9dfd-c1ea40be99d8" 174 | }, 175 | "source": [ 176 | "y = dat.Fertility\n", 177 | "x = dat.drop(['Region', 'Fertility'], axis=1)\n", 178 | "fit = LinearRegression().fit(x, y)\n", 179 | "yhat = fit.predict(x)\n", 180 | "[fit.intercept_, fit.coef_]\n" 181 | ], 182 | "execution_count": 49, 183 | "outputs": [ 184 | { 185 | "output_type": "execute_result", 186 | "data": { 187 | "text/plain": [ 188 | "[66.91518167896871,\n", 189 | " array([-0.17211397, -0.25800824, -0.87094006, 0.10411533, 1.07704814])]" 190 | ] 191 | }, 192 | "metadata": { 193 | "tags": [] 194 | }, 195 | "execution_count": 49 196 | } 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "metadata": { 202 | "id": "Dwova9_d5BKe", 203 | "colab_type": "code", 204 | "colab": {} 205 | }, 206 | "source": [ 207 | "x2 = x\n", 208 | "x2['Test'] = x2.Agriculture + x2.Examination\n", 209 | "fit2 = LinearRegression().fit(x2, y)\n", 210 | "yhat2 = fit2.predict(x2)" 211 | ], 212 | "execution_count": 50, 213 | "outputs": [] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "metadata": { 218 | "id": "RAIz1jJs6YFg", 219 | "colab_type": "code", 220 | "colab": { 221 | "base_uri": "https://localhost:8080/", 222 | "height": 283 223 | }, 224 | "outputId": "de9beb6e-d3e6-4033-eba9-27689bac6ff4" 225 | }, 226 | "source": [ 227 | "plt.plot(yhat, yhat2)" 228 | ], 229 | "execution_count": 51, 230 | "outputs": [ 231 | { 232 | "output_type": "execute_result", 233 | "data": { 234 | "text/plain": [ 235 | "[]" 236 | ] 237 | }, 238 | "metadata": { 239 | "tags": [] 240 | }, 241 | "execution_count": 51 242 | }, 243 | { 244 | "output_type": "display_data", 245 | "data": { 246 | "image/png": "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\n", 247 | "text/plain": [ 248 | "
" 249 | ] 250 | }, 251 | "metadata": { 252 | "tags": [], 253 | "needs_background": "light" 254 | } 255 | } 256 | ] 257 | }, 258 | { 259 | "cell_type": "code", 260 | "metadata": { 261 | "id": "626Z0Ql66qWx", 262 | "colab_type": "code", 263 | "colab": { 264 | "base_uri": "https://localhost:8080/", 265 | "height": 283 266 | }, 267 | "outputId": "12617691-af4e-47d3-d080-10223101ec81" 268 | }, 269 | "source": [ 270 | "x3 = x2.drop(['Agriculture'], axis = 1)\n", 271 | "fit3 = LinearRegression().fit(x3, y)\n", 272 | "yhat3 = fit3.predict(x3)\n", 273 | "plt.plot(yhat, yhat3)\n" 274 | ], 275 | "execution_count": 53, 276 | "outputs": [ 277 | { 278 | "output_type": "execute_result", 279 | "data": { 280 | "text/plain": [ 281 | "[]" 282 | ] 283 | }, 284 | "metadata": { 285 | "tags": [] 286 | }, 287 | "execution_count": 53 288 | }, 289 | { 290 | "output_type": "display_data", 291 | "data": { 292 | "image/png": "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\n", 293 | "text/plain": [ 294 | "
" 295 | ] 296 | }, 297 | "metadata": { 298 | "tags": [], 299 | "needs_background": "light" 300 | } 301 | } 302 | ] 303 | } 304 | ] 305 | } -------------------------------------------------------------------------------- /notebooks/regression_through_the_origin.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Regression through the origin.ipynb", 7 | "provenance": [], 8 | "authorship_tag": "ABX9TyOKHYc47ZJyl0IPyt5p0mYA", 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "metadata": { 30 | "id": "SXdTawbDmq7p", 31 | "colab_type": "code", 32 | "colab": {} 33 | }, 34 | "source": [ 35 | "import pandas as pd\n", 36 | "import numpy as np\n", 37 | "import matplotlib.pyplot as plt\n" 38 | ], 39 | "execution_count": 20, 40 | "outputs": [] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "metadata": { 45 | "id": "z_P87xbFm05p", 46 | "colab_type": "code", 47 | "colab": { 48 | "base_uri": "https://localhost:8080/", 49 | "height": 201 50 | }, 51 | "outputId": "a2b65327-5b42-4d24-b26a-4fd6c957f94c" 52 | }, 53 | "source": [ 54 | "dat = pd.read_csv(\"https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/oasis.csv\")\n", 55 | "dat.head()" 56 | ], 57 | "execution_count": 21, 58 | "outputs": [ 59 | { 60 | "output_type": "execute_result", 61 | "data": { 62 | "text/html": [ 63 | "
\n", 64 | "\n", 77 | "\n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | "
FLAIRPDT1T2FLAIR_10PD_10T1_10T2_10FLAIR_20PD_20T1_20T2_20GOLD_Lesions
01.1436921.586219-0.7998591.6344670.4375680.823800-0.0020590.5736630.2798320.5483410.2191360.2986620
11.6525521.766672-1.2509920.9212300.6630370.880250-0.4220600.5425970.4221820.5497110.0615730.2809720
21.0360990.262042-0.858565-0.058211-0.044280-0.3085690.014766-0.256075-0.136532-0.3509050.020673-0.2599140
31.0376920.011104-1.228796-0.470222-0.013971-0.000498-0.395575-0.2219000.000807-0.003085-0.193249-0.1392840
41.5805891.730152-0.8609491.2456090.6179570.866352-0.0999190.3842610.3911330.6088260.0716480.3406010
\n", 179 | "
" 180 | ], 181 | "text/plain": [ 182 | " FLAIR PD T1 ... T1_20 T2_20 GOLD_Lesions\n", 183 | "0 1.143692 1.586219 -0.799859 ... 0.219136 0.298662 0\n", 184 | "1 1.652552 1.766672 -1.250992 ... 0.061573 0.280972 0\n", 185 | "2 1.036099 0.262042 -0.858565 ... 0.020673 -0.259914 0\n", 186 | "3 1.037692 0.011104 -1.228796 ... -0.193249 -0.139284 0\n", 187 | "4 1.580589 1.730152 -0.860949 ... 0.071648 0.340601 0\n", 188 | "\n", 189 | "[5 rows x 13 columns]" 190 | ] 191 | }, 192 | "metadata": { 193 | "tags": [] 194 | }, 195 | "execution_count": 21 196 | } 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "metadata": { 202 | "id": "YIWNN3y_nBmi", 203 | "colab_type": "code", 204 | "colab": { 205 | "base_uri": "https://localhost:8080/", 206 | "height": 283 207 | }, 208 | "outputId": "80b6c4d1-301f-46a2-c481-9c4ac2598881" 209 | }, 210 | "source": [ 211 | "x = dat.T2\n", 212 | "y = dat.PD\n", 213 | "plt.plot(x, y, 'o')" 214 | ], 215 | "execution_count": 25, 216 | "outputs": [ 217 | { 218 | "output_type": "execute_result", 219 | "data": { 220 | "text/plain": [ 221 | "[]" 222 | ] 223 | }, 224 | "metadata": { 225 | "tags": [] 226 | }, 227 | "execution_count": 25 228 | }, 229 | { 230 | "output_type": "display_data", 231 | "data": { 232 | "image/png": "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\n", 233 | "text/plain": [ 234 | "
" 235 | ] 236 | }, 237 | "metadata": { 238 | "tags": [], 239 | "needs_background": "light" 240 | } 241 | } 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "metadata": { 247 | "id": "4eAoOR9SndVn", 248 | "colab_type": "code", 249 | "colab": { 250 | "base_uri": "https://localhost:8080/", 251 | "height": 283 252 | }, 253 | "outputId": "bfa8f7a6-cd13-4af9-cfa0-015f89fb4909" 254 | }, 255 | "source": [ 256 | "x = x - np.mean(x)\n", 257 | "y = y - np.mean(y)\n", 258 | "plt.plot(x, y, 'o')" 259 | ], 260 | "execution_count": 26, 261 | "outputs": [ 262 | { 263 | "output_type": "execute_result", 264 | "data": { 265 | "text/plain": [ 266 | "[]" 267 | ] 268 | }, 269 | "metadata": { 270 | "tags": [] 271 | }, 272 | "execution_count": 26 273 | }, 274 | { 275 | "output_type": "display_data", 276 | "data": { 277 | "image/png": "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\n", 278 | "text/plain": [ 279 | "
" 280 | ] 281 | }, 282 | "metadata": { 283 | "tags": [], 284 | "needs_background": "light" 285 | } 286 | } 287 | ] 288 | }, 289 | { 290 | "cell_type": "code", 291 | "metadata": { 292 | "id": "QneMf54BpAg0", 293 | "colab_type": "code", 294 | "colab": { 295 | "base_uri": "https://localhost:8080/", 296 | "height": 35 297 | }, 298 | "outputId": "0fb08a46-bdae-48b0-822b-3223ee00967d" 299 | }, 300 | "source": [ 301 | "b = sum(y * x) / sum(x ** 2 )\n", 302 | "b" 303 | ], 304 | "execution_count": 27, 305 | "outputs": [ 306 | { 307 | "output_type": "execute_result", 308 | "data": { 309 | "text/plain": [ 310 | "0.7831514763655998" 311 | ] 312 | }, 313 | "metadata": { 314 | "tags": [] 315 | }, 316 | "execution_count": 27 317 | } 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "metadata": { 323 | "id": "N88itcqLpM20", 324 | "colab_type": "code", 325 | "colab": { 326 | "base_uri": "https://localhost:8080/", 327 | "height": 283 328 | }, 329 | "outputId": "692e5d49-6eaf-45f7-920b-d0b91384b77b" 330 | }, 331 | "source": [ 332 | "plt.plot(x, y, 'o')\n", 333 | "t = np.array([-1.5, 2.5])\n", 334 | "plt.plot(t, t * b)" 335 | ], 336 | "execution_count": 28, 337 | "outputs": [ 338 | { 339 | "output_type": "execute_result", 340 | "data": { 341 | "text/plain": [ 342 | "[]" 343 | ] 344 | }, 345 | "metadata": { 346 | "tags": [] 347 | }, 348 | "execution_count": 28 349 | }, 350 | { 351 | "output_type": "display_data", 352 | "data": { 353 | "image/png": "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\n", 354 | "text/plain": [ 355 | "
" 356 | ] 357 | }, 358 | "metadata": { 359 | "tags": [], 360 | "needs_background": "light" 361 | } 362 | } 363 | ] 364 | } 365 | ] 366 | } -------------------------------------------------------------------------------- /notebooks/tensorflow_example.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "tensorflow example", 7 | "provenance": [], 8 | "authorship_tag": "ABX9TyM1QXcrvPV3uAYSwBe6bdaG", 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": { 30 | "id": "CPJWI12Vjsb2", 31 | "colab_type": "text" 32 | }, 33 | "source": [ 34 | "Illustrating TF in a colab notebook. Code taken from:\n", 35 | "[the TF team's colab notebook](https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/quickstart/beginner.ipynb#scrollTo=rYb6DrEH0GMv)." 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "metadata": { 41 | "id": "IA6Tq3mCjq1h", 42 | "colab_type": "code", 43 | "colab": {} 44 | }, 45 | "source": [ 46 | "import tensorflow as tf\n", 47 | "import matplotlib.pyplot as plt\n", 48 | "import numpy as np\n" 49 | ], 50 | "execution_count": 0, 51 | "outputs": [] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": { 56 | "id": "VK0xN0GvkBaH", 57 | "colab_type": "text" 58 | }, 59 | "source": [ 60 | "Import the data. It's a collection of 28x28 images of handwritten digits." 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "metadata": { 66 | "id": "v8IZXT5Bj_QR", 67 | "colab_type": "code", 68 | "colab": { 69 | "base_uri": "https://localhost:8080/", 70 | "height": 53 71 | }, 72 | "outputId": "fdbc1a69-e7cb-4341-b3af-afde774af2cb" 73 | }, 74 | "source": [ 75 | "mnist = tf.keras.datasets.mnist\n", 76 | "\n", 77 | "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", 78 | "x_train, x_test = x_train / 255.0, x_test / 255.0" 79 | ], 80 | "execution_count": 2, 81 | "outputs": [ 82 | { 83 | "output_type": "stream", 84 | "text": [ 85 | "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n", 86 | "11493376/11490434 [==============================] - 0s 0us/step\n" 87 | ], 88 | "name": "stdout" 89 | } 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "metadata": { 95 | "id": "5TqQCQbokIpy", 96 | "colab_type": "code", 97 | "colab": { 98 | "base_uri": "https://localhost:8080/", 99 | "height": 35 100 | }, 101 | "outputId": "5e62106d-762b-4d58-d0a5-fef098e338b2" 102 | }, 103 | "source": [ 104 | "[x_train.shape, y_train.shape, x_test.shape, y_test.shape]" 105 | ], 106 | "execution_count": 5, 107 | "outputs": [ 108 | { 109 | "output_type": "execute_result", 110 | "data": { 111 | "text/plain": [ 112 | "[(60000, 28, 28), (60000,), (10000, 28, 28), (10000,)]" 113 | ] 114 | }, 115 | "metadata": { 116 | "tags": [] 117 | }, 118 | "execution_count": 5 119 | } 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "metadata": { 125 | "id": "X35HH3abk2h6", 126 | "colab_type": "code", 127 | "colab": { 128 | "base_uri": "https://localhost:8080/", 129 | "height": 283 130 | }, 131 | "outputId": "729d9c68-425c-4ed9-9b8f-a12e57fc2c96" 132 | }, 133 | "source": [ 134 | "plt.imshow(x_train[2,:,:])" 135 | ], 136 | "execution_count": 11, 137 | "outputs": [ 138 | { 139 | "output_type": "execute_result", 140 | "data": { 141 | "text/plain": [ 142 | "" 143 | ] 144 | }, 145 | "metadata": { 146 | "tags": [] 147 | }, 148 | "execution_count": 11 149 | }, 150 | { 151 | "output_type": "display_data", 152 | "data": { 153 | "image/png": "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\n", 154 | "text/plain": [ 155 | "
" 156 | ] 157 | }, 158 | "metadata": { 159 | "tags": [], 160 | "needs_background": "light" 161 | } 162 | } 163 | ] 164 | }, 165 | { 166 | "cell_type": "markdown", 167 | "metadata": { 168 | "id": "vCaMoLHQl0LW", 169 | "colab_type": "text" 170 | }, 171 | "source": [ 172 | "Create a model that has \n", 173 | "\n", 174 | "* The input layer flattened from 28x28 to a vector\n", 175 | "* A fully connected layer with 128 hidden nodes\n", 176 | "* A dropout layer with 20% dropout\n", 177 | "* A fully connected layer with 10 nodes\n", 178 | "\n", 179 | "Note the output layer is not included in the model." 180 | ] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "metadata": { 185 | "id": "B-62W8c2lvNG", 186 | "colab_type": "code", 187 | "colab": {} 188 | }, 189 | "source": [ 190 | "model = tf.keras.models.Sequential([\n", 191 | " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", 192 | " tf.keras.layers.Dense(128, activation='relu'),\n", 193 | " tf.keras.layers.Dropout(0.2),\n", 194 | " tf.keras.layers.Dense(10)\n", 195 | "])\n" 196 | ], 197 | "execution_count": 0, 198 | "outputs": [] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "metadata": { 203 | "id": "f34z5x1am7f1", 204 | "colab_type": "code", 205 | "colab": { 206 | "base_uri": "https://localhost:8080/", 207 | "height": 307 208 | }, 209 | "outputId": "e097ae94-30b6-42b4-f391-4e20bd257409" 210 | }, 211 | "source": [ 212 | "model.summary()" 213 | ], 214 | "execution_count": 15, 215 | "outputs": [ 216 | { 217 | "output_type": "stream", 218 | "text": [ 219 | "Model: \"sequential\"\n", 220 | "_________________________________________________________________\n", 221 | "Layer (type) Output Shape Param # \n", 222 | "=================================================================\n", 223 | "flatten (Flatten) (None, 784) 0 \n", 224 | "_________________________________________________________________\n", 225 | "dense (Dense) (None, 128) 100480 \n", 226 | "_________________________________________________________________\n", 227 | "dropout (Dropout) (None, 128) 0 \n", 228 | "_________________________________________________________________\n", 229 | "dense_1 (Dense) (None, 10) 1290 \n", 230 | "=================================================================\n", 231 | "Total params: 101,770\n", 232 | "Trainable params: 101,770\n", 233 | "Non-trainable params: 0\n", 234 | "_________________________________________________________________\n" 235 | ], 236 | "name": "stdout" 237 | } 238 | ] 239 | }, 240 | { 241 | "cell_type": "markdown", 242 | "metadata": { 243 | "id": "Kd0oI31SmaKS", 244 | "colab_type": "text" 245 | }, 246 | "source": [ 247 | "Now that we've created the model, it gets initialized with weights. Of course, these aren't good weights. But, we can illustrate forward propagation through the network." 248 | ] 249 | }, 250 | { 251 | "cell_type": "code", 252 | "metadata": { 253 | "id": "9rjPWw1Lm1Ar", 254 | "colab_type": "code", 255 | "colab": { 256 | "base_uri": "https://localhost:8080/", 257 | "height": 71 258 | }, 259 | "outputId": "b47e4518-a12d-46e5-c818-10c555b972f7" 260 | }, 261 | "source": [ 262 | "model(x_test[:1]).numpy()" 263 | ], 264 | "execution_count": 16, 265 | "outputs": [ 266 | { 267 | "output_type": "execute_result", 268 | "data": { 269 | "text/plain": [ 270 | "array([[ 0.38137725, 0.3295499 , -0.03025779, 0.20247848, -0.11673211,\n", 271 | " -0.20458013, -0.10713655, -0.05961871, -0.08456571, 0.44097432]],\n", 272 | " dtype=float32)" 273 | ] 274 | }, 275 | "metadata": { 276 | "tags": [] 277 | }, 278 | "execution_count": 16 279 | } 280 | ] 281 | }, 282 | { 283 | "cell_type": "markdown", 284 | "metadata": { 285 | "id": "2DpoGZ4knK_o", 286 | "colab_type": "text" 287 | }, 288 | "source": [ 289 | "" 290 | ] 291 | } 292 | ] 293 | } -------------------------------------------------------------------------------- /old/labSyllabus.md: -------------------------------------------------------------------------------- 1 | This is the old syllabus, look at the teams site for the updated one 2 | 3 | # Lab syllabus 4 | 5 | 1. Introduction to Python 6 | 1. Installing python 7 | 2. Chosing an IDE 8 | 3. Jupyter notebooks 9 | 4. Importing libraries 10 | 5. Basic arthmetic 11 | 6. Basic data import 12 | 7. Basic markdown 13 | 8. Basic git and github 14 | 9. Project: Cloning a github repo, creating a jupyeter notebook, adding it to version control, reading in a dataset, performing a basic manipulation, commiting changes to git, pushing changes to github. 15 | 2. Tour of programming in python 16 | 1. Control flow 17 | 2. Data structures 18 | 3. Creating functions 19 | 4. OOP concepts in python 20 | 5. text processing 21 | 6. Project: write a basic prediction function using thresholding and MRIcloud values. 22 | 3. NumPy and matplotlib 23 | 1. Plotting in python 24 | 2. Arrays and mathematical data structures in python 25 | 3. Project: creating an 3D array of MRIcloud imaging data. Performing a simple statistical summary across one dimension of the array. Plotting the result. 26 | 4. Pandas 27 | 1. Data manipulation and cleaning 28 | 2. Project: reading in MRICloud text data; putting it into a pandas dataframe. Performing data wrangling on the datarfame. Creating numerical summaries and exploratory plots. 29 | 5. Pytorch, Scipy 30 | 1. Regression, linear and generalized linear models in python 31 | 2. Setting up pytorch 32 | 3. Pip and conda. 33 | 4. Project: prediction Alzheimer's disease status using the ADNI database. 34 | 6. Lab on running deep networks in python 35 | 1. Project: convoluational neural network for lesion segmentation. 36 | 7. Lab on running deep networks and evaluation 37 | 1. Project: evaluation of a NN algorithm for "Early Prediction of the Impending Onset of Septic Shock in Patients with Sepsis." 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /old/syllabus.md: -------------------------------------------------------------------------------- 1 | This is the old syllabus, look in the Teams site for the up to date syllabus 2 | 3 | # Introduction to data science syllabus 4 | 5 | * Instructors: Brian Caffo, Rai Winslow 6 | * Meeting time: Monday / Wednesday 3:00PM - 4:15PM (see below) 7 | * Office hours 8 | * TA office hours Friday 11:00AM - 11:50AM (see 9 | * Instructor office hours given over slack 10 | * Labs 11 | * Class location : online, asyncrhonous 12 | 13 | Books: 14 | 15 | * [Regression Models](https://leanpub.com/regmods) 16 | * [Goodfellow, Benjio and Courville, Deep Learning](https://www.deeplearningbook.org/) 17 | 18 | # Projects 19 | The projects are in an ipython notebook [here](https://colab.research.google.com/drive/1uHsNQUcCzsGSjbNy2ypf1XqGceDzyFIN?usp=sharing) 20 | 21 | # Grading 22 | 23 | Weekly projects counted equally. 24 | 25 | ## Lab course 26 | 27 | The associated lab course is mandatory. 28 | 29 | ## Colab ipython notebooks 30 | 31 | * [Notebook 1, some basic python and data input and munging](https://colab.research.google.com/drive/1oswpzvkRaphIkoTqXqa244kUWBSJfDw5) 32 | * [Notebook 2, simple classification and evaluation](https://colab.research.google.com/drive/1JzktE6vya812O6lbCy7rzrrt1YCAdIfE) 33 | * [Notebook 3, regression prediction](https://colab.research.google.com/drive/1rWDI6uNhLtwN8KPMPt5mhYaPqDixzWbQ) 34 | * [Notebook 4, regression classification](https://colab.research.google.com/drive/1Yc04O2KNHJ5GBFYE2Krt8cwJeNHwfOMb) 35 | 36 | ## Hand written notes 37 | 38 | I'll put a link to handwritten notes from the lectures here 39 | 40 | ## Class delivery 41 | This class will be delivered via recorded lectures. Instructor office 42 | hours will be held during a subset of course times, as well as others 43 | to accomodate foreign students in different time zones. Course 44 | communication will be held over slack. Invites to the slack group will 45 | be sent over email. 46 | 47 | * Recorded lectures (links will be posted here as well as the slack website) 48 | * Slack discussions 49 | * Live instructor office hours 50 | * Live TA office hours 51 | * Weekly projects to be handed in over github classroom 52 | * This github course site 53 | 54 | ## Lectures 55 | 56 | ## Class intstruction schedule and due dates 57 | 58 | ``` 59 | * Date , Instr, Due 60 | * 8/31 , Brian, 61 | * 9/2 , Brian, 62 | * 9/7 , Off , 63 | * 9/9 , Brian, Project 1 (note delayed due date) 64 | * 9/14 , Brian, Project 2 65 | * 9/16 , Brian, 66 | * 9/21 , Brian, Project 3 67 | * 9/23 , Brian, 68 | * 9/28 , Brian, Project 4 69 | * 9/30 , Brian, 70 | * 10/5 , Rai , Project 5 71 | * 10/7 , Rai , 72 | * 10/12, Rai , 73 | * 10/14, Rai , Project 6 74 | * 10/19, Rai , 75 | * 10/21, Rai , Project 7 76 | ``` 77 | 78 | ## Software / websites 79 | * [Google colab](https://colab.research.google.com/notebooks/intro.ipynb) we'll use colab to demonstrate some basics 80 | * [Azure notebooks](https://notebooks.azure.com/) we'll use this to demonstrate ipython notebooks 81 | * [Anaconda](https://www.anaconda.com/) For installing python, spyder and ipython notebooks locally 82 | * [git](https://git-scm.com/) Comes with most unix-like systems pre installed. If using Windows, install git 83 | * [github](www.github.com) 84 | 85 | 86 | ## Topics 87 | 0. Introduction to data science for BME 88 | 1. Git, Github 89 | 0. Google Colab 90 | 2. [Markdown](https://www.markdownguide.org/basic-syntax/) 91 | 3. Exploratory data analysis 92 | 4. [Reproducible research, replication crisis, some relevant links](https://github.com/bcaffo/ds4bme/blob/master/reproducible.md) 93 | 5. Computational topics: python and frameworks. 94 | 6. Example: reading in some MRI Cloud data 95 | 7. Grading and course structure; github classroom. 96 | 1. Introduction to classification and prediction 97 | 1. Classification with one continuous predictor and thresholding 98 | 2. Simple regression prediction through the origin 99 | 3. Loss functions, squared error, cross entropy 100 | 4. Example with voxel data 101 | 5. Computational topics, loading a simple dataset into a python notebook and creating a simple prediction algorithm 102 | 2. Linear separable models 103 | 1. Least squares prediction in a linear model 104 | 2. Binary least squares prediction with cross entropy error. 105 | 3. Example 106 | 4. Computational topics, building a linear model in python 107 | 3. Simple neural networks 108 | 1. Correspondence between network diagrams and loss functions 109 | 2. Example: fitting XOR with a neural network 110 | 3. Example: linear regression as a one layer 111 | 4. Example: binary logistic regression as a one layer NN 112 | 5. Example with MRI cloud data 113 | 6. Computational topics: installing pytorch (or TF?), pip or conda, ... 114 | 4. Deep neural networks 115 | 1. Fitting and back propagation 116 | 2. Dropout and regularization; bagging 117 | 3. Modern computational issues, GPU computing 118 | 4. Frameworks (TF, pytorch, ...) 119 | 5. Example: handwritten digit classification 120 | 6. Example: siamese network prediction using a deep neural network. 121 | 5. Special networks 122 | 1. Convoluational NNs. 123 | 2. Recurrent NNs. 124 | 3. Autoencoders. 125 | 4. Example: cats versus dogs 126 | 5. Example: hand written digits 127 | 6. Example: activity classification ? 128 | 6. Evaluation 129 | 1. Overfitting 130 | 2. Evaluation metrics 131 | 3. Generalizability 132 | 4. Missing data 133 | 134 | -------------------------------------------------------------------------------- /old/test: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /presentations/lecture1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DS4BME 2021 Lecture 1 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 25 | 26 | 27 |
28 |
29 |

DS4BME 2021 Lecture 1

Brian Caffo

Created: 2021-09-01 Wed 11:04

30 |
31 |
32 |

Table of Contents

33 | 55 |
56 |
57 | 58 |
59 |
60 |

1 Welcome

61 |
62 |
63 |
64 |
65 |

1.1 Instructors

66 |
67 |
68 |
69 |
70 |

1.1.1 Main class

71 |
    72 |
  • Brian Caffo
  • 73 |
  • Joseph Greenstein
  • 74 | 75 |
76 |
77 |
78 |

1.1.2 Lab

79 |
    80 |
  • Kwame Kutten
  • 81 | 82 |
83 | 84 |
85 |
86 |
87 |
88 |

2 Important

89 |

90 | Get on the Teams site: 91 |

92 |
    93 |
  • Most important information will be given out over the General channel
  • 94 |
  • TA and Instructor office hours will be done on teams 95 |
      96 |
    • Go to the Office Hour channel and click on the video link
    • 97 | 98 |
  • 99 |
  • Main lectures given over zoom. Zoom link for Brian’s lectures will be the same 100 |
      101 |
    • Under General then Files you will find the course materials
    • 102 | 103 |
  • 104 | 105 |
106 | 107 |
108 |
109 |
110 |
111 |

3 TAs

112 |
    113 |
  • We’re still adding TAs and have not met yet, so we’ll introduce all of the TAs at the next meeting
  • 114 | 115 |
116 |

117 | TAs will assist with grading and run the Friday office hours 118 |

119 | 120 |
121 |
122 |
123 |
124 |

4 Software to install / try

125 |
    126 |
  • Google colab (cloud)
  • 127 |
  • Repl.it (cloud)
  • 128 |
  • Anaconda (local)
  • 129 |
  • Git (local)
  • 130 |
  • Github (cloud)
  • 131 |
  • Github desktop software (local)
  • 132 |
  • VS code (local)
  • 133 | 134 |
135 | 136 |
137 |
138 |
139 |
140 |

5 Projects

141 |
    142 |
  • Equally weighted projects, one per week
  • 143 |
  • Submitted via github classroom
  • 144 |
  • Note difference between github and github classroom
  • 145 |
  • Projects due Mondays at 5, unless Monday is a holiday then it wil be Tuesday at 5
  • 146 |
  • First project being written, it will only take a few minutes
  • 147 | 148 |
149 | 150 |
151 |
152 |
153 |
154 |

6 Grading

155 |
    156 |
  • Equally weighted projects
  • 157 |
  • Standard grading cutoffs
  • 158 |
  • Plus grades given for exceptional performance
  • 159 | 160 |
161 | 162 |
163 |
164 |
165 |
166 |

7 Syllabus / curriculum

167 |
    168 |
  • Under the channel General, then Files, then Class Materials
  • 169 |
  • Reminder to go through the syllabus
  • 170 | 171 |
172 | 173 |
174 |
175 |
176 |
177 |

8 Software

178 |
    179 |
  • Start to cover git, github, github classroom
  • 180 |
  • Markdown
  • 181 |
  • Google colab
  • 182 | 183 |
184 | 185 |
186 |
187 |
188 |
189 |

9 Code of conduct in the class

190 |
    191 |
  • Be nice!
  • 192 |
  • Be charitable about mistakes …
  • 193 |
  • Questions to the Teams site
  • 194 |
  • Instructor / TA communication to the Teams site (via chat)
  • 195 |
  • Do you own work, but feel free to ask questions, public on the Teams site better
  • 196 |
  • Everything that happens on Teams, stays on Teams (don't repost elsewhere)
  • 197 | 198 |
199 |
200 |
201 |
202 |
203 | 204 | 205 | 206 | 207 | 208 | 209 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /presentations/lecture1.org: -------------------------------------------------------------------------------- 1 | #+Title: DS4BME 2021 Lecture 1 2 | #+Author: Brian Caffo 3 | #+EPRESENT_FRAME_LEVEL: 1 4 | 5 | * Welcome 6 | ** Instructors 7 | *** Main class 8 | - Brian Caffo 9 | - Joseph Greenstein 10 | *** Lab 11 | - Kwame Kutten 12 | 13 | * Important 14 | Get on the Teams site: 15 | - Most important information will be given out over the General channel 16 | - TA and Instructor office hours will be done on teams 17 | - Go to the Office Hour channel and click on the video link 18 | - Main lectures given over zoom. Zoom link for Brian’s lectures will be the same 19 | - Under General then Files you will find the course materials 20 | 21 | * TAs 22 | - We’re still adding TAs and have not met yet, so we’ll introduce all of the TAs at the next meeting 23 | TAs will assist with grading and run the Friday office hours 24 | 25 | * Software to install / try 26 | - Google colab (cloud) 27 | - Repl.it (cloud) 28 | - Anaconda (local) 29 | - Git (local) 30 | - Github (cloud) 31 | - Github desktop software (local) 32 | - VS code (local) 33 | 34 | * Projects 35 | - Equally weighted projects, one per week 36 | - Submitted via github classroom 37 | - Note difference between github and github classroom 38 | - Projects due Mondays at 5, unless Monday is a holiday then it wil be Tuesday at 5 39 | - First project being written, it will only take a few minutes 40 | 41 | * Grading 42 | - Equally weighted projects 43 | - Standard grading cutoffs 44 | - Plus grades given for exceptional performance 45 | 46 | * Syllabus / curriculum 47 | - Under the channel General, then Files, then Class Materials 48 | - Reminder to go through the syllabus 49 | 50 | * Software 51 | - Start to cover git, github, github classroom 52 | - Markdown 53 | - Google colab 54 | 55 | * Code of conduct in the class 56 | - Be nice! 57 | - Be charitable about mistakes ... 58 | - Questions to the Teams site 59 | - Instructor / TA communication to the Teams site (via chat) 60 | - Do you own work, but feel free to ask questions, public on the Teams site better 61 | - Everything that happens on Teams, stays on Teams (don't repost elsewhere) 62 | -------------------------------------------------------------------------------- /presentations/lecture2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DS4BME 2021 Lecture 2 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 25 | 26 | 27 |
28 |
29 |

DS4BME 2021 Lecture 2

Brian Caffo

Created: 2021-09-01 Wed 13:33

30 |
31 |
48 |
49 | 50 |
51 |
52 |

1 Reminders

53 |
    54 |
  • Get on the teams site!
  • 55 |
  • First project posted
  • 56 |
  • Take the quiz with your name and github username
  • 57 |
  • Watch the first video if you missed the first class
  • 58 | 59 |
60 | 61 |
62 |
63 |
64 |
65 |

2 First project

66 |
    67 |
  • Reminder to go through the first project
  • 68 |
  • Due a week from Thursday
  • 69 |
  • No class on Monday
  • 70 | 71 |
72 | 73 |
74 |
75 |
76 |
77 |

3 TA sessions and office hour

78 |
    79 |
  • 11 - 12 to 1 - 4 on Fridays
  • 80 |
  • Go to the Office hours teams channel and click video link
  • 81 |
  • Instructor office hour 12 - 1 on Friday
  • 82 |
  • Also, by appointment
  • 83 | 84 |
85 | 86 |
87 |
88 |
89 |
90 |

4 TAs

91 |
    92 |
  • Chunming Gu (Lead TA)
  • 93 |
  • Yuta Kobayashi
  • 94 |
  • Marc Di Meo
  • 95 |
  • Dennis Gong
  • 96 |
  • Cassandra Parent
  • 97 | 98 |
99 | 100 |
101 |
102 |
103 |
104 |

5 TAs lab session

105 |
    106 |
  • Kalen Clifton (Lead TA)
  • 107 |
  • Ranjani Ramasubramanian
  • 108 |
  • Kevin Rao
  • 109 |
  • Yuan Zhou
  • 110 | 111 |
112 | 113 |
114 |
115 |
116 |
117 |

6 Thank you to the graders

118 |
    119 |
  • Samantha Weed
  • 120 |
  • Selena Kim
  • 121 |
  • Samantha “Sam” Tam
  • 122 |
  • Sundari Parise
  • 123 |
  • David Wang
  • 124 |
  • Min Joo
  • 125 |
  • Lily Zhu
  • 126 |
  • Ryan Zhao
  • 127 | 128 |
129 | 130 |
131 |
132 |
133 |
134 |

7 Notes I'm following

135 | 141 | 142 |
143 |
144 |
145 |
146 |

8 Things to cover on github

147 |
    148 |
  • Your worst enemy
  • 149 |
  • Version control
  • 150 |
  • Github basics
  • 151 |
  • Differences with github classroom
  • 152 | 153 |
154 | 155 |
156 |
157 |
158 |
159 |

9 Steps to cover

160 |
    161 |
  • Creating a repository
  • 162 |
  • Cloning a repository
  • 163 |
  • Forking a repository
  • 164 |
  • Adding files
  • 165 |
  • Deleting/moving/renaming files
  • 166 |
  • GH pages
  • 167 | 168 |
169 | 170 |
171 |
172 |
173 |
174 |

10 Getting started with programming with data

175 |
    176 |
  • Reading in data
  • 177 | 178 |
179 |
180 |
181 |
182 |
183 | 184 | 185 | 186 | 187 | 188 | 189 | 205 | 206 | 207 | -------------------------------------------------------------------------------- /presentations/lecture2.org: -------------------------------------------------------------------------------- 1 | #+Title: DS4BME 2021 Lecture 2 2 | #+Author: Brian Caffo 3 | #+EPRESENT_FRAME_LEVEL: 1 4 | 5 | * Reminders 6 | + Get on the teams site! 7 | + First project posted 8 | + Take the quiz with your name and github *username* 9 | + Watch the first video if you missed the first class 10 | 11 | * First project 12 | + Reminder to go through the first project 13 | + Due a week from Thursday 14 | + No class on Monday 15 | 16 | * TA sessions and office hour 17 | + 11 - 12 to 1 - 4 on Fridays 18 | + Go to the Office hours teams channel and click video link 19 | + Instructor office hour 12 - 1 on Friday 20 | + Also, by appointment 21 | 22 | * TAs 23 | + Chunming Gu (Lead TA) 24 | + Yuta Kobayashi 25 | + Marc Di Meo 26 | + Dennis Gong 27 | + Cassandra Parent 28 | 29 | * TAs lab session 30 | + Kalen Clifton (Lead TA) 31 | + Ranjani Ramasubramanian 32 | + Kevin Rao 33 | + Yuan Zhou 34 | 35 | * Thank you to the graders 36 | + Samantha Weed 37 | + Selena Kim 38 | + Samantha “Sam” Tam 39 | + Sundari Parise 40 | + David Wang 41 | + Min Joo 42 | + Lily Zhu 43 | + Ryan Zhao 44 | 45 | * Notes I'm following 46 | + [[https://bcaffo.github.io/ds4bio_book/_build/html/05-functions.html][Book]] 47 | + [[https://github.com/bcaffo/ds4bio_book][github repo for the book]] 48 | + [[https://github.com/bcaffo/ds4bme_intro][Course github site]] 49 | 50 | * Things to cover on github 51 | + Your worst enemy 52 | + Version control 53 | + Github basics 54 | + Differences with github classroom 55 | 56 | * Steps to cover 57 | + Creating a repository 58 | + Cloning a repository 59 | + Forking a repository 60 | + Adding files 61 | + Deleting/moving/renaming files 62 | + GH pages 63 | 64 | * Getting started with programming with data 65 | + Reading in data 66 | --------------------------------------------------------------------------------