1<!DOCTYPE html> 2 3<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> 4 5<head> 6 <meta charset="utf-8"/> 7<!-- This site is hosted on Netlify. Anyone can build and deploy a site 8 like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=ab0ce3c8-c477-4f82-a0ee-037dc555cb61 9 Netlify hosting facts for this site: static/SSR served via Netlify Edge. --> 10 <meta name="viewport" content="width=device-width, initial-scale=1"/> 11 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/> 12 <meta name="generator" content="distill" /> 13 14 <style type="text/css"> 15 /* Hide doc at startup (prevent jankiness while JS renders/transforms) */ 16 body { 17 visibility: hidden; 18 } 19 </style> 20 21 <!--radix_placeholder_import_source--> 22 <!--/radix_placeholder_import_source--> 23 24<style type="text/css">code{white-space: pre;}</style> 25<style type="text/css" data-origin="pandoc"> 26pre > code.sourceCode { white-space: pre; position: relative; } 27pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } 28pre > code.sourceCode > span:empty { height: 1.2em; } 29.sourceCode { overflow: visible; } 30code.sourceCode > span { color: inherit; text-decoration: inherit; } 31div.sourceCode { margin: 1em 0; } 32pre.sourceCode { margin: 0; } 33@media screen { 34div.sourceCode { overflow: auto; } 35} 36@media print { 37pre > code.sourceCode { white-space: pre-wrap; } 38pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } 39} 40pre.numberSource code 41 { counter-reset: source-line 0; } 42pre.numberSource code > span 43 { position: relative; left: -4em; counter-increment: source-line; } 44pre.numberSource code > span > a:first-child::before 45 { content: counter(source-line); 46 position: relative; left: -1em; text-align: right; vertical-align: baseline; 47 border: none; display: inline-block; 48 -webkit-touch-callout: none; -webkit-user-select: none; 49 -khtml-user-select: none; -moz-user-select: none; 50 -ms-user-select: none; user-select: none; 51 padding: 0 4px; width: 4em; 52 color: #aaaaaa; 53 } 54pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } 55div.sourceCode 56 { color: #00769e; background-color: #f1f3f5; } 57@media screen { 58pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } 59} 60code span { color: #00769e; } /* Normal */ 61code span.al { color: #ad0000; } /* Alert */ 62code span.an { color: #5e5e5e; } /* Annotation */ 63code span.at { color: #657422; } /* Attribute */ 64code span.bn { color: #ad0000; } /* BaseN */ 65code span.bu { } /* BuiltIn */ 66code span.cf { color: #00769e; } /* ControlFlow */ 67code span.ch { color: #20794d; } /* Char */ 68code span.cn { color: #8f5902; } /* Constant */ 69code span.co { color: #5e5e5e; } /* Comment */ 70code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */ 71code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */ 72code span.dt { color: #ad0000; } /* DataType */ 73code span.dv { color: #ad0000; } /* DecVal */ 74code span.er { color: #ad0000; } /* Error */ 75code span.ex { } /* Extension */ 76code span.fl { color: #ad0000; } /* Float */ 77code span.fu { color: #4758ab; } /* Function */ 78code span.im { } /* Import */ 79code span.in { color: #5e5e5e; } /* Information */ 80code span.kw { color: #00769e; } /* Keyword */ 81code span.op { color: #5e5e5e; } /* Operator */ 82code span.ot { color: #00769e; } /* Other */ 83code span.pp { color: #ad0000; } /* Preprocessor */ 84code span.sc { color: #5e5e5e; } /* SpecialChar */ 85code span.ss { color: #20794d; } /* SpecialString */ 86code span.st { color: #20794d; } /* String */ 87code span.va { color: #111111; } /* Variable */ 88code span.vs { color: #20794d; } /* VerbatimString */ 89code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ 90</style> 91 92 93 <!--radix_placeholder_meta_tags--> 94 <title>Applied Machine Learning for Educational Data Science</title> 95 96 <meta property="description" itemprop="description" content="The fourth course in the Educational Data Science specialization at the University of Oregon"/> 97 98 <link rel="license" href="https://creativecommons.org/licenses/by/4.0/"/> 99 100 101 <!-- https://developers.facebook.com/docs/sharing/webmasters#markup --> 102 <meta property="og:title" content="Applied Machine Learning for Educational Data Science"/> 103 <meta property="og:type" content="article"/> 104 <meta property="og:description" content="The fourth course in the Educational Data Science specialization at the University of Oregon"/> 105 <meta property="og:locale" content="en_US"/> 106 <meta property="og:site_name" content="Applied Machine Learning for Educational Data Science"/> 107 108 <!-- https://dev.twitter.com/cards/types/summary --> 109 <meta property="twitter:card" content="summary"/> 110 <meta property="twitter:title" content="Applied Machine Learning for Educational Data Science"/> 111 <meta property="twitter:description" content="The fourth course in the Educational Data Science specialization at the University of Oregon"/> 112 113 <!--/radix_placeholder_meta_tags--> 114 <!--radix_placeholder_rmarkdown_metadata--> 115 116
116<script type="text/json" id="radix-rmarkdown-metadata"> 117 {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title","description","site"]}},"value":[{"type":"character","attributes":{},"value":["Applied Machine Learning for Educational Data Science"]},{"type":"character","attributes":{},"value":["The fourth course in the Educational Data Science specialization at the University of Oregon\n"]},{"type":"character","attributes":{},"value":["distill::distill_website"]}]} 118 </script>
118 119 <!--/radix_placeholder_rmarkdown_metadata--> 120 <!--radix_placeholder_navigation_in_header--> 121 <meta name="distill:offset" content=""/> 122 123
123<script type="application/javascript"> 124 125 window.headroom_prevent_pin = false; 126 127 window.document.addEventListener("DOMContentLoaded", function (event) { 128 129 // initialize headroom for banner 130 var header = $('header').get(0); 131 var headerHeight = header.offsetHeight; 132 var headroom = new Headroom(header, { 133 tolerance: 5, 134 onPin : function() { 135 if (window.headroom_prevent_pin) { 136 window.headroom_prevent_pin = false; 137 headroom.unpin(); 138 } 139 } 140 }); 141 headroom.init(); 142 if(window.location.hash) 143 headroom.unpin(); 144 $(header).addClass('headroom--transition'); 145 146 // offset scroll location for banner on hash change 147 // (see: https://github.com/WickyNilliams/headroom.js/issues/38) 148 window.addEventListener("hashchange", function(event) { 149 window.scrollTo(0, window.pageYOffset - (headerHeight + 25)); 150 }); 151 152 // responsive menu 153 $('.distill-site-header').each(function(i, val) { 154 var topnav = $(this); 155 var toggle = topnav.find('.nav-toggle'); 156 toggle.on('click', function() { 157 topnav.toggleClass('responsive'); 158 }); 159 }); 160 161 // nav dropdowns 162 $('.nav-dropbtn').click(function(e) { 163 $(this).next('.nav-dropdown-content').toggleClass('nav-dropdown-active'); 164 $(this).parent().siblings('.nav-dropdown') 165 .children('.nav-dropdown-content').removeClass('nav-dropdown-active'); 166 }); 167 $("body").click(function(e){ 168 $('.nav-dropdown-content').removeClass('nav-dropdown-active'); 169 }); 170 $(".nav-dropdown").click(function(e){ 171 e.stopPropagation(); 172 }); 173 }); 174 </script>
174 175 176 <style type="text/css"> 177 178 /* Theme (user-documented overrideables for nav appearance) */ 179 180 .distill-site-nav { 181 color: rgba(255, 255, 255, 0.8); 182 background-color: #0F2E3D; 183 font-size: 15px; 184 font-weight: 300; 185 } 186 187 .distill-site-nav a { 188 color: inherit; 189 text-decoration: none; 190 } 191 192 .distill-site-nav a:hover { 193 color: white; 194 } 195 196 @media print { 197 .distill-site-nav { 198 display: none; 199 } 200 } 201 202 .distill-site-header { 203 204 } 205 206 .distill-site-footer { 207 208 } 209 210 211 /* Site Header */ 212 213 .distill-site-header { 214 width: 100%; 215 box-sizing: border-box; 216 z-index: 3; 217 } 218 219 .distill-site-header .nav-left { 220 display: inline-block; 221 margin-left: 8px; 222 } 223 224 @media screen and (max-width: 768px) { 225 .distill-site-header .nav-left { 226 margin-left: 0; 227 } 228 } 229 230 231 .distill-site-header .nav-right { 232 float: right; 233 margin-right: 8px; 234 } 235 236 .distill-site-header a, 237 .distill-site-header .title { 238 display: inline-block; 239 text-align: center; 240 padding: 14px 10px 14px 10px; 241 } 242 243 .distill-site-header .title { 244 font-size: 18px; 245 min-width: 150px; 246 } 247 248 .distill-site-header .logo { 249 padding: 0; 250 } 251 252 .distill-site-header .logo img { 253 display: none; 254 max-height: 20px; 255 width: auto; 256 margin-bottom: -4px; 257 } 258 259 .distill-site-header .nav-image img { 260 max-height: 18px; 261 width: auto; 262 display: inline-block; 263 margin-bottom: -3px; 264 } 265 266 267 268 @media screen and (min-width: 1000px) { 269 .distill-site-header .logo img { 270 display: inline-block; 271 } 272 .distill-site-header .nav-left { 273 margin-left: 20px; 274 } 275 .distill-site-header .nav-right { 276 margin-right: 20px; 277 } 278 .distill-site-header .title { 279 padding-left: 12px; 280 } 281 } 282 283 284 .distill-site-header .nav-toggle { 285 display: none; 286 } 287 288 .nav-dropdown { 289 display: inline-block; 290 position: relative; 291 } 292 293 .nav-dropdown .nav-dropbtn { 294 border: none; 295 outline: none; 296 color: rgba(255, 255, 255, 0.8); 297 padding: 16px 10px; 298 background-color: transparent; 299 font-family: inherit; 300 font-size: inherit; 301 font-weight: inherit; 302 margin: 0;
303 margin-top: 1px; 304 z-index: 2; 305 } 306 307 .nav-dropdown-content { 308 display: none; 309 position: absolute; 310 background-color: white; 311 min-width: 200px; 312 border: 1px solid rgba(0,0,0,0.15); 313 border-radius: 4px; 314 box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1); 315 z-index: 1; 316 margin-top: 2px; 317 white-space: nowrap; 318 padding-top: 4px; 319 padding-bottom: 4px; 320 } 321 322 .nav-dropdown-content hr { 323 margin-top: 4px; 324 margin-bottom: 4px; 325 border: none; 326 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 327 } 328 329 .nav-dropdown-active { 330 display: block; 331 } 332 333 .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header { 334 color: black; 335 padding: 6px 24px; 336 text-decoration: none; 337 display: block; 338 text-align: left; 339 } 340 341 .nav-dropdown-content .nav-dropdown-header { 342 display: block; 343 padding: 5px 24px; 344 padding-bottom: 0; 345 text-transform: uppercase; 346 font-size: 14px; 347 color: #999999; 348 white-space: nowrap; 349 } 350 351 .nav-dropdown:hover .nav-dropbtn { 352 color: white; 353 } 354 355 .nav-dropdown-content a:hover { 356 background-color: #ddd; 357 color: black; 358 } 359 360 .nav-right .nav-dropdown-content { 361 margin-left: -45%; 362 right: 0; 363 } 364 365 @media screen and (max-width: 768px) { 366 .distill-site-header a, .distill-site-header .nav-dropdown {display: none;} 367 .distill-site-header a.nav-toggle { 368 float: right; 369 display: block; 370 } 371 .distill-site-header .title { 372 margin-left: 0; 373 } 374 .distill-site-header .nav-right { 375 margin-right: 0; 376 } 377 .distill-site-header { 378 overflow: hidden; 379 } 380 .nav-right .nav-dropdown-content { 381 margin-left: 0; 382 } 383 } 384 385 386 @media screen and (max-width: 768px) { 387 .distill-site-header.responsive {position: relative; min-height: 500px; } 388 .distill-site-header.responsive a.nav-toggle { 389 position: absolute; 390 right: 0; 391 top: 0; 392 } 393 .distill-site-header.responsive a, 394 .distill-site-header.responsive .nav-dropdown { 395 display: block; 396 text-align: left; 397 } 398 .distill-site-header.responsive .nav-left, 399 .distill-site-header.responsive .nav-right { 400 width: 100%; 401 } 402 .distill-site-header.responsive .nav-dropdown {float: none;} 403 .distill-site-header.responsive .nav-dropdown-content {position: relative;} 404 .distill-site-header.responsive .nav-dropdown .nav-dropbtn { 405 display: block; 406 width: 100%; 407 text-align: left; 408 } 409 } 410 411 /* Site Footer */ 412 413 .distill-site-footer { 414 width: 100%; 415 overflow: hidden; 416 box-sizing: border-box; 417 z-index: 3; 418 margin-top: 30px; 419 padding-top: 30px; 420 padding-bottom: 30px; 421 text-align: center; 422 } 423 424 /* Headroom */ 425 426 d-title { 427 padding-top: 6rem; 428 } 429 430 @media print { 431 d-title { 432 padding-top: 4rem; 433 } 434 } 435 436 .headroom { 437 z-index: 1000; 438 position: fixed; 439 top: 0; 440 left: 0; 441 right: 0; 442 } 443 444 .headroom--transition { 445 transition: all .4s ease-in-out; 446 } 447 448 .headroom--unpinned { 449 top: -100px; 450 } 451 452 .headroom--pinned { 453 top: 0; 454 } 455 456 /* adjust viewport for navbar height */ 457 /* helps vertically center bootstrap (non-distill) content */ 458 .min-vh-100 { 459 min-height: calc(100vh - 100px) !important; 460 } 461 462 </style> 463 464
464<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
464 465 <link href="site_libs/font-awesome-5.1.0/css/all.css" rel="stylesheet"/> 466 <link href="site_libs/font-awesome-5.1.0/css/v4-shims.css" rel="stylesheet"/> 467
467<script src="site_libs/headroom-0.9.4/headroom.min.js"></script>
467 468
468<script src="site_libs/autocomplete-0.37.1/autocomplete.min.js"></script>
468 469
469<script src="site_libs/fuse-6.4.1/fuse.min.js"></script>
469 470 471
471<script type="application/javascript"> 472 473 function getMeta(metaName) { 474 var metas = document.getElementsByTagName('meta'); 475 for (let i = 0; i < metas.length; i++) { 476 if (metas[i].getAttribute('name') === metaName) { 477 return metas[i].getAttribute('content'); 478 } 479 } 480 return ''; 481 } 482 483 function offsetURL(url) { 484 var offset = getMeta('distill:offset'); 485 return offset ? offset + '/' + url : url; 486 } 487 488 function createFuseIndex() { 489 490 // create fuse index 491 var options = { 492 keys: [ 493 { name: 'title', weight: 20 }, 494 { name: 'categories', weight: 15 }, 495 { name: 'description', weight: 10 }, 496 { name: 'contents', weight: 5 }, 497 ], 498 ignoreLocation: true, 499 threshold: 0 500 }; 501 var fuse = new window.Fuse([], options); 502 503 // fetch the main search.json 504 return fetch(offsetURL('search.json')) 505 .then(function(response) { 506 if (response.status == 200) { 507 return response.json().then(function(json) { 508 // index main articles 509 json.articles.forEach(function(article) { 510 fuse.add(article); 511 }); 512 // download collections and index their articles 513 return Promise.all(json.collections.map(function(collection) { 514 return fetch(offsetURL(collection)).then(function(response) { 515 if (response.status === 200) { 516 return response.json().then(function(articles) { 517 articles.forEach(function(article) { 518 fuse.add(article); 519 }); 520 }) 521 } else { 522 return Promise.reject( 523 new Error('Unexpected status from search index request: ' + 524 response.status) 525 ); 526 } 527 }); 528 })).then(function() { 529 return fuse; 530 }); 531 }); 532 533 } else { 534 return Promise.reject( 535 new Error('Unexpected status from search index request: ' + 536 response.status) 537 ); 538 } 539 }); 540 } 541 542 window.document.addEventListener("DOMContentLoaded", function (event) { 543 544 // get search element (bail if we don't have one) 545 var searchEl = window.document.getElementById('distill-search'); 546 if (!searchEl) 547 return; 548 549 createFuseIndex() 550 .then(function(fuse) { 551 552 // make search box visible 553 searchEl.classList.remove('hidden'); 554 555 // initialize autocomplete 556 var options = { 557 autoselect: true, 558 hint: false, 559 minLength: 2, 560 }; 561 window.autocomplete(searchEl, options, [{ 562 source: function(query, callback) { 563 const searchOptions = { 564 isCaseSensitive: false, 565 shouldSort: true, 566 minMatchCharLength: 2, 567 limit: 10, 568 }; 569 var results = fuse.search(query, searchOptions); 570 callback(results 571 .map(function(result) { return result.item; }) 572 ); 573 }, 574 templates: { 575 suggestion: function(suggestion) { 576 var img = suggestion.preview && Object.keys(suggestion.preview).length > 0 577 ? `<img src="${offsetURL(suggestion.preview)}"</img>` 578 : ''; 579 var html = ` 580 <div class="search-item"> 581 <h3>${suggestion.title}</h3> 582 <div class="search-item-description"> 583 ${suggestion.description || ''} 584 </div> 585 <div class="search-item-preview"> 586 ${img} 587 </div> 588 </div> 589 `; 590 return html; 591 } 592 } 593 }]).on('autocomplete:selected', function(event, suggestion) { 594 window.location.href = offsetURL(suggestion.path); 595 }); 596 // remove inline display style on autocompleter (we want to 597 // manage responsive display via css) 598 $('.algolia-autocomplete').css("display", ""); 599 }) 600 .catch(function(error) { 601 console.log(error); 602 }); 603 604 }); 605 606 </script>
606 607 608 <style type="text/css"> 609 610 .nav-search { 611 font-size: x-small; 612 } 613 614 /* Algolioa Autocomplete */ 615 616 .algolia-autocomplete { 617 display: inline-block; 618 margin-left: 10px; 619 vertical-align: sub; 620 background-color: white; 621 color: black; 622 padding: 6px; 623 padding-top: 8px; 624 padding-bottom: 0; 625 border-radius: 6px; 626 border: 1px #0F2E3D solid; 627 width: 180px; 628 } 629 630 631 @media screen and (max-width: 768px) { 632 .distill-site-nav .algolia-autocomplete { 633 display: none; 634 visibility: hidden; 635 } 636 .distill-site-nav.responsive .algolia-autocomplete { 637 display: inline-block; 638 visibility: visible; 639 } 640 .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu { 641 margin-left: 0; 642 width: 400px; 643 max-height: 400px; 644 } 645 } 646 647 .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint { 648 width: 90%; 649 outline: none; 650 border: none; 651 } 652 653 .algolia-autocomplete .aa-hint { 654 color: #999; 655 } 656 .algolia-autocomplete .aa-dropdown-menu { 657 width: 550px; 658 max-height: 70vh; 659 overflow-x: visible; 660 overflow-y: scroll; 661 padding: 5px; 662 margin-top: 3px; 663 margin-left: -150px; 664 background-color: #fff; 665 border-radius: 5px; 666 border: 1px solid #999; 667 border-top: none; 668 } 669 670 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion { 671 cursor: pointer; 672 padding: 5px 4px; 673 border-bottom: 1px solid #eee; 674 } 675 676 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type { 677 border-bottom: none; 678 margin-bottom: 2px; 679 } 680 681 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item { 682 overflow: hidden; 683 font-size: 0.8em; 684 line-height: 1.4em; 685 } 686 687 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 { 688 font-size: 1rem; 689 margin-block-start: 0; 690 margin-block-end: 5px; 691 } 692 693 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description { 694 display: inline-block; 695 overflow: hidden; 696 height: 2.8em; 697 width: 80%; 698 margin-right: 4%; 699 } 700 701 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview { 702 display: inline-block; 703 width: 15%; 704 } 705 706 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img { 707 height: 3em; 708 width: auto; 709 display: none; 710 } 711 712 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img[src] { 713 display: initial; 714 } 715 716 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { 717 background-color: #eee; 718 } 719 .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em { 720 font-weight: bold; 721 font-style: normal; 722 } 723 724 </style> 725 726 727 <!--/radix_placeholder_navigation_in_header--> 728 <!--radix_placeholder_distill--> 729 730 <style type="text/css"> 731 732 body { 733 background-color: white; 734 } 735 736 .pandoc-table { 737 width: 100%; 738 } 739 740 .pandoc-table>caption { 741 margin-bottom: 10px; 742 } 743 744 .pandoc-table th:not([align]) { 745 text-align: left; 746 } 747 748 .pagedtable-footer { 749 font-size: 15px; 750 } 751 752 d-byline .byline { 753 grid-template-columns: 2fr 2fr; 754 } 755 756 d-byline .byline h3 { 757 margin-block-start: 1.5em; 758 } 759 760 d-byline .byline .authors-affiliations h3 { 761 margin-block-start: 0.5em; 762 } 763 764 .authors-affiliations .orcid-id { 765 width: 16px; 766 height:16px; 767 margin-left: 4px; 768 margin-right: 4px; 769 vertical-align: middle; 770 padding-bottom: 2px; 771 } 772 773 d-title .dt-tags { 774 margin-top: 1em; 775 grid-column: text; 776 } 777 778 .dt-tags .dt-tag { 779 text-decoration: none; 780 display: inline-block; 781 color: rgba(0,0,0,0.6); 782 padding: 0em 0.4em; 783 margin-right: 0.5em; 784 margin-bottom: 0.4em; 785 font-size: 70%; 786 border: 1px solid rgba(0,0,0,0.2); 787 border-radius: 3px; 788 text-transform: uppercase; 789 font-weight: 500; 790 } 791 792 d-article table.gt_table td, 793 d-article table.gt_table th { 794 border-bottom: none; 795 } 796 797 .html-widget { 798 margin-bottom: 2.0em; 799 } 800 801 .l-screen-inset { 802 padding-right: 16px; 803 } 804 805 .l-screen .caption { 806 margin-left: 10px; 807 } 808 809 .shaded { 810 background: rgb(247, 247, 247); 811 padding-top: 20px; 812 padding-bottom: 20px; 813 border-top: 1px solid rgba(0, 0, 0, 0.1); 814 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 815 } 816 817 .shaded .html-widget { 818 margin-bottom: 0; 819 border: 1px solid rgba(0, 0, 0, 0.1); 820 } 821 822 .shaded .shaded-content { 823 background: white; 824 } 825 826 .text-output { 827 margin-top: 0;
828 line-height: 1.5em; 829 } 830 831 .hidden { 832 display: none !important; 833 } 834 835 d-article { 836 padding-top: 2.5rem; 837 padding-bottom: 30px; 838 } 839 840 d-appendix { 841 padding-top: 30px; 842 } 843 844 d-article>p>img { 845 width: 100%; 846 } 847 848 d-article h2 { 849 margin: 1rem 0 1.5rem 0; 850 } 851 852 d-article h3 { 853 margin-top: 1.5rem; 854 } 855 856 d-article iframe { 857 border: 1px solid rgba(0, 0, 0, 0.1); 858 margin-bottom: 2.0em; 859 width: 100%; 860 } 861 862 /* Tweak code blocks */ 863 864 d-article div.sourceCode code, 865 d-article pre code { 866 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 867 } 868 869 d-article pre, 870 d-article div.sourceCode, 871 d-article div.sourceCode pre { 872 overflow: auto; 873 } 874 875 d-article div.sourceCode { 876 background-color: white; 877 } 878 879 d-article div.sourceCode pre { 880 padding-left: 10px; 881 font-size: 12px; 882 border-left: 2px solid rgba(0,0,0,0.1); 883 } 884 885 d-article pre { 886 font-size: 12px; 887 color: black; 888 background: none; 889 margin-top: 0; 890 text-align: left; 891 white-space: pre; 892 word-spacing: normal; 893 word-break: normal; 894 word-wrap: normal; 895 line-height: 1.5; 896 897 -moz-tab-size: 4; 898 -o-tab-size: 4; 899 tab-size: 4; 900 901 -webkit-hyphens: none; 902 -moz-hyphens: none; 903 -ms-hyphens: none; 904 hyphens: none; 905 } 906 907 d-article pre a { 908 border-bottom: none; 909 } 910 911 d-article pre a:hover { 912 border-bottom: none; 913 text-decoration: underline; 914 } 915 916 d-article details { 917 grid-column: text; 918 margin-bottom: 0.8em; 919 } 920 921 @media(min-width: 768px) { 922 923 d-article pre, 924 d-article div.sourceCode, 925 d-article div.sourceCode pre { 926 overflow: visible !important; 927 } 928 929 d-article div.sourceCode pre { 930 padding-left: 18px; 931 font-size: 14px; 932 } 933 934 d-article pre { 935 font-size: 14px; 936 } 937 938 } 939 940 figure img.external { 941 background: white; 942 border: 1px solid rgba(0, 0, 0, 0.1); 943 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 944 padding: 18px; 945 box-sizing: border-box; 946 } 947 948 /* CSS for d-contents */ 949 950 .d-contents { 951 grid-column: text; 952 color: rgba(0,0,0,0.8); 953 font-size: 0.9em; 954 padding-bottom: 1em; 955 margin-bottom: 1em; 956 padding-bottom: 0.5em; 957 margin-bottom: 1em; 958 padding-left: 0.25em; 959 justify-self: start; 960 } 961 962 @media(min-width: 1000px) { 963 .d-contents.d-contents-float { 964 height: 0; 965 grid-column-start: 1; 966 grid-column-end: 4; 967 justify-self: center; 968 padding-right: 3em; 969 padding-left: 2em; 970 } 971 } 972 973 .d-contents nav h3 { 974 font-size: 18px; 975 margin-top: 0; 976 margin-bottom: 1em; 977 } 978 979 .d-contents li { 980 list-style-type: none 981 } 982 983 .d-contents nav > ul { 984 padding-left: 0; 985 } 986 987 .d-contents ul { 988 padding-left: 1em 989 } 990 991 .d-contents nav ul li { 992 margin-top: 0.6em; 993 margin-bottom: 0.2em; 994 } 995 996 .d-contents nav a { 997 font-size: 13px; 998 border-bottom: none; 999 text-decoration: none 1000 color: rgba(0, 0, 0, 0.8); 1001 } 1002 1003 .d-contents nav a:hover { 1004 text-decoration: underline solid rgba(0, 0, 0, 0.6) 1005 } 1006 1007 .d-contents nav > ul > li > a { 1008 font-weight: 600; 1009 } 1010 1011 .d-contents nav > ul > li > ul { 1012 font-weight: inherit; 1013 } 1014 1015 .d-contents nav > ul > li > ul > li { 1016 margin-top: 0.2em; 1017 } 1018 1019 1020 .d-contents nav ul { 1021 margin-top: 0; 1022 margin-bottom: 0.25em; 1023 } 1024 1025 .d-article-with-toc h2:nth-child(2) { 1026 margin-top: 0; 1027 } 1028 1029 1030 /* Figure */ 1031 1032 .figure { 1033 position: relative; 1034 margin-bottom: 2.5em; 1035 margin-top: 1.5em; 1036 } 1037 1038 .figure .caption { 1039 color: rgba(0, 0, 0, 0.6); 1040 font-size: 12px; 1041 line-height: 1.5em; 1042 } 1043 1044 .figure img.external { 1045 background: white; 1046 border: 1px solid rgba(0, 0, 0, 0.1); 1047 box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 1048 padding: 18px; 1049 box-sizing: border-box; 1050 } 1051 1052 .figure .caption a { 1053 color: rgba(0, 0, 0, 0.6); 1054 } 1055 1056 .figure .caption b, 1057 .figure .caption strong, { 1058 font-weight: 600; 1059 color: rgba(0, 0, 0, 1.0); 1060 } 1061 1062 /* Citations */ 1063 1064 d-article .citation { 1065 color: inherit; 1066 cursor: inherit; 1067 } 1068 1069 div.hanging-indent{ 1070 margin-left: 1em; text-indent: -1em; 1071 } 1072 1073 /* Citation hover box */ 1074 1075 .tippy-box[data-theme~=light-border] { 1076 background-color: rgba(250, 250, 250, 0.95); 1077 } 1078 1079 .tippy-content > p { 1080 margin-bottom: 0; 1081 padding: 2px; 1082 } 1083 1084 1085 /* Tweak 1000px media break to show more text */ 1086 1087 @media(min-width: 1000px) { 1088 .base-grid, 1089 distill-header, 1090 d-title, 1091 d-abstract, 1092 d-article, 1093 d-appendix, 1094 distill-appendix, 1095 d-byline, 1096 d-footnote-list, 1097 d-citation-list, 1098 distill-footer { 1099 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 80px [middle-start] 50px [text-start kicker-end] 65px 65px 65px 65px 65px 65px 65px 65px [text-end gutter-start] 65px [middle-end] 65px [page-end gutter-end] 1fr [screen-end]; 1100 grid-column-gap: 16px; 1101 } 1102 1103 .grid { 1104 grid-column-gap: 16px; 1105 } 1106 1107 d-article { 1108 font-size: 1.06rem; 1109 line-height: 1.7em; 1110 } 1111 figure .caption, .figure .caption, figure figcaption { 1112 font-size: 13px; 1113 } 1114 } 1115 1116 @media(min-width: 1180px) { 1117 .base-grid, 1118 distill-header, 1119 d-title, 1120 d-abstract, 1121 d-article, 1122 d-appendix, 1123 distill-appendix, 1124 d-byline, 1125 d-footnote-list, 1126 d-citation-list, 1127 distill-footer { 1128 grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end]; 1129 grid-column-gap: 32px; 1130 } 1131 1132 .grid { 1133 grid-column-gap: 32px; 1134 } 1135 } 1136 1137 1138 /* Get the citation styles for the appendix (not auto-injected on render since 1139 we do our own rendering of the citation appendix) */ 1140 1141 d-appendix .citation-appendix, 1142 .d-appendix .citation-appendix { 1143 font-size: 11px; 1144 line-height: 15px; 1145 border-left: 1px solid rgba(0, 0, 0, 0.1); 1146 padding-left: 18px; 1147 border: 1px solid rgba(0,0,0,0.1); 1148 background: rgba(0, 0, 0, 0.02); 1149 padding: 10px 18px; 1150 border-radius: 3px; 1151 color: rgba(150, 150, 150, 1); 1152 overflow: hidden; 1153 margin-top: -12px; 1154 white-space: pre-wrap; 1155 word-wrap: break-word; 1156 } 1157 1158 /* Include appendix styles here so they can be overridden */ 1159 1160 d-appendix { 1161 contain: layout style; 1162 font-size: 0.8em; 1163 line-height: 1.7em; 1164 margin-top: 60px; 1165 margin-bottom: 0; 1166 border-top: 1px solid rgba(0, 0, 0, 0.1); 1167 color: rgba(0,0,0,0.5); 1168 padding-top: 60px; 1169 padding-bottom: 48px; 1170 } 1171 1172 d-appendix h3 { 1173 grid-column: page-start / text-start; 1174 font-size: 15px; 1175 font-weight: 500; 1176 margin-top: 1em; 1177 margin-bottom: 0; 1178 color: rgba(0,0,0,0.65); 1179 } 1180 1181 d-appendix h3 + * { 1182 margin-top: 1em; 1183 } 1184 1185 d-appendix ol { 1186 padding: 0 0 0 15px; 1187 } 1188 1189 @media (min-width: 768px) { 1190 d-appendix ol { 1191 padding: 0 0 0 30px; 1192 margin-left: -30px; 1193 } 1194 } 1195 1196 d-appendix li { 1197 margin-bottom: 1em; 1198 } 1199 1200 d-appendix a { 1201 color: rgba(0, 0, 0, 0.6); 1202 } 1203 1204 d-appendix > * { 1205 grid-column: text; 1206 } 1207 1208 d-appendix > d-footnote-list, 1209 d-appendix > d-citation-list, 1210 d-appendix > distill-appendix { 1211 grid-column: screen;
1212 } 1213 1214 /* Include footnote styles here so they can be overridden */ 1215 1216 d-footnote-list { 1217 contain: layout style; 1218 } 1219 1220 d-footnote-list > * { 1221 grid-column: text; 1222 } 1223 1224 d-footnote-list a.footnote-backlink { 1225 color: rgba(0,0,0,0.3); 1226 padding-left: 0.5em; 1227 } 1228 1229 1230 1231 /* Anchor.js */ 1232 1233 .anchorjs-link { 1234 /*transition: all .25s linear; */ 1235 text-decoration: none; 1236 border-bottom: none; 1237 } 1238 *:hover > .anchorjs-link { 1239 margin-left: -1.125em !important; 1240 text-decoration: none; 1241 border-bottom: none; 1242 } 1243 1244 /* Social footer */ 1245 1246 .social_footer { 1247 margin-top: 30px; 1248 margin-bottom: 0; 1249 color: rgba(0,0,0,0.67); 1250 } 1251 1252 .disqus-comments { 1253 margin-right: 30px; 1254 } 1255 1256 .disqus-comment-count { 1257 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1258 cursor: pointer; 1259 } 1260 1261 #disqus_thread { 1262 margin-top: 30px; 1263 } 1264 1265 .article-sharing a { 1266 border-bottom: none; 1267 margin-right: 8px; 1268 } 1269 1270 .article-sharing a:hover { 1271 border-bottom: none; 1272 } 1273 1274 .sidebar-section.subscribe { 1275 font-size: 12px; 1276 line-height: 1.6em; 1277 } 1278 1279 .subscribe p { 1280 margin-bottom: 0.5em; 1281 } 1282 1283 1284 .article-footer .subscribe { 1285 font-size: 15px; 1286 margin-top: 45px; 1287 } 1288 1289 1290 .sidebar-section.custom { 1291 font-size: 12px; 1292 line-height: 1.6em; 1293 } 1294 1295 .custom p { 1296 margin-bottom: 0.5em; 1297 } 1298 1299 /* Styles for listing layout (hide title) */ 1300 .layout-listing d-title, .layout-listing .d-title { 1301 display: none; 1302 } 1303 1304 /* Styles for posts lists (not auto-injected) */ 1305 1306 1307 .posts-with-sidebar { 1308 padding-left: 45px; 1309 padding-right: 45px; 1310 } 1311 1312 .posts-list .description h2, 1313 .posts-list .description p { 1314 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1315 } 1316 1317 .posts-list .description h2 { 1318 font-weight: 700; 1319 border-bottom: none; 1320 padding-bottom: 0; 1321 } 1322 1323 .posts-list h2.post-tag { 1324 border-bottom: 1px solid rgba(0, 0, 0, 0.2); 1325 padding-bottom: 12px; 1326 } 1327 .posts-list { 1328 margin-top: 60px; 1329 margin-bottom: 24px; 1330 } 1331 1332 .posts-list .post-preview { 1333 text-decoration: none; 1334 overflow: hidden; 1335 display: block; 1336 border-bottom: 1px solid rgba(0, 0, 0, 0.1); 1337 padding: 24px 0; 1338 } 1339 1340 .post-preview-last { 1341 border-bottom: none !important; 1342 } 1343 1344 .posts-list .posts-list-caption { 1345 grid-column: screen; 1346 font-weight: 400; 1347 } 1348 1349 .posts-list .post-preview h2 { 1350 margin: 0 0 6px 0; 1351 line-height: 1.2em; 1352 font-style: normal; 1353 font-size: 24px; 1354 } 1355 1356 .posts-list .post-preview p { 1357 margin: 0 0 12px 0; 1358 line-height: 1.4em; 1359 font-size: 16px; 1360 } 1361 1362 .posts-list .post-preview .thumbnail { 1363 box-sizing: border-box; 1364 margin-bottom: 24px; 1365 position: relative; 1366 max-width: 500px; 1367 } 1368 .posts-list .post-preview img { 1369 width: 100%; 1370 display: block; 1371 } 1372 1373 .posts-list .metadata { 1374 font-size: 12px; 1375 line-height: 1.4em; 1376 margin-bottom: 18px; 1377 } 1378 1379 .posts-list .metadata > * { 1380 display: inline-block; 1381 } 1382 1383 .posts-list .metadata .publishedDate { 1384 margin-right: 2em; 1385 } 1386 1387 .posts-list .metadata .dt-authors { 1388 display: block; 1389 margin-top: 0.3em; 1390 margin-right: 2em; 1391 } 1392 1393 .posts-list .dt-tags { 1394 display: block; 1395 line-height: 1em; 1396 } 1397 1398 .posts-list .dt-tags .dt-tag { 1399 display: inline-block; 1400 color: rgba(0,0,0,0.6); 1401 padding: 0.3em 0.4em; 1402 margin-right: 0.2em; 1403 margin-bottom: 0.4em; 1404 font-size: 60%; 1405 border: 1px solid rgba(0,0,0,0.2); 1406 border-radius: 3px; 1407 text-transform: uppercase; 1408 font-weight: 500; 1409 } 1410 1411 .posts-list img { 1412 opacity: 1; 1413 } 1414 1415 .posts-list img[data-src] { 1416 opacity: 0; 1417 } 1418 1419 .posts-more { 1420 clear: both; 1421 } 1422 1423 1424 .posts-sidebar { 1425 font-size: 16px; 1426 } 1427 1428 .posts-sidebar h3 { 1429 font-size: 16px; 1430 margin-top: 0; 1431 margin-bottom: 0.5em; 1432 font-weight: 400; 1433 text-transform: uppercase; 1434 } 1435 1436 .sidebar-section { 1437 margin-bottom: 30px; 1438 } 1439 1440 .categories ul { 1441 list-style-type: none; 1442 margin: 0; 1443 padding: 0; 1444 } 1445 1446 .categories li { 1447 color: rgba(0, 0, 0, 0.8); 1448 margin-bottom: 0; 1449 } 1450 1451 .categories li>a { 1452 border-bottom: none; 1453 } 1454 1455 .categories li>a:hover { 1456 border-bottom: 1px solid rgba(0, 0, 0, 0.4); 1457 } 1458 1459 .categories .active { 1460 font-weight: 600; 1461 } 1462 1463 .categories .category-count { 1464 color: rgba(0, 0, 0, 0.4); 1465 } 1466 1467 1468 @media(min-width: 768px) { 1469 .posts-list .post-preview h2 { 1470 font-size: 26px; 1471 } 1472 .posts-list .post-preview .thumbnail { 1473 float: right; 1474 width: 30%; 1475 margin-bottom: 0; 1476 } 1477 .posts-list .post-preview .description { 1478 float: left; 1479 width: 45%; 1480 } 1481 .posts-list .post-preview .metadata { 1482 float: left; 1483 width: 20%; 1484 margin-top: 8px; 1485 } 1486 .posts-list .post-preview p { 1487 margin: 0 0 12px 0; 1488 line-height: 1.5em; 1489 font-size: 16px; 1490 } 1491 .posts-with-sidebar .posts-list { 1492 float: left; 1493 width: 75%; 1494 } 1495 .posts-with-sidebar .posts-sidebar { 1496 float: right; 1497 width: 20%; 1498 margin-top: 60px; 1499 padding-top: 24px; 1500 padding-bottom: 24px; 1501 } 1502 } 1503 1504 1505 /* Improve display for browsers without grid (IE/Edge <= 15) */ 1506 1507 .downlevel { 1508 line-height: 1.6em; 1509 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif; 1510 margin: 0; 1511 } 1512 1513 .downlevel .d-title { 1514 padding-top: 6rem; 1515 padding-bottom: 1.5rem; 1516 } 1517 1518 .downlevel .d-title h1 { 1519 font-size: 50px; 1520 font-weight: 700; 1521 line-height: 1.1em; 1522 margin: 0 0 0.5rem; 1523 } 1524 1525 .downlevel .d-title p { 1526 font-weight: 300; 1527 font-size: 1.2rem; 1528 line-height: 1.55em; 1529 margin-top: 0;
1530 } 1531 1532 .downlevel .d-byline { 1533 padding-top: 0.8em; 1534 padding-bottom: 0.8em; 1535 font-size: 0.8rem; 1536 line-height: 1.8em; 1537 } 1538 1539 .downlevel .section-separator { 1540 border: none; 1541 border-top: 1px solid rgba(0, 0, 0, 0.1); 1542 } 1543 1544 .downlevel .d-article { 1545 font-size: 1.06rem; 1546 line-height: 1.7em; 1547 padding-top: 1rem; 1548 padding-bottom: 2rem; 1549 } 1550 1551 1552 .downlevel .d-appendix { 1553 padding-left: 0; 1554 padding-right: 0; 1555 max-width: none; 1556 font-size: 0.8em; 1557 line-height: 1.7em; 1558 margin-bottom: 0; 1559 color: rgba(0,0,0,0.5); 1560 padding-top: 40px; 1561 padding-bottom: 48px; 1562 } 1563 1564 .downlevel .footnotes ol { 1565 padding-left: 13px; 1566 } 1567 1568 .downlevel .base-grid, 1569 .downlevel .distill-header, 1570 .downlevel .d-title, 1571 .downlevel .d-abstract, 1572 .downlevel .d-article, 1573 .downlevel .d-appendix, 1574 .downlevel .distill-appendix, 1575 .downlevel .d-byline, 1576 .downlevel .d-footnote-list, 1577 .downlevel .d-citation-list, 1578 .downlevel .distill-footer, 1579 .downlevel .appendix-bottom, 1580 .downlevel .posts-container { 1581 padding-left: 40px; 1582 padding-right: 40px; 1583 } 1584 1585 @media(min-width: 768px) { 1586 .downlevel .base-grid, 1587 .downlevel .distill-header, 1588 .downlevel .d-title, 1589 .downlevel .d-abstract, 1590 .downlevel .d-article, 1591 .downlevel .d-appendix, 1592 .downlevel .distill-appendix, 1593 .downlevel .d-byline, 1594 .downlevel .d-footnote-list, 1595 .downlevel .d-citation-list, 1596 .downlevel .distill-footer, 1597 .downlevel .appendix-bottom, 1598 .downlevel .posts-container { 1599 padding-left: 150px; 1600 padding-right: 150px; 1601 max-width: 900px; 1602 } 1603 } 1604 1605 .downlevel pre code { 1606 display: block; 1607 border-left: 2px solid rgba(0, 0, 0, .1); 1608 padding: 0 0 0 20px; 1609 font-size: 14px; 1610 } 1611 1612 .downlevel code, .downlevel pre { 1613 color: black; 1614 background: none; 1615 font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 1616 text-align: left; 1617 white-space: pre; 1618 word-spacing: normal; 1619 word-break: normal; 1620 word-wrap: normal; 1621 line-height: 1.5; 1622 1623 -moz-tab-size: 4; 1624 -o-tab-size: 4; 1625 tab-size: 4; 1626 1627 -webkit-hyphens: none; 1628 -moz-hyphens: none; 1629 -ms-hyphens: none; 1630 hyphens: none; 1631 } 1632 1633 .downlevel .posts-list .post-preview { 1634 color: inherit; 1635 } 1636 1637 1638 1639 </style> 1640 1641
1641<script type="application/javascript"> 1642 1643 function is_downlevel_browser() { 1644 if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"}, 1645 window.navigator.userAgent)) { 1646 return true; 1647 } else { 1648 return window.load_distill_framework === undefined; 1649 } 1650 } 1651 1652 // show body when load is complete 1653 function on_load_complete() { 1654 1655 // add anchors 1656 if (window.anchors) { 1657 window.anchors.options.placement = 'left'; 1658 window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5'); 1659 } 1660 1661 1662 // set body to visible 1663 document.body.style.visibility = 'visible'; 1664 1665 // force redraw for leaflet widgets 1666 if (window.HTMLWidgets) { 1667 var maps = window.HTMLWidgets.findAll(".leaflet"); 1668 $.each(maps, function(i, el) { 1669 var map = this.getMap(); 1670 map.invalidateSize(); 1671 map.eachLayer(function(layer) { 1672 if (layer instanceof L.TileLayer) 1673 layer.redraw(); 1674 }); 1675 }); 1676 } 1677 1678 // trigger 'shown' so htmlwidgets resize 1679 $('d-article').trigger('shown'); 1680 } 1681 1682 function init_distill() { 1683 1684 init_common(); 1685 1686 // create front matter 1687 var front_matter = $('<d-front-matter></d-front-matter>'); 1688 $('#distill-front-matter').wrap(front_matter); 1689 1690 // create d-title 1691 $('.d-title').changeElementType('d-title'); 1692 1693 // create d-byline 1694 var byline = $('<d-byline></d-byline>'); 1695 $('.d-byline').replaceWith(byline); 1696 1697 // create d-article 1698 var article = $('<d-article></d-article>'); 1699 $('.d-article').wrap(article).children().unwrap(); 1700 1701 // move posts container into article 1702 $('.posts-container').appendTo($('d-article')); 1703 1704 // create d-appendix 1705 $('.d-appendix').changeElementType('d-appendix'); 1706 1707 // flag indicating that we have appendix items 1708 var appendix = $('.appendix-bottom').children('h3').length > 0; 1709 1710 // replace footnotes with <d-footnote> 1711 $('.footnote-ref').each(function(i, val) { 1712 appendix = true; 1713 var href = $(this).attr('href'); 1714 var id = href.replace('#', ''); 1715 var fn = $('#' + id); 1716 var fn_p = $('#' + id + '>p'); 1717 fn_p.find('.footnote-back').remove(); 1718 var text = fn_p.html(); 1719 var dtfn = $('<d-footnote></d-footnote>'); 1720 dtfn.html(text); 1721 $(this).replaceWith(dtfn); 1722 }); 1723 // remove footnotes 1724 $('.footnotes').remove(); 1725 1726 // move refs into #references-listing 1727 $('#references-listing').replaceWith($('#refs')); 1728 1729 $('h1.appendix, h2.appendix').each(function(i, val) { 1730 $(this).changeElementType('h3'); 1731 }); 1732 $('h3.appendix').each(function(i, val) { 1733 var id = $(this).attr('id'); 1734 $('.d-contents a[href="#' + id + '"]').parent().remove(); 1735 appendix = true; 1736 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix')); 1737 }); 1738 1739 // show d-appendix if we have appendix content 1740 $("d-appendix").css('display', appendix ? 'grid' : 'none'); 1741 1742 // localize layout chunks to just output 1743 $('.layout-chunk').each(function(i, val) { 1744 1745 // capture layout 1746 var layout = $(this).attr('data-layout'); 1747 1748 // apply layout to markdown level block elements 1749 var elements = $(this).children().not('details, div.sourceCode, pre, script'); 1750 elements.each(function(i, el) { 1751 var layout_div = $('<div class="' + layout + '"></div>'); 1752 if (layout_div.hasClass('shaded')) { 1753 var shaded_content = $('<div class="shaded-content"></div>'); 1754 $(this).wrap(shaded_content); 1755 $(this).parent().wrap(layout_div); 1756 } else { 1757 $(this).wrap(layout_div); 1758 } 1759 }); 1760 1761 1762 // unwrap the layout-chunk div 1763 $(this).children().unwrap(); 1764 }); 1765 1766 // remove code block used to force highlighting css 1767 $('.distill-force-highlighting-css').parent().remove(); 1768 1769 // remove empty line numbers inserted by pandoc when using a 1770 // custom syntax highlighting theme 1771 $('code.sourceCode a:empty').remove(); 1772 1773 // load distill framework 1774 load_distill_framework(); 1775 1776 // wait for window.distillRunlevel == 4 to do post processing 1777 function distill_post_process() { 1778 1779 if (!window.distillRunlevel || window.distillRunlevel < 4) 1780 return; 1781 1782 // hide author/affiliations entirely if we have no authors 1783 var front_matter = JSON.parse($("#distill-front-matter").html()); 1784 var have_authors = front_matter.authors && front_matter.authors.length > 0;
1785 if (!have_authors) 1786 $('d-byline').addClass('hidden'); 1787 1788 // article with toc class 1789 $('.d-contents').parent().addClass('d-article-with-toc'); 1790 1791 // strip links that point to # 1792 $('.authors-affiliations').find('a[href="#"]').removeAttr('href'); 1793 1794 // add orcid ids 1795 $('.authors-affiliations').find('.author').each(function(i, el) { 1796 var orcid_id = front_matter.authors[i].orcidID; 1797 if (orcid_id) { 1798 var a = $('<a></a>'); 1799 a.attr('href', 'https://orcid.org/' + orcid_id); 1800 var img = $('<img></img>'); 1801 img.addClass('orcid-id'); 1802 img.attr('alt', 'ORCID ID'); 1803 img.attr('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg=='); 1804 a.append(img); 1805 $(this).append(a); 1806 } 1807 }); 1808 1809 // hide elements of author/affiliations grid that have no value 1810 function hide_byline_column(caption) { 1811 $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden'); 1812 } 1813 1814 // affiliations 1815 var have_affiliations = false; 1816 for (var i = 0; i<front_matter.authors.length; ++i) { 1817 var author = front_matter.authors[i]; 1818 if (author.affiliation !== " ") { 1819 have_affiliations = true; 1820 break; 1821 } 1822 } 1823 if (!have_affiliations) 1824 $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden'); 1825 1826 // published date 1827 if (!front_matter.publishedDate) 1828 hide_byline_column("Published"); 1829 1830 // document object identifier 1831 var doi = $('d-byline').find('h3:contains("DOI")'); 1832 var doi_p = doi.next().empty(); 1833 if (!front_matter.doi) { 1834 // if we have a citation and valid citationText then link to that 1835 if ($('#citation').length > 0 && front_matter.citationText) { 1836 doi.html('Citation'); 1837 $('<a href="#citation"></a>') 1838 .text(front_matter.citationText) 1839 .appendTo(doi_p); 1840 } else { 1841 hide_byline_column("DOI"); 1842 } 1843 } else { 1844 $('<a></a>') 1845 .attr('href', "https://doi.org/" + front_matter.doi) 1846 .html(front_matter.doi) 1847 .appendTo(doi_p); 1848 } 1849 1850 // change plural form of authors/affiliations 1851 if (front_matter.authors.length === 1) { 1852 var grid = $('.authors-affiliations'); 1853 grid.children('h3:contains("Authors")').text('Author'); 1854 grid.children('h3:contains("Affiliations")').text('Affiliation'); 1855 } 1856 1857 // remove d-appendix and d-footnote-list local styles 1858 $('d-appendix > style:first-child').remove(); 1859 $('d-footnote-list > style:first-child').remove(); 1860 1861 // move appendix-bottom entries to the bottom 1862 $('.appendix-bottom').appendTo('d-appendix').children().unwrap(); 1863 $('.appendix-bottom').remove(); 1864 1865 // hoverable references 1866 $('span.citation[data-cites]').each(function() { 1867 if ($(this).children()[0].nodeName == "D-FOOTNOTE") { 1868 var fn = $(this).children()[0] 1869 $(this).html(fn.shadowRoot.querySelector("sup")) 1870 $(this).id = fn.id 1871 fn.remove() 1872 } 1873 var refs = $(this).attr('data-cites').split(" "); 1874 var refHtml = refs.map(function(ref) { 1875 return "<p>" + $('#ref-' + ref).html() + "</p>"; 1876 }).join("\n"); 1877 window.tippy(this, { 1878 allowHTML: true, 1879 content: refHtml, 1880 maxWidth: 500, 1881 interactive: true, 1882 interactiveBorder: 10, 1883 theme: 'light-border', 1884 placement: 'bottom-start' 1885 }); 1886 }); 1887 1888 // fix footnotes in tables (#411) 1889 // replacing broken distill.pub feature 1890 $('table d-footnote').each(function() { 1891 // we replace internal showAtNode methode which is triggered when hovering a footnote
1892 this.hoverBox.showAtNode = function(node) { 1893 // ported from https://github.com/distillpub/template/pull/105/files 1894 calcOffset = function(elem) { 1895 let x = elem.offsetLeft; 1896 let y = elem.offsetTop; 1897 // Traverse upwards until an `absolute` element is found or `elem` 1898 // becomes null. 1899 while (elem = elem.offsetParent && elem.style.position != 'absolute') { 1900 x += elem.offsetLeft; 1901 y += elem.offsetTop; 1902 } 1903 1904 return { left: x, top: y }; 1905 } 1906 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop 1907 const bbox = node.getBoundingClientRect(); 1908 const offset = calcOffset(node); 1909 this.show([offset.left + bbox.width, offset.top + bbox.height]); 1910 } 1911 }) 1912 1913 // clear polling timer 1914 clearInterval(tid); 1915 1916 // show body now that everything is ready 1917 on_load_complete(); 1918 } 1919 1920 var tid = setInterval(distill_post_process, 50); 1921 distill_post_process(); 1922 1923 } 1924 1925 function init_downlevel() { 1926 1927 init_common(); 1928 1929 // insert hr after d-title 1930 $('.d-title').after($('<hr class="section-separator"/>')); 1931 1932 // check if we have authors 1933 var front_matter = JSON.parse($("#distill-front-matter").html()); 1934 var have_authors = front_matter.authors && front_matter.authors.length > 0; 1935
1936 // manage byline/border 1937 if (!have_authors) 1938 $('.d-byline').remove(); 1939 $('.d-byline').after($('<hr class="section-separator"/>')); 1940 $('.d-byline a').remove(); 1941 1942 // remove toc 1943 $('.d-contents').remove(); 1944 1945 // move appendix elements 1946 $('h1.appendix, h2.appendix').each(function(i, val) { 1947 $(this).changeElementType('h3'); 1948 }); 1949 $('h3.appendix').each(function(i, val) { 1950 $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix')); 1951 }); 1952 1953 1954 // inject headers into references and footnotes 1955 var refs_header = $('<h3></h3>'); 1956 refs_header.text('References'); 1957 $('#refs').prepend(refs_header); 1958 1959 var footnotes_header = $('<h3></h3'); 1960 footnotes_header.text('Footnotes'); 1961 $('.footnotes').children('hr').first().replaceWith(footnotes_header); 1962 1963 // move appendix-bottom entries to the bottom 1964 $('.appendix-bottom').appendTo('.d-appendix').children().unwrap(); 1965 $('.appendix-bottom').remove(); 1966 1967 // remove appendix if it's empty 1968 if ($('.d-appendix').children().length === 0) 1969 $('.d-appendix').remove(); 1970 1971 // prepend separator above appendix 1972 $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>')); 1973 1974 // trim code 1975 $('pre>code').each(function(i, val) { 1976 $(this).html($.trim($(this).html())); 1977 }); 1978 1979 // move posts-container right before article 1980 $('.posts-container').insertBefore($('.d-article')); 1981 1982 $('body').addClass('downlevel'); 1983 1984 on_load_complete(); 1985 } 1986 1987 1988 function init_common() { 1989 1990 // jquery plugin to change element types 1991 (function($) { 1992 $.fn.changeElementType = function(newType) { 1993 var attrs = {}; 1994 1995 $.each(this[0].attributes, function(idx, attr) { 1996 attrs[attr.nodeName] = attr.nodeValue; 1997 }); 1998 1999 this.replaceWith(function() { 2000 return $("<" + newType + "/>", attrs).append($(this).contents()); 2001 }); 2002 }; 2003 })(jQuery); 2004 2005 // prevent underline for linked images 2006 $('a > img').parent().css({'border-bottom' : 'none'}); 2007 2008 // mark non-body figures created by knitr chunks as 100% width 2009 $('.layout-chunk').each(function(i, val) { 2010 var figures = $(this).find('img, .html-widget'); 2011 // ignore leaflet img layers (#106) 2012 figures = figures.filter(':not(img[class*="leaflet"])') 2013 if ($(this).attr('data-layout') !== "l-body") { 2014 figures.css('width', '100%'); 2015 } else { 2016 figures.css('max-width', '100%'); 2017 figures.filter("[width]").each(function(i, val) { 2018 var fig = $(this); 2019 fig.css('width', fig.attr('width') + 'px'); 2020 }); 2021 2022 } 2023 }); 2024 2025 // auto-append index.html to post-preview links in file: protocol 2026 // and in rstudio ide preview 2027 $('.post-preview').each(function(i, val) { 2028 if (window.location.protocol === "file:") 2029 $(this).attr('href', $(this).attr('href') + "index.html"); 2030 }); 2031 2032 // get rid of index.html references in header 2033 if (window.location.protocol !== "file:") { 2034 $('.distill-site-header a[href]').each(function(i,val) { 2035 $(this).attr('href', $(this).attr('href').replace(/^index[.]html/, "./")); 2036 }); 2037 } 2038 2039 // add class to pandoc style tables 2040 $('tr.header').parent('thead').parent('table').addClass('pandoc-table'); 2041 $('.kable-table').children('table').addClass('pandoc-table'); 2042 2043 // add figcaption style to table captions 2044 $('caption').parent('table').addClass("figcaption"); 2045 2046 // initialize posts list 2047 if (window.init_posts_list) 2048 window.init_posts_list(); 2049 2050 // implmement disqus comment link 2051 $('.disqus-comment-count').click(function() { 2052 window.headroom_prevent_pin = true; 2053 $('#disqus_thread').toggleClass('hidden'); 2054 if (!$('#disqus_thread').hasClass('hidden')) { 2055 var offset = $(this).offset(); 2056 $(window).resize(); 2057 $('html, body').animate({ 2058 scrollTop: offset.top - 35 2059 }); 2060 } 2061 }); 2062 } 2063 2064 document.addEventListener('DOMContentLoaded', function() { 2065 if (is_downlevel_browser()) 2066 init_downlevel(); 2067 else 2068 window.addEventListener('WebComponentsReady', init_distill); 2069 }); 2070 2071 </script>
2071 2072 2073 <!--/radix_placeholder_distill--> 2074
2074<script src="site_libs/header-attrs-2.14/header-attrs.js"></script>
2074 2075
2075<script src="site_libs/popper-2.6.0/popper.min.js"></script>
2075 2076 <link href="site_libs/tippy-6.2.7/tippy.css" rel="stylesheet" /> 2077 <link href="site_libs/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" /> 2078
2078<script src="site_libs/tippy-6.2.7/tippy.umd.min.js"></script>
2078 2079
2079<script src="site_libs/anchor-4.2.2/anchor.min.js"></script>
2079 2080
2080<script src="site_libs/bowser-1.9.3/bowser.min.js"></script>
2080 2081
2081<script src="site_libs/webcomponents-2.0.0/webcomponents.js"></script>
2081 2082
2082<script src="site_libs/distill-2.2.21/template.v2.js"></script>
2082 2083 <!--radix_placeholder_site_in_header-->
vendor: 116 bytes, lines 2083-2084
2083 2084 <script type="text/javascript" cookie-consent="tracking" async src="https://www.googletagmanager.com/gtag/js?id=
2084G-1RQZJC7E05
vendor: 15 bytes, lines 2084-2085
2084"></script> 2085
2085<script type="text/javascript" cookie-consent="tracking"> 2086
vendor: 136 bytes, lines 2086-2089
2086window.dataLayer = window.dataLayer || []; 2087 function gtag(){dataLayer.push(arguments);} 2088 gtag('js', new Date()); 2089 gtag('config', '
2089G-1RQZJC7E05
vendor: 7 bytes, lines 2089-2090
2089'); 2090
2090</script>
2090 2091 <!--/radix_placeholder_site_in_header--> 2092 2093 2094</head> 2095 2096<body> 2097 2098<!--radix_placeholder_front_matter--> 2099
2100<script id="distill-front-matter" type="text/json"> 2101{"title":"Applied Machine Learning for Educational Data Science","description":"The fourth course in the Educational Data Science specialization at the University of Oregon","authors":[]} 2102</script>
2102 2103 2104<!--/radix_placeholder_front_matter--> 2105<!--radix_placeholder_navigation_before_body--> 2106<header class="header header--fixed" role="banner"> 2107<nav class="distill-site-nav distill-site-header"> 2108<div class="nav-left"> 2109<a class='title' href='/'>Applied Machine Learning for Educational Data Science</a> 2110</div> 2111<div class="nav-right"> 2112<a href='/'>Home</a> 2113<a href='/syllabus'>Syllabus</a> 2114<a href='/schedule'>Schedule</a> 2115<div class="nav-dropdown"> 2116<button class="nav-dropbtn"> 2117Lecture Notes 2118 2119<span class="down-arrow">▾</span> 2120</button> 2121<div class="nav-dropdown-content"> 2122<a href='/lecture-1'>Lecture-1</a> 2123<a href='/lecture-2a'>Lecture-2a</a> 2124<a href='/lecture-2b'>Lecture-2b</a> 2125<a href='/lecture-3a'>Lecture-3a</a> 2126<a href='/lecture-3b'>Lecture-3b</a> 2127<a href='/lecture-4'>Lecture-4</a> 2128<a href='/lecture-5'>Lecture-5</a> 2129<a href='/lecture-6a'>Lecture-6a</a> 2130<a href='/lecture-6b'>Lecture-6b</a> 2131<a href='/lecture-7a'>Lecture-7a</a> 2132<a href='/lecture-7b'>Lecture-7b</a> 2133</div> 2134</div> 2135<div class="nav-dropdown"> 2136<button class="nav-dropbtn"> 2137Kaggle Notebooks 2138 2139<span class="down-arrow">▾</span> 2140</button> 2141<div class="nav-dropdown-content"> 2142<a href="https://www.kaggle.com/code/uocoeeds/week-1-introduction/notebook">Notebook-1</a> 2143<a href="https://www.kaggle.com/code/uocoeeds/lecture-2a-data-preprocessing-i">Notebook-2a</a> 2144<a href="https://www.kaggle.com/code/uocoeeds/lecture-2b-data-preprocessing-ii">Notebook-2b</a> 2145<a href="https://www.kaggle.com/code/uocoeeds/the-recipes-package-demo">The {recipes} demo</a> 2146<a href="https://www.kaggle.com/code/uocoeeds/lecture-3a-overview-of-linear-regression">Notebook-3a</a> 2147<a href="https://www.kaggle.com/code/uocoeeds/lecture-3b-review-of-bias-variance-tradeoff">Notebook-3b</a> 2148<a href="https://www.kaggle.com/code/uocoeeds/building-a-prediction-model-with-cross-validation">Building Linear Models with `caret`</a> 2149<a href="https://www.kaggle.com/code/uocoeeds/lecture-4-regularized-penalized-regression">Notebook-4</a> 2150<a href="https://www.kaggle.com/code/uocoeeds/building-a-ridge-regression-model">Building a Ridge Regression Model</a> 2151<a href="https://www.kaggle.com/code/uocoeeds/building-a-lasso-regression-model">Building a Lasso Regression Model</a> 2152<a href="https://www.kaggle.com/code/uocoeeds/building-a-regression-model-with-elastic-net">
2152Building an Elastic Net Model</a> 2153<a href="https://www.kaggle.com/code/uocoeeds/using-the-prediction-models-for-a-new-text">Using the Existing Models to Predict Outcome for New Observations</a> 2154<a href="https://www.kaggle.com/code/uocoeeds/building-a-logistic-regression-model/notebook">Building a Logistic Regression Model</a> 2155<a href="https://www.kaggle.com/code/uocoeeds/building-a-classification-model-with-ridge-penalty/">Building a Classification Model with Ridge Penalty</a> 2156<a href="https://www.kaggle.com/code/uocoeeds/building-a-classification-model-with-lasso-penalty">Building a Classification Model with Lasso Penalty</a> 2157<a href="https://www.kaggle.com/code/uocoeeds/building-a-classification-model-with-elastic-net">Building a Classification Model with Elastic Net</a> 2158<a href="https://www.kaggle.com/code/uocoeeds/building-a-prediction-model-using-knn">Building a Prediction Model with K-nearest neighbors</a> 2159<a href="https://www.kaggle.com/code/uocoeeds/building-a-classification-model-using-knn">Building a Classification Model with K-nearest neighbors</a> 2160<a href="https://www.kaggle.com/uocoeeds/building-a-prediction-model-using-a-decision-tree">Building a Prediction Model with a Decision Tree</a> 2161<a href="https://www.kaggle.com/code/uocoeeds/building-a-classification-tree-algorithm">Building a Classification Model with a Decision Tree</a> 2162</div> 2163</div> 2164<div class="nav-dropdown"> 2165<button class="nav-dropbtn"> 2166Slides 2167 2168<span class="down-arrow">▾</span> 2169</button> 2170<div class="nav-dropdown-content"> 2171<a href='/slides/slide1'>Week 1</a> 2172<a href='/slides/slide2'>Week 2</a> 2173<a href='/slides/slide3'>Week 3 & 4</a> 2174<a href='/slides/slide4'>Week 5</a> 2175<a href='/slides/slide5'>Week 6 & 7</a> 2176<a href='/slides/slide6a'>Week 8_Part 1</a> 2177<a href='/slides/slide6b'>Week 8_Part 2</a> 2178</div> 2179</div> 2180<div class="nav-dropdown"> 2181<button class="nav-dropbtn"> 2182Assignments 2183 2184<span class="down-arrow">▾</span> 2185</button> 2186<div class="nav-dropdown-content"> 2187<a href="https://www.kaggle.com/code/uocoeeds/assignment-1">Assignment1</a> 2188<a href="https://www.kaggle.com/code/uocoeeds/assignment-2">Assignment2</a> 2189<a href="https://www.kaggle.com/code/uocoeeds/assignment-3">Assignment3</a> 2190</div> 2191</div> 2192<a href="https://github.com/uo-datasci-specialization/c4-ml-fall-2022"> 2193<i class="fa fa-github" aria-hidden="true"></i> 2194</a> 2195<a href="javascript:void(0);" class="nav-toggle">☰</a> 2196</div> 2197</nav> 2198</header> 2199<!--/radix_placeholder_navigation_before_body--> 2200<!--radix_placeholder_site_before_body--> 2201<!--/radix_placeholder_site_before_body--> 2202 2203<div class="d-title"> 2204<h1>Applied Machine Learning for Educational Data Science</h1> 2205<!--radix_placeholder_categories--> 2206<!--/radix_placeholder_categories--> 2207<p><p>The fourth course in the Educational Data Science specialization 2208at the University of Oregon</p></p> 2209</div> 2210 2211 2212<div class="d-article"> 2213<p>This course focuses on applied machine learning (ML), with an 2214emphasis on supervised This course is the fourth in a sequence of 2215courses on educational data science (EDS), taught using free and 2216open-source statistical programming languages. EDLD 654: Machine 2217Learning for Educational Data Science aims to teach how to apply several 2218predictive modeling approaches to educational and social science 2219datasets, emphasizing supervised learning methods that have emerged over 2220the last several decades. The primary goal of these methods is to create 2221models capable of making accurate predictions, which generally implies 2222less emphasis on statistical inference.</p> 2223<p>By the end of this course, students will be able to</p> 2224<ul> 2225<li><p>pre-process continuous, categorical, and text data to extract 2226meaningful features to include in a predictive model,</p></li> 2227<li><p>describe the framework of supervised learning methods, modeling 2228process, and how it differs from standard inferential 2229statistics,</p></li> 2230<li><p>construct various supervised learning models for both 2231classification- and regression-based problems, including linear and
2232logistic regression (for prediction rather than inference), penalized 2233regression (ridge/lasso), various decision tree models (including bagged 2234trees and random forests), and k-nearest neighbor models,</p></li> 2235<li><p>discuss the bias-variance tradeoff in supervised learning and 2236apply the concept in making decisions about model selection,</p></li> 2237<li><p>measure and contrast the performance of various models.</p></li> 2238</ul> 2239<div class="sourceCode" id="cb1"><pre 2240class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div> 2241<!--radix_placeholder_article_footer--> 2242<!--/radix_placeholder_article_footer--> 2243</div> 2244 2245<div class="d-appendix"> 2246</div> 2247 2248 2249<!--radix_placeholder_site_after_body--> 2250<!--/radix_placeholder_site_after_body--> 2251<!--radix_placeholder_appendices--> 2252<div class="appendix-bottom"> 2253<h3 id="reuse">Reuse</h3> 2254<p>Text and figures are licensed under Creative Commons Attribution <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".</p> 2255</div> 2256<!--/radix_placeholder_appendices--> 2257<!--radix_placeholder_navigation_after_body--> 2258<div class="distill-site-nav distill-site-footer"> 2259<center> 2260<p> Cengiz Zopluoglu, [email protected] </p> 2261<p> Made using <a href="https://rstudio.github.io/distill/website.html"> the Distill for R Markdown</a> in 2262<a href = "https://www.rstudio.com"> RStudio.</a></p> 2263<p>Copyright © 2022 Cengiz Zopluoglu. All rights reserved.</p> 2264</center> 2265</div> 2266<!--/radix_placeholder_navigation_after_body--> 2267 2268 2269</body> 2270 2271</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.