CINXE.COM

paulvanderlaken.com – Disentangling Data Science

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="http://gmpg.org/xfn/11"> <link rel="pingback" href="https://paulvanderlaken.com/xmlrpc.php"> <title>paulvanderlaken.com &#8211; Disentangling Data Science</title> <script type="text/javascript"> WebFontConfig = {"google":{"families":["Open+Sans:600:latin,latin-ext","Noto+Sans:r,i,b,bi:latin,latin-ext"]},"api_url":"https:\/\/fonts-api.wp.com\/css"}; (function() { var wf = document.createElement('script'); wf.src = 'https://s0.wp.com/wp-content/plugins/custom-fonts/js/webfont.js'; wf.type = 'text/javascript'; wf.async = 'true'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wf, s); })(); </script><style id="jetpack-custom-fonts-css">.wf-active html{font-family:"Noto Sans",sans-serif}.wf-active code, .wf-active kbd, .wf-active pre, .wf-active samp{font-family:"Noto Sans",sans-serif}.wf-active body, .wf-active button, .wf-active input, .wf-active select, .wf-active textarea{font-family:"Noto Sans",sans-serif}.wf-active pre{font-family:"Noto Sans",sans-serif}.wf-active code, .wf-active kbd, .wf-active tt, .wf-active var{font-family:"Noto Sans",sans-serif}.wf-active .comments-title{font-family:"Noto Sans",sans-serif}.wf-active #reply-title{font-family:"Noto Sans",sans-serif}.wf-active h1{font-style:normal;font-weight:600}.wf-active h1, .wf-active h2, .wf-active h3, .wf-active h4, .wf-active h5, .wf-active h6{font-family:"Open Sans",sans-serif;font-style:normal;font-weight:600}.wf-active h1{font-style:normal;font-weight:600}.wf-active h2{font-style:normal;font-weight:600}.wf-active h3{font-style:normal;font-weight:600}.wf-active h4{font-style:normal;font-weight:600}.wf-active h5{font-style:normal;font-weight:600}.wf-active h6{font-style:normal;font-weight:600}.wf-active .site-title{font-family:"Open Sans",sans-serif;font-weight:600;font-style:normal}.wf-active .entry-header .entry-title{font-style:normal;font-weight:600}.wf-active .page-header .page-title{font-style:normal;font-weight:600}@media screen and (min-width: 29.375em){.wf-active .comments-title{font-style:normal;font-weight:600}}@media screen and (min-width: 29.375em){.wf-active .entry-header .entry-title{font-style:normal;font-weight:600}}</style> <meta name='robots' content='max-image-preview:large' /> <meta name="google-site-verification" content="isjxPEbQonaouvAqc4azzfgl47u-g7JNYkyw95pWJv8" /> <meta name="msvalidate.01" content="F59A23272389DAAE58D8664A91E7F3D1" /> <meta name="p:domain_verify" content="c8f66e0be7c84d3bb6fc427ed2c8076b" /> <!-- Async WordPress.com Remote Login --> <script id="wpcom_remote_login_js"> var wpcom_remote_login_extra_auth = ''; function wpcom_remote_login_remove_dom_node_id( element_id ) { var dom_node = document.getElementById( element_id ); if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); } } function wpcom_remote_login_remove_dom_node_classes( class_name ) { var dom_nodes = document.querySelectorAll( '.' + class_name ); for ( var i = 0; i < dom_nodes.length; i++ ) { dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] ); } } function wpcom_remote_login_final_cleanup() { wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" ); } // Watch for messages back from the remote login window.addEventListener( "message", function( e ) { if ( e.origin === "https://r-login.wordpress.com" ) { var data = {}; try { data = JSON.parse( e.data ); } catch( e ) { wpcom_remote_login_final_cleanup(); return; } if ( data.msg === 'LOGIN' ) { // Clean up the login check iframe wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); var id_regex = new RegExp( /^[0-9]+$/ ); var token_regex = new RegExp( /^.*|.*|.*$/ ); if ( token_regex.test( data.token ) && id_regex.test( data.wpcomid ) ) { // We have everything we need to ask for a login var script = document.createElement( "script" ); script.setAttribute( "id", "wpcom_remote_login_validate" ); script.src = '/remote-login.php?wpcom_remote_login=validate' + '&wpcomid=' + data.wpcomid + '&token=' + encodeURIComponent( data.token ) + '&host=' + window.location.protocol + '//' + window.location.hostname + '&postid=10661' + '&is_singular='; document.body.appendChild( script ); } return; } // Safari ITP, not logged in, so redirect if ( data.msg === 'LOGIN-REDIRECT' ) { window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href; return; } // Safari ITP, storage access failed, remove the request if ( data.msg === 'LOGIN-REMOVE' ) { var css_zap = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }'; var style_zap = document.createElement( 'style' ); style_zap.type = 'text/css'; style_zap.appendChild( document.createTextNode( css_zap ) ); document.body.appendChild( style_zap ); var e = document.getElementById( 'wpcom_request_access_iframe' ); e.parentNode.removeChild( e ); document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000'; return; } // Safari ITP if ( data.msg === 'REQUEST_ACCESS' ) { console.log( 'request access: safari' ); // Check ITP iframe enable/disable knob if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) { return; } // If we are in a "private window" there is no ITP. var private_window = false; try { var opendb = window.openDatabase( null, null, null, null ); } catch( e ) { private_window = true; } if ( private_window ) { console.log( 'private window' ); return; } var iframe = document.createElement( 'iframe' ); iframe.id = 'wpcom_request_access_iframe'; iframe.setAttribute( 'scrolling', 'no' ); iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' ); iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid ); var css = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } '; var style = document.createElement( 'style' ); style.type = 'text/css'; style.id = 'wpcom_request_access_styles'; style.appendChild( document.createTextNode( css ) ); document.body.appendChild( style ); document.body.appendChild( iframe ); } if ( data.msg === 'DONE' ) { wpcom_remote_login_final_cleanup(); } } }, false ); // Inject the remote login iframe after the page has had a chance to load // more critical resources window.addEventListener( "DOMContentLoaded", function( e ) { var iframe = document.createElement( "iframe" ); iframe.style.display = "none"; iframe.setAttribute( "scrolling", "no" ); iframe.setAttribute( "id", "wpcom_remote_login_key" ); iframe.src = "https://r-login.wordpress.com/remote-login.php" + "?wpcom_remote_login=key" + "&origin=aHR0cHM6Ly9wYXVsdmFuZGVybGFrZW4uY29t" + "&wpcomid=122868229" + "&time=1744289111"; document.body.appendChild( iframe ); }, false ); </script> <link rel='dns-prefetch' href='//s2.wp.com' /> <link rel='dns-prefetch' href='//s1.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//fonts-api.wp.com' /> <link rel="alternate" type="application/rss+xml" title="paulvanderlaken.com &raquo; Feed" href="https://paulvanderlaken.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="paulvanderlaken.com &raquo; Comments Feed" href="https://paulvanderlaken.com/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function () { oldonload(); func(); } } } /* ]]> */ </script> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/72x72\/","ext":".png","svgUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/s2.wp.com\/wp-includes\/js\/wp-emoji-release.min.js?m=1743601627i&ver=6.8-alpha-59449"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\ud83d\udd25","\ud83d\udc26\u200b\ud83d\udd25")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-1' href='https://s1.wp.com/_static/??-eJxtjFsKgCAQAC+ULYUSfURnCbPYWldplej2veivn4GBYWCPygZOjhP4rCLlGVmAcHUCi0txsKt6rLQiBfznX/g6+BBujJmuCfKEjMkpsVsg+vy4f73vqkbryrS6NssJpDwzyA==&cssminify=yes' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='https://s2.wp.com/_static/??-eJydzEEOwiAQheELCdMSEtOF8SxAyYSKQGYGDbe37cadC5cvL98P76ZCLRKLQMsdU2HAvk8fCfeHIrzMpCdtwfeUV/C5hofKyZOjASwjRx2YL/AzdCqGLUpzB3ejdlFIaf03QU5SQf7y+/M2X+1slsUYu30AMZRP0A==&cssminify=yes' type='text/css' media='all' /> <style id='wp-block-library-inline-css'> .has-text-align-justify { text-align:justify; } .has-text-align-justify{text-align:justify;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-4-1' href='https://s2.wp.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpoZmFkYGRuZGmQBAHPvL0Y=&cssminify=yes' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-6-1' href='https://s2.wp.com/wp-content/plugins/coblocks/2.18.1-simple-rev.4/dist/coblocks-style.css?m=1681832297i&cssminify=yes' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-8-1' href='https://s1.wp.com/_static/??/wp-content/mu-plugins/core-compat/wp-mediaelement.css,/wp-content/mu-plugins/wpcom-bbpress-premium-themes.css?m=1432920480j&cssminify=yes' type='text/css' media='all' /> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: 'Courier Prime', monospace;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} </style> <link rel='stylesheet' id='franklin-fonts-css' href='https://fonts-api.wp.com/css?family=Open+Sans%3A400%2C600%7CSource+Sans+Pro%3A400%2C700%2C900&#038;subset=latin%2Clatin-ext' media='all' /> <link crossorigin='anonymous' rel='stylesheet' id='all-css-12-1' href='https://s0.wp.com/_static/??-eJyNjcEKwkAMRH/INVS2FA/ip0gNsW67yYYmS/HvbaUHDx68zcC8N7BowCJO4sA1aK5DEoORXHuc9g5cisAtCcJAQnNaCfsdj2h2gC+pP4nJQOsdHnMvU1515q9Mfy23y886LIqFN+bKl6aLsWnP8dSOb6k5R4A=&cssminify=yes' type='text/css' media='all' /> <style id='franklin-style-inline-css'> .post-meta li.posted-on, .post-categories, .post-tags, .post-meta li.author { clip: rect(1px, 1px, 1px, 1px); height: 1px; position: absolute; overflow: hidden; width: 1px; } </style> <style id='akismet-widget-style-inline-css'> .a-stats { --akismet-color-mid-green: #357b49; --akismet-color-white: #fff; --akismet-color-light-grey: #f6f7f7; max-width: 350px; width: auto; } .a-stats * { all: unset; box-sizing: border-box; } .a-stats strong { font-weight: 600; } .a-stats a.a-stats__link, .a-stats a.a-stats__link:visited, .a-stats a.a-stats__link:active { background: var(--akismet-color-mid-green); border: none; box-shadow: none; border-radius: 8px; color: var(--akismet-color-white); cursor: pointer; display: block; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; font-weight: 500; padding: 12px; text-align: center; text-decoration: none; transition: all 0.2s ease; } /* Extra specificity to deal with TwentyTwentyOne focus style */ .widget .a-stats a.a-stats__link:focus { background: var(--akismet-color-mid-green); color: var(--akismet-color-white); text-decoration: none; } .a-stats a.a-stats__link:hover { filter: brightness(110%); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); } .a-stats .count { color: var(--akismet-color-white); display: block; font-size: 1.5em; line-height: 1.4; padding: 0 13px; white-space: nowrap; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-14-1' href='https://s1.wp.com/_static/??-eJzTLy/QTc7PK0nNK9HPLdUtyClNz8wr1i9KTcrJTwcy0/WTi5G5ekCujj52Temp+bo5+cmJJZn5eSgc3bScxMwikFb7XFtDE1NLExMLc0OTLACohS2q&cssminify=yes' type='text/css' media='all' /> <link crossorigin='anonymous' rel='stylesheet' id='print-css-15-1' href='https://s1.wp.com/wp-content/mu-plugins/global-print/global-print.css?m=1465851035i&cssminify=yes' type='text/css' media='print' /> <style id='jetpack-global-styles-frontend-style-inline-css'> :root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='https://s1.wp.com/_static/??-eJyNjcsKQjEMRH/IGh+F60b8FKlpaHtNk2JaxL/XK27EjZthDgxn4N4cqnSSDnW4xiMVMZipt4DXD0NVXSIOJgPL4UYxxPh41yJpjWYr+N90LoJgiiWwY01qX/Bj65nq6zd7SKyXwMvgVI/byfvdYe830/wEUS5JJg==&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" id="wpcom-actionbar-placeholder-js-extra"> /* <![CDATA[ */ var actionbardata = {"siteID":"122868229","postID":"0","siteURL":"https:\/\/paulvanderlaken.com","xhrURL":"https:\/\/paulvanderlaken.com\/wp-admin\/admin-ajax.php","nonce":"168c21c0fa","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https:\/\/s0.wp.com\/wp-content\/js\/wpcom-proxy-request.js?ver=20211021","i18n":{"followedText":"New posts from this site will now appear in your <a href=\"https:\/\/wordpress.com\/reader\">Reader<\/a>","foldBar":"Collapse this bar","unfoldBar":"Expand this bar","shortLinkCopied":"Shortlink copied to clipboard."}}; /* ]]> */ </script> <script type="text/javascript" id="jetpack-mu-wpcom-settings-js-before"> /* <![CDATA[ */ var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https:\/\/s1.wp.com\/wp-content\/mu-plugins\/jetpack-mu-wpcom-plugin\/moon\/jetpack_vendor\/automattic\/jetpack-mu-wpcom\/src\/build\/"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/_static/??-eJzTLy/QTc7PK0nNK9HPKtYvyinRLSjKr6jUyyrW0QfKZeYl55SmpBaDJLMKS1OLKqGUXm5mHkFFurmZ6UWJJalQxfa5tobmRgamxgZmFpZZACbyLJI='></script> <script type="text/javascript" id="rlt-proxy-js-after"> /* <![CDATA[ */ rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} ); /* ]]> */ </script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://paulvanderlaken.wordpress.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress.com" /> <link rel='shortlink' href='https://wp.me/8jxDD' /> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="website" /> <meta property="og:title" content="paulvanderlaken.com" /> <meta property="og:description" content="Disentangling Data Science" /> <meta property="og:url" content="https://paulvanderlaken.com/" /> <meta property="og:site_name" content="paulvanderlaken.com" /> <meta property="og:image" content="https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=200" /> <meta property="og:image:width" content="200" /> <meta property="og:image:height" content="200" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:creator" content="@paulvanderlaken" /> <meta name="twitter:site" content="@paulvanderlaken" /> <!-- End Jetpack Open Graph Tags --> <link rel="search" type="application/opensearchdescription+xml" href="https://paulvanderlaken.com/osd.xml" title="paulvanderlaken.com" /> <link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" /> <meta name="theme-color" content="#efeff0" /> <meta name="description" content="Disentangling Data Science" /> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #efeff0; } </style> <style type="text/css" id="custom-colors-css"> .site-info, .site-title a, .desktop #primary-menu > li > a, .site-description, .site-header-top a, .site-footer-bottom a, .sticky-post-label.on-image, #page #header-search button:before { text-shadow: none; } .desktop #primary-menu > li > a { box-shadow: none; } .desktop #page #primary-menu > li:hover > a, .desktop #page #primary-menu > li.current-menu-item > a { background-color: #fff; } #content { border-color: transparent; } .comment-metadata a { opacity: 0.55; } .comment-metadata a:hover { opacity: 0.85; } .widget_calendar tbody td a { color: #ffffff;} #page input[type="submit"], #page input[type="reset"], #page form button:not(.search-button):not(.menu-toggle):not(.dropdown-toggle) { color: #FFFFFF;} #page .site-title a { color: #232323;} .desktop #primary-menu > li > a { border-color: #333333;} .sticky-post-label.on-image { color: #232323;} .widget_tag_cloud a:hover, .widget_tag_cloud a:active, .widget_tag_cloud a:focus, .wp_widget_tag_cloud a:active, .wp_widget_tag_cloud a:hover, .wp_widget_tag_cloud a:focus { color: #232323;} .widget_calendar tbody td a { color: #FFFFFF;} body { background-color: #efeff0;} a, body, input, select, textarea, .menu-toggle, input[type="text"], input[type="email"], input[type="url"], input[type="search"], input[type="button"], input[type="reset"], input[type="submit"], .archives-label, .posts-navigation a, .widget_calendar tfoot td a, #infinite-handle span { color: #444444;} strong, .wp-caption-text strong, .wp-caption-text a { color: #444444;} .page-content a, .entry-content a, .comment-content a, .entry-summary a { color: #444444;} .widget_recent_entries .post-date, .entry-breadcrumbs, .more-link span.meta-nav, .comment-reply-link, .pingback a.comment-edit-link, .trackback a.comment-edit-link, .comment-metadata, .comment-author-name a, .comment-awaiting-moderation { color: #444444;} input[type="submit"], input[type="reset"], form button:not(.search-button):not(.menu-toggle):not(.dropdown-toggle) { background-color: #444444;} #page input[type="submit"]:hover, #page input[type="reset"]:hover, #page form button:not(.search-button):not(.menu-toggle):not(.dropdown-toggle):hover { background-color: #444444;} h1, h2, h3, h4, h5, h6, .archives-label, .comments-title, .widget-title, .widgettitle, .edit-post-link, .entry-header .entry-title { color: #444444;} .widget_wpcom_social_media_icons_widget li a { color: #444444;} pre, .entry-footer, .pingback a, .trackback a, .nav-links a, .widget .children li, .widget .sub-menu li, .attachment .entry-caption, .wp-caption-text, .entry-content blockquote, .comment-content blockquote, .comment-author b.fn, .comment-author b.fn a, #cancel-comment-reply-link { color: #444444;} #page .comment-author b.fn a:hover { color: #444444;} .widget_tag_cloud a, .wp_widget_tag_cloud a { color: #444444;} .site-header-main, .sticky-post-label.on-image, .page-links a:hover, .page-links a:focus, .page-links a:active { background-color: #219bd8;} a:hover, a:focus, a:active, .widget_calendar tfoot td a:hover, .entry-breadcrumbs a:hover, .sticky-post-label, .page-content a:hover, .entry-content a:hover, .comment-content a:hover, .entry-summary a:hover, .entry-header .entry-title a:hover, .attachment .entry-caption a:hover, .wp-caption-text a:hover, .entry-footer a:hover, .entry-footer a:active, .entry-footer a:focus, .posts-navigation a:hover, .posts-navigation a:focus, .posts-navigation a:active, .pingback a:hover, .trackback a:hover, .comment-metadata a:hover, .comment-navigation a:hover, .comment-navigation a:focus, .comment-navigation a:active, .main-navigation .menu-toggle:before, #cancel-comment-reply-link:hover, #infinite-handle span:active, #infinite-handle span:hover, #infinite-handle span:focus, #mobile-menu li a:hover, #mobile-menu li a:focus, #mobile-menu li a:active, #mobile-menu li .dropdown-toggle:hover + a, #mobile-menu li .dropdown-toggle:focus + a, #mobile-menu li .dropdown-toggle:active + a { color: #219BD8;} .widget_wpcom_social_media_icons_widget li a:hover, .widget_wpcom_social_media_icons_widget li a:focus, .widget_wpcom_social_media_icons_widget li a:active { color: #1676A6;} .desktop #page #primary-menu > li > a { color: #000000;} .desktop #primary-menu ul li.current-menu-item > a, .desktop #primary-menu ul li:hover > a, .desktop #primary-menu ul li a:hover, .desktop #primary-menu ul li a:focus, .desktop #primary-menu ul li a:active { color: #219BD8;} .desktop #page #primary-menu > li:hover > a, .desktop #page #primary-menu > li > a:focus, .desktop #page #primary-menu > li > a:active, .desktop #page #primary-menu > li.current-menu-item > a { color: #1B85BA;} .widget_tag_cloud a:hover, .widget_tag_cloud a:active, .widget_tag_cloud a:focus, .wp_widget_tag_cloud a:hover, .wp_widget_tag_cloud a:active, .wp_widget_tag_cloud a:focus { background-color: #219BD8;} .widget_calendar tbody td a { background-color: #219BD8;} #page .comment-author b.fn a:hover, #page .comment-author b.fn a:focus, #page .comment-author b.fn a:active, #page .entry-footer a:hover, #page .entry-footer a:focus, #page .entry-footer a:active { color: #219BD8;} .site-header-top, .site-footer-bottom { background-color: #214059;} #header-search input.search-field { color: #214059;} .site-description, .site-header-top a, .site-footer-bottom a { color: #6BA3D0;} .site-header-top a, .site-footer-bottom a { border-bottom-color: #3270A3;} .site-header-top a:hover, .site-footer-bottom a:hover { color: #E7EDF3;} .site-info { color: #468DC7;} </style> <link rel="icon" href="https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=32" sizes="32x32" /> <link rel="icon" href="https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=180" /> <meta name="msapplication-TileImage" content="https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=270" /> </head> <body class="home blog custom-background wp-theme-pubfranklin customizer-styles-applied has-secondary-menu jetpack-reblog-enabled date-hidden categories-hidden tags-hidden author-hidden custom-colors"> <div id="page" class="hfeed site"> <a class="skip-link screen-reader-text" href="#content">Skip to content</a> <header id="masthead" class="site-header" role="banner"> <div class="site-header-top"> <div class="inner"> <p class="site-description">Disentangling Data Science</p> <form id="header-search" action="https://paulvanderlaken.com/"> <input type="search" class="search-field" name="s" value="" /> <button type="submit" class="search-button">Search</button> </form><!-- #header-search --> <nav id="secondary-navigation" role="navigation"> <ul id="secondary-menu" class="menu"><li id="menu-item-21" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21"><a href="https://uk.linkedin.com/in/paulvanderlaken">LinkedIn</a></li> <li id="menu-item-22" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22"><a href="https://twitter.com/paulvanderlaken">Twitter</a></li> <li id="menu-item-51" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-51"><a href="https://www.researchgate.net/profile/Paul_Van_Der_Laken">ResearchGate</a></li> </ul> </nav><!-- #secondary-navigation --> </div><!-- .inner --> </div><!-- .site-header-top --> <div class="site-header-main"> <div class="inner"> <div class="site-branding"> <a href="https://paulvanderlaken.com/" class="site-logo-link" rel="home" itemprop="url"></a> <h1 class="site-title"><a href="https://paulvanderlaken.com/" rel="home">paulvanderlaken.com</a></h1> </div><!-- .site-branding --> <nav id="site-navigation" class="main-navigation" role="navigation"> <button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false" data-close-label="Close">Menu</button> <ul id="primary-menu" class="menu"><li id="menu-item-3320" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3320"><a href="http://www.paulvanderlaken.com">Blog</a></li> <li id="menu-item-3415" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3415"><a href="https://paulvanderlaken.com/about/">About</a></li> <li id="menu-item-517" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-517"><a href="https://paulvanderlaken.com/contact/">Contact</a></li> </ul> </nav><!-- #site-navigation --> </div><!-- .inner --> </div><!-- .site-header-main --> </header><!-- #masthead --> <div id="content" class="site-content"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <article id="post-10661" class="post-10661 post type-post status-publish format-standard has-post-thumbnail hentry category-automation category-machine-learning category-programming category-python tag-ai tag-chatgpt tag-llm tag-openai tag-python tag-simpy"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/"><img width="1061" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1061&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Getting ChatGPT to simulate a Recruitment Process in Python&nbsp;code" decoding="async" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1061&amp;h=737&amp;crop=1 1061w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=150&amp;h=104&amp;crop=1 150w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=300&amp;h=208&amp;crop=1 300w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=768&amp;h=533&amp;crop=1 768w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1024&amp;h=711&amp;crop=1 1024w" sizes="(max-width: 1061px) 100vw, 1061px" data-attachment-id="10669" data-permalink="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/image-2-27/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png" data-orig-size="1061,917" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-2" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1024" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/" rel="bookmark">Getting ChatGPT to simulate a Recruitment Process in Python&nbsp;code</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>I was playing around with <a href="https://chat.openai.com/chat">ChatGPT</a> to see if it could write Python code to generate realistic recruitment process data for me. </p> <p>Here&#8217;s the full conversation as I was truly amazed with the results. </p> <p>I emboldened my prompts and had to ask ChatGPT to continue sometimes as longer responses are cut off.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Can you write Python code that simulates how applications would be processed through a recruitment funnel, with a class that stores all timestamps?</strong></p> <p>Sure! Here is a simple example of how you could simulate the processing of applications through a recruitment funnel using Python:</p> <pre class="wp-block-preformatted">Copy code<code># Define a class that represents an application class Application: def __init__(self): self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self): self.timestamps.append(datetime.now()) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(applications): # Loop through each application in the list for application in applications: # Simulate processing the application (e.g. reviewing the resume) time.sleep(1) application.update_timestamp() # Simulate moving the application to the next stage of the recruitment # funnel (e.g. scheduling an interview) time.sleep(1) application.update_timestamp() # Simulate completing the final stage of the recruitment funnel # (e.g. making a job offer) time.sleep(1) application.update_timestamp() # Create a list of applications applications = [Application() for _ in range(10)] # Simulate processing the applications through the recruitment funnel process_applications(applications) # Print the timestamps for each application for application in applications: print(application.timestamps) </code></pre> <p>In this example, the <code>Application</code> class has a <code>timestamps</code> attribute that stores a list of timestamps representing each time the application moves to the next stage of the recruitment funnel. The <code>update_timestamp</code> method is called each time an application moves to the next stage, and it adds the current timestamp to the <code>timestamps</code> list.</p> <p>The <code>process_applications</code> function simulates the processing of applications through the recruitment funnel by looping through each application in a list, simulating each stage of the funnel (e.g. reviewing the resume, scheduling an interview, making a job offer), and calling the <code>update_timestamp</code> method each time an application moves to the next stage.</p> <p>At the end, the code prints the timestamps for each application to show how the timestamps are recorded as the applications move through the recruitment funnel.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>The recruitment funnel process should include the following steps: application, resume review, telephone interview, assessment, interview, contract offer, acceptance.</strong></p> <p>Sure, here is a revised version of the code that includes the additional steps in the recruitment funnel process:</p> <pre class="wp-block-preformatted">Copy code<code># Define a class that represents an application class Application: def __init__(self): self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self): self.timestamps.append(datetime.now()) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(applications): # Loop through each application in the list for application in applications: # Simulate receiving the application time.sleep(1) application.update_timestamp() # Simulate reviewing the resume time.sleep(1) application.update_timestamp() # Simulate conducting a telephone interview time.sleep(1) application.update_timestamp() # Simulate conducting an assessment time.log(1) application.update_timestamp() # Simulate conducting an in-person interview time.sleep(1) application.update_timestamp() # Simulate making a contract offer time.sleep(1) application.update_timestamp() # Simulate accepting the contract offer time.sleep(1) application.update_timestamp() # Create a list of applications applications = [Application() for _ in range(10)] # Simulate processing the applications through the recruitment funnel process_applications(applications) # Print the timestamps for each application for application in applications: print(application.timestamps) </code></pre> <p>In this revised version, the <code>process_applications</code> function simulates each step of the recruitment funnel process, including receiving the application, reviewing the resume, conducting a telephone interview, conducting an assessment, conducting an in-person interview, making a contract offer, and accepting the contract offer. Each time an application moves to the next step in the funnel, the <code>update_timestamp</code> method is called to record the timestamp.</p> <p>At the end, the code prints the timestamps for each application to show how they are recorded as the applications move through the recruitment funnel.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Can you use the simpy module instead?</strong></p> <p>Yes, you can use the simpy module to simulate the processing of applications through a recruitment funnel. Here is an example of how you could do this using simpy:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random # Define a class that represents an application class Application: def __init__(self): self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self, env): self.timestamps.append(env.now) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(env, applications): # Loop through each application in the list for application in applications: # Simulate receiving the application yield env.timeout(1) application.update_timestamp(env) # Simulate reviewing the resume yield env.timeout(1) application.update_timestamp(env) # Simulate conducting a telephone interview yield env.timeout(1) application.update_timestamp(env) # Simulate conducting an assessment yield env.timeout(1) application.update_timestamp(env) # Simulate conducting an in-person interview yield env.timeout(1) application.update_timestamp(env) # Simulate making a contract offer yield env.timeout(1) application.update_timestamp(env) # Simulate accepting the contract offer yield env.timeout(1) application.update_timestamp(env) # Create a simpy environment env = simpy.Environment() # Create a list of applications applications = [Application() for _ in range(10)] # Simulate processing the applications through the recruitment funnel env.process(process_applications(env, applications)) env.run() # Print the timestamps for each application for application in applications: print(application.timestamps) </code></pre> <p>In this example, the <code>process_applications</code> function uses <code>yield</code> statements and the <code>env.timeout</code> method from the simpy module to simulate the processing of applications through the recruitment funnel. Each time an application moves to the next stage of the funnel, the <code>update_timestamp</code> method is called to record the timestamp.</p> <p>At the end, the code prints the timestamps for each application to show how they are recorded as the applications move through the recruitment funnel.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>I need the code to also log the name of the process step.</strong></p> <p>Sure, here is an updated version of the code that also logs the name of the process step each time an application moves to the next stage of the recruitment funnel:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random # Define a class that represents an application class Application: def __init__(self): self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(env, applications): # Loop through each application in the list for application in applications: # Simulate receiving the application yield env.timeout(1) application.update_timestamp(env, "Received") # Simulate reviewing the resume yield env.timeout(1) application.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview yield env.timeout(1) application.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment yield env.timeout(1) application.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview yield env.timeout(1) application.update_timestamp(env, "Interview") # Simulate making a contract offer yield env.timeout(1) application.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer yield env.timeout(1) application.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applications applications = [Application() for _ in range(10)] # Simulate processing the applications through the recruitment funnel env.process(process_applications(env, applications)) env.run() # Print the timestamps and process names for each application for application in applications: print(application.timestamps) </code></pre> <p>In this updated version, the <code>update_timestamp</code> method takes an additional argument <code>process_name</code> that represents the name of the process step. Each time an application moves to the next stage of the recruitment funnel, the <code>update_timestamp</code> method is called with the current timestamp and the name of the process step.</p> <p>The <code>process_applications</code> function simulates each step of the recruitment funnel process, including receiving the application, reviewing the resume, conducting a telephone interview, conducting an assessment, conducting an in-person interview, making a contract offer, and accepting the contract offer. Each time an application moves to the next step in the funnel, the <code>update_timestamp</code> method is called with the current timestamp and the name of the process step.</p> <p>At the end, the code prints the timestamps and process names for each application to show how they are recorded as the applications move through the recruitment funnel.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Can you have it simulate 900 applicants with unique names and birthdays?</strong></p> <p>Yes, you can use a loop to generate a list of 900 unique applicants with random names and birthdays. Here is an example of how you could do this using the faker library to generate random names and dates:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random from faker import Faker # Define a class that represents an application class Application: def __init__(self, name, birthday): self.name = name self.birthday = birthday self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(env, applications): # Loop through each application in the list for application in applications: # Simulate receiving the application yield env.timeout(1) application.update_timestamp(env, "Received") # Simulate reviewing the resume yield env.timeout(1) application.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview yield env.timeout(1) application.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment yield env.timeout(1) application.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview yield env.timeout(1) application.update_timestamp(env, "Interview") # Simulate making a contract offer yield env.timeout(1) application.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer yield env.timeout(1) application.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applications applications = [] # Generate random names and birthdays for each application fake = Faker() for i in range(900): name = fake.name() birthday = fake.date_of_birth() applications.append(Application(name, birthday)) # Simulate processing the applications through the recruitment funnel env.process(process_applications(env, applications)) env.run() # Print the timestamps and process names for each application for application in applications: print(application.timestamps) </code></pre> <p>In this example, the <code>Application</code> class has additional <code>name</code> and <code>birthday</code> attributes that store the name and birthday of each applicant. The <code>process_applications</code> function is unchanged from the previous example, and it simulates the processing of applications through the recruitment funnel by calling the <code>update_timestamp</code> method each time an application moves to the next stage.</p> <p>The code generates 900 random names and birthdays using the faker library, and creates an <code>Application</code> object for each applicant with the name and birthday. These objects are added to a list of applications, which is then passed to the <code>process_applications</code> function to simulate the processing of the applications through the recruitment funnel.</p> <p>At the end, the code prints the timest</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>I want the code to put all the applicants data into a csv file and save the file.</strong></p> <p>Sure, here is an updated version of the code that saves the applicants&#8217; data to a CSV file:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random import csv from faker import Faker # Define a class that represents an application class Application: def __init__(self, name, birthday): self.name = name self.birthday = birthday self.timestamps = [] # This method will be called each time an application moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applications through the # recruitment funnel def process_applications(env, applications): # Loop through each application in the list for application in applications: # Simulate receiving the application yield env.timeout(1) application.update_timestamp(env, "Received") # Simulate reviewing the resume yield env.timeout(1) application.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview yield env.timeout(1) application.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment yield env.timeout(1) application.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview yield env.timeout(1) application.update_timestamp(env, "Interview") # Simulate making a contract offer yield env.timeout(1) application.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer yield env.timeout(1) application.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applications applications = [] # Generate random names and birthdays for each application fake = Faker() for i in range(900): name = fake.name() birthday = fake.date_of_birth() applications.append(Application(name, birthday)) # Simulate processing the applications through the recruitment funnel env.process(process_applications(env, applications)) env.run() # Save the applicants' data to a CSV file with open("applicants.csv", "w") as csvfile: writer = csv.writer(csvfile) # Write the header row writer.writerow(["Name", "Birthday", "Timestamps"]) # Write the data for each applicant for application in applications: writer.writerow([application.name, application.birthday, application.timestamps]) </code></pre> <p>In this updated version, the code uses the <code>csv</code> module to save the applicants&#8217; data to a CSV file. It creates a <code>csv.writer</code> object, which is used to write the data to the file. The code writes the header row, which includes the column names &#8220;Name&#8221;, &#8220;Birthday&#8221;, and &#8220;Timestamps&#8221;. Then, it writes a row of</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Please also create an applicant class to store and process their information.</strong></p> <p>Sure, here is an updated version of the code that uses an <code>Applicant</code> class to store and process applicants&#8217; data:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random import csv from faker import Faker # Define a class that represents an applicant class Applicant: def __init__(self, name, birthday): self.name = name self.birthday = birthday self.timestamps = [] # This method will be called each time an applicant moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applicants through the # recruitment funnel def process_applicants(env, applicants): # Loop through each applicant in the list for applicant in applicants: # Simulate receiving the applicant's application yield env.timeout(1) applicant.update_timestamp(env, "Received") # Simulate reviewing the applicant's resume yield env.timeout(1) applicant.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment of the applicant yield env.timeout(1) applicant.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Interview") # Simulate making a contract offer to the applicant yield env.timeout(1) applicant.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer from the applicant yield env.timeout(1) applicant.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applicants applicants = [] # Generate random names and birthdays for each applicant fake = Faker() for i in range(900): name = fake </code></pre> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Continue from the applicants = []</strong></p> <p>Sure, here is the updated code that continues from the <code>applicants = []</code> line:</p> <pre class="wp-block-preformatted">Copy code<code># Generate random names and birthdays for each applicant fake = Faker() for i in range(900): name = fake.name() birthday = fake.date_of_birth() applicants.append(Applicant(name, birthday)) # Simulate processing the applicants through the recruitment funnel env.process(process_applicants(env, applicants)) env.run() # Save the applicants' data to a CSV file with open("applicants.csv", "w") as csvfile: writer = csv.writer(csvfile) # Write the header row writer.writerow(["Name", "Birthday", "Timestamps"]) # Write the data for each applicant for applicant in applicants: writer.writerow([applicant.name, applicant.birthday, applicant.timestamps]) </code></pre> <p>This code creates a list of <code>Applicant</code> objects using random names and birthdays generated with the faker library. Then, it simulates the processing of the applicants through the recruitment funnel using the <code>process_applicants</code> function. This function is similar to the previous example, but it uses the <code>Applicant</code> class and the <code>update_timestamp</code> method to record the timestamps for each applicant.</p> <p>Finally, the code saves the applicants&#8217; data to a CSV file using the <code>csv</code> module. It writes the header row, which includes the column names &#8220;Name&#8221;, &#8220;Birthday&#8221;, and &#8220;Timestamps&#8221;. Then, it writes a row of data for each applicant, which includes the applicant&#8217;s name, birthday, and timestamps.</p> <p>With this code, you can simulate the processing of applicants through a recruitment funnel, and save their data to a CSV file for further analysis.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>make the name and birthday generation process part of the Applicant class</strong></p> <p>Sure, here is an updated version of the code that uses the <code>Applicant</code> class to generate random names and birthdays for each applicant:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import random import csv from faker import Faker # Define a class that represents an applicant class Applicant: def __init__(self): self.name = fake.name() self.birthday = fake.date_of_birth() self.timestamps = [] # This method will be called each time an applicant moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applicants through the # recruitment funnel def process_applicants(env, applicants): # Loop through each applicant in the list for applicant in applicants: # Simulate receiving the applicant's application yield env.timeout(1) applicant.update_timestamp(env, "Received") # Simulate reviewing the applicant's resume yield env.timeout(1) applicant.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment of the applicant yield env.timeout(1) applicant.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Interview") # Simulate making a contract offer to the applicant yield env.timeout(1) applicant.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer from the applicant yield env.timeout(1) applicant.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applicants applicants = [] # Create a fake object to generate random names and birthdays fake = Faker() # Create 900 applicants with random names and birthdays for i in range(900): applicants.append(Applicant()) # Simulate processing the applicants through the recruitment funnel env.process(process_applicants(env, applicants)) env.run() # Save the applicants' data to a CSV file with open("applicants.csv", "w") as csvfile: writer = csv.writer(csvfile) # Write the header row writer.writerow(["Name", "Birthday", "Timestamps"]) # Write the data for each applicant for applicant in applicants: </code></pre> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Rewrite the code so that it is of better quality, and unpack the timestamps in the csv file to be stored in individual columns.</strong></p> <p>Sure, here is an updated version of the code that improves the quality and structure of the code, and unpacks the timestamps into individual columns in the CSV file:</p> <pre class="wp-block-preformatted">Copy code<code>import simpy import csv from faker import Faker # Define a class that represents an applicant class Applicant: def __init__(self): self.name = fake.name() self.birthday = fake.date_of_birth() self.timestamps = [] # This method will be called each time an applicant moves to the next stage # of the recruitment funnel def update_timestamp(self, env, process_name): self.timestamps.append((env.now, process_name)) # Define a function that simulates the processing of applicants through the # recruitment funnel def process_applicants(env, applicants): # Loop through each applicant in the list for applicant in applicants: # Simulate receiving the applicant's application yield env.timeout(1) applicant.update_timestamp(env, "Received") # Simulate reviewing the applicant's resume yield env.timeout(1) applicant.update_timestamp(env, "Resume Review") # Simulate conducting a telephone interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Telephone Interview") # Simulate conducting an assessment of the applicant yield env.timeout(1) applicant.update_timestamp(env, "Assessment") # Simulate conducting an in-person interview with the applicant yield env.timeout(1) applicant.update_timestamp(env, "Interview") # Simulate making a contract offer to the applicant yield env.timeout(1) applicant.update_timestamp(env, "Contract Offer") # Simulate accepting the contract offer from the applicant yield env.timeout(1) applicant.update_timestamp(env, "Acceptance") # Create a simpy environment env = simpy.Environment() # Create a list of applicants applicants = [] # Create a fake object to generate random names and birthdays fake = Faker() # Create 900 applicants with random names and birthdays for i in range(900): applicants.append(Applicant()) # Simulate processing the applicants through the recruitment funnel env.process(process_applicants(env, applicants)) env.run() # Save the applicants' data to a CSV file with open("applicants.csv", "w") as csvfile: writer = csv.writer(csvfile) # Write the header row writer.writerow(["Name", "Birthday"] + [ "Received", "Resume Review", "Telephone Interview", "Assessment", "Interview", "Contract Offer </code></pre> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>continue the code from line with env = simpy.Environment()</strong></p> <p>Sure, here is the updated code that continues from the <code>env = simpy.Environment()</code> line:</p> <pre class="wp-block-preformatted">Copy code<code># Create a list of applicants applicants = [] # Create a fake object to generate random names and birthdays fake = Faker() # Create 900 applicants with random names and birthdays for i in range(900): applicants.append(Applicant()) # Simulate processing the applicants through the recruitment funnel env.process(process_applicants(env, applicants)) env.run() # Save the applicants' data to a CSV file with open("applicants.csv", "w") as csvfile: writer = csv.writer(csvfile) # Write the header row writer.writerow(["Name", "Birthday"] + [ "Received", "Resume Review", "Telephone Interview", "Assessment", "Interview", "Contract Offer", "Acceptance" ]) # Write the data for each applicant for applicant in applicants: # Create a list of the timestamps for each stage of the recruitment funnel timestamps = [None] * 7 for timestamp, process_name in applicant.timestamps: if process_name == "Received": timestamps[0] = timestamp elif process_name == "Resume Review": timestamps[1] = timestamp elif process_name == "Telephone Interview": timestamps[2] = timestamp elif process_name == "Assessment": timestamps[3] = timestamp elif process_name == "Interview": timestamps[4] = timestamp elif process_name == "Contract Offer": timestamps[5] = timestamp elif process_name == "Acceptance": timestamps[6] = timestamp # Write the data for this applicant to the CSV file writer.writerow([applicant.name, applicant.birthday] + timestamps) </code></pre> <p>In this updated code, the <code>process_applicants</code> function simulates the processing of applicants through the recruitment funnel, and records the timestamps for each applicant at each stage of the funnel. Then, when the simulation is complete, the code saves the applicants&#8217; data to a CSV file.</p> <p>To save the data in a more organized format, the code unpacks the timestamps into individual columns in the CSV file. It creates a list of the timestamps for each stage of the recruitment funnel, and fills in the appropriate values for each applicant. Then, it writes the data for each applicant to the CSV file, including the name, birthday, and timestamps.</p> <p>With this code, you can simulate the processing of applicants through a recruitment funnel, and save their data to a CSV file in a well-organized format. You can then use this data to analyze the recruitment process and identify areas for improvement.</p> <figure class="wp-block-image"><img src="https://chat.openai.com/_next/image?url=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6b81dc6cf04315be10d2e18693ab3d37%3Fs%3D480%26r%3Dpg%26d%3Dhttps%253A%252F%252Fcdn.auth0.com%252Favatars%252Fpa.png&amp;w=64&amp;q=75" alt="paul.vanderlaken@impalasolutions.nl" /></figure> <p><strong>Can you create a pdf of or hyperlink to this conversation so that I can share it with others?</strong></p> <p>Unfortunately, I am not able to create a PDF or hyperlink of this conversation. I am a text-based AI assistant and do not have the ability to create or share PDFs or hyperlinks. However, you can easily copy and paste the conversation into a document or email to share with others.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10669" data-permalink="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/image-2-27/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png" data-orig-size="1061,917" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-2" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1024" loading="lazy" width="1024" height="885" src="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1024" alt="" class="wp-image-10669" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=1024 1024w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=150 150w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=300 300w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2022/12/image-2.png 1061w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/" data-text="Getting ChatGPT to simulate a Recruitment Process in Python code" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10661" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10661" > <span id="sharing-whatsapp-10661" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10661-67f7bd5727bfd' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10661&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10661-67f7bd5727bfd&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10661-67f7bd5727bfd' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2022/12/06/getting-chatgpt-to-simulate-recruitment-process-in-python/" rel="bookmark"><time class="entry-date published updated" datetime="2022-12-06T12:03:46+01:00">6 December 2022</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/ai/" rel="tag">AI</a></li><li><a href="https://paulvanderlaken.com/tag/chatgpt/" rel="tag">chatgpt</a></li><li><a href="https://paulvanderlaken.com/tag/llm/" rel="tag">llm</a></li><li><a href="https://paulvanderlaken.com/tag/openai/" rel="tag">openai</a></li><li><a href="https://paulvanderlaken.com/tag/python/" rel="tag">python</a></li><li><a href="https://paulvanderlaken.com/tag/simpy/" rel="tag">simpy</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-10279" class="post-10279 post type-post status-publish format-standard has-post-thumbnail hentry category-datasets category-entertainment category-machine-learning category-text-mining tag-datascience tag-game tag-language tag-news tag-nlp tag-semantle tag-textmining tag-wordle"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/"><img width="1033" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=1033&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Wordle with NLP for Data&nbsp;Scientists" decoding="async" loading="lazy" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=1033&amp;h=737&amp;crop=1 1033w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=150&amp;h=107&amp;crop=1 150w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=300&amp;h=214&amp;crop=1 300w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=768&amp;h=548&amp;crop=1 768w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=1024&amp;h=731&amp;crop=1 1024w" sizes="(max-width: 1033px) 100vw, 1033px" data-attachment-id="10280" data-permalink="https://paulvanderlaken.com/image-67/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png" data-orig-size="1033,1225" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=253" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=864" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/" rel="bookmark">Wordle with NLP for Data&nbsp;Scientists</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>I have played my fair share of Wordle. </p> <p>I&#8217;m not necessarily good at it, but most days I get to solve the puzzle.</p> <p>The experience is completely different with <a href="https://semantle.novalis.org/"><strong>Semantle</strong></a> &#8212; a Wordle-inspired puzzle in which you also need to guess the word of the day.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10280" data-permalink="https://paulvanderlaken.com/image-67/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png" data-orig-size="1033,1225" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=253" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=864" loading="lazy" width="864" height="1024" src="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=864" alt="" class="wp-image-10280" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=864 864w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=126 126w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=253 253w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image.png 1033w" sizes="(max-width: 864px) 100vw, 864px" /></figure> <p>Unlike in Wordle, <a href="https://semantle.novalis.org/">Semantle</a> gives you <strong>unlimited guesses</strong> though. And, boy, you will need many!</p> <p>Like Wordle, Semantle gives you hints as to how close your guesses were to the secret word of the day.</p> <p>However, where Wordle shows you how good your guesses were in terms of the letters used, Semantle evaluates the <strong>semantic similarity</strong> of your guesses to the secret word. For the 1000 most similar words to the secret word, it will show you its closeness like in the picture above.</p> <p>T<em>his semantic similarity </em>comes from the domain of <strong><em>Natural Language Processing </em></strong>&#8212; <em>NLP </em>&#8212; and this basically reflects how often <strong>words are used in similar contexts</strong> in natural language. </p> <p>For instance, the words &#8220;<em>love</em>&#8221; and &#8220;<em>hate</em>&#8221; may seem like opposites, but they will often score similarly in grammatical sentences. According to the semantle FAQ <em>the actual opposite of &#8220;love&#8221; is probably something like &#8220;Arizona Diamondbacks&#8221;, or &#8220;carburetor&#8221;</em>.</p> <p>Another example is last day&#8217;s solution (15 March 2022), when the secret word was <strong><em>circle</em></strong>. The ten closest words you could have guessed include <strong><em>circles</em></strong> and <strong><em>semicircle</em></strong>, but more distinctive words such as <strong><em>corner </em></strong>and <strong><em>clockwise</em></strong>.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10285" data-permalink="https://paulvanderlaken.com/image-1-27/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png" data-orig-size="592,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png?w=592" loading="lazy" width="592" height="400" src="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png?w=592" alt="" class="wp-image-10285" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png 592w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png?w=150 150w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image-1.png?w=300 300w" sizes="(max-width: 592px) 100vw, 592px" /></figure> <p>Further downfield you could have guessed relatively close words like <em>saucer</em>, <em>dot</em>, <em>parabola</em>, but I would not have expected words like <em>outwaited</em>, <em>weaved</em>, and <em>zipped</em>.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10287" data-permalink="https://paulvanderlaken.com/image-2-26/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png" data-orig-size="558,688" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-2" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png?w=243" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png?w=558" loading="lazy" width="558" height="688" src="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png?w=558" alt="" class="wp-image-10287" srcset="https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png 558w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png?w=122 122w, https://paulvanderlaken.com/wp-content/uploads/2022/03/image-2.png?w=243 243w" sizes="(max-width: 558px) 100vw, 558px" /></figure> <p>The creator of Semantle scored the semantic similarity for almost all words used in the English language, by training a so-called <a href="https://towardsdatascience.com/word2vec-explained-49c52b4ccb71">word2vec</a> model based on a very large dataset of news articles (<code>GoogleNews-vectors-negative300.bin</code> from late 2021).</p> <p>Now, every day, one word is randomly selected as the secret word, and you can try to guess which one it is. <strong>I usually give up after 300 to 400 guesses</strong>, but my record was 76 guesses for uncovering the secret word <em>world</em>.</p> <p class="has-luminous-vivid-amber-background-color has-background"><strong>Try it out yourself: <a href="https://semantle.novalis.org/">https://semantle.novalis.org/</a></strong></p> <p>And do share your epic wins and fails!</p> <p></p> <p></p> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/" data-text="Wordle with NLP for Data Scientists" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10279" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10279" > <span id="sharing-whatsapp-10279" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10279-67f7bd572b881' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10279&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10279-67f7bd572b881&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10279-67f7bd572b881' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2022/03/16/wordle-with-nlp-for-data-scientists/" rel="bookmark"><time class="entry-date published" datetime="2022-03-16T14:29:00+01:00">16 March 2022</time><time class="updated" datetime="2022-03-16T14:53:49+01:00">16 March 2022</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/datascience/" rel="tag">datascience</a></li><li><a href="https://paulvanderlaken.com/tag/game/" rel="tag">game</a></li><li><a href="https://paulvanderlaken.com/tag/language/" rel="tag">language</a></li><li><a href="https://paulvanderlaken.com/tag/news/" rel="tag">news</a></li><li><a href="https://paulvanderlaken.com/tag/nlp/" rel="tag">NLP</a></li><li><a href="https://paulvanderlaken.com/tag/semantle/" rel="tag">semantle</a></li><li><a href="https://paulvanderlaken.com/tag/textmining/" rel="tag">textmining</a></li><li><a href="https://paulvanderlaken.com/tag/wordle/" rel="tag">wordle</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-10109" class="post-10109 post type-post status-publish format-standard has-post-thumbnail hentry category-finance category-visualization tag-best-practices tag-finance tag-financials tag-franek tag-income tag-kamil tag-pnl tag-statement tag-visualization"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/"><img width="1080" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=1080&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Best Charts for Income &amp; Profit &amp; Loss&nbsp;Statements" decoding="async" loading="lazy" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=1080&amp;h=737&amp;crop=1 1080w, https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=150&amp;h=102&amp;crop=1 150w, https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=300&amp;h=205&amp;crop=1 300w, https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=768&amp;h=524&amp;crop=1 768w, https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=1024&amp;h=699&amp;crop=1 1024w" sizes="(max-width: 1080px) 100vw, 1080px" data-attachment-id="10126" data-permalink="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png" data-orig-size="1080,1350" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="best_charts_for_income_statement_revenue_segments_breakdown_bar_chart[1]" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=240" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?w=819" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" rel="bookmark">Best Charts for Income &amp; Profit &amp; Loss&nbsp;Statements</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>A few months back I wrote about <a href="https://paulvanderlaken.com/2021/08/31/how-to-confuse-your-shareholders-by-bad-data-visualization/">how Rackspace confuses their shareholders using bad data&nbsp;visualization</a> in their quarterly reports.</p> <p>Mort Goldman &#8212; one of my dear readers &#8212; pointed me to <strong><a href="https://www.kamilfranek.com/best-charts-for-income-statement-presentation-and-analysis/">this great tutorial by Kamil Franek</a></strong> where he shows 7 ways to visualize income and profit and loss statements. Please visit Kamil&#8217;s blog for the details, I just copied the visuals here to share with you. </p> <p>Maybe we should forward them to Rackspace as well 😉</p> <p>Kamil uses Google/Alphabet&#8217;s 2018 financial reports as data for his examples.</p> <p>Here are two Sankey diagrams, with different levels of detail. Kamil argues they work best for the big picture overview.</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_summarized_sankey_diagram.png" alt="Example of summarized Sankey diagram chart of an income statement" /><figcaption><img src="https://www.kamilfranek.com/assets/images//best_charts_for_income_statement_sankey_diagram.png" alt="Example of detailed income statement Sankey diagram visualization"></figcaption></figure> <p>I dislike how most text 90 degrees rotated, forcing me to tilt my head in order to read it.</p> <p>An alternative Kamil proposes is the well-known Waterfall chart. Kamil dedicated a <a href="https://www.kamilfranek.com/how-to-redesign-your-income-statement/">whole blog post </a>to creating good waterfalls.</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_waterfall_chart.png" alt="Example of detailed income statement waterfall chart" /></figure> <p>One of my favorite visualization of the blog were these two combined bar charts. One showing the whole bars stacked, the other showing them seperately. The stacked one allows you to discern the bigger trend. The small ones allow for within category comparison.</p> <p>Love it!</p> <figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper"> <a href="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart.png"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart.png" style="max-width:100%;" /></a> </div></figure> <p>Not so much a fan of the next stacked area chart though. In my opinion, a lot of ink for very little information displayed.</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_revenue_percentage_breakdown_area_chart.png" alt="Example of percentage revenue breakdown area chart" /></figure> <p>The colors in this next one are lovely though:</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_expenses_percentage_breakdown_area_chart.png" alt="Example of percentage expenses breakdown area chart" /><figcaption>The next scatter plot/bubble plot was one that I had not expected.</figcaption></figure> <p>I love how this unorthodox visualization really add insights, showing how different cost categories have developed over time. </p> <p>There are some things I would tweak to make the graph more visually appealing though. Particularly the benchmark line is too rough in my opinion.</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_expenses_change_breakdown_scatter_plot.png" alt="Example of expenses changes breakdown scatter/bubble plot" /></figure> <p>Very often, you don&#8217;t need a specialized graph, but a well-formatted table might be much more effective.</p> <p>Kamil shows two great examples. The first one with an integrated bar chart/sparkline, the second one relying strongly on color cues. I prefer the second one, as it better shows the hierarchy in the categories with the highlighted rows.</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_table_with_sparklines.png" alt="Example of income statement table with sparklines" /><figcaption><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_table_with_conditional_formatting.png" alt="Example of income statement table with conditional formatting"></figcaption></figure> <p> Kamil takes it a step further in the next table, but I think they become less and less insightful as more information is included:</p> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_detailed_table_with_change_analysis.png" alt="Example of a detailed income statement table for change analysis" /><figcaption>Kamil&#8217;s final recommendation is this key metrics dashboard. Though I like the general idea, I am not sure whether this one works for me. Particularly the line graphs on the right don&#8217;t provide much insight. I don&#8217;t know whether the last but one dot is 20% or 5% or 50% or 0%. The lack of reference points allows it to be any of these values.</figcaption></figure> <figure class="wp-block-image"><img src="https://www.kamilfranek.com/assets/images/best_charts_for_income_statement_key_metrics_summary_dashboard.png" alt="Example of a summary dashboard for income statement key metrics" /></figure> <p>If you haven&#8217;t yet clicked through, definitely check out <em><a href="https://www.kamilfranek.com/best-charts-for-income-statement-presentation-and-analysis/">Kamil&#8217;s original post</a></em>. </p> <p>There he shares his perspective on the advantages and disadvantages of each of these visualization types, and where they work best in his experience.</p> <p>Also check out Kamil&#8217;s earlier post on <a href="https://www.kamilfranek.com/how-to-redesign-your-income-statement/">How to Visually Redesign Your Income Statement (P&amp;L)</a>.</p> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" data-text="Best Charts for Income &amp; Profit &amp; Loss Statements" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10109" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10109" > <span id="sharing-whatsapp-10109" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10109-67f7bd572e937' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10109&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10109-67f7bd572e937&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10109-67f7bd572e937' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" rel="bookmark"><time class="entry-date published" datetime="2021-11-30T15:00:00+01:00">30 November 2021</time><time class="updated" datetime="2021-11-01T10:08:03+01:00">1 November 2021</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/best-practices/" rel="tag">best practices</a></li><li><a href="https://paulvanderlaken.com/tag/finance/" rel="tag">finance</a></li><li><a href="https://paulvanderlaken.com/tag/financials/" rel="tag">financials</a></li><li><a href="https://paulvanderlaken.com/tag/franek/" rel="tag">franek</a></li><li><a href="https://paulvanderlaken.com/tag/income/" rel="tag">income</a></li><li><a href="https://paulvanderlaken.com/tag/kamil/" rel="tag">kamil</a></li><li><a href="https://paulvanderlaken.com/tag/pnl/" rel="tag">pnl</a></li><li><a href="https://paulvanderlaken.com/tag/statement/" rel="tag">statement</a></li><li><a href="https://paulvanderlaken.com/tag/visualization/" rel="tag">visualization</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-10093" class="post-10093 post type-post status-publish format-standard has-post-thumbnail hentry category-datasets tag-analytics tag-data tag-datascience tag-datasets tag-free tag-machinelearning tag-maven tag-openaccess tag-realdata tag-reallife"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/"><img width="1108" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1108&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Practice your Data Science skills on real-life&nbsp;data" decoding="async" loading="lazy" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1108&amp;h=737&amp;crop=1 1108w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=150&amp;h=100&amp;crop=1 150w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=300&amp;h=200&amp;crop=1 300w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=768&amp;h=511&amp;crop=1 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1024&amp;h=681&amp;crop=1 1024w" sizes="(max-width: 1108px) 100vw, 1108px" data-attachment-id="10096" data-permalink="https://paulvanderlaken.com/image-66/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png" data-orig-size="1805,1287" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1024" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/" rel="bookmark">Practice your Data Science skills on real-life&nbsp;data</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Ma<a href="https://www.mavenanalytics.io/">ven Analytics</a> now provides <strong>open access</strong> to their datasets through what they call their <em>&#8220;<a href="https://www.mavenanalytics.io/data-playground">DATA PLAYGROUND</a>&#8220;</em>!</p> <p>They offer <strong>21 datasets</strong> including a range of different data (time series, geospatial, user preferences) on a variety of topics like business, sports, wine, financial stocks, transportation and whatnot. </p> <p>This is a great starting point if you want to practice your data science, machine learning and analysis skills on real life data!</p> <figure class="wp-block-image size-large"><img data-attachment-id="10098" data-permalink="https://paulvanderlaken.com/image-1-26/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png" data-orig-size="1848,965" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=1024" loading="lazy" width="1024" height="534" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=1024" alt="" class="wp-image-10098" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=1024 1024w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=150 150w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=300 300w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image-1.png 1848w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <p><a href="https://www.mavenanalytics.io/">Maven Analytics</a> provides e-learnings in analysis and programming software. To provide a practical learning experience, their courses are often accompanied by real-life datasets for students to analyze.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10096" data-permalink="https://paulvanderlaken.com/image-66/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png" data-orig-size="1805,1287" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1024" loading="lazy" width="1024" height="730" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1024" alt="" class="wp-image-10096" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=1024 1024w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=150 150w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=300 300w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/image.png 1805w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure> <p> </p> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/" data-text="Practice your Data Science skills on real-life data" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10093" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10093" > <span id="sharing-whatsapp-10093" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10093-67f7bd5731920' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10093&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10093-67f7bd5731920&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10093-67f7bd5731920' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2021/11/30/practice-data-science-real-life-data/" rel="bookmark"><time class="entry-date published" datetime="2021-11-30T15:00:00+01:00">30 November 2021</time><time class="updated" datetime="2021-10-28T10:37:46+02:00">28 October 2021</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/analytics/" rel="tag">analytics</a></li><li><a href="https://paulvanderlaken.com/tag/data/" rel="tag">data</a></li><li><a href="https://paulvanderlaken.com/tag/datascience/" rel="tag">datascience</a></li><li><a href="https://paulvanderlaken.com/tag/datasets/" rel="tag">datasets</a></li><li><a href="https://paulvanderlaken.com/tag/free/" rel="tag">free</a></li><li><a href="https://paulvanderlaken.com/tag/machinelearning/" rel="tag">machinelearning</a></li><li><a href="https://paulvanderlaken.com/tag/maven/" rel="tag">maven</a></li><li><a href="https://paulvanderlaken.com/tag/openaccess/" rel="tag">openaccess</a></li><li><a href="https://paulvanderlaken.com/tag/realdata/" rel="tag">realdata</a></li><li><a href="https://paulvanderlaken.com/tag/reallife/" rel="tag">reallife</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-10061" class="post-10061 post type-post status-publish format-standard has-post-thumbnail hentry category-application category-automation category-ethics category-machine-learning tag-automation tag-bias tag-data tag-decisionmaking tag-discrimination tag-ethics tag-fairness tag-racism tag-society tag-tech tag-video tag-vox"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/"><img width="1108" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=1108&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Vox: Are We Automating&nbsp;Racism?" decoding="async" loading="lazy" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=1108&amp;h=737&amp;crop=1 1108w, https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=150&amp;h=100&amp;crop=1 150w, https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=300&amp;h=200&amp;crop=1 300w, https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=768&amp;h=511&amp;crop=1 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=1024&amp;h=681&amp;crop=1 1024w" sizes="(max-width: 1108px) 100vw, 1108px" data-attachment-id="10062" data-permalink="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/vox-ml/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png" data-orig-size="2061,1475" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="vox-ml" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=300" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/vox-ml.png?w=1024" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/" rel="bookmark">Vox: Are We Automating&nbsp;Racism?</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>In Glad You Asked, Vox dives deep into timely questions around the impact of systemic racism on our communities and in our daily lives.</p> <p>In this video, they look into the role of tech in societal discrimination. People assume that tech and data are neutral, and we have turned to tech as a way to replace biased human decision-making. But as data-driven systems become a bigger and bigger part of our lives, we see more and more cases where they fail. And, more importantly, that they don’t fail on everyone equally.</p> <p>Why do we think tech is neutral? How do algorithms become biased? And how can we fix these algorithms before they cause harm? Find out in this mini-doc:</p> <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> <div class="jetpack-video-wrapper"><div class="embed-youtube"><iframe title="Are We Automating Racism?" width="1108" height="623" src="https://www.youtube.com/embed/Ok5sKLXqynQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></div> </div></figure> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/" data-text="Vox: Are We Automating Racism?" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10061" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10061" > <span id="sharing-whatsapp-10061" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10061-67f7bd5734118' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10061&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10061-67f7bd5734118&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10061-67f7bd5734118' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2021/11/16/vox-are-we-automating-racism%ef%bf%bc/" rel="bookmark"><time class="entry-date published" datetime="2021-11-16T15:00:00+01:00">16 November 2021</time><time class="updated" datetime="2021-10-12T10:37:34+02:00">12 October 2021</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/automation/" rel="tag">automation</a></li><li><a href="https://paulvanderlaken.com/tag/bias/" rel="tag">bias</a></li><li><a href="https://paulvanderlaken.com/tag/data/" rel="tag">data</a></li><li><a href="https://paulvanderlaken.com/tag/decisionmaking/" rel="tag">decisionmaking</a></li><li><a href="https://paulvanderlaken.com/tag/discrimination/" rel="tag">discrimination</a></li><li><a href="https://paulvanderlaken.com/tag/ethics/" rel="tag">ethics</a></li><li><a href="https://paulvanderlaken.com/tag/fairness/" rel="tag">fairness</a></li><li><a href="https://paulvanderlaken.com/tag/racism/" rel="tag">racism</a></li><li><a href="https://paulvanderlaken.com/tag/society/" rel="tag">society</a></li><li><a href="https://paulvanderlaken.com/tag/tech/" rel="tag">tech</a></li><li><a href="https://paulvanderlaken.com/tag/video/" rel="tag">video</a></li><li><a href="https://paulvanderlaken.com/tag/vox/" rel="tag">vox</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-10065" class="post-10065 post type-post status-publish format-standard has-post-thumbnail hentry category-application category-design category-programming category-visualization tag-algorithm tag-art tag-design tag-generative tag-mathematics tag-personal"> <div class="post-image-link"><a rel="bookmark" href="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/"><img width="727" height="737" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=727&amp;h=737&amp;crop=1" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="A New Piece in my Algorithmic Art&nbsp;Collection" decoding="async" loading="lazy" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=727&amp;h=737&amp;crop=1 727w, https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=148&amp;h=150&amp;crop=1 148w, https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=296&amp;h=300&amp;crop=1 296w" sizes="(max-width: 727px) 100vw, 727px" data-attachment-id="10077" data-permalink="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/screenshot-2021-10-14-135227/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png" data-orig-size="727,756" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2021-10-14 135227" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=288" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/screenshot-2021-10-14-135227.png?w=727" /></a></div><!-- .post-image-link --> <header class="entry-header"> <h1 class="entry-title"><a href="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/" rel="bookmark">A New Piece in my Algorithmic Art&nbsp;Collection</a></h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Those who have been following me for some time now will know that I am a big fan of <strong>generative art: <em>art created through computers, mathematics, and algorithms.</em></strong></p> <p>Several years back, my now wife bought me <a href="https://paulvanderlaken.com/2018/11/14/mathematical-art/">my first piece</a> for my promotion, by Marcus Volz.</p> <p>And several years after that, I made <a href="https://paulvanderlaken.com/2020/05/02/generative-art-computer-design-painting/">my own attempt at a second generative art piece</a>, again inspired by the work of Marcus on what he dubbed Metropolis. </p> <figure class="wp-block-image"><img src="https://paulvanderlaken.com/wp-content/uploads/2020/05/20200328_115457.jpg?w=1024" alt="" /></figure> <p>Now, our living room got a third addition in terms of the generative art, this time by <strong><a href="https://twitter.com/rougeux">Nicholas Rougeux</a></strong>.</p> <p>Nicholas I bumped into on twitter, triggered by his collection of <em>&#8220;Lunar Landscapes&#8221;</em> (my own interpretation). </p> <figure class="wp-block-embed is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper"> <blockquote class='twitter-tweet'>This was a fun experiment. Data-driven landscapes. May explore this more. <a href="https://t.co/63vSk7X6eX" rel="nofollow">https://t.co/63vSk7X6eX</a>&mdash; <br />Nicholas Rougeux (@rougeux) <a href='http://twitter.com/#!/rougeux/status/1439268641715986433' data-datetime='2021-09-18T16:42:39+00:00'>September 18, 2021</a></blockquote> </div></figure> <p>Nicholas was hesistant to sell me a piece and insisted that this series was not finished yet. </p> <p>Yet, I already found it wonderful and lovely to look at and after begging Nicholas to sell us one of his early pieces, I sent it over to <strong><a href="https://www.ixxiyourworld.com/en/">ixxi</a></strong> to have it printed and hanged it on our wall above our dinner table.</p> <figure class="wp-block-image size-large"><img data-attachment-id="10072" data-permalink="https://paulvanderlaken.com/20211014_133610/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg" data-orig-size="3024,4032" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G973F&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1634218571&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.32&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.01&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;0&quot;,&quot;longitude&quot;:&quot;0&quot;}" data-image-title="20211014_133610" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=225" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=768" loading="lazy" width="768" height="1024" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=768" alt="" class="wp-image-10072" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=1536 1536w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=113 113w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20211014_133610.jpg?w=225 225w" sizes="(max-width: 768px) 100vw, 768px" /></figure> <figure class="wp-block-image size-large"><img data-attachment-id="10076" data-permalink="https://paulvanderlaken.com/20210923_192132/" data-orig-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg" data-orig-size="3024,4032" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G973F&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1632424893&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.32&quot;,&quot;iso&quot;:&quot;250&quot;,&quot;shutter_speed&quot;:&quot;0.01&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;,&quot;latitude&quot;:&quot;0&quot;,&quot;longitude&quot;:&quot;0&quot;}" data-image-title="20210923_192132" data-image-description="" data-image-caption="" data-medium-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=225" data-large-file="https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=768" loading="lazy" width="768" height="1024" src="https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=768" alt="" class="wp-image-10076" srcset="https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=768 768w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=1536 1536w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=113 113w, https://paulvanderlaken.com/wp-content/uploads/2021/10/20210923_192132.jpg?w=225 225w" sizes="(max-width: 768px) 100vw, 768px" /></figure> <p>If you&#8217;re interested in Nicholas&#8217; work, have a look at <a href="https://www.c82.net/">c82.net</a></p> <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"><div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-linkedin"><div class="linkedin_button"><script type="in/share" data-url="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/" data-counter="right"></script></div></li><li class="share-twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/" data-text="A New Piece in my Algorithmic Art Collection" data-via="paulvanderlaken" data-related="wordpressdotcom">Tweet</a></li><li class="share-facebook"><div class="fb-share-button" data-href="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/" data-layout="button_count"></div></li><li class="share-jetpack-whatsapp"><a rel="nofollow noopener noreferrer" data-shared="sharing-whatsapp-10065" class="share-jetpack-whatsapp sd-button" href="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/?share=jetpack-whatsapp" target="_blank" aria-labelledby="sharing-whatsapp-10065" > <span id="sharing-whatsapp-10065" hidden>Click to share on WhatsApp (Opens in new window)</span> <span>WhatsApp</span> </a></li><li class="share-end"></li></ul></div></div></div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-122868229-10065-67f7bd5738252' data-src='//widgets.wp.com/likes/index.html?ver=20250410#blog_id=122868229&amp;post_id=10065&amp;origin=paulvanderlaken.wordpress.com&amp;obj_id=122868229-10065-67f7bd5738252&amp;domain=paulvanderlaken.com' data-name='like-post-frame-122868229-10065-67f7bd5738252' data-title='Like or Reblog'><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class='loading'>Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div></div> </div><!-- .entry-content --> <footer class="entry-footer"> <ul class="post-meta"><li class="author vcard"><a class="url fn n" href="https://paulvanderlaken.com/author/paulvanderlaken/">Paul van der Laken</a></li><li class="posted-on"><a href="https://paulvanderlaken.com/2021/11/02/new-generative-algorithmic-art-collection/" rel="bookmark"><time class="entry-date published" datetime="2021-11-02T15:00:00+01:00">2 November 2021</time><time class="updated" datetime="2021-10-14T13:57:52+02:00">14 October 2021</time></a></li></ul><!-- .post-metadata --> <div class="meta-wrapper"> <ul class="post-tags"><li><a href="https://paulvanderlaken.com/tag/algorithm/" rel="tag">algorithm</a></li><li><a href="https://paulvanderlaken.com/tag/art/" rel="tag">art</a></li><li><a href="https://paulvanderlaken.com/tag/design/" rel="tag">design</a></li><li><a href="https://paulvanderlaken.com/tag/generative/" rel="tag">generative</a></li><li><a href="https://paulvanderlaken.com/tag/mathematics/" rel="tag">mathematics</a></li><li><a href="https://paulvanderlaken.com/tag/personal/" rel="tag">personal</a></li></ul><!-- .post-tags --> </div><!-- .meta-wrapper --> </footer><!-- .entry-footer --> </article><!-- #post-## --> <nav class="navigation posts-navigation" aria-label="Posts"> <h2 class="screen-reader-text">Posts navigation</h2> <div class="nav-links"><div class="nav-previous"><a href="https://paulvanderlaken.com/page/2/" >Older posts</a></div></div> </nav> </main><!-- #main --> </div><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="search-3" class="widget widget_search"><h2 class="widget-title">Search Archives</h2><form role="search" method="get" class="search-form" action="https://paulvanderlaken.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search &hellip;" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form></aside><aside id="top-posts-6" class="widget widget_top-posts"><h2 class="widget-title">Most Read</h2><div class='widgets-grid-layout no-grav'> <div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2017/09/27/simpsons-paradox-two-hr-examples-with-r-code/" title="Simpson&#039;s Paradox: Two HR examples with R code." class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/09/simpsonsparadox.png?resize=800%2C800&amp;ssl=1 4x" alt="Simpson&#039;s Paradox: Two HR examples with R code." data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2017/08/10/r-resources-cheatsheets-tutorials-books/" title="R resources (free courses, books, tutorials, &amp; cheat sheets)" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/08/banner.png?resize=800%2C800&amp;ssl=1 4x" alt="R resources (free courses, books, tutorials, &amp; cheat sheets)" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2017/10/18/learn-r/" title="New to R? Kickstart your learning and career with these 6 steps!" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/10/kickstart_learn2.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/10/kickstart_learn2.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/10/kickstart_learn2.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2017/10/kickstart_learn2.png?resize=400%2C400&amp;ssl=1 2x" alt="New to R? Kickstart your learning and career with these 6 steps!" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2020/12/22/draw-io-flow-chart-process-diagram-vscode/" title="Flow charts and process diagrams with Draw.io &amp; VS Code" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/12/drawio-png1.gif?resize=800%2C800&amp;ssl=1 4x" alt="Flow charts and process diagrams with Draw.io &amp; VS Code" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2020/06/09/visualize-interpret-cohens-d-effect-size/" title="Visualizing and interpreting Cohen&#039;s d effect sizes" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/03/image-4.png?resize=800%2C800&amp;ssl=1 4x" alt="Visualizing and interpreting Cohen&#039;s d effect sizes" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2020/07/28/publication-ready-correlation-matrix-significance-r/" title="Create a publication-ready correlation matrix, with significance levels, in R" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/07/image-15.png?resize=800%2C800&amp;ssl=1 4x" alt="Create a publication-ready correlation matrix, with significance levels, in R" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2018/01/10/baccarat-simulation-payoff/" title="The House Always Wins: Simulating 5,000,000 Games of Baccarat a.k.a. Punto Banco" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2018/01/average_payoff_pb_50000s100h.png?resize=800%2C800&amp;ssl=1 4x" alt="The House Always Wins: Simulating 5,000,000 Games of Baccarat a.k.a. Punto Banco" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2021/11/30/best-charts-income-profit-loss-statements/" title="Best Charts for Income &amp; Profit &amp; Loss Statements" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2021/11/best_charts_for_income_statement_revenue_segments_breakdown_bar_chart1.png?resize=800%2C800&amp;ssl=1 4x" alt="Best Charts for Income &amp; Profit &amp; Loss Statements" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2019/08/16/roc-auc-precision-and-recall-visually-explained/" title="ROC, AUC, precision, and recall visually explained" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2019/08/roc.gif?resize=800%2C800&amp;ssl=1 4x" alt="ROC, AUC, precision, and recall visually explained" data-pin-nopin="true"/></a></div><div class="widget-grid-view-image"><a href="https://paulvanderlaken.com/2020/01/21/bayes-theorem-probability-intuitive-3blue1brown/" title="Bayes theorem, and making probability intuitive - by 3Blue1Brown" class="bump-view" data-bump-view="tp"><img loading="lazy" width="200" height="200" src="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=200%2C200&#038;ssl=1" srcset="https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=200%2C200&amp;ssl=1 1x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=300%2C300&amp;ssl=1 1.5x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=400%2C400&amp;ssl=1 2x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=600%2C600&amp;ssl=1 3x, https://i0.wp.com/paulvanderlaken.com/wp-content/uploads/2020/01/image-25.png?resize=800%2C800&amp;ssl=1 4x" alt="Bayes theorem, and making probability intuitive - by 3Blue1Brown" data-pin-nopin="true"/></a></div></div> </aside><aside id="wp_tag_cloud-4" class="widget wp_widget_tag_cloud"><h2 class="widget-title">Read more</h2><a href="https://paulvanderlaken.com/tag/ai/" class="tag-cloud-link tag-link-14067 tag-link-position-1" style="font-size: 8.6829268292683pt;" aria-label="AI (19 items)">AI</a> <a href="https://paulvanderlaken.com/tag/algorithm/" class="tag-cloud-link tag-link-18127 tag-link-position-2" style="font-size: 8pt;" aria-label="algorithm (17 items)">algorithm</a> <a href="https://paulvanderlaken.com/tag/application/" class="tag-cloud-link tag-link-3370 tag-link-position-3" style="font-size: 9.3658536585366pt;" aria-label="application (21 items)">application</a> <a href="https://paulvanderlaken.com/tag/automation/" class="tag-cloud-link tag-link-44070 tag-link-position-4" style="font-size: 8pt;" aria-label="automation (17 items)">automation</a> <a href="https://paulvanderlaken.com/tag/data/" class="tag-cloud-link tag-link-22379 tag-link-position-5" style="font-size: 10.90243902439pt;" aria-label="data (26 items)">data</a> <a href="https://paulvanderlaken.com/tag/datascience/" class="tag-cloud-link tag-link-65460562 tag-link-position-6" style="font-size: 10.90243902439pt;" aria-label="datascience (26 items)">datascience</a> <a href="https://paulvanderlaken.com/tag/dataviz/" class="tag-cloud-link tag-link-1448998 tag-link-position-7" style="font-size: 10.90243902439pt;" aria-label="dataviz (26 items)">dataviz</a> <a href="https://paulvanderlaken.com/tag/deeplearning/" class="tag-cloud-link tag-link-126839260 tag-link-position-8" style="font-size: 13.121951219512pt;" aria-label="deeplearning (35 items)">deeplearning</a> <a href="https://paulvanderlaken.com/tag/design/" class="tag-cloud-link tag-link-148 tag-link-position-9" style="font-size: 8pt;" aria-label="design (17 items)">design</a> <a href="https://paulvanderlaken.com/tag/ggplot2/" class="tag-cloud-link tag-link-17710643 tag-link-position-10" style="font-size: 12.780487804878pt;" aria-label="ggplot2 (34 items)">ggplot2</a> <a href="https://paulvanderlaken.com/tag/gif/" class="tag-cloud-link tag-link-239173 tag-link-position-11" style="font-size: 8.6829268292683pt;" aria-label="GIF (19 items)">GIF</a> <a href="https://paulvanderlaken.com/tag/hr/" class="tag-cloud-link tag-link-39956 tag-link-position-12" style="font-size: 8.3414634146341pt;" aria-label="hr (18 items)">hr</a> <a href="https://paulvanderlaken.com/tag/javascript/" class="tag-cloud-link tag-link-457 tag-link-position-13" style="font-size: 11.243902439024pt;" aria-label="javascript (27 items)">javascript</a> <a href="https://paulvanderlaken.com/tag/learning/" class="tag-cloud-link tag-link-264 tag-link-position-14" style="font-size: 16.707317073171pt;" aria-label="learning (58 items)">learning</a> <a href="https://paulvanderlaken.com/tag/machinelearning/" class="tag-cloud-link tag-link-577678 tag-link-position-15" style="font-size: 16.707317073171pt;" aria-label="machinelearning (58 items)">machinelearning</a> <a href="https://paulvanderlaken.com/tag/maps/" class="tag-cloud-link tag-link-1133 tag-link-position-16" style="font-size: 8.3414634146341pt;" aria-label="maps (18 items)">maps</a> <a href="https://paulvanderlaken.com/tag/neuralnetwork/" class="tag-cloud-link tag-link-17932715 tag-link-position-17" style="font-size: 13.463414634146pt;" aria-label="neuralnetwork (37 items)">neuralnetwork</a> <a href="https://paulvanderlaken.com/tag/programming/" class="tag-cloud-link tag-link-196 tag-link-position-18" style="font-size: 17.390243902439pt;" aria-label="programming (63 items)">programming</a> <a href="https://paulvanderlaken.com/tag/python/" class="tag-cloud-link tag-link-832 tag-link-position-19" style="font-size: 17.390243902439pt;" aria-label="python (64 items)">python</a> <a href="https://paulvanderlaken.com/tag/r/" class="tag-cloud-link tag-link-10189 tag-link-position-20" style="font-size: 22pt;" aria-label="r (119 items)">r</a> <a href="https://paulvanderlaken.com/tag/research/" class="tag-cloud-link tag-link-668 tag-link-position-21" style="font-size: 11.414634146341pt;" aria-label="research (28 items)">research</a> <a href="https://paulvanderlaken.com/tag/science/" class="tag-cloud-link tag-link-173 tag-link-position-22" style="font-size: 8pt;" aria-label="science (17 items)">science</a> <a href="https://paulvanderlaken.com/tag/statistics/" class="tag-cloud-link tag-link-5849 tag-link-position-23" style="font-size: 15.682926829268pt;" aria-label="statistics (50 items)">statistics</a> <a href="https://paulvanderlaken.com/tag/text/" class="tag-cloud-link tag-link-5117 tag-link-position-24" style="font-size: 9.0243902439024pt;" aria-label="text (20 items)">text</a> <a href="https://paulvanderlaken.com/tag/textmining/" class="tag-cloud-link tag-link-1210629 tag-link-position-25" style="font-size: 10.560975609756pt;" aria-label="textmining (25 items)">textmining</a> <a href="https://paulvanderlaken.com/tag/tidyverse/" class="tag-cloud-link tag-link-539995747 tag-link-position-26" style="font-size: 10.560975609756pt;" aria-label="tidyverse (25 items)">tidyverse</a> <a href="https://paulvanderlaken.com/tag/tutorial/" class="tag-cloud-link tag-link-2932 tag-link-position-27" style="font-size: 9.0243902439024pt;" aria-label="Tutorial (20 items)">Tutorial</a> <a href="https://paulvanderlaken.com/tag/video/" class="tag-cloud-link tag-link-412 tag-link-position-28" style="font-size: 9.0243902439024pt;" aria-label="video (20 items)">video</a> <a href="https://paulvanderlaken.com/tag/visualization/" class="tag-cloud-link tag-link-44111 tag-link-position-29" style="font-size: 19.268292682927pt;" aria-label="visualization (82 items)">visualization</a> <a href="https://paulvanderlaken.com/tag/youtube/" class="tag-cloud-link tag-link-6567 tag-link-position-30" style="font-size: 8.6829268292683pt;" aria-label="youtube (19 items)">youtube</a></aside><aside id="blog-stats-2" class="widget widget_blog-stats"><h2 class="widget-title">Statistics</h2> <ul> <li>802,546 readers</li> </ul> </aside><aside id="blog_subscription-6" class="widget widget_blog_subscription jetpack_subscription_widget"><h2 class="widget-title"><label for="subscribe-field">Receive updates</label></h2> <div class="wp-block-jetpack-subscriptions__container"> <form action="https://subscribe.wordpress.com" method="post" accept-charset="utf-8" data-blog="122868229" data-post_access_level="everybody" id="subscribe-blog" > <p>Receive notifications of new content.</p> <p id="subscribe-email"> <label id="subscribe-field-label" for="subscribe-field" class="screen-reader-text" > Email Address: </label> <input type="email" name="email" style="width: 95%; padding: 1px 10px" placeholder="Email Address" value="" id="subscribe-field" required /> </p> <p id="subscribe-submit" > <input type="hidden" name="action" value="subscribe"/> <input type="hidden" name="blog_id" value="122868229"/> <input type="hidden" name="source" value="https://paulvanderlaken.com/"/> <input type="hidden" name="sub-type" value="widget"/> <input type="hidden" name="redirect_fragment" value="subscribe-blog"/> <input type="hidden" id="_wpnonce" name="_wpnonce" value="f2facc56bc" /> <button type="submit" class="wp-block-button__link" > Follow </button> </p> </form> <div class="wp-block-jetpack-subscriptions__subscount"> Join 1,417 other subscribers </div> </div> </aside><aside id="categories-6" class="widget widget_categories"><h2 class="widget-title">Browse Archives</h2><form action="https://paulvanderlaken.com" method="get"><label class="screen-reader-text" for="cat">Browse Archives</label><select name='cat' id='cat' class='postform'> <option value='-1'>Select Category</option> <option class="level-0" value="3370">application&nbsp;&nbsp;(57)</option> <option class="level-0" value="44070">automation&nbsp;&nbsp;(44)</option> <option class="level-0" value="2185">best practices&nbsp;&nbsp;(59)</option> <option class="level-0" value="33525">conference&nbsp;&nbsp;(13)</option> <option class="level-0" value="630657">cyber security&nbsp;&nbsp;(2)</option> <option class="level-0" value="129522">datasets&nbsp;&nbsp;(6)</option> <option class="level-0" value="1131271">deep learning&nbsp;&nbsp;(37)</option> <option class="level-0" value="148">design&nbsp;&nbsp;(21)</option> <option class="level-0" value="384">entertainment&nbsp;&nbsp;(57)</option> <option class="level-0" value="8289">ethics&nbsp;&nbsp;(8)</option> <option class="level-0" value="449">experiment&nbsp;&nbsp;(16)</option> <option class="level-0" value="4269">finance&nbsp;&nbsp;(2)</option> <option class="level-0" value="3590">gadget&nbsp;&nbsp;(1)</option> <option class="level-0" value="39956">hr&nbsp;&nbsp;(27)</option> <option class="level-0" value="688756943">java&nbsp;&nbsp;(9)</option> <option class="level-0" value="457">javascript&nbsp;&nbsp;(29)</option> <option class="level-0" value="264">learning&nbsp;&nbsp;(95)</option> <option class="level-0" value="40978">machine learning&nbsp;&nbsp;(85)</option> <option class="level-0" value="103">news&nbsp;&nbsp;(12)</option> <option class="level-0" value="196">programming&nbsp;&nbsp;(37)</option> <option class="level-0" value="832">python&nbsp;&nbsp;(59)</option> <option class="level-0" value="10189">r&nbsp;&nbsp;(134)</option> <option class="level-0" value="1473">reading&nbsp;&nbsp;(17)</option> <option class="level-0" value="101572">reinforcement learning&nbsp;&nbsp;(4)</option> <option class="level-0" value="17573">report&nbsp;&nbsp;(11)</option> <option class="level-0" value="668">research&nbsp;&nbsp;(42)</option> <option class="level-0" value="5849">statistics&nbsp;&nbsp;(75)</option> <option class="level-0" value="186779">text mining&nbsp;&nbsp;(27)</option> <option class="level-0" value="1981">tools&nbsp;&nbsp;(33)</option> <option class="level-0" value="44111">visualization&nbsp;&nbsp;(139)</option> </select> </form><script type="text/javascript"> /* <![CDATA[ */ (function() { var dropdown = document.getElementById( "cat" ); function onCatChange() { if ( dropdown.options[ dropdown.selectedIndex ].value > 0 ) { dropdown.parentNode.submit(); } } dropdown.onchange = onCatChange; })(); /* ]]> */ </script> </aside></div><!-- #secondary --> </div><!-- #content --> <footer id="colophon" class="site-footer" role="contentinfo"> <div class="site-footer-bottom"> <div class="inner"> <nav id="footer-navigation" role="navigation"> <ul id="footer-menu" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3320"><a href="http://www.paulvanderlaken.com">Blog</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3415"><a href="https://paulvanderlaken.com/about/">About</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-517"><a href="https://paulvanderlaken.com/contact/">Contact</a></li> </ul> </nav><!-- #footer-navigation --> <div class="site-info"> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div><!-- .site-info --> </div><!-- .inner --> </div><!-- .site-footer-bottom --> </footer><!-- #colophon --> </div><!-- #page --> <script type="text/javascript"> var infiniteScroll = {"settings":{"id":"main","ajaxurl":"https:\/\/paulvanderlaken.com\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":"page","click_handle":"1","text":"Older posts","totop":"Scroll back to top","currentday":"02.11.21","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":1,"history":{"host":"paulvanderlaken.com","path":"\/page\/%d\/","use_trailing_slashes":true,"parameters":""},"query_args":{"error":"","m":"","p":0,"post_parent":"","subpost":"","subpost_id":"","attachment":"","attachment_id":0,"name":"","pagename":"","page_id":0,"second":"","minute":"","hour":"","day":0,"monthnum":0,"year":0,"w":0,"category_name":"","tag":"","cat":"","tag_id":"","author":"","author_name":"","feed":"","tb":"","paged":0,"meta_key":"","meta_value":"","preview":"","s":"","sentence":"","title":"","fields":"all","menu_order":"","embed":"","category__in":[],"category__not_in":[],"category__and":[],"post__in":[],"post__not_in":[],"post_name__in":[],"tag__in":[],"tag__not_in":[],"tag__and":[],"tag_slug__in":[],"tag_slug__and":[],"post_parent__in":[],"post_parent__not_in":[],"author__in":[],"author__not_in":[],"search_columns":[],"lazy_load_term_meta":false,"posts_per_page":6,"ignore_sticky_posts":false,"suppress_filters":false,"cache_results":true,"update_post_term_cache":true,"update_menu_item_cache":false,"update_post_meta_cache":true,"post_type":"","nopaging":false,"comments_per_page":"50","no_found_rows":false,"order":"DESC"},"query_before":"2025-04-10 14:45:11","last_post_date":"2021-11-02 15:00:00","body_class":"infinite-scroll neverending","loading_text":"Loading new page","stats":"blog=122868229&v=wpcom&tz=2&user_id=0&home=1&subd=paulvanderlaken&x_pagetype=infinite"}}; </script> <!-- --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/files\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/pub\/franklin\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script type="text/javascript" src="//0.gravatar.com/js/hovercards/hovercards.min.js?ver=2025157d8bf6c02970a26c6b0c26b0fcfc89796aa30f84307cffd8fd28d2bcca53dd7a" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1610363240i'></script> <script> // Initialize and attach hovercards to all gravatars ( function() { function init() { if ( typeof Gravatar === 'undefined' ) { return; } if ( typeof Gravatar.init !== 'function' ) { return; } Gravatar.profile_cb = function ( hash, id ) { WPGroHo.syncProfileData( hash, id ); }; Gravatar.my_hash = WPGroHo.my_hash; Gravatar.init( 'body', '#wp-admin-bar-my-account', { i18n: { 'Edit your profile →': 'Edit your profile →', 'View profile →': 'View profile →', 'Contact': 'Contact', 'Send money': 'Send money', 'Sorry, we are unable to load this Gravatar profile.': 'Sorry, we are unable to load this Gravatar profile.', 'Profile not found.': 'Profile not found.', 'Too Many Requests.': 'Too Many Requests.', 'Internal Server Error.': 'Internal Server Error.', }, } ); } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } } )(); </script> <div style="display:none"> </div> <div id="infinite-footer"> <div class="container"> <div class="blog-info"> <a id="infinity-blog-title" href="https://paulvanderlaken.com/" rel="home"> paulvanderlaken.com </a> </div> <div class="blog-credits"> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div> </div> </div><!-- #infinite-footer --> <div id="actionbar" dir="ltr" style="display: none;" class="actnbr-pub-franklin actnbr-has-follow actnbr-has-actions"> <ul> <li class="actnbr-btn actnbr-hidden"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> <div class="actnbr-popover tip tip-top-left actnbr-notice" id="follow-bubble"> <div class="tip-arrow"></div> <div class="tip-inner actnbr-follow-bubble"> <ul> <li class="actnbr-sitename"> <a href="https://paulvanderlaken.com"> <img loading='lazy' alt='' src='https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=50' srcset='https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=50 1x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=75 1.5x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=100 2x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=150 3x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> paulvanderlaken.com </a> </li> <div class="actnbr-message no-display"></div> <form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" style="display: none;"> <div class="actnbr-follow-count">Join 385 other subscribers</div> <div> <input type="email" name="email" placeholder="Enter your email address" class="actnbr-email-field" aria-label="Enter your email address" /> </div> <input type="hidden" name="action" value="subscribe" /> <input type="hidden" name="blog_id" value="122868229" /> <input type="hidden" name="source" value="https://paulvanderlaken.com/" /> <input type="hidden" name="sub-type" value="actionbar-follow" /> <input type="hidden" id="_wpnonce" name="_wpnonce" value="f2facc56bc" /> <div class="actnbr-button-wrap"> <button type="submit" value="Sign me up"> Sign me up </button> </div> </form> <li class="actnbr-login-nudge"> <div> Already have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fpaulvanderlaken.com%252F2022%252F12%252F06%252Fgetting-chatgpt-to-simulate-recruitment-process-in-python%252F">Log in now.</a> </div> </li> </ul> </div> </div> </li> <li class="actnbr-ellipsis actnbr-hidden"> <svg class="gridicon gridicons-ellipsis" height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M7 12c0 1.104-.896 2-2 2s-2-.896-2-2 .896-2 2-2 2 .896 2 2zm12-2c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2zm-7 0c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2z"/></g></svg> <div class="actnbr-popover tip tip-top-left actnbr-more"> <div class="tip-arrow"></div> <div class="tip-inner"> <ul> <li class="actnbr-sitename"> <a href="https://paulvanderlaken.com"> <img loading='lazy' alt='' src='https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=50' srcset='https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=50 1x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=75 1.5x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=100 2x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=150 3x, https://paulvanderlaken.com/wp-content/uploads/2019/10/cropped-paulvanderlaken.com-logo.png?w=200 4x' class='avatar avatar-50' height='50' width='50' /> paulvanderlaken.com </a> </li> <li class="actnbr-folded-follow"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> </li> <li class="actnbr-signup"><a href="https://wordpress.com/start/">Sign up</a></li> <li class="actnbr-login"><a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fpaulvanderlaken.com%252F2022%252F12%252F06%252Fgetting-chatgpt-to-simulate-recruitment-process-in-python%252F">Log in</a></li> <li class="flb-report"> <a href="https://wordpress.com/abuse/?report_url=https://paulvanderlaken.com" target="_blank" rel="noopener noreferrer"> Report this content </a> </li> <li class="actnbr-reader"> <a href="https://wordpress.com/reader/feeds/59750424"> View site in Reader </a> </li> <li class="actnbr-subs"> <a href="https://subscribe.wordpress.com/">Manage subscriptions</a> </li> <li class="actnbr-fold"><a href="">Collapse this bar</a></li> </ul> </div> </div> </li> </ul> </div> <script> window.addEventListener( "load", function( event ) { var link = document.createElement( "link" ); link.href = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.css?v=20250116"; link.type = "text/css"; link.rel = "stylesheet"; document.head.appendChild( link ); var script = document.createElement( "script" ); script.src = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.js?v=20250204"; script.defer = true; document.body.appendChild( script ); } ); </script> <div id="jp-carousel-loading-overlay"> <div id="jp-carousel-loading-wrapper"> <span id="jp-carousel-library-loading">&nbsp;</span> </div> </div> <div class="jp-carousel-overlay" style="display: none;"> <div class="jp-carousel-container"> <!-- The Carousel Swiper --> <div class="jp-carousel-wrap swiper-container jp-carousel-swiper-container jp-carousel-transitions" itemscope itemtype="https://schema.org/ImageGallery"> <div class="jp-carousel swiper-wrapper"></div> <div class="jp-swiper-button-prev swiper-button-prev"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12"> <path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/> </mask> <g mask="url(#maskPrev)"> <rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <div class="jp-swiper-button-next swiper-button-next"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12"> <path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/> </mask> <g mask="url(#maskNext)"> <rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/> </g> </svg> </div> </div> <!-- The main close buton --> <div class="jp-carousel-close-hint"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14"> <path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/> </mask> <g mask="url(#maskClose)"> <rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <!-- Image info, comments and meta --> <div class="jp-carousel-info"> <div class="jp-carousel-info-footer"> <div class="jp-carousel-pagination-container"> <div class="jp-swiper-pagination swiper-pagination"></div> <div class="jp-carousel-pagination"></div> </div> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-caption"></h2> </div> <div class="jp-carousel-photo-icons-container"> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/> </mask> <g mask="url(#maskInfo)"> <rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </span> </a> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/> </mask> <g mask="url(#maskComments)"> <rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span> </span> </a> </div> </div> <div class="jp-carousel-info-extra"> <div class="jp-carousel-info-content-wrapper"> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-title"></h2> </div> <div class="jp-carousel-comments-wrapper"> <div id="jp-carousel-comments-loading"> <span>Loading Comments...</span> </div> <div class="jp-carousel-comments"></div> <div id="jp-carousel-comment-form-container"> <span id="jp-carousel-comment-form-spinner">&nbsp;</span> <div id="jp-carousel-comment-post-results"></div> <form id="jp-carousel-comment-form"> <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label> <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..." ></textarea> <div id="jp-carousel-comment-form-submit-and-info-wrapper"> <div id="jp-carousel-comment-form-commenting-as"> <fieldset> <label for="jp-carousel-comment-form-email-field">Email (Required)</label> <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-author-field">Name (Required)</label> <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-url-field">Website</label> <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" /> </fieldset> </div> <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment" /> </div> </form> </div> </div> <div class="jp-carousel-image-meta"> <div class="jp-carousel-title-and-caption"> <div class="jp-carousel-photo-info"> <h3 class="jp-carousel-caption" itemprop="caption description"></h3> </div> <div class="jp-carousel-photo-description"></div> </div> <ul class="jp-carousel-image-exif" style="display: none;"></ul> <a class="jp-carousel-image-download" href="#" target="_blank" style="display: none;"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/> </mask> <g mask="url(#mask0)"> <rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-download-text"></span> </a> <div class="jp-carousel-image-map" style="display: none;"></div> </div> </div> </div> </div> </div> </div> <script type="text/javascript"> window.WPCOM_sharing_counts = {"https:\/\/paulvanderlaken.com\/2022\/12\/06\/getting-chatgpt-to-simulate-recruitment-process-in-python\/":10661,"https:\/\/paulvanderlaken.com\/2022\/03\/16\/wordle-with-nlp-for-data-scientists\/":10279,"https:\/\/paulvanderlaken.com\/2021\/11\/30\/best-charts-income-profit-loss-statements\/":10109,"https:\/\/paulvanderlaken.com\/2021\/11\/30\/practice-data-science-real-life-data\/":10093,"https:\/\/paulvanderlaken.com\/2021\/11\/16\/vox-are-we-automating-racism%ef%bf%bc\/":10061,"https:\/\/paulvanderlaken.com\/2021\/11\/02\/new-generative-algorithmic-art-collection\/":10065}; </script> <script type="text/javascript"> ( function () { var currentScript = document.currentScript; // Helper function to load an external script. function loadScript( url, cb ) { var script = document.createElement( 'script' ); var prev = currentScript || document.getElementsByTagName( 'script' )[ 0 ]; script.setAttribute( 'async', true ); script.setAttribute( 'src', url ); prev.parentNode.insertBefore( script, prev ); script.addEventListener( 'load', cb ); } function init() { loadScript( 'https://platform.linkedin.com/in.js?async=true', function () { if ( typeof IN !== 'undefined' ) { IN.init(); } } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', init ); } else { init(); } document.body.addEventListener( 'is.post-load', function() { if ( typeof IN !== 'undefined' ) { IN.parse(); } } ); } )(); </script> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&amp;appId=249643311490&version=v2.3'; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <script> document.body.addEventListener( 'is.post-load', function() { if ( 'undefined' !== typeof FB ) { FB.XFBML.parse(); } } ); </script> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-2' href='https://s1.wp.com/_static/??-eJylUNEKAjEM+yFnUU7EB/FTZG7lrHbrWLs7/HtPUEQEEX0pTVISUhiLC5INs0FqrnDrKSuc0IoP5zuGJHIbsTEqBF+lKTLoSAWrO7QcGedBdQZ/uD2OHsQ3hhM1liDpxfku7gfMUSr4ZpK8GYVnBHtVCs6OmNAdkacaEEkNKmqRrDSgGyii6Dvza9GRYo+mYFJcEZ02tcvvfzNijK73zFgvn9AtYJe2i3XXLVabbrk6XQGSpL7Q&cssminify=yes' type='text/css' media='all' /> <script type="text/javascript" src="https://s1.wp.com/wp-content/js/mobile-useragent-info.js?m=1609849039i&amp;ver=20241018" id="mobile-useragent-info-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="coblocks-loader-js-extra"> /* <![CDATA[ */ var wpcom_coblocks_js = {"coblocks_masonry_js":"https:\/\/s2.wp.com\/wp-content\/plugins\/coblocks\/2.18.1-simple-rev.4\/dist\/js\/coblocks-masonry.min.js","coblocks_lightbox_js":"https:\/\/s2.wp.com\/wp-content\/plugins\/coblocks\/2.18.1-simple-rev.4\/dist\/js\/coblocks-lightbox.min.js","jquery_core_js":"\/wp-includes\/js\/jquery\/jquery.min.js","jquery_migrate_js":"\/wp-includes\/js\/jquery\/jquery-migrate.min.js","masonry_js":"\/wp-includes\/js\/masonry.min.js","imagesloaded_js":"\/wp-includes\/js\/imagesloaded.min.js"}; var coblocksLigthboxData = {"closeLabel":"Close Gallery","leftLabel":"Previous","rightLabel":"Next"}; /* ]]> */ </script> <script type="text/javascript" id="jetpack-carousel-js-extra"> /* <![CDATA[ */ var jetpackSwiperLibraryPath = {"url":"https:\/\/s2.wp.com\/wp-content\/mu-plugins\/jetpack-plugin\/moon\/_inc\/build\/carousel\/swiper-bundle.min.js"}; var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https:\/\/paulvanderlaken.com\/wp-admin\/admin-ajax.php","nonce":"dc602451dc","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https:\/\/paulvanderlaken.wordpress.com\/wp-login.php?redirect_to=https%3A%2F%2Fpaulvanderlaken.com%2F2022%2F12%2F06%2Fgetting-chatgpt-to-simulate-recruitment-process-in-python%2F","blog_id":"122868229","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=122868229&v=wpcom&tz=2&user_id=0&home=1&subd=paulvanderlaken","is_public":"1"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/_static/??-eJydkNtOxDAMRH+I1Oqq4vKA+BSU5rLrxrFDLl3270kRBYT2YcWb7ZwZTQbOSRnh6rhCbCpROyIXIAyuwFtzzZ00W3J5WModXIcXV5M24WuHKMLwimxgbkgWkD0yVqeKyUK075chIv913S2NzCQmFDgM4+MwqoIxkVPZrcMEFkuF5QdSJNr2hFf86snF/pHUZvBZc6Ceryt9Y1NRuNzIs17xqDfFjYISMKk+B+XFtKI8vt+i3ErrLWGq6pyMxP+XbnSWVhx9c/vhd0sdp2Z7iJ74s9TVsZW8PSWhi0fa8Zf4PD5M49P9eJim5QNkWtJz'></script> <script type="text/javascript" crossorigin='anonymous' src="https://s0.wp.com/wp-content/plugins/gutenberg-core/v20.0.4/build/hooks/index.min.js?m=1741299224i&amp;ver=84e753e2b66eb7028d38" id="wp-hooks-js"></script> <script type="text/javascript" crossorigin='anonymous' src="https://s0.wp.com/wp-content/plugins/gutenberg-core/v20.0.4/build/i18n/index.min.js?m=1741299224i&amp;ver=bd5a2533e717a1043151" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s0.wp.com/wp-content/mu-plugins/jetpack-mu-wpcom-plugin/moon/jetpack_vendor/automattic/jetpack-classic-theme-helper/dist/responsive-videos/responsive-videos.js?m=1737738052i'></script> <script type="text/javascript" crossorigin='anonymous' src="https://s0.wp.com/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/tiled-gallery/tiled-gallery/tiled-gallery.min.js?m=1725888675i&amp;ver=14.6-a.2" id="tiled-gallery-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="sharing-js-js-extra"> /* <![CDATA[ */ var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"}; /* ]]> */ </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/_static/??/wp-content/mu-plugins/carousel-wpcom/carousel-wpcom.js,/wp-content/mu-plugins/jetpack-plugin/moon/_inc/build/sharedaddy/sharing.min.js?m=1725888675j'></script> <script type="text/javascript" id="sharing-js-js-after"> /* <![CDATA[ */ var windowOpen; ( function () { function matches( el, sel ) { return !! ( el.matches && el.matches( sel ) || el.msMatchesSelector && el.msMatchesSelector( sel ) ); } document.body.addEventListener( 'click', function ( event ) { if ( ! event.target ) { return; } var el; if ( matches( event.target, 'a.share-facebook' ) ) { el = event.target; } else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-facebook' ) ) { el = event.target.parentNode; } if ( el ) { event.preventDefault(); // If there's another sharing window open, close it. if ( typeof windowOpen !== 'undefined' ) { windowOpen.close(); } windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomfacebook', 'menubar=1,resizable=1,width=600,height=400' ); return false; } } ); } )(); /* ]]> */ </script> <script type="text/javascript" src="https://platform.twitter.com/widgets.js?ver=20111117" id="twitter-widgets-js"></script> <script crossorigin='anonymous' type='text/javascript' src='https://s1.wp.com/_static/??-eJyVyzEOgCAMAMAPiRXjAIPxLYINKWptoOj33dy9/eAREy9WZIWzGTlaIq6gD6liMeFY4x6obEYIgfHGgrwRpz7XDv5c+d5yznYanPfOjja/fEYvZQ=='></script> <script type="text/javascript"> (function () { var wpcom_reblog = { source: 'toolbar', toggle_reblog_box_flair: function (obj_id, post_id) { // Go to site selector. This will redirect to their blog if they only have one. const postEndpoint = `https://wordpress.com/post`; // Ideally we would use the permalink here, but fortunately this will be replaced with the // post permalink in the editor. const originalURL = `${ document.location.href }?page_id=${ post_id }`; const url = postEndpoint + '?url=' + encodeURIComponent( originalURL ) + '&is_post_share=true' + '&v=5'; const redirect = function () { if ( ! window.open( url, '_blank' ) ) { location.href = url; } }; if ( /Firefox/.test( navigator.userAgent ) ) { setTimeout( redirect, 0 ); } else { redirect(); } }, }; window.wpcom_reblog = wpcom_reblog; })(); </script> <script type="text/javascript"> (function() { var extend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; }; extend( window.infiniteScroll.settings.scripts, ["jetpack-mu-wpcom-settings","rlt-proxy","jquery-core","jquery-migrate","jquery","wpcom-actionbar-placeholder","grofiles-cards","wpgroho","mobile-useragent-info","jetpack_likes_queuehandler","the-neverending-homepage","coblocks-loader","franklin-script","franklin-navigation","franklin-skip-link-focus-fix","franklin-wpcom-script","jetpack-carousel","wp-polyfill","wp-hooks","wp-i18n","jetpack-responsive-videos","tiled-gallery","carousel-wpcom","sharing-js","twitter-widgets","twitter-widgets-infinity","twitter-widgets-pending"] ); extend( window.infiniteScroll.settings.styles, ["jetpack_likes","the-neverending-homepage","wp-block-library","jetpack-layout-grid","jetpack-ratings","mediaelement","wp-mediaelement","coblocks-frontend","wpcom-core-compat-playlist-styles","wpcom-bbpress2-staff-css","genericons","franklin-style","franklin-wpcom-style","reblogging","geo-location-flair","a8c-global-print","sharedaddy","social-logos","h4-global","wp-emoji-styles","videopress-video-style","jetpack-sharing-buttons-style","classic-theme-styles","global-styles","franklin-fonts","akismet-widget-style","jetpack-global-styles-frontend-style","jetpack-carousel-swiper-css","jetpack-carousel","jetpack-responsive-videos","jetpack-top-posts-widget","tiled-gallery","core-block-supports-duotone"] ); })(); </script> <span id="infinite-aria" aria-live="polite"></span> <iframe src='https://widgets.wp.com/likes/master.html?ver=20250410#ver=20250410' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe> <div id='likes-other-gravatars' role="dialog" aria-hidden="true" tabindex="-1"><div class="likes-text"><span>%d</span></div><ul class="wpl-avatars sd-like-gravatars"></ul></div> <script src="//stats.wp.com/w.js?68" defer></script> <script type="text/javascript"> _tkq = window._tkq || []; _stq = window._stq || []; _tkq.push(['storeContext', {'blog_id':'122868229','blog_tz':'2','user_lang':'en','blog_lang':'en','user_id':'0'}]); _stq.push(['view', {'blog':'122868229','v':'wpcom','tz':'2','user_id':'0','home':'1','subd':'paulvanderlaken'}]); _stq.push(['extra', {'crypt':'UE40eW5QN0p8M2Y/RE1mNzc2NTVTamdsd0xoLz9RQkM2K298TXY9bERQMXc2MjhEaVZfb2wwakRoSj0mUkp1THptM1NdbkV1WjZIcU9mVWQmPUIvMlN6Jk8wW3NYVEJ3dWZOWExuWD9KQWZ8b3FwZTVCOUdxWndiW3hTNFh8L2gxZUZKVXRNPU5JeCV0W2VqVlQwJlN8ZGZ6anp6b2svYm9WQURdRD84U1AzeUI/ZEloLHxzVGY9WHIuUlQzYkJWS01GdyxEQmNbTXk3LnBxSVAudDNXYjFiclRvX29QSGhjSD9jU2ssa1p5OFIwRDRCKy58WmxENl8memE1fHN0RWd1X1NCPVJCUHFSc1lDay5yayUzVDlHMXx2S2N0TklEQU9GZEk/eFBQdiZ5NVZnSEo1QXpsVWlZWFV4cndjJUE5UGImUlphMQ=='}]); _stq.push([ 'clickTrackerInit', '122868229', '0' ]); </script> <noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript> <script defer id="bilmur" data-customproperties="{&quot;enq_jquery&quot;:&quot;1&quot;,&quot;enq_wp-polyfill&quot;:&quot;1&quot;,&quot;logged_in&quot;:&quot;0&quot;,&quot;wptheme&quot;:&quot;pub\/franklin&quot;,&quot;wptheme_is_block&quot;:&quot;0&quot;}" data-provider="wordpress.com" data-service="simple" data-site-tz="Europe/Amsterdam" src="/wp-content/js/bilmur-4.min.js?i=12&m=202515"></script><script> ( function() { function getMobileUserAgentInfo() { if ( typeof wpcom_mobile_user_agent_info === 'object' ) { wpcom_mobile_user_agent_info.init(); var mobileStatsQueryString = ''; if ( wpcom_mobile_user_agent_info.matchedPlatformName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_platforms' + '=' + wpcom_mobile_user_agent_info.matchedPlatformName; } if ( wpcom_mobile_user_agent_info.matchedUserAgentName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_devices' + '=' + wpcom_mobile_user_agent_info.matchedUserAgentName; } if ( wpcom_mobile_user_agent_info.isIPad() ) { mobileStatsQueryString += '&x_' + 'ipad_views' + '=' + 'views'; } if ( mobileStatsQueryString != '' ) { new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?v=wpcom-no-pv' + mobileStatsQueryString + '&baba=' + Math.random(); } } } document.addEventListener( 'DOMContentLoaded', getMobileUserAgentInfo ); } )(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10