Andrey Kurenkov's Web World Jekyll 2018-05-19T07:07:59-07:00 / Andrey Kurenkov / contact@andreykurenkov.com <![CDATA[Task Aware Grasping]]> /projects/research/task-aware-grasping 2018-04-29T00:00:00-07:00 2018-04-29T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>Arxiv paper explaining it all coming soon!</p> <p><a href="/projects/research/task-aware-grasping/">Task Aware Grasping</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on April 29, 2018.</p> <![CDATA[Effective Teamwork - a One Page Guide]]> /writing/project/effective-teamwork 2018-04-29T00:00:00-07:00 2018-04-29T00:00:00-07:00 Andrey Kurenkov www.andreykurenkov.com contact@andreykurenkov.com <blockquote> <p>“Fools learn from experience. I prefer to learn from the experience of others.” <br /> -Otto von Bismarck</p> </blockquote> <p>How this happened: I was helping out a team of undergrads and finding myself frustrated with their workflow. Then it occured to me my many years of experience with big team projects, professional software engineering, and grad-level research have led me to have some pretty strong beliefs about how effective teamwork ought to be done.</p> <p>So below is a one-page summary of all the lessons I have learned having done these many team projects (and having been a culprit in bad teammwork innumerable times). Enjoy!</p> <object data="/writing/files/effective-teamwork/EffectiveTeamwork.pdf" type="application/pdf" width="100%" height="100%"> <p><b>Effective Teamework</b>: This browser does not support PDFs. Please download the PDF to view it: <a href="/pdf/sample-3pp.pdf">Download PDF</a>.</p> </object> <p>Feel free to leave comments <a href="https://docs.google.com/document/d/1-dMVVf5Y0FaCXSW4P4V-vX5TF2yCmgT65S2Xxr2nlVo/edit?usp=sharing">on the Google Doc</a>! (pls dont spam thx).</p> <p><a href="/writing/project/effective-teamwork/">Effective Teamwork - a One Page Guide</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on April 29, 2018.</p> <![CDATA[Skynet Today]]> /projects/team_projects/Skynet-Today 2018-04-02T00:00:00-07:00 2018-04-02T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>A lot of work and team building. Visit the site!</p> <p><a href="/projects/team_projects/Skynet-Today/">Skynet Today</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on April 02, 2018.</p> <![CDATA[AlphaGo Zero Is Not A Sign of Imminent Human-Level AI]]> /writing/is-alphago-zero-overrated 2018-03-30T00:00:00-07:00 2018-03-30T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <h2 id="why-alphago-zero-is-great">Why AlphaGo Zero Is Great</h2> <p>Let’s start with the coverage about DeepMind’s recent successor to AlphaGo<sup id="fnref:AlphaGo"><a href="#fn:AlphaGo" class="footnote">1</a></sup>, AlphaGo Zero:</p> <ul> <li><a href="http://fortune.com/2017/10/19/google-alphago-zero-deepmind-artificial-intelligence/">“Google’s New AlphaGo Breakthrough Could Take Algorithms Where No Humans Have Gone”</a>: &gt; “While it sounds like some sort of soda, AlphaGo Zero may represent as much of a breakthrough as its predecessor, since it could presage the development of algorithms with skills that humans do not have. … AlphaGo achieved its dominance in the game of Go by studying the moves of human experts and by playing against itself—a technique known as reinforcement learning. AlphaGo Zero, meanwhile, trained itself entirely through reinforcement learning. And, despite starting with no tactical guidance or information beyond the rules of the game, the newer algorithm managed to beat the older AlphaGo by 100 games to zero.”</li> <li><a href="https://www.theverge.com/2017/10/18/16495548/deepmind-ai-go-alphago-zero-self-taught">“DeepMind’s Go-playing AI doesn’t need human help to beat us anymore”</a>: &gt; “The company’s latest AlphaGo AI learned superhuman skills by playing itself over and over”</li> <li><a href="https://www.theguardian.com/science/2017/oct/18/its-able-to-create-knowledge-itself-google-unveils-ai-learns-all-on-its-own">“‘It’s able to create knowledge itself’: Google unveils AI that learns on its own”</a>: &gt; “In a major breakthrough for artificial intelligence, AlphaGo Zero took just three days to master the ancient Chinese board game of Go … with no human help”</li> <li><a href="https://www.inc.com/lisa-calhoun/google-artificial-intelligence-alpha-go-zero-just-pressed-reset-on-how-we-learn.html">” Google Artificial Intelligence ‘Alpha Go Zero’ Just Pressed Reset On How To Learn”</a>: &gt; “Alpha Go Zero is changing the game for how we solve big problems.”</li> </ul> <p>Point being: AlphaGo Zero (which we’ll go ahead and shorten to AG0) is arguably the most impressive and definitely the most praised<sup id="fnref:praised"><a href="#fn:praised" class="footnote">2</a></sup> recent AI accomplishment<sup id="fnref:unaware"><a href="#fn:unaware" class="footnote">3</a></sup>. Roughly speaking, AG0 is just a <a href="http://theai.wiki/Deep%20Learning">Deep</a> <a href="http://theai.wiki/Neural%20Network">Neural Network</a> that takes the current state of a Go board as input, and outputs a Go move. Not only is this much simpler than the original AlphaGo<sup id="fnref:simpler"><a href="#fn:simpler" class="footnote">4</a></sup>, but it is also trained purely through self-play (pitting different AlphaGo Zero neural nets against each other; the original AlphaGo was ‘warmed up’ by training to mimic human expert Go players). It’s not exactly right that it learns ‘with no human help’, since the very rules of Go are hand-coded by humans rather than learned by AlphaGo, but the basic idea that it learns through self-play rather without any mimicry of human Go players is correct. I’ll let the key researcher behind it expand on that:</p> <figure> <iframe width="560" height="315" src="https://www.youtube.com/embed/tXlM99xPQC8" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <figcaption>DeepMind's own explanation of why AG0 is so exciting. </figcaption> </figure> <p>So, surely DeepMind’s demonstration that an AI algorithm can achieve superhuman Go and Chess play purely through self-play is a testament to the usefulness of such techniques for solving the hard problems of AI? Well, to some extent yes — it has taken the field decades to get here, since the <a href="http://theai.wiki/Branching%20Factor">branching factor</a> of Go does indeed make it a challenging board game. This is also the first a time the same Deep Learning algorithm was used to crack both Chess and Go<sup id="fnref:general"><a href="#fn:general" class="footnote">5</a></sup>, and was not specifically tailored for it such as was the case with <a href="https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)">Deep Blue</a> (the much heralded machine of IBM that was the first to beat humanity’s best at Chess) and the original AlphaGo. Therefore, AG0 is certainly monumental and exciting work (and great PR).</p> <figure> <img src="/content/editorials/images/is-alphago-zero-overrated/history.png" alt="Game History" /> <figcaption>AlphaGo is the culmination of research into Game AI that stretches all the way back to the birth of AI as a research field. So, it is an inarguably great and historic achievement.<b><a href="http://www.andreykurenkov.com/writing/ai/a-brief-history-of-game-ai/">(source)</a></b></figcaption> </figure> <h2 id="why-alphago-zero-is-not-that-great">Why AlphaGo Zero Is Not That Great</h2> <p>With those positive things having been said, some perspective: AG0 is not really a testament to the usefulness of such techniques for solving the hard problems of AI. You see, Go is only hard within the context of the simplest category of AI problems. That is, it is in the category of problems with every property that makes a learning task easy: it is <a href="https://en.wikibooks.org/wiki/Artificial_Intelligence/AI_Agents_and_their_Environments">deterministic, discrete, static, fully observable, fully-known, single-agent, episodic</a>, cheap and easy to simulate, easy to score… Literally the only challenging aspect of Go is its huge branching factor. Predictions that <a href="http://theai.wiki/AGI">AGI (Artificial General Intelligence)</a> is imminent based only on AlphaGo’s success can be safely dismissed — <a href="https://medium.com/@karpathy/alphago-in-context-c47718cb95a5">the real world is vastly more complex than a simple game like Go</a>. Even fairly similar problems that have most but not all of the properties that make a learning task easy, <a href="/content/news/openai-dota-ii/">such as the strategic video game DotA II</a>, are far beyond our grasp right now.</p> <figure> <img src="/content/editorials/images/is-alphago-zero-overrated/venn.svg" alt="Venn" /> <figcaption>A (rough) diagram of AI problem complexity. Note that Go and (most) Atari games are in the same league as chess; just about the only distinction is branching factor. The techniques that power AG0 may solve games like Go, but as <a href="http://www.skynettoday.com/news/alphago/">I've written elsewhere in more detail</a> most AI problems are vastly more difficult — categorically different. </figcaption> </figure> <p>Another important thing to understand beyond the categorical simplicity of Go is its narrowness. AG0 is a definite example of <a href="http://theai.wiki/Weak%20AI">Weak AI</a>, also known as narrow AI. Weak AI agents are characterized by only being able to perform one ‘narrow’ task, such as playing a 19 by 19 game of Go. Though AG0 has the impressive ability to learn to play 3 different board games, it does so separately per game <sup id="fnref:separately"><a href="#fn:separately" class="footnote">6</a></sup>. And, it can only learn a vary narrow range of games: basically just 2-player grid based board games without any necessary memorization of prior positions or moves<sup id="fnref:memorization"><a href="#fn:memorization" class="footnote">7</a></sup>.</p> <figure> <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">&quot;Generalized AI is worth thinking about because it stretches our imaginations and it gets us to think about our core values and issues of choice and free will that actually do have significant applications for specialized AI.&quot; - <a href="https://twitter.com/BarackObama?ref_src=twsrc%5Etfw">@BarackObama</a> <a href="https://t.co/VFhJsMXuIq">pic.twitter.com/VFhJsMXuIq</a></p>&mdash; Lex Fridman (@lexfridman) <a href="https://twitter.com/lexfridman/status/976461233443561477?ref_src=twsrc%5Etfw">March 21, 2018</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <figcaption>In a <a href="https://www.wired.com/2016/10/president-obama-mit-joi-ito-interview/">lengthy interview with Wired</a>, then-president Obama displayed an impressively nuanced understanding of the state of AI. If only some unnamed billionaires would communicate to the public similarly... </figcaption> </figure> <p>So, while AG0 works and its achievement is impressive, it is fundamentally similar to Deep Blue in being an expensive system engineered over many years with millions of dollars of investment purely for the task of playing a game — nothing else. Though Deep Blue was great PR for IBM, all that work and investment is not usually seen as having contributed much to the progress of broader AI research, having been ultra-specific to solving the problem of playing Chess. Just as with the algorithms that power AG0, human-tweaked heuristics and sheer computational brute force can definitely be used to solve some challenging problems — but they ultimately did not get us far beyond Chess, not even to Go. We should ask ourselves: can the techniques behind AG0 get us far beyond Go?</p> <figure> <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">&quot;Games (Chess, Go, Dota) represent closed systems, which means we humans filled the machine with a target, with rules. There is no automatic transfer of the knowledge that machines could accumulate in closed systems to open-ended systems.&quot; - Garry Kasparov <a href="https://t.co/ysdV7sG9Qv">pic.twitter.com/ysdV7sG9Qv</a></p>&mdash; Lex Fridman (@lexfridman) <a href="https://twitter.com/lexfridman/status/974624143441350658?ref_src=twsrc%5Etfw">March 16, 2018</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <figcaption>Gary Kasparov, the very man who faced and ultimately lost to Deep Blue, on the limitations of Deep Blue and implicitly AlphaGo. </figcaption> </figure> <p>Probably, yes; the algorithms behind AG0 (Deep Learning and self-play) are inherently more general than human-defined heuristics and brute computation<sup id="fnref:likely"><a href="#fn:likely" class="footnote">8</a></sup>. Still, it is important to understand and remember the parallels between Deep Blue and AG0: <strong>at the end of the day, both Deep Blue and AG0 are narrow AI programs that were built (at least in part) as PR boons for large companies by huge teams at the costs of millions of dollars; they deal with problems which are difficult for humans, but which are also relatively simple for computers.</strong></p> <figure> <img src="/content/editorials/images/is-alphago-zero-overrated/ibm.png" alt="PR" /> <figcaption>"One day after its chess computer defeated Garry Kasparov, the world chess champion, I.B.M. stock surged to a 10-year high and was only a bit shy of its record." <b><a href="http://www.nytimes.com/1997/05/13/business/ibm-s-stock-surges-by-3.6.html">(source)</a></b> </figcaption> </figure> <p>I write this not to be controversial or take away from DeepMind’s fantastic work, but rather to fight against all the unwarranted hype AG0’s success has generated and encourage more conversation about the limitations of deep learning and self-play. More people need to <a href="https://arxiv.org/abs/1801.05667">step up</a> and <a href="https://www.alexirpan.com/2018/02/14/rl-hard.html">say this kind of stuff</a> for the general public as well as the AI research community to not be led astray by hype and PR.</p> <figure> <img src="/content/editorials/images/is-alphago-zero-overrated/hype.png" alt="AI Hype" /> <figcaption>AGI Doomsayers overhype the significance of things like AG0 while people like me try to counter them and bring about disillusionment; meanwhile there are plenty of ethical concerns and potential misuses of AI to worry about already. Let's hope we reach the plateau of productivity soon... <a href="https://en.wikipedia.org/wiki/Hype_cycle"><b>(source)</b></a></figcaption> </figure> <p>And all that aside, it should still be asked: might there be a better for AI agents to learn to play Go? The very name AlphaGo Zero is in reference to the idea that the model learns to play Go <a href="https://deepmind.com/blog/alphago-zero-learning-scratch/">“from scratch”</a>, without any further human input or explanation. But is learning ‘from scratch’ really such a good thing? Imagine you knew nothing about Go and decided to start learning it. You would definitely read the rules, some high level strategies, recall how you played similar games in the past, get some advice… right? And it indeed at least partially because of the learning ‘from scratch’ <strong>limitation</strong> of AlphaGo Zero that it is not truly impressive compared to human learning: like Deep Blue, it still relies on seeing orders of magnitude more Go games and planning for orders of magnitude more scenarios in any given game than any human ever does.</p> <figure> <img src="/content/editorials/images/is-alphago-zero-overrated/go_gif.gif" alt="Go GIF" /> <figcaption>The progression of AG0's skill. It is certainly impressive that it takes 'just' 3 days of non-stop computation to get to best-human-in-the-world skill. But perhaps we should also note it takes a whole day and orders of magnitude more games than humans get to experience in their lifetimes to get to an ELO score of 0 (which even the weakest human can do easily)? From <a href="https://deepmind.com/blog/alphago-zero-learning-scratch/"><b>"DeepMind's AlphaGo Zero Blog Post"</b></a> </figcaption> </figure> <h2 id="tldr">TLDR</h2> <p>So, let’s sum up: though AlphaGo and AG0’s achievements are historic and impressive, they also represent little if any progress in tackling the truly hard problems of AI (not to mention AGI). Still, as with any field all AI researchers stand on the shoulders of their predecessors; though these techniques may not foreshadow the coming of AGI, they are definitely part of the Deep Learning Revolution the field is still in the midst of and the ideas that they are based on will doubtlessly enable future progress. As with Deep Learning as a whole, it is important to appreciate these fantastic accomplishments for the field of AI without losing perspective about their limitations.</p> <div class="footnotes"> <ol> <li id="fn:AlphaGo"> <p>AlphaGo is the program that famously beat humanity’s best Go player Lee Sedol. <a href="#fnref:AlphaGo" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:praised"> <p>At least, praised by non-technical news coverage <a href="#fnref:praised" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:unaware"> <p>For those unaware, AlphaGo Zero is the name of an algorithm discussed in a paper late last year. <a href="#fnref:unaware" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:simpler"> <p>In contrast to AG0, AlphaGo involved several neural nets and features specific to Go. <a href="#fnref:simpler" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:general"> <p>There are many approaches to <a href="https://en.wikipedia.org/wiki/General_game_playing">General Game Playing</a> that cover much more than just Chess and Go, and neither AG0 nor any Deep Learning approach had yet to be compared to those in the standard competitions they are pitted against each other at. <a href="#fnref:general" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:separately"> <p>That is, there is not a single trained neural net that can play the 3 games, but 3 separate neural nets with one for each game. <a href="#fnref:separately" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:memorization"> <p>That is, on any given move the board contains all the necessary information to decide on the next move; no memory of the past required. <a href="#fnref:memorization" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:likely"> <p>It’s quite likely that right now researchers and engineers at DeepMind are working hard to demonstrate the next version of AlphaGo, which will presumably learn to play multiple games rather than just one. <a href="#fnref:likely" class="reversefootnote">&#8617;</a></p> </li> </ol> </div> <p><a href="/writing/is-alphago-zero-overrated/">AlphaGo Zero Is Not A Sign of Imminent Human-Level AI</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on March 30, 2018.</p> <![CDATA[The 2018 Best Picture Nominees Ranked, Reviewed, and Reflected Upon]]> /writing/art/oscar-noms-reviewed 2018-03-03T00:00:00-08:00 2018-03-03T00:00:00-08:00 Andrey Kurenkov www.andreykurenkov.com contact@andreykurenkov.com <h2 id="intro">Intro</h2> <p>When the 2018 Oscar best picture nominees were released, I realized I had already seen most of them before they were known to be the nominees purely because I was excited for them as works of art. Then, just for fun, I endeavored to watch the rest and cataloged my personal <a href="https://letterboxd.com/andreykurenkov/list/oscars-best-picture-2018-my-faves/">preferences</a>. But then I realized I could do more. I had reviews and further thoughts on most of these films, and could write up a whole big summary - what you are reading now! So without further ado, ordered from least to most liked for the sake of ending on the most positive note, reviews and thoughts on all the best pictures nominees:</p> <h1 id="darkest-hour">Darkest Hour</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/darkest.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/darkest.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-020318">Viewing Date: 02/03/18</h2> <h2 id="original-score-355">Original Score: 3.5/5</h2> <h2 id="original-review">Original Review:</h2> <p>A showy movie of romance and splendor - too much romance and splendor, in fact. Especially in its first half, the loud soundtrack, fancy panning/zooming/flying shots, and weird bouts of humor all add up to annoy and exhaust rather than highlight the excellent central performance. This improves in the second half, with show-off shots that are quite nice and serve to highlight the peril Churchill stands in. But, then the romantic bit cuts in and ruins that improvement with a bastardized version of history that does not seem realistic and <a href="http://time.com/5183140/gary-oldman-winston-churchill-true-history/">indeed is utterly false</a>. Still, the movie looks great, Oldman crafts a compelling portrayal, and overindulgence combined with a liberal interpretation of history are at least a far lesser sin than being boring or shallow.</p> <h2 id="current-score-355">Current Score: 3.5/5</h2> <h2 id="thoughts">Thoughts:</h2> <p>The only movie among all of these I would not call great. This is an unusual case of a movie on which I am split, as I can find both great and not so great elements within it. Sadly, great plus not so great equals not so great.</p> <p>As with the rest of these, my perspective on it has been affected a good deal by external listening and reading, in this case <a href="http://www.theqandapodcast.com/2017/12/darkest-hour-anthony-mccarten-q.html">The Q&amp;A with Jeff Goldsmith</a> which reveals many interesting tidbits such as:</p> <ul> <li>The linked interview is with the screenwriter Anthony McCarten, who has previously written The Theory of Everything. My impression of the critical response to that one was that a sort-of schmaltzy Oscar bait flick, which is a broadly correct characterization of this movie as well.</li> <li>The movie’s chief theme is the power of words, but the case of Churchill hardly seems like a good case for that; many figures (MLK Jr. comes to mind) have made far far more impactful speeches than the ones shown the film.</li> <li>There is also a focus on the wisdom of having uncertainty as a leader, but once more I don’t think Churchill and Dunkirk are the best possible frames to tell that story.</li> <li>Gary Oldman, who gives a memorable performance despite looking nothing like Churchill, had to go through three and a half hours of makeup each day to be able to look like the portly old Winston. Though it certainly is a good portrayal, it seems a bit overkill given that the movie’s showy direction ultimately overshadows the acting and plenty of fine actors who look more like Churchill could have done a fine job as well…</li> </ul> <h1 id="the-post">The Post</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/post.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/post.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-250218">Viewing Date: 25/02/18</h2> <h2 id="original-score-455">Original Score: 4.5/5</h2> <h2 id="original-review-1">Original Review:</h2> <p>A timely and smart allegory for the importance of a free press and the pervasiveness of sexism in the 1970s (and rather obviously, in the present). Strikes just the right balance of gripping-character-driven story and not-at-all-subtle social critique, and Spielberg is as good as ever at the basic craft of cinema. Hanks is a little predictable if solid, but Meryl Streep absolutely owns the role and makes the character come alive. Plenty of critics will just dismiss this as forgettable awards fluff, but when watched without cynicism it’s clear this is an excellently made, thoroughly enjoyable, and unusually intelligent film.</p> <h2 id="current-score-455">Current Score: 4.5/5</h2> <h2 id="thoughts-1">Thoughts:</h2> <p>I have seen this one recently, and unlike Darkest Hour I don’t think it is schmaltzy Oscat-bait at all despite looking like it might be. Spielberg smartly made it a lean and direct message-movie, and its direct address of the importance of the press and <a href="https://youtu.be/45r_klAYPbw?t=2m7s">the reality of sexism in society</a> is still as relevant as it was in the 1970s. And again, Meryl Streep is just so sublime, the movie is worth seeing for that alone. I leave you with a fantastic interview that delves into the impressive real life figure Streep portrayed so well:</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/M56VRfUSqkA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <h1 id="get-out">Get Out</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/get_out.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/get_out.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-210118">Viewing Date: 21/01/18</h2> <h2 id="original-score-45">Original Score: 4/5</h2> <h2 id="original-review-2">Original Review:</h2> <p>A clever, effective, and timely satire horror comedy.</p> <h2 id="current-score-455-1">Current Score: 4.5/5</h2> <h2 id="thoughts-2">Thoughts:</h2> <p>One of the multiple movies among these for which my esteem has only grown. As with others, listening to conversations with its makers played an important role in evolving my view of it. In particular, the <a href="http://www.theqandapodcast.com/2017/02/jordan-peele-get-out-q.html">Q&amp;A with Jeff Goldsmith interview with the writer and director Jordan Peele</a> revealed many suble and smart aspects:</p> <ul> <li>Grounding the film’s horror in a universal experience (meeting a significant other’s parents) made it relatable for all viewers.</li> <li>Peele has had the idea for many years, and he decided to collaborate with Blumhouse Productions because they encouraged him to have full creative control and craft it in accordance with his vision. This has resulted in one of the most original and timely movies of the year.</li> <li>There is more subtle symbolism and implied detail than I realized while watching the film, which not typically true of such audience pleasers/crowd favorites.</li> </ul> <p>Additionally, others have done an excellent job aspousing how smart the movie actually is:</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/Jdd0JF79q4I" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <iframe width="560" height="315" src="https://www.youtube.com/embed/AJLHsXw-LFI" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <h1 id="lady-bird">Lady Bird</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/lady_bird.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/lady_bird.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-181117">Viewing Date: 18/11/17</h2> <h2 id="original-score-455-1">Original Score: 4.5/5</h2> <h2 id="original-review-3">Original Review:</h2> <p>A great coming-of-age movie with fantastic acting, editing, writing, and… just about everything. A few bits of dialogue feel a bit too clever for their own good, and having a few scenes go slower might’ve been good, but the strength of the central performance and so many individual memorable moments alone make this utterly worth watching.</p> <h2 id="current-score-45">Current Score: 4/5</h2> <h2 id="thoughts-3">Thoughts:</h2> <p>A rare film for which my esteem has somewhat dropped. Some of the writing just feels too clever for its own good (like the ‘my mother made one mistake’ scene notably highlighted in the trailer), and like its protagonist the movie feels like its trying hard to be cool and smart but is not being vulnerable and honest in the process. Still, a fantastic growing of age movie, in particular because of the brilliance of lead actress Saoirse Ronan and writer/director Greta Gerwig - definitely some of the most exciting young talents in film today.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/iODwgFDvdC0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <h1 id="phantom-thread">Phantom Thread</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/phantom_thread.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/phantom_thread.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-030218">Viewing Date: 03/02/18</h2> <h2 id="original-score-455-2">Original Score: 4.5/5</h2> <h2 id="original-review-4">Original Review:</h2> <p>A surprisingly sly, perverse, and darkly funny period romance. Exquisitely staged, exquisitely acted, exquisitely directed… exquisite.</p> <h2 id="current-score-55">Current Score: 5/5</h2> <h2 id="thoughts-4">Thoughts:</h2> <p>And now we get to the set of movies I unabashedly love! Once again my appreciation has grown due to <a href="http://www.bbc.co.uk/programmes/b09pn8pl">BBC Film Programme</a> interview:</p> <ul> <li>The key inspiration for the movie, the writer director Paul Thomas Anderson being sick and taken care of by his wife, is unusual and unexpected. He gets at aspects of romance and relationships not often explored, which is impressive.</li> <li>As the interviewer notes, on a second viewing it’s much easier to see the film as being utterly comedic rather than serious and dramatic like the director’s other work. I have been describing this as a ‘sly, intelligent, dark romantic comedy’ to friends, and it is refreshing to see such a non-formulatic romantic comedy.</li> <li>Another unexpected aspect is the richness of the female characters, who may be more fully three dimensional than Daniel Day Lewsis’s excellently portrayed male character. As Anderson says in his interview:</li> </ul> <blockquote> <p>“Daniel is front and center because he is Daniel… I think Audiences go in with expectation this is Daniel’s film, but in fact he is support for the girls who are our protags.”</p> </blockquote> <h1 id="shape-of-water">Shape of Water</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/shape_of_water.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/shape_of_water.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-091217">Viewing Date: 09/12/17</h2> <h2 id="original-score-455-3">Original Score: 4.5/5</h2> <h2 id="original-review-5">Original Review:</h2> <p>Like the fantastical creature at its core, The Shape of Water is beautiful, strange, and exquisitely crafted.</p> <h2 id="current-score-45-1">Current Score: 4/5</h2> <h2 id="thoughts-5">Thoughts:</h2> <p>While watching the movie, I was struck by how unabashedly and unreservedly beautiful it was. So I was glad to hear that was Guillermo del Toro’s intent; as stated on the <a href="http://www.bbc.co.uk/programmes/b09qhbt8">BBC Film Programme</a></p> <blockquote> <p>“The overwhelming reaction is the same overwhelming reason why I wanted to make it, which is, can you please show me something beautiful, can you please show me something life affirming, can you please take me out of the news, right now…”</p> </blockquote> <p>That being said, it is also one of the few movies I consider great for which my esteem has lessened. A big part of the reason is the lengthy discussion on <a href="https://megaphone.link/PPY7532927140">the Next Picture Show podcast</a>, in which most of the participants felt tepid about the film. I agree with their perspective that the movie feels a little artificial in all its beauty, and that going as far as it does in portraying the romance explicitly undercuts it somewhat. Still, this is a rare simple allegory of sensual delights that is definitely worth seeing.</p> <h1 id="dunkirk">Dunkirk</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/dunkirk.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/dunkirk.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-230717">Viewing Date: 23/07/17</h2> <h2 id="original-score-45-1">Original Score: 4/5</h2> <h2 id="original-review-6">Original Review:</h2> <p>Visceral. Unlike Nolan’s many other neat-idea or plot-puzzle movies, this one is made with the obvious intent of making you feel an experience to your bones. But, some of Nolan’s fondness for fancy intellectually fun structure is here - there is no conventional 3 act structure or protagonist with an arc and instead an ensemble cast going through overlapping but temporally offset narratives that come together by the end. Yet more daringly, the ensemble story has minimalist character development and plot, which leaves it free to almost entirely avoid exposition and fully immerse you in the characters’ dreaded pulse-pounding experiences. And does it ever do that - especially in the perfect-for-this-film IMAX, it’s great big stark melancholy colored images, seemingly never stopping soundtrack, and clearly big budget production all work to grab you and not let you go til the movie is over and you can cry along with the soldiers at the plane sight of English greenery.</p> <p>This all is great and for the most part executed beautifully, except that I am not sure if the 3 narrative threads really work well together, and by the end the cross-cutting between narrative threads gets overdone and lessens the impact of the ending a good deal. And, after that ending there is just not a whole lot to think back on or relate to; it’s a hell of a ride, but not much more. It made me think back to Gravity, which is likewise a non-stop visceral tale of survival, but one that I think managed to still have a resonant theme and message. But damn, is this one of a hell of a ride.</p> <h2 id="current-score-455-2">Current Score: 4.5/5</h2> <h2 id="thoughts-6">Thoughts:</h2> <p>So many thoughts… as indicated in the review I was unsure of Nolan’s layered fancy structure was actually warranted, but I have since grown to appreciate it more. Once, much insight comes from an interview on the <a href="http://www.bbc.co.uk/programmes/b08y26qr">BBC Film Programme</a>:</p> <ul> <li>The movie is discussed as ‘The most expensive experimental film in cinema history’, which feels quite right. Just the audacity to do something so intricate and out there in a big budget movie earns a lot of respect from me.</li> <li>The idea of the structure came before writing the script, which makes sense; the script is utterly</li> <li>Nolan describes the movie as being ‘Intensively subjective’, and justifies the structure by its ability to get across the bigger picture of the Dunkirk event while also staying extremely close to the boots-on-the-ground soldiers. He has a nice line of not having wanted to cut to a room of general discussing the situation, and indeed he does not, and the movie is far far stronger for it.</li> <li>With regard to the experimentation of the film, Nolan says that he wants to work at the ‘Edge of what mainstream audience can get enlivened by’ and feels that audiences that don’t treat movies like puzzles but rather just let ‘the experience of the movie wash over them’ will enjoy them most. I feel that Nolan’s movies are far too often treated as puzzles, and liked his perspective on this a lot.</li> <li>Nolan commented that cinema has unique ability to manipulate perception of time, and that his intent pull with this film was to ‘pull that part of machinery out’ and have an ‘explicit discussion with the audience’ rather letting it be subliminal as in most movies.</li> <li>What I appreciated most, and still appreciate most, about the film is its ability to make me feel like I was there. It was evident this was not accidental * Nolan discusses at length of how he wanted to make it feel as real as possible by setting things in real physical spaces, and by leveraging the grammar of suspense ‘present tense narrative’. That is, he focused on just showing the character in a given situation without extra dramatization or characterization; such daring minimalism is rare and was incredibly successful here.</li> <li>A last interesting tidbit is that early in the music composition, Nolan sent the composer a recording of a pocket watch. Unlike most movies, which add music after the movie is made, composition was done from very early on so that the ‘score could be fused with picture and sound effects early on’. This worked fantastically well - as Nolan says, there is a ‘physical fusion of picture and music and sound effects unlike anything else’. The music is ‘objective’; just the screenplay is stripped of all unnecessary dialogue (all conversation except that which is needed to survive), the music is stripped of all unnecessary emotion and is meant to convey the experience of the preset moment. But the intelligence and the brilliance of the score goes even beyond that, as highlighted in this video:</li> </ul> <iframe width="560" height="315" src="https://www.youtube.com/embed/LVWTQcZbLgY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <h1 id="call-me-by-your-name">Call Me By Your Name</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/name.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/name.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-210118-1">Viewing Date: 21/01/18</h2> <h2 id="original-score-55">Original Score: 5/5</h2> <h2 id="original-review-7">Original Review:</h2> <p>Luscious, sensual, rapturous - perfectly captures the feeling of being young during a care free summer of discovery that is equal parts exciting and nerve wrecking. And it does so beautifully, artistically; there are so many close ups and frames in this movie that convey an endless depth of emotion and thought without a word being spoken. And it does so intelligently, thematically tying back to the greeks’ views on sensuality and love; unlike so much of recent 80-set media, this does not feel nostalgic - it feels timeless.</p> <p>And the music! Sufjan Stevens is such a perfect fit for this, singing in his soft voice of the ‘Mystery of Love’. And the writing! Adapted by now 89-year old James Ivory, it feels wise and fully aware of the subtle unspeakable eternal truths of life. I credit Ivory too, with the unusual lack of tension over being found out as gay and the character’s fully supportive parts; as discussed <a href="https://www.dailyemerald.com/2018/02/05/call-name-screenwriter-james-ivory-returns-uo-screening-qa/"> in an interview </a>, this felt like a welcome change from more conventional cinema:</p> <blockquote cite="https://www.dailyemerald.com/2018/02/05/call-name-screenwriter-james-ivory-returns-uo-screening-qa/"> ... it’s been very hard to find a gay film which was about happiness and joy and love,” Ivory said during the Q&amp;A after the film. ... The moderator of the event, cinema studies instructor Sergio Rigoletto, said that one of the revolutionary things about “Call Me By Your Name” is that it allows its gay characters to be in love without the impending threat of punishment. Sure, the fear of being found does live in the back of their minds, but their main reasons for not being able to be together are their age differences and the fact that Elio and Oliver only have six weeks of their summer together. </blockquote> <p>So, the movie is joy, happiness, love. And the final shot! Watch this film, if only for the final conversation, and the final shot.</p> <p>“I remember everything”</p> <h2 id="current-score-55-1">Current Score: 5/5</h2> <h2 id="thoughts-7">Thoughts:</h2> <p>Well, my appreciation of this movie has certainly not lessened - everything that I said in that original review, I still feel. But as with Three Billboards, hearing interviews and watching videos has also deepened my appreciation of the movie. In particular, the lengthy and detailed interview of the director and co-author by Luca Guadagnino on the <a href="http://www.theqandapodcast.com/2017/12/call-me-by-your-name-q.html">The Q&amp;A with Jeff Goldsmith</a> highlights many great elements:</p> <ul> <li>The protagonist is very well portrayed as what he is - a 17 year old kid, a “mini bomb of different contradictions”. He has not come to think of himself as belonging to any group or label, and is appropriately excited and afraid of the desires he feels.</li> <li>The interview frankly discusses the issue of the age difference between the 17-year old protagonist and his 24-year old lover. For one the age of consent in Italy is 16, and for another this has been done before with such classics as Dirty Dancing. But far more importantly, the movie does something many romantic movies without such an age difference do not: show direct and clear disclosure of one’s feelings, portray explicit and enthusiastic consent during sex, and linger on direct discussions over each person’s concerns and desires. And it does so while not losing any sense of romance, passion, or beauty - what a feat!</li> <li>The director would not change anything about the movie if here to do it over. And he is right! I would not want him to.</li> <li>Sufjan Stevens came into collaboration on the movie’s soundtrack after a large amount of narration was cut out from the original screenplay. Stevens’ songs are meant to act as a sort of third person narrator communicating the universality of the love story we are seeing, and I think that was done perfectly.</li> </ul> <iframe width="560" height="315" src="https://www.youtube.com/embed/KQT32vW61eI" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p>Lastly, what I’ve grown to appreciate even more than I did after just watching the movie is this element of portraying an utterly happy love story (even if it ends with separation, rather than marriage). As <a href="https://youtu.be/5u2MAUPbFxo?t=2m45s">stated perfectly by the book’s author in an interview of both him and the movie’s director</a>,</p> <blockquote> <p>“Both the novel and film do one thing that is so essential - there is no accident, there is no death, there is no banning of any sexual proclivity - these are two individuals who have a relationship, and I think it should serve as a model for essentially happy romance.”</p> </blockquote> <iframe width="560" height="315" src="https://www.youtube.com/embed/eE01rqDJ13A" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><br /></p> <h1 id="three-billboards-outside-ebbing-missouri">Three Billboards Outside Ebbing, Missouri</h1> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-03-03-oscar-noms-reviewed/three_billboards.jpg"><img class="postimageactual" src="/writing/images/2018-03-03-oscar-noms-reviewed/three_billboards.jpg" alt="Poster" /></a></p> </div></figure> <h2 id="viewing-date-210118-2">Viewing Date: 21/01/18</h2> <h2 id="original-score-455-4">Original Score: 4.5/5</h2> <h2 id="original-review-8">Original Review:</h2> <p>Challenging, unexpected, dark, funny - a rare treat. Definitely worth seeing.</p> <h2 id="current-score-55-2">Current Score: 5/5</h2> <h2 id="thoughts-8">Thoughts:</h2> <p>A rare movie for which my esteem has only grown, and in just one month.</p> <p>I think what I appreciate so much about this film (and why I think it deserves to win best picture) is that it is far more challenging that any of the other films on here. As eloquently stated by the writer and director Martin McDonagh on <a href="https://www.bbc.co.uk/programmes/b09l203n">the BBC Film Programme</a>, the core of the film is two characters going to war in which neither one is really the bad guy. It would be so easy to make the grieving mother the one to clearly root for and to portray the authorities as incapable and uncaring. But as <a href="http://www.denofgeek.com/uk/movies/martin-mcdonagh/54436/martin-mcdonagh-interview-three-billboards-outside-ebbing-missouri">McDonah says</a>:</p> <blockquote> <p>“Even though she’s technically the hero of the piece she does things that are way out of order, indefensible. That’s part of why I really like her, the character and Frances’ playing of her, she’s really three dimensional and not somebody you could say is the perfect person at all. That’s good characterisation, I think, and makes it hopefully a film you can see more than once. It’s not a simple heroes against villains story.”</p> </blockquote> <p>The very simple and clear setup of this conflict - the titular three billboards - is also utterly inspired and immediately interesting. So it’s unsurprising that such a striking moment <a href="http://www.denofgeek.com/uk/movies/martin-mcdonagh/54436/martin-mcdonagh-interview-three-billboards-outside-ebbing-missouri">is actually drawn from the real world</a>:</p> <blockquote> <p>“I saw something on a bunch of billboards about twenty years ago which is almost identical to what we see on the first two billboards, they’re literally verbatim.”</p> </blockquote> <p>There was some controversy and negative takes about this film, with regard to whether it ultimately redeemed the racist and violent police officer played by Sam Rockwell. I am sure this controversy will likely make this movie not receive the best picture, but I also just don’t agree with it at all. Like the non-perfection of the central character, the ‘redemption’ of Rockwell’s character is actually completely subverted in opposition to what would typically be done in Hollywood. The morally ambiguous and subversive ending is actually one of my favorite things about the movie, and I recommend it to anyone who is a fan of black comedy, complicated explorations of morality, and just great cinema.</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/NbNNNCjm32M" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe> <p><a href="/writing/art/oscar-noms-reviewed/">The 2018 Best Picture Nominees Ranked, Reviewed, and Reflected Upon</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on March 03, 2018.</p> <![CDATA[The Sickness That Is Depression]]> /writing/life/conveying-depression 2018-02-28T00:00:00-08:00 2018-02-28T00:00:00-08:00 Andrey Kurenkov www.andreykurenkov.com contact@andreykurenkov.com <p>Note: best read on a sizeable computer screen</p> <div><button class="btn" data-toggle="collapse" data-target="#foreword"> Foreword &raquo; </button></div> <blockquote class="aside"><p id="foreword" class="collapse" style="height: 0px;"> Like most woke twenty-somethings, I broadly agree with the often expressed notion that mental illness should be de-stigmatized. I am also often annoyed with the ambiguity of empty pronouncements in support of that cause. How does that de-stigmatization actually happen? <br /><br /> I suppose this is my own answer to that question: it happens at least partially through people like me publicly writing about their experience with depression and its associated side effects. And it happens through more people understanding what depression actually is and what people suffering from it have to deal with. <br /><br /> I suffered from a severe episode of clinical depression for the last few months of 2017, from about mid September to just about the end of December. It was so severe that I started having (completely unprecedented) suicidal thoughts, and sought consultation with both a therapist and a psychotherapist. Having recovered from it for almost two months now, I can see in hindsight that part of what made it so severe was that I was just not ready to comprehend or accept the scope of depression’s ability to warp my thoughts, outlook, and physical condition. <br /><br /> I can also see in hindsight that, frankly, the stigma affected me also. I did not share that I was afflicted with severe depression with many of my best friends, nor with most of the people I work with. Many of those people would be surprised to find this out, as I often masked any sign of it by acting cordial and energetic. So, this is my admission to having worn that mask myself. <br /><br /> But I hope to do more that just be open and honest about depression; I hope to promote understanding of it. I hope to expose the experience of the sickness that is depression dissected, spread out, annotated. I hope to make it easier to understand for those who have not dealt with it that depression is a profoundly strange and terrible illness, yes <b>illness</b>, and that those suffering from it are dealing with a lot more than just a period of sadness. Hopefully, if you read this those things will come across. <br /><br /> </p></blockquote> <p><br /></p> <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/vWGsVfxvB3E?autoplay=0&amp;loop=1&amp;rel=0&amp;controls=0&amp;playlist=vWGsVfxvB3E" frameborder="0" allow="encrypted-media" allowfullscreen=""></iframe> <figure class="sidefigureright"> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/rothko.jpg" alt="Mark Rothko, Untitled " /> <figcaption>Mark Rothko, Untitled <a href="http://www.artnet.com/artists/mark-rothko/untitled-j7Y_lpV8AsioM5amWt1tjQ2"><b>(Source)</b></a></figcaption> </figure> <figure class="sidefigureleft"> <img class="postimagesmall" style="width:70%;" src="/writing/images/2018-02-26-depression/rothko_brown.jpg" alt="Mark Rothko, Untitled " /> <figcaption>Mark Rothko, Untitled <a href="http://www.artnet.com/artists/mark-rothko/untitled-j7Y_lpV8AsioM5amWt1tjQ2"><b>(Source)</b></a></figcaption> </figure> <p>This is how I remember depression <sup id="fnref:Clinical"><a href="#fn:Clinical" class="footnote">1</a></sup>. <br />It was not exactly like this; there were highs, lows, bad days, good days.</p> <p>But this is how I remember it.</p> <p>Tired. So tired, cold, ambivalent. Anxious, miserable, uncomfortable, unfocused<sup id="fnref:Symptoms"><a href="#fn:Symptoms" class="footnote">2</a></sup>.</p> <p>That’s depression. <br />Except, these are just words. <br />Depression cannot be conveyed with just such words.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-02-26-depression/matta_black_idea.jpg"><img class="postimage" src="/writing/images/2018-02-26-depression/matta_black_idea.jpg" alt="Roberto Matta, The Black Idea" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Roberto Matta, The Black Idea</p> </figcaption></figure> <figure class="sidefigureleft"> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/honaker_lost.jpeg" alt="Honaker" /> <figcaption>Edward Honaker, II <a href="http://www.edwardhonaker.com/booktwo/"><b>(Source)</b></a></figcaption> </figure> <figure class="sidefigureright"> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/honaker_headshake.jpg" alt="Honaker" /> <figcaption>Edward Honaker, II <a href="http://www.edwardhonaker.com/booktwo/"><b>(Source)</b></a></figcaption> </figure> <p>You know how being in a bad mood is like a filter that squeezes out the joy from otherwise pleasant things? <br />Imagine being in the worst mood of your life, for months<sup id="fnref:Months"><a href="#fn:Months" class="footnote">3</a></sup>.</p> <p>You know the difference between dragging yourself to work after waking up with a killer hangover, and heading home having just exercised? <br />Being depressed was like a perpetual hangover, and being healthy again was like having a perpetual dopamine high<sup id="fnref:BrainStuff"><a href="#fn:BrainStuff" class="footnote">4</a></sup>.</p> <p>You know how when you are drunk, or high, you think thoughts that seem absurd in retrospect? <br />That happens all the time, constantly, with depression. Eventually I learned to distrust my ‘depressed self’.</p> <p>You know that feeling of getting in a cold shower and having your body revolt, the feeling of ‘<strong>make this stop</strong>’? <br />It was like that, every morning, being hit with a wave of formless misery moments after waking up, like ‘oh, right, <strong>this</strong>’.</p> <p>You know how it feels when you are at a social event, and just can’t seem to get along with anyone - alienated ? <br />Depression makes you feel like that, even among friends.</p> <p>You know how nice it is to warm up by a fire after being cold, and how painful it is to then leave that fire? <br />Spending time with friends or family felt like that; that warmth soon went away to be replaced by the familiar cold.</p> <p>You know the difference between feeling dead tired and ambivalent about everything except sleep and the feeling of having just awoken on the first day of a vacation? <br />One day I awoke and felt that I really was healed of depression, and it was like that.</p> <p>You know that feeling of doing something you could not care less about, just wanting it to be done with? <br />Being alive felt like that.</p> <p>I had supportive family, friends, security, and prospects. <br />I excercised, meditated, slept well, took on a lighter workload, had a good diet. <br />But it did not matter. It still took me months, and medication, to improve<sup id="fnref:Medication"><a href="#fn:Medication" class="footnote">5</a></sup>. <br />I still had suicidal thoughts<sup id="fnref:SideEffect"><a href="#fn:SideEffect" class="footnote">6</a></sup>.</p> <p>That’s depression. <br />Except, it was not a feeling. <br />It was a state, a condition, a sickness. A sickness I was stuck with.</p> <figure class="sidefigureleft"> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/depression_comics_normal.jpg" alt="Depression Comix" /> <figcaption><a href="https://www.depressioncomix.com/?"><b>Depression Comix, Being</b></a></figcaption> </figure> <figure class="sidefigureright"> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/depression_comics_future.jpg" alt="Depression Comix" /> <figcaption><a href="https://www.depressioncomix.com/?"><b>Depression Comix, To See A Future</b></a></figcaption> </figure> <p><br /></p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-02-26-depression/honaker_white.jpg"><img class="postimage" src="/writing/images/2018-02-26-depression/honaker_white.jpeg" alt="Edward Honaker, II" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Edward Honaker, II</p> </figcaption></figure> <p><br /><br /></p> <p>It was like I was no longer really myself. <br />I did not have interests, energy, drive - all that was left was a dull miserable husk of myself.</p> <p>It was like I was just play-acting as Andrey. <br />The play-acting turned out to be easy, and occasionally it made me feel better.</p> <p>It was like a temporary state of insanity. <br /> If you have ever been in love, the feeling of temporary insanity was like that.</p> <figure class="sidefigureleft"> <br /> <img class="postimagesmall" src="/writing/images/2018-02-26-depression/bacon_untitled_crouching_figures.jpg" alt="Bacon" /> <figcaption>Francis Bacon, Two Figures At a Window</figcaption> </figure> <figure class="sidefigureright"> <br /> <img class="postimagesmall" src="/writing/images/2018-02-26-depression/bacon_figure_in_sea.jpg" style="width:80%;" alt="Bacon" /> <figcaption>Francis Bacon, Figure In Sea</figcaption> </figure> <p>It was like sleep was my only goal, my only escape, every day. <br />I just wanted to close my eyes. I just wanted to lie down still in a dark silent room.</p> <p>It was like being up high and struggling for breath, or underwater running out of air. <br /> I thought about thinking about suicide - it became mundane and tiresome.</p> <p>It was like I could no longer see a future, hated the present, was haunted by the past. <br />I wanted nothing, was incapable of wanting to strive for anything.</p> <p><a href="https://youtu.be/IHnHpX77oKs">It was like life was just a thing that I did</a>. <br /> And that thing had lost its appeal.</p> <p>It was like there was some horrible droning static always there. <br /> The music that once brought me joy just added to that static.</p> <p>It was like I was some Dickensian street urchin, scraping by on every piece of happiness. <br />Every free meal I got felt like an odd victory that I devoured.</p> <p>It was like life had become some modern piece of art, inscrutable and cold, nonsensical. <br />Life never felt more absurd, more grotesque, more pointless <sup id="fnref:Absurd"><a href="#fn:Absurd" class="footnote">7</a></sup>.</p> <p>It was like all my anxieties and insecurities grew to a mammoth size and crushed me. <br /> I am and was hard working, fit, smart, gregarious. And still I felt like a worthless worm.</p> <p>It was like a dream where I walked around in a snow storm wearing only t-shirt and shorts, in a big dead city surrounded by towering gray skyscrapers. <br />And somehow this is supposed to make sense.</p> <p>It was like no matter how hard I tried, I could not feel good. <br /> Often the best I could do was numb the pain. My failure to improve made me feel worse. <br /> I meditated, exercised, socialized, went for long walks, read, watched movies. <br /> All of it helped, but none of it made the depression end<sup id="fnref:Self-Care"><a href="#fn:Self-Care" class="footnote">8</a></sup>. It just did not make sense, being so helpless.</p> <p>That’s depression. <br /> Except, it did make sense. <br /> I was afflicted with one of the most common but least understood of sicknesses <sup id="fnref:Common"><a href="#fn:Common" class="footnote">9</a></sup>.</p> <figure class="sidefigureleft"> <br /> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/oswaldo_el_grito_1.jpeg" style="width:73%;" alt="Bacon" /> <figcaption>Oswaldo Guayasamín, El Grito 1</figcaption> </figure> <figure class="sidefigureright"> <br /> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/oswaldo_el_grito_3.jpg" alt="Bacon" /> <figcaption>Oswaldo Guayasamín, El Grito 3</figcaption> </figure> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-02-26-depression/oswaldo_waiting.jpg"><img class="postimage" src="/writing/images/2018-02-26-depression/oswaldo_waiting.jpg" alt="History" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Oswaldo Guayasamín, Waiting</p> </figcaption></figure> <figure class="sidefigureleft"> <br /> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/picasso_weeping_woman.jpg" alt="Bacon" /> <figcaption>Pablo Picasso, The Weeping Woman</figcaption> </figure> <figure class="sidefigureright"> <br /> <img class="postimagesmaller" src="/writing/images/2018-02-26-depression/picasso_crossed_Arms.jpg" alt="Bacon" /> <figcaption>Pablo Picasso, Woman with Folded Arms</figcaption> </figure> <p>It did make sense, just not to my sick mind.</p> <p>It did make sense that I needed treatment and when I got it I got better. <br /> Most dont<sup id="fnref:Treatment"><a href="#fn:Treatment" class="footnote">10</a></sup>.</p> <p>It did make sense that I spoke of it infrequently. <br /> I knew it was a sickness, yet I still felt ashamed, like I had allowed myself to fall to a stupid first world ‘illness’ <sup id="fnref:FirstWorld"><a href="#fn:FirstWorld" class="footnote">11</a></sup>.</p> <p>It did make sense that I could not think clearly, could not make decisions easily. <br /> I was lucky to have had others to help me seek treatment and not to give up on my aspirations.</p> <p>It did make sense that I got sick. <br /> I had stress, burnout, family history <sup id="fnref:Family"><a href="#fn:Family" class="footnote">12</a></sup>, prior episodes <sup id="fnref:Recurrence"><a href="#fn:Recurrence" class="footnote">13</a></sup>, failures, mistakes, changes. <br /> So much to explain it<sup id="fnref:NoReason"><a href="#fn:NoReason" class="footnote">14</a></sup>. <br /> And still I doubted I was truly depressed, and delayed getting treatment.</p> <p>That’s depression. <br /> Except, that <strong>was</strong> my depression. <br /> I got treatment, rest, support, and I am no longer sick.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-02-26-depression/tarkovsky_candle.png"><img class="postimage" src="/writing/images/2018-02-26-depression/tarkovsky_candle.png" alt="History" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Andrei Tarkovsky, Nostalghia (frame)</p> </figcaption></figure> <p>Having healed, I relish just being alive, just being myself.</p> <p>Having healed, my nightmares mostly revolve around having a relapse.</p> <p>Having healed, my energy and enthusiasm feel boundless.</p> <p>Having healed, I am still taking antidepressants, still seeing a therapist, doing all I can to remain healthy.</p> <p>Having healed, the sounds of music often make me indescribably ecstatic.</p> <p>Having healed, I understand depression better, and hate and fear and loathe it like few other things<sup id="fnref:Romanticizing"><a href="#fn:Romanticizing" class="footnote">15</a></sup>.</p> <p>Having healed, the anxieties and uncertainties and insecurities that so haunted me before barely bother me.</p> <p>Having healed, what I remember most vividly is not the suicidal thoughts, the inability to focus, the anxiety, the shame; what I remember most is lying in my room at 8PM, and feeling like there was nothing else at all that could make me feel better - that sensation of nothing else but this quiet, this stillness, this darkness.</p> <p>Having healed, I write this, reflecting on that period of surreal sickness. <br /> I see the need to de-stigmatize and explain my experience far more than I did before<sup id="fnref:Stigma"><a href="#fn:Stigma" class="footnote">16</a></sup>.</p> <p>So don’t feel bad for me. <br /> I seriously feel superhuman, having healed of this sickness. <br /> Just, try to understand.</p> <hr /> <p>While reading this, if you felt you related and may be going through depression, <strong>please</strong> seek consulation with a mental health professional and talk to your friends and family, or at least complete a short <a href="https://depression.org.nz/is-it-depression-anxiety/self-test/">self-test</a> to evaluate whether talking to others is likely warranted. If you are currently struggling with depression, <a href="https://www.everydayhealth.com/depression/guide/resources/">this is a list of resources that might help</a> and if you are in a truly bad place please be aware of the <a href="https://suicidepreventionlifeline.org/">suicide prevention lifeline</a>. When I was depressed it felt like it was never going to end, but it did, and I fully attribute seeking treatment and support as the cause for my recovery. Trust me, it may feel like it will never end, but it will.</p> <hr /> <div class="footnotes"> <ol> <li id="fn:Clinical"> <p>That is, <a href="https://www.webmd.com/depression/guide/major-depression#1">clinical</a> depression, which I was diagnosed with having. It is a <a href="https://www.ncbi.nlm.nih.gov/books/NBK64063/">diagnosable condition</a>: “<br />Diagnostic criteria:<br />Depressed mood and/or loss of interest or pleasure in life activities for at least 2 weeks and at least five of the following symptoms that cause clinically significant impairment in social, work, or other important areas of functioning almost every day<br />1.Depressed mood most of the day.<br />2.Diminished interest or pleasure in all or most activities.<br />3.Significant unintentional weight loss or gain.<br />4.Insomnia or sleeping too much.<br />5.Agitation or psychomotor retardation noticed by others.<br />6.Fatigue or loss of energy.<br />7.Feelings of worthlessness or excessive guilt.<br />8.Diminished ability to think or concentrate, or indecisiveness.<br />9.Recurrent thoughts of death (APA, 2000, p. 356).” <a href="#fnref:Clinical" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Symptoms"> <p>And these were just my symptoms. <br />Again, <a href="https://www.webmd.com/depression/guide/detecting-depression#1">the list goes on</a>: <br />Fatigue, <br />Feelings of guilt, worthlessness, and helplessness, <br />Pessimism and hopelessness, <br />Insomnia, early-morning wakefulness, or sleeping too much, <br />Irritability, <br />Restlessness, <br />Loss of interest in things once pleasurable, including sex, <br />Overeating, or appetite loss, <br />Aches, pains, headaches, or cramps that won’t go away, <br />Digestive problems that don’t get better, even with treatment, <br />Persistent sad, anxious, or “empty” feelings, <br />Suicidal thoughts or attempts. <a href="#fnref:Symptoms" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Months"> <p>This is important to understand. <a href="http://www.mydr.com.au/mental-health/depression-q-and-a">Depression is <strong>not</strong> a temporary mood</a>: “It is natural to temporarily feel ‘down in the dumps’ from time to time, especially if you are going through an upheaval, loss or stressful situation. Some people refer to this as ‘feeling depressed’. However, if these feelings are intense and persist over weeks or months and if they stop you enjoying or even doing your normal activities, it’s likely that you have depression. Depression is a serious illness that can have a great impact on your everyday life. It’s not something you can normally ‘just snap out of’.” <a href="#fnref:Months" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:BrainStuff"> <p>The science is <a href="https://www.scientificamerican.com/article/is-depression-just-bad-chemistry/">still unclear</a> on the precise physical causes for clinical depression, and indeed it is most likely caused <a href="https://www.thecut.com/2018/01/antidepressants-and-the-chemical-imbalance-of-depression.html">by a combination of factors</a>: “it’s accurate that depression is not just a matter of a “chemical imbalance” in the brain, but instead is a combination of internal and external factors, from a person’s genes to their environment… It’s true that some people don’t benefit from antidepressants at all. Others can’t do without them. They aren’t some magic bullet cure-all, but neither are they some sinister moneymaking scheme perpetuated by shady pharmaceutical companies and uncaring professionals.”. Still, as someone who was baffled by my healthy lifestyle and rest not curing me and as someone who greatly benefited from antidepressants, my personal experience makes me feel chemical imbalance is part of the equation. <a href="#fnref:BrainStuff" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Medication"> <p>Antidepressants often get a bad rep, but they (Cymbalta in my case) seem to have been truly effective for me. Still, <a href="https://www.webmd.com/depression/features/are-antidepressants-effective#1">they are not the solution for everyone</a>: “But a report recently published in The Journal of the American Medical Association showed that the drugs work best for very severe cases of depression and have little or no benefit over placebo (inactive pills) in less serious cases.” Certainly <a href="https://www.goodtherapy.org/blog/can-depression-be-cured-without-medication-1117144">mild to moderate depression can be healed without medication</a>, and in fact that has worked for me in the past, but in a severe case such as mine it should really be considered. <a href="#fnref:Medication" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:SideEffect"> <p>Although it is weird to consider thoughts a side effect of illness, <a href="http://www.dbsalliance.org/site/PageServer?pagename=education_statistics_depression">it’s true</a>: “Depression is the cause of over two-thirds of the 30,000 reported suicides in the U.S. each year. (White House Conference on Mental Health, 1999)” <a href="#fnref:SideEffect" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Absurd"> <p>I had been prone to existential dread in the past, but the sheer nauseating sense of <a href="https://en.wikipedia.org/wiki/Absurdism">The Absurd</a> was abhorrent; I felt exactly like <a href="https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus">Sisyphus</a>: “life is meaningless and nonsensical, but humans strive constantly for meaning and sense in it… Once stripped of its common romanticism, the world is a foreign, strange and inhuman place.” <a href="#fnref:Absurd" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Self-Care"> <p>I got a lot of well-intentioned but unhelpful advice from people, ranging from being checked for some sort of vitamin deficiency to just trying to chill. I was proactive in trying to get better and I think a lot of things contributed to my recovery, but at the same time it is important to understand that my condition was a sickness. Just like a cold or broken bone, no amount of effort or rest or positive thinking on my part would make me feel better right away; time was necessary, and medication helped. <a href="#fnref:Self-Care" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Common"> <p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2169519/">Seriously, it is one of the most common forms of sickness there is</a>: “Major Depressive Disorder is one of the most common forms of psychopathology, one that will affect approximately one in six men and one in four women in their lifetimes.” That <a href="http://www.dbsalliance.org/site/PageServer?pagename=education_statistics_depression">means that</a> “Major depressive disorder affects approximately 14.8 million American adults, or about 6.7 percent of the U.S. population age 18 and older, in a given year. (Archives of General Psychiatry, 2005 Jun; 62(6): 617-27)”. <a href="#fnref:Common" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Treatment"> <p><a href="http://time.com/3615353/depression-seeking-treatment/">Most who really need treatment don’t get it</a>: <br />But what was most concerning to study co-author Laura Pratt, an epidemiologist at the NCHS, was that 65% of people with severe symptoms of depression were not getting help from a mental health professional.” This, despite <a href="http://www.dbsalliance.org/site/PageServer?pagename=education_statistics_depression">it being true that</a> “Up to 80% of those treated for depression show an improvement in their symptoms generally within four to six weeks of beginning medication, psychotherapy, attending support groups or a combination of these treatments. (National Institute of Health, 1998). Despite its high treatment success rate, nearly two out of three people suffering with depression do not actively seek nor receive proper treatment. (DBSA, 1996)”. <a href="#fnref:Treatment" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:FirstWorld"> <p>Which, by the way, <a href="https://www.washingtonpost.com/news/worldviews/wp/2013/11/07/a-stunning-map-of-depression-rates-around-the-world/?utm_term=.0a6535d7a636">is inaccurate</a> <a href="#fnref:FirstWorld" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Family"> <p><a href="https://www.healthline.com/health/depression/genetic#genetics">Family history</a>: “Research has also shown that people with parents or siblings who have depression are up to three times more likely to have the condition.” <a href="#fnref:Family" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Recurrence"> <p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2169519/">Recurrence</a>: “[Major depressive disorder] is usually highly recurrent, with at least 50% of those who recover from first episode of depression having one or more additional episodes in their lifetime, and approximately 80% of those with a history of two episodes having another recurrence.” <a href="#fnref:Recurrence" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:NoReason"> <p>Granted, depression can also strike <a href="https://www.everydayhealth.com/hs/major-depression/why-am-i-depressed/">with no obvious life events to cause it</a>. Indeed, whatever was going on in my life was not nearly bad enough to justify the pain I was feeling. <a href="#fnref:NoReason" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Romanticizing"> <p>There is a troubling tendency to <a href="https://www.theodysseyonline.com/stop-romanticizing-depression">romantacize</a> depression, <a href="https://www.theatlantic.com/health/archive/2013/10/social-media-is-redefining-depression/280818/">especially on social media</a>. It is disturbing, misguided, and harmful. Recently there have also been <a href="https://www.theodysseyonline.com/13-reasons-why-unacceptable">popular portrayals of mentall illness</a> that got it completely wrong, which is even more odious. <a href="#fnref:Romanticizing" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:Stigma"> <p>And it’s not just a hunch either - from <a href="http://journals.sagepub.com/stoken/rbtfl/dDpyhM2zRi.Fg/full">“The Impact of Mental Illness Stigma on Seeking and Participating in Mental Health Care”</a>: “Mental health literacy seems to have a promising effect on care seeking. Individuals who better recognize their mental illness and its manifestations, as well as treatment options to address its varied impressions, might better avail themselves of those options (Jorm, 2012).” <a href="#fnref:Stigma" class="reversefootnote">&#8617;</a></p> </li> </ol> </div> <p><a href="/writing/life/conveying-depression/">The Sickness That Is Depression</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on February 28, 2018.</p> <![CDATA[Habits and Tools, Old and New]]> /writing/life/habits 2018-01-26T15:19:34-08:00 2018-01-26T15:19:34-08:00 www.andreykurenkov.com contact@andreykurenkov.com <h2 id="the-prelude">The Prelude</h2> <blockquote> <p>“We are what we repeatedly do. Excellence, then, is not an act, but a habit.” <br /> -Aristotle (except actually <a href="http://blogs.umb.edu/quoteunquote/2012/05/08/its-a-much-more-effective-quotation-to-attribute-it-to-aristotle-rather-than-to-will-durant/">Will Durant</a>)</p> </blockquote> <p>Common wisdom, right? Yet, somehow it took me until recently to seriously take stock of my time management and habits. In high school and undergrad, my time management could be boiled down to “do the next thing”. I more or less kept adding work until it was just about too much, and then did whatever needed doing to keep up.</p> <p>Turns out, that’s not a great way to go about things. After graduating, I had a glut of free time on my hands and little idea of what to do with it all. So I started getting more methodical by consistently making time for writing, excercising, and all the fun splendor of life. And I found various tools - apps, subscriptions, things - to make that much easier. Now, a few years later, I no longer have a glut of free time but still want to do all this stuff (blog writing, being healthy, etc). And so it finally hit me that I need to double down on this habits and routine thing; my no calendar, no todo list, no consistency lifestlye will not work anymore.</p> <p>So, despite not being a new year resolutions kind of person, the beginning of this year was marked for me with a whole lot of reflection about what habbits I wanted to commit to going forward, and what tools I would use to fullfil that commitment. This, on top of several years of slowly building a set of habits and tools I had not used prior to graduating undergrad. So, here you are, reading my reflection on all these wonderful habits and tools. If that sounds boring, stop here, but if not - I truly do think these things have made a positive impact in my life, and recommend you consider them for your own.</p> <h2 id="the-habits">The Habits</h2> <h3 id="sleep">Sleep</h3> <h4 id="old-get-enough-sleep">Old: get enough sleep</h4> <p>When I’ve described my often surprising workloads, people have often asked me ‘how much do you sleep’ or commented that I must sleep very little. No. Going back many years, to at least the sophemore year of college, I recognized the importance of sleep and the stupidity of all nighters. This may have translated to averaging only 7 or 6 hours most weeks - but average 7 or 6 hours I did.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/sleep_duration.png"><img class="postimagesmall" style="width:40%;" src="/writing/images/2018-01-26-habits/sleep_duration.png" alt="Sleep Duration" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Not so consistent… but on average not bad.</p> </figcaption></figure> <h4 id="new-wake-up-consistently-night-ritual">New: wake up consistently, night ritual</h4> <p>This is a tough one. Since the end of high school, I have never managed to wake up at a consistent time. Not even when I started working as a software engineer - my initial enthusiasm for showing up early quickly faded and I went back to winging it based on how I felt on the day. Turns out, not waking up at a consistent time makes it hard to have a consistent morning routine, and a morning routine is pretty important for having a routine at all. And, it makes it harder to wake up at all. So, time for fancy alarm clocks, lights that turn on at the same time as the alarm, all that.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/sleep_from_to.png"><img class="postimagesmall" style="width:40%;" src="/writing/images/2018-01-26-habits/sleep_from_to.png" alt="Sleep From To" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Pretty crazy, right?</p> </figcaption></figure> <p>But, more importantly, I have decided to have better sleep. Specifically, to fall asleep more easily and calmly. And so, I decided to stick to the whole array of recommended pre-sleep activities - dim the lights, don’t look at screens, drink special sleep-time tea with honey, read. And it’s great! Commiting to spending the last half hour prior to sleep in this fashion has made me feel far more tranquil as I go to sleep than I used to.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/night_ritual.jpg"><img class="postimagesmall" style="width:40%;" src="/writing/images/2018-01-26-habits/night_ritual.jpg" alt="Sleep ritual" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Highly recommended</p> </figcaption></figure> <h3 id="excercise">Excercise</h3> <h4 id="old-boxingfitstar">Old: Boxing,Fitstar</h4> <p>You know what’s great? Fitness classes. Seriously, I’ve not once excercised as rigorously by myself as when led by a good instructor. Practically every time I went to a boxing gym I felt that I was barely able to keep up. So, I continue taking kickboxing classes to this day and hope to not stop.</p> <p>You know what else is great? Not having to go to the gym to excercise. And you dont! All one needs to excercise is a hard floor (though a mat does help). Going back even to my undergrad days, I was often unable to make it to the gym. So I just excercised at home, and kept in quite good shape doing so.</p> <p>But what’s better than either of these? The best of both! Last year I realized apps like FitStar (and Nike Traning Club, and Skimble) could be used to excercise at home while still pushing me to my limit like trainers do. Of course, they are not quite as effective, but still better than excercising driven by my motivation alone.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/fitstar.png"><img class="postimagesmall" style="width:40%;" src="/writing/images/2018-01-26-habits/fitstar.png" alt="Sleep Duration" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Fitstar. It works exactly as you</p> </figcaption></figure> <h4 id="new-morning-kick-off">New: Morning Kick Off</h4> <p>All too often, work would get heavy, I would have to pick my battles, and I’d miss the gym for days, even weeks. That does not feel good, seem good, or is good. So my new idea? Excercise for 10-15 minutes right upon waking up. Specifically, do a 10-15 Fitstar excercise. Not only does that keep me not feeling like I’ve gone for weeks without excercising, but it also makes it easier for me to wake up and get going. Not easy to keep up, but worth the effort.</p> <h3 id="diet">Diet</h3> <h4 id="old-soylent">Old: Soylent</h4> <p>I already <a href="http://www.andreykurenkov.com/writing/art/why-i-consume-soylent/">made my case for Soylent</a> (TDLR - convenient, healthy, affordable, futuristic, makes real food taste even better), and years later the case still holds up. More than holds up, actually - with the introduction of Soylent 2.0 and Soylent Coffee and Cocoa, the convenience and flavor have both seen a significant boost in the past few years. Most I tell this still scoff, but whenever I am so inconvenienced as to have to eat real food for lunch I am reminded of how much time it gets just to get food and how sluggish I feel afterwards.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/soylent.jpg"><img class="postimageactual" src="/writing/images/2018-01-26-habits/soylent.jpg" alt="Soylent" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>A photo from years ago. I still have about this many bottles at home at the start of every month.</p> </figcaption></figure> <h4 id="new-meal-squares">New: Meal squares</h4> <p>But, let’s face it, drinking two bottles of nutritious goo can get a bit repititious. So, I was most excited by my recent discovery of MealSquares. These little nutrition bricks are dry, dense, and chalky - but also contain bits of chocolate, and go down fantastically when paired with a drink such as tea (or Soylent!).</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/food.jpg"><img class="postimageactual" src="/writing/images/2018-01-26-habits/food.jpg" alt="Food" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>My Current Lunch</p> </figcaption></figure> <h3 id="mental-health">Mental Health</h3> <h4 id="old-meditation">Old: Meditation</h4> <p>This too, <a href="http://www.andreykurenkov.com/writing/life/some-thoughts-on-meditation/">I have written about</a>. More and more, I am convinced that meditation will gradually become as commonly acknowledged as a crucial component of a healthy life as physical excercise. Nowdays it’s easier than ever to start - Calm, Headspace, and many other apps tout their ability to teach you the magical skill of meditation. I used both Calm and Headspace early on, and do recommend them for getting started. But I quickly found their idea of ‘listen to lectures about life’ to be pretty far removed from actual meditation, and largely rely on the far simpler Insight Timer.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/meditation.png"><img class="postimagesmaller" src="/writing/images/2018-01-26-habits/meditation.png" alt="Meditation" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>I have not been the best at this… but trying to get better.</p> </figcaption></figure> <h4 id="new-gratitude-journaling">New: Gratitude Journaling</h4> <p>I started keeping a journal more than a year ago now. Not for mental health reasons, just for… fun. Something I found when catching up on this journaling (sometimes whole weeks at a time, sometimes even more), is that trying to recall some fun event from a while ago almost made me feel like how I felt when it actually happened. Furthermore, consistently writing down this journal just made me appreciate the mundane little milestones of life just a little more.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/journal.png"><img class="postimagesmaller" src="/writing/images/2018-01-26-habits/journal.png" alt="Journal" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Just about the year mark, these started showing up. I use the Journey app, which I recommend, though there are many good options.</p> </figcaption></figure> <p>So I was not surprised to find out there was another surprisingly simple scientificaly backed way of maintaing mental health - <a href="https://en.wikipedia.org/wiki/Gratitude_journal">gratitude journaling</a>. It used to be this would seem to touchy-feely for me, but no more. My plan, given my whole experience with journaling, is to stick to the weekly cadence by writing down some things I am grateful for from the past week. Too early to tell if I’ll stick to this, but I am eager to try it out for this next year.</p> <h3 id="productivity">Productivity</h3> <h4 id="old-email-cleaning-calendar-onenote-habitbull">Old: Email Cleaning, Calendar, OneNote, HabitBull</h4> <p>This stuff is boring but useful, so let’s keep it brief:</p> <ul> <li>I try to keep my email inbox nearly empty, so every email still not deleted or categorized to a folder is an ongoing TODO item. Having an empty inbox is rare, and feels great. I’ve tried to use Inbox’s whole email snoozing stuff off and on, but find it’s overkill most of the time.</li> <li>I used to be terrible about keeping a calendar, but forgetting some significant things last year made me come around - I now track my meetings, classes, everything.</li> <li>I’ve tried different approaches to note taking, idea tracking, info dumping, all that. OneNote’s is the one I prefer by far. The idea of having a notebook with various sections and pages within each section just works wonderfully for a great many applications.</li> </ul> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/onenote.png"><img class="postimagesmall" src="/writing/images/2018-01-26-habits/onenote.png" alt="OneNote" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>All the stuff I have been meaning to get around to writing for years, and have yet to write.</p> </figcaption></figure> <ul> <li>I first started thinking about my habits years ago, and figured there must be a to-do app that captures the entirely intuitive ‘secret’ (<a href="https://lifehacker.com/281626/jerry-seinfelds-productivity-secret">often attributed to Jerry Seinfeld</a>) that having a streak to keep going is a good motivator. Today that is indeed the case, there are dozens of apps for this, but a few years ago HabitBull (now called Habit Tracker) was one of very few. I started using it years ago and still use it today.</li> </ul> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/habitbull.png"><img class="postimagesmaller" src="/writing/images/2018-01-26-habits/habitbull.png" alt="HabitBull" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>A good week!</p> </figcaption></figure> <h4 id="new-todoist-rescuetime">New: todoist, rescuetime</h4> <p>Despite having this email and OneNote and Calendar system, I was still not as productive as I wanted. I found that I never managed to make time for stuff like writing for this blog, and often forgot smaller chores til far too late. So this year I had a new idea: spend 5-10 minutes in the morning reflecting on my goal for the day, and jot them down in a todo app. I had always found todo apps pretty useless, as I inevitably got behind and abandoned the endeavour. So this time, I plan to stick to keeping the todo items on at most a day-week timeline, and striving for zero tasks just as with my email inbox. This has already paid off in just a few weeks, with me being better able to keep track of various small chores as well as get around to things like writing the very text you are reading.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/todoist.png"><img class="postimagesmaller" src="/writing/images/2018-01-26-habits/todoist.png" alt="Todoist" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>My TODO app, Todoist. Works like a charm.</p> </figcaption></figure> <p>As you may have noticed, this post has quite a few metrics and graphs. Partly this is just for fun, but I do also think that the knowledge that these metrics and graphs are out there serves as extra motivation to follow through on my ambitions. Inspired somewhat by <a href="http://karpathy.github.io/2014/08/03/quantifying-productivity/">Andrej Karpathy</a>, I decided to take this to the next level this year with <a href="https://www.rescuetime.com/">rescuetime</a>. Basically, it logs every single thing I do on my phone and computer, and tells me how much time I spend doing things that are productive (like this) or unproductive (like browsing reddit). I honestly doubt it being there will change my behavior much, but then again I have felt that it has gotten me to visit distracting websites already so I may be wrong there.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2018-01-26-habits/rescuetime1.png"><img class="postimagesmall" src="/writing/images/2018-01-26-habits/rescuetime1.png" alt="Rescutime" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>My first week with this, tracked.</p> </figcaption></figure> <h2 id="closure">Closure</h2> <p>So there you had it, an infodump on all the habits I have cultivated and plan to cultivate, along with the best tools for said cultivation. Hopefully, if you were so inclined as to read all this a few of these might prove a fruitful addition to your own life.</p> <p><a href="/writing/life/habits/">Habits and Tools, Old and New</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on January 26, 2018.</p> <![CDATA[DeformNet Grasp Transfer]]> /projects/research/deformnet-grasp-transfer 2017-11-11T00:00:00-08:00 2017-11-11T00:00:00-08:00 www.andreykurenkov.com contact@andreykurenkov.com <p>A project that did not ultimately pan out quite as succesfully as one might have hoped - but that’s research! Getting to present the work at CoRL was still great, though.</p> <p><a href="/projects/research/deformnet-grasp-transfer/">DeformNet Grasp Transfer</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on November 11, 2017.</p> <![CDATA[Some Thoughts on Meditation]]> /writing/life/some-thoughts-on-meditation 2017-10-22T16:19:34-07:00 2017-10-22T16:19:34-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>I’ve had a rough few months. Work, work, work, a failed research project, broken laptops, moving, PhD applications, financial mishaps… it’s been a stressful time. Bummer. But, it’s not big deal, this too shall pass, etc - the bummerness of the situation is not the point. The point is that as has happened before and will happen again, this current tired predicament has given me motivation to take up something I have been meaning to do for a while: writing about meditation.</p> <p>Meditation - or at least the entirely secular non new-agey kind - has long intrigued me as a seemingly scientifically backed method for being calmer, healthier, and perhaps wiser. Particularly for a habitually working-too-much-and-taking-life-too-seriously type such as myself, it’d clearly be the height of rationality to go ahead and take up such an objectively good practice. Still, I did not start trying it out until two years ago after first hearing about and then reading a <a href="http://www.10percenthappier.com/mindfulness-meditation-the-basics/">best-seller</a> specifically aimed at selling anti-new-age skeptics like myself on the idea. The book was alright, a sort of shallow crowd pleaser, but it did convince my rational self it was time to do this thing.</p> <p>So now that I’ve done it on and off for a couple of years, I feel compelled to write this: it works. It calms me down, improves my focus, gives me ideas, and is all around a worthwhile practice. Sitting up with eyes closed and attention focused on the breath, something so simple, invariably leads to an unmistakable change in my physical and emotional state. So much so that it has become a regular goto destressing practice akin to reading, excercise, or spending time with good friends. And as the last few months have been rough, it has been particularly helpful, and I have become particularly motivated to speak of its helpfulness.</p> <p>Mind you, none of this is profound. Meditation has not changed me deeply, has not inched me closer to enlightnment, none of that. And what I refer to as meditation is just about the most basic and straighforward practice that can be called that, nothing at all advanced. And on top of that, much like excercise I am not even that good about consistenly doing it.</p> <p>But, like excercise, whenever I do it I am impressed with how undeniably beneficial it is for me and wish I did it more. It really is a foolproof way of becoming less stressed, especially when the stress is a big heavy pile that’s been building up too long. And it’s so easy, especially in our modern there-is-an-app-for-everything times. I rather liked <a href="https://www.calm.com/">calm</a> when getting started with it, and <a href="https://www.headspace.com/">headspace</a> is similarly good (nowdays I use <a href="https://insighttimer.com/">Insight Timer</a>).</p> <p>So. If you’ve read this far, all this obviously goes to say - maybe you should try it too. I am certainly glad I did.</p> <p><a href="/writing/life/some-thoughts-on-meditation/">Some Thoughts on Meditation</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on October 22, 2017.</p> <![CDATA[DeformNet, Or A Tale of Broken Chairs]]> /writing/project/deformnet-or-a-tale-broken-chairs 2017-10-18T16:19:34-07:00 2017-10-18T16:19:34-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>I spent about half of his year so far devoted to my first major research project at Stanford - DeformNet. The gist of the project was to create 3D models of objects based on a single 2D image of the object, by deforming the 3D model of a similar object. It took months to get working properly, but all that work eventually led to a paper - “DeformNet: Free-Form Deformation Network for 3D Shape Reconstruction from a Single Image” - with its very own <a href="https://arxiv.org/abs/1708.04672">Arxiv post</a> and <a href="https://deformnet-site.github.io/DeformNet-website/">project page</a>. But, it also led to much more. It led to horrific, bizzare, and delightful failures.</p> <p>All research projects, and projects in general, face a sequence of failures before their eventual success (or demise). Unlike the eventual success, the failures are typically barely catalogued, and certainly not freely shared with the world. But not DeformNet! Due to its nature as computer vision research, and in particular research on deforming 3D models of objects, DeformNet generated uniquelly broken and surreal imagery in its many months of development. So much so, that I was inspired to capture and share said imagery with my Friends on facebook. And now, dear reader, I shall share it with you! Without further ado, or any further context or explanation, please enjoy:</p> <figure class="figure"><figcaption class="figure__caption"><p>Beautiful Arrows</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/2016-4-15-a-brief-history-of-game-ai/16797445_1438988406114168_9212772470262986498_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16797445_1438988406114168_9212772470262986498_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Spread 1</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/2016-4-15-a-brief-history-of-game-ai/16807616_1442442285768780_7897771771545166109_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16807616_1442442285768780_7897771771545166109_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Spread 2</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/2016-4-15-a-brief-history-of-game-ai/16830718_1442442282435447_7909518336960080635_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16830718_1442442282435447_7909518336960080635_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Spread 3</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/16831179_1442442279102114_4063186804650971445_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16831179_1442442279102114_4063186804650971445_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Spread 4</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/16832243_1442442312435444_2730660855479305093_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16832243_1442442312435444_2730660855479305093_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Bent Out of Shape</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/2016-4-15-a-brief-history-of-game-ai/16716040_1442443249102017_6471384390721714604_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16716040_1442443249102017_6471384390721714604_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Split</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/16864203_1447351921944483_8878398950718576730_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16864203_1447351921944483_8878398950718576730_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Modernist Chair</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/16806900_1452334068112935_5140427923114788905_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16806900_1452334068112935_5140427923114788905_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>The First</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17021757_1455820011097674_3621251967274797044_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17021757_1455820011097674_3621251967274797044_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Perfect Correspondence</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17202800_1459767327369609_4492442434375103005_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17202800_1459767327369609_4492442434375103005_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Color Spiral</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/16939623_1459767330702942_4073595802082156353_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/16939623_1459767330702942_4073595802082156353_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Strech</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17309979_1467615326584809_4257681561614777357_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17309979_1467615326584809_4257681561614777357_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Chair Growths</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17621968_1483241391688869_9139772162230816003_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17621968_1483241391688869_9139772162230816003_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Chair Growths 2</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17622114_1483241395022202_135454706992583524_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17622114_1483241395022202_135454706992583524_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Chair Hallucinations 1</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17435863_1483241398355535_2328838522499450722_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17435863_1483241398355535_2328838522499450722_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Chair Hallucinations 1</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17621744_1483241425022199_7862745114641406764_o.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17621744_1483241425022199_7862745114641406764_o.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Foreshortening</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18058151_1518098891536452_6182864029848832977_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18058151_1518098891536452_6182864029848832977_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Relaxing Beach Chair</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17992160_1518098894869785_3643613128276992654_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17992160_1518098894869785_3643613128276992654_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Unfriendly Chair</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18118890_1518098898203118_7556374425933627554_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18118890_1518098898203118_7556374425933627554_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Elephant Chair</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/17992348_151809 8921536449_8297748936321495132_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/17992348_1518098921536449_8297748936321495132_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Perfect Correspondence 2</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18194139_1521245274555147_6387873167953340635_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18194139_1521245274555147_6387873167953340635_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Uncomfortable Chair</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18423960_1536082143071460_5562000232042538980_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18423960_1536082143071460_5562000232042538980_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Chill Plane</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18519900_1542003065812701_69998419652910827_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18519900_1542003065812701_69998419652910827_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Alien Counch</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18486356_1542003069146034_8832229143760253451_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18486356_1542003069146034_8832229143760253451_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Melted Car</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/18527562_1542003072479367_757465147288662663_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18527562_1542003072479367_757465147288662663_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Old Counch</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/ 18581869_1542003169146024_415512911450005262_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18581869_1542003169146024_415512911450005262_n.jpg" alt="History" /></a></p> </div></figure> <figure class="figure"><figcaption class="figure__caption"><p>Success!</p> </figcaption><div class="figure__main"> <p><a href="/writing/images/ 18556281_1542003282479346_5657773445370981127_n.jpg"><img class="postimageactual" src="/writing/images/2017-10-15-deformnet-or-a-tale-broken-chairs/18556281_1542003282479346_5657773445370981127_n.jpg" alt="History" /></a></p> </div></figure> <p><a href="/writing/project/deformnet-or-a-tale-broken-chairs/">DeformNet, Or A Tale of Broken Chairs</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on October 18, 2017.</p> <![CDATA[KerasJS3D]]> /projects/major_projects/KerasJS3D 2017-08-18T00:00:00-07:00 2017-08-18T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>Not much to say, click on the demo link (hopefully it still works…)! A fun little project.</p> <p><a href="/projects/major_projects/KerasJS3D/">KerasJS3D</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on August 18, 2017.</p> <![CDATA[DeformNet]]> /projects/research/deformnet 2017-08-11T00:00:00-07:00 2017-08-11T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>I was not the one to have the original idea, but mostly the one to grind out and iterate a lot to get it working. See the Arxiv post and website for more details.</p> <p><a href="/projects/research/deformnet/">DeformNet</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on August 11, 2017.</p> <![CDATA[Moving On, Looking Back]]> /writing/life/moving-on-looking-back 2017-07-28T16:19:34-07:00 2017-07-28T16:19:34-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>For a while now, I have been living two lives at once: that of a full time software engineer working at Oracle, and that of a CS Masters grad student at Stanford. In one life, finishing the first release of a brand new product with a small team of esoteric engineers scattered across a few different state. In the other, trying to keep up with classwork and delve deeper into research in AI. Granted, I was officially only a grad student part time, but it certainly did not feel like it.</p> <p>Well, no more. As of two weeks ago, my time at Oracle has come to an end - I am now a full time grad student at Stanford. Being the sentimental guy that I am, I decided to write up a little blog post to commemorate the occasion - and hopefully this also mark a return to writing more stuff on this site, as I have not done in more than a year now.</p> <p>It was an odd choice, going to Oracle. I had focused extensively on robotics research and AI in my undergrad, and had a perfect little plan to spend a bit of time working on robotics in industry before most likely going back to grad school. Long story short, the robotics interviews did not pan out and I went with the backup option of just doing some data-related software engineering.</p> <p>Though without a hint of relation to AI, the job at Oracle did offer the exciting prospect of working on a prototype of a product rather than small iterative feature development or bug fixing as would be the case in almost all entry level positions. But, within a short period there it became clear to me the progress being made in robotics and AI is far too exciting to not get back into that world. So I applied to Stanford’s HCP program, which allows unusually enterprising young men such as myself to get a CS Master’s degree while working full time.</p> <p>The plan was to stick around Oracle long enough to hopefully see our product through to release, while getting back into research and exploring possibilities for working in AI. And the plan worked! I managed to survive doing both long enough to <a href="http://www.oracle.com/technetwork/server-storage/sun-unified-storage/downloads/systems-manager-zfs-3711217.html">see our product through to a beta release</a>. At the same time, I have become a research assistent at the Stanford AI lab (my name is listed <a href="http://cvgl.stanford.edu/people.html">here</a> and everything).</p> <p>And here I am, now. Research and working with robots has felt like the right thing for me to do since I’ve gotten back to it, so I expect to continue with this particular focus indefinitely. Now, there is just the small matter of figuring out exactly what specific contributions I can make in this field… all in good time.</p> <p><a href="/writing/life/moving-on-looking-back/">Moving On, Looking Back</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on July 28, 2017.</p> <![CDATA[OSM]]> /projects/team_projects/oracle-systems-manager 2017-07-14T00:00:00-07:00 2017-07-14T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>As documented in my <a href="http://127.0.0.1:4000/writing/moving-on-looking-back/">more sentimental</a> post on this, my choice to go work at Oracle for a while was a bit odd but ultimately rewarding. Working on a prototype and eventually an entire new product from scratch was a rare opportunity and a rewarding project. We prototyped a microservices driven concept on the side for about nine months with fancy new tools such as Docker and the various popular messaging queues and NoSQL DBs, before being given the green light to go ahead and develop the monitoring and management tool in Java as a proper product. In just about a year, we had finished a polished mostly-bug-free complex product that did a lot of data crunching and visualization. And we did this as a small team of about a dozen engineers, so I got to have broad and significant influence over the development of the backend. Even if I eventually left to go back to research (and the project was ultimately scrapped, after beta release), I think fondly of how we started with zero code and built a really solid management tool in just a year.</p> <p><a href="/projects/team_projects/oracle-systems-manager/">OSM</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on July 14, 2017.</p> <![CDATA[ObjectCropBot]]> /projects/hacks/objectcropbot 2017-02-18T00:00:00-08:00 2017-02-18T00:00:00-08:00 www.andreykurenkov.com contact@andreykurenkov.com <p>I had already had experience with DeepMask when starting on this, since my project for Stanford’s AI class was to modify DeepMask to see if it could be used to crop objects with a single click. My conclusion from that was that I was still better off using Facebook’s approach, but my experience with AWS for that project came in handy. Specifically, I reused my previous AWS DeepMask computing solution: paying for an AWS EC2 instance with a GPU, installing the relevant dependencies on it, and making it host a REST server. I had to modify the DeepMask code slightly, but for the most part I just set it up to run on the cloud and used Facebook’s pretrained models.</p> <p>The bulk of the remaining work was in implementing the http://objectcropbot.com/ web demo. I made this with basic HTML/CSS/JS parts, except for the excellent open source visual cropping library Cropper.js. After an all-nighter tweaking the demo to look and feel right, I set it up to be hosted on GitHub and arranged the domain to be what it is after buying it from NameCheap.</p> <p><a href="/projects/hacks/objectcropbot/">ObjectCropBot</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on February 18, 2017.</p> <![CDATA[IMDB Data Viz]]> /projects/hacks/imdb-data-viz 2017-02-18T00:00:00-08:00 2017-02-18T00:00:00-08:00 www.andreykurenkov.com contact@andreykurenkov.com <p>See the linked writeup. A fun little project - gotta love classes that let the student decide on what to work on for their project.</p> <p><a href="/projects/hacks/imdb-data-viz/">IMDB Data Viz</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on February 18, 2017.</p> <![CDATA[DeepCrop]]> /projects/major_projects/deepcrop 2016-12-16T01:26:22-08:00 2016-12-16T01:26:22-08:00 www.andreykurenkov.com contact@andreykurenkov.com <p>See the quite in-depth attached documents. In the end the outcome was not that impresive, but it was quite fun to do and a good chance to play with Deep Learning.</p> <p><a href="/projects/major_projects/deepcrop/">DeepCrop</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on December 16, 2016.</p> <![CDATA[IMDB Data Visualizations with D3 + Dimple.js]]> /writing/project/visualizing-imdb-data-with-d3 2016-08-10T16:19:34-07:00 2016-08-10T16:19:34-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p><em>Notes: not optimized for mobile (or much else). Full page version <strong><a href="/writing/files/2016-08-10-visualizing-imdb-data-with-d3/standalone_page.html">here</a></strong>, visualization code <strong><a href="https://github.com/andreykurenkov/imdb-data-viz">here</a></strong>. I don’t get into the technical aspects here, but feel free to take a look.</em></p> <div id="genreChartContainer" class="chartContainer"> <script type="text/javascript"> /*Start on 1915 because prior too few movies are listed to make them a fair comparison to modern times*/ var start_year = 1915; /*End on 2013 due to a strange dive towards zero in 2014 and 2015 I cannot explain or guarantee is not due to flawed data. At first I included the dip but received feedback it is best to remove it to avoid confusion, and then removed it.*/ var end_year = 2013; //Get from localhost, perhaps change to github later var data_source = "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/yearly_data.tsv"; var name = "IMDB Yearly Movie And Genre Counts (1915-2013)"; createGenreChart("#genreChartContainer", data_source, name, start_year, end_year); </script> </div> <form class="form" id="genreToggleForm"> <div class="switch-field"> <!-- <div class="switch-title">Display Type</div> --> <input type="radio" id="switch_left" name="switch" value="yes" checked="" /> <label for="switch_left">Counts</label> <input type="radio" id="switch_right" name="switch" value="no" /> <label for="switch_right">Percents</label> </div> </form> <p>And there it is! IMDB data<sup id="fnref:gotten_with"><a href="#fn:gotten_with" class="footnote">1</a></sup> visualized with <a href="https://d3js.org/">D3</a>, or more precisely with the D3-powered <a href="http://dimplejs.org/">Dimple.js</a>. The data is minimally cleaned up by filtering for movies that have at least one vote and associated length information, and info on TV episodes or shows is also not included, but the data is otherwise directly (after parsing) from IMDB. The legend is interactive (try clicking the rectangles!).</p> <p>As you can see this chart visualizes the number of genre movie releases between 1915 and 2013<sup id="fnref:why_years"><a href="#fn:why_years" class="footnote">2</a></sup>, as well as the total number of movies in those years. A single movie may be associated with zero, one, or multiple genres and so the ‘Total Movies’ line corresponds to actual movie counts and every colored-in area represents the number of movies tagged with that genre for that year. The clear conclusion is that there has been an explosion in film production from the 90s onward, for which I have some theories<sup id="fnref:theories"><a href="#fn:theories" class="footnote">3</a></sup> but no definitive explanation. Beyond the big takeaway there are a multitude of possible smaller conclusions regarding the relative popularity of genres and movies overall, which was really my intent in making such an open-ended visualization.</p> <p>There is a ton more that can be done with the data. The direction I decided to go with it was to explore various aspects of more recent data rather than more aspects related to change over time. I would love to eventually add controls to view any year range for all the following charts<sup id="fnref:nontrivial"><a href="#fn:nontrivial" class="footnote">4</a></sup>, but they still reveal some interesting aspects about modern movie production and IMDB metrics.</p> <p>An obvious place to start is with looking at how rating data is distributed, and the answer is delightfully normal:</p> <div id="ratingChartContainer" class="chartContainer"> <script type="text/javascript"> createLineChart("#ratingChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/rating_data.tsv", false, "IMDB Average Movie Rating Distribution (2003-2013) ", "rating", false, "Average IMDB User Rating"); </script> </div> <p>Yep, a bell curve-ish<sup id="fnref:bell_curve"><a href="#fn:bell_curve" class="footnote">5</a></sup> kinda shape! Not overly suprising to see that most movies are rated as mediocre/good and the frequency flattens out at either extreme. Next, a slightly more fun shape from the length distribution:</p> <div id="lengthChartContainer" class="chartContainer"> <script type="text/javascript"> createLineChart("#lengthChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/length_data.tsv", true, "IMDB Movie Length Distribution (2003-2013)", "length", false, "Length (minutes)", "max"); </script> </div> <p>Ah, what a nice regularly spiky shape<sup id="fnref:fourier"><a href="#fn:fourier" class="footnote">6</a></sup>. It’s logical that most movies hit the 90-minute mark, though it seems likely that simplified data entry also brings about the periodicity here. The chart is a bit of a mess as a line graph, so it makes sense to clean it up by binning the data quite a bit more:</p> <div id="lengthBinChartContainer" class="chartContainer"> <script type="text/javascript"> createHistChart("#lengthBinChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/length_data_hist.tsv", true, "IMDB Movie Length Distribution (2003-2013) ", "length", false, "Length (minutes)"); </script> </div> <p>And there it is, hiding in that data was another sort-of bell curve. Except of course for that first bar - IMDB apparently has a large amount of shorter 0-20 minute film entries as well. No doubt short films are part of this, though it’s unclear why there are quite so many. As with many aspects of the data, it could be explored more deeply and filtered more thouroughly to focus on a specific subset of films. But, that’s for another day. For now I continued my visualization quest by looking into the vote distribution:</p> <div id="votesChartContainer" class="chartContainer"> <script type="text/javascript"> createLineChart("#votesChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/votes_data.tsv", true, "IMDB Movie Vote Count Distribution (2003-2013) ", "votes", true, "IMDB User Vote Count"); </script> </div> <p>Yes astute reader<sup id="fnref:corny"><a href="#fn:corny" class="footnote">7</a></sup>, that is indeed a log-scale on the x axis. Unsurprisingly, the number of votes for any given film declines exponentially - very few of those thousands of movies in the first graph are blockbusters<sup id="fnref:again"><a href="#fn:again" class="footnote">8</a></sup>. As with the histogram above the continuous data is in fact binned for counting, but in this case there are enough bins that it makes sense to smooth out into a line. Once again the data can also be shown via a histogram with fewer bins:</p> <div id="votesBinChartContainer" class="chartContainer"> <script type="text/javascript"> createHistChart("#votesBinChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/votes_data_hist.tsv", true, "IMDB Movie Vote # Distribution (2003-2013) ", "votes", true, "IMDB User Vote Count"); </script> </div> <p>Lastly, I explored the distribution of budgets within the data <sup id="fnref:budgets"><a href="#fn:budgets" class="footnote">9</a></sup>. I was originally inspired to look into movie data based on <a href="http://flavorwire.com/492985/how-the-death-of-mid-budget-cinema-left-a-generation-of-iconic-filmmakers-mia">an article</a> that discussed the death of mid-budget-cinema, and of course I wanted to look into the data and see the phenomenon myself. The result once again demands a log-scale and reveals a certain periodicity:</p> <div id="budgetChartContainer" class="chartContainer"> <script type="text/javascript"> createLineChart("#budgetChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/budget_data.tsv", true, "IMDB Movie Budget Distribution (2003-2013) ", "budget", true, "Budget (USD)", "average"); </script> </div> <p>The data does<sup id="fnref:plural"><a href="#fn:plural" class="footnote">10</a></sup> not seem to back the notion of mid-budget movies dying, since one peak is at about 1m, but then again as said before the data is not particularly carefully filtered. There being a ton of less-than one million budget movies certainly explains how such an explosion in movie production might have been possible in the past twenty years. That guess shall hopefully be further explored in future posts, but for now I will finish with a final simplified histogram:</p> <div id="budgetBinChartContainer" class="chartContainer"> <script type="text/javascript"> createHistChart("#budgetBinChartContainer", "/writing/files/2016-08-10-visualizing-imdb-data-with-d3/data/budget_data_hist.tsv", true, "IMDB Movie Budget Distribution (2003-2013) ", "budget", true, "Budget (USD)"); </script> </div> <h2 id="what-i-learned">What I Learned</h2> <p>And now time for everyone’s favorite part of the book report. In truth I prepared the genre chart for Udacity’s an online class, <a href="https://www.udacity.com/course/data-visualization-and-d3js--ud507">Data Visualization with D3.JS</a>. I completed the class as part of Udacity’s Data Analyst Nanodegree, and as with my <a href="http://www.andreykurenkov.com/writing/fun-visualizations-of-stackoverflow/">previous</a> <a href="http://www.andreykurenkov.com/writing/power-of-ipython-pandas-scikilearn/">posts</a> based off projects for the nanodegree I felt that I learned<sup id="fnref:learned"><a href="#fn:learned" class="footnote">11</a></sup> a useful technology and got the chance to complete a fun project with it worthy of cataloguing. I have a few key takeaways from having now completed the project:</p> <ul> <li>It’s way easier to do data exploration and visualization via RStudio or IPython than D3. Perhaps this is not true for others, but I was surprised by how high level and unstreamlined D3 is for typical visualization tasks. Of course this is part of its power and the reason that higher-abstraction libraries like Dimple.js got built, but on balance I still felt that using JavaScript, HTML, and a browser was not nearly as elegant as RStudio. As someone only mildly experienced with web-dev, the prior classes on R and Pandas+IPython made me feel much more empowered to play with data easily.</li> <li>D3 allows for interactivity, but interactvity is not always needed. This one is rather obvious but why not still spell it out. All but the genre chart here could have comfortably been PNGs files (as in my previous visualization posts), and not lost much. Still, allowing for interactivity does open up a considerable amount of possibilies and in particular is good for open ended data visualization without a single particularly concrete point.</li> <li>Aggregation over hundreds of thousands of data points in JS is probably a bad idea. The year-grouped data for the genre graph was originally completely computed in JS when I submitted my project to Udacity. This took painful seconds, which was not helped by my meek laptop. Again unsurprising, but I did feel a tinge of annoyance at realizing I would be best off writing a python script to pre-process my data into multiple CSV files ready for charting without much manipulation.</li> </ul> <h2 id="bloopers">Bloopers</h2> <p>You did not ask for them, and I delivered. Here are a couple of silly moments during the creation of this<sup id="fnref:high_five"><a href="#fn:high_five" class="footnote">12</a></sup>. Hope you enjoyed!</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/oops.png"><img class="postimageactual" src="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/oops.png" alt="oops" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>Making small ordering mistakes unsurisingly had major glitchy implications…</p> </figcaption></figure> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/great.png"><img class="postimageactual" src="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/great.png" alt="great" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>… which were worse in some cases than others.</p> </figcaption></figure> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/step1.png"><img class="postimageactual" src="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/step1.png" alt="step1" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>For a while I thought to plot the binned data with tiny little cute bins via step interpolation…</p> </figcaption></figure> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/step2.png"><img class="postimageactual" src="/writing/images/2016-08-10-visualizing-imdb-data-with-d3/step2.png" alt="step2" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>… but evidently changed my mind.</p> </figcaption></figure> <h2 id="notes">Notes</h2> <div class="footnotes"> <ol> <li id="fn:gotten_with"> <p>(gotten with <a href="https://github.com/andreykurenkov/data-movies">this code</a>) <a href="#fnref:gotten_with" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:why_years"> <p>The cutoff years are chosen due to there being very few movies comparable to modern films prior to 1915, and the data possibly being incomplete post 2013 <a href="#fnref:why_years" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:theories"> <p>Primarily that films are cheaper to make due to digital technology and that IMDB tacks more modern movies better <a href="#fnref:theories" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:nontrivial"> <p>This is nontrivial for various boring reasons and I have too many side-projects as it is… <a href="#fnref:nontrivial" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:bell_curve"> <p>Fine, a somewhat offset and wobbly bell curve, but still looks pretty good. <a href="#fnref:bell_curve" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:fourier"> <p>Don’t you just want to take the fourier transform of it? <a href="#fnref:fourier" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:corny"> <p>Too corny? I shan’t apologize, this is my site! <a href="#fnref:corny" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:again"> <p>Again, something warranting a deeper dive someday. <a href="#fnref:again" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:budgets"> <p>Many movies did not have associated budget data, but that still left thousands that did <a href="#fnref:budgets" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:plural"> <p>I know, ‘do’ is grammatically correct here, but then natural speech is largely nonsensical so who cares <a href="#fnref:plural" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:learned"> <p>Well, learned a little… <a href="#fnref:learned" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:high_five"> <p>Wow, did you actually read all the text and are still reading it? High five. <a href="#fnref:high_five" class="reversefootnote">&#8617;</a></p> </li> </ol> </div> <p><a href="/writing/project/visualizing-imdb-data-with-d3/">IMDB Data Visualizations with D3 + Dimple.js</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on August 10, 2016.</p> <![CDATA[VividVr]]> /projects/hacks/vividvr 2016-06-17T00:00:00-07:00 2016-06-17T00:00:00-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>The presentation slides or photos below sum it up; basically we tried to glue together some cutting edge open source projects to get something quite novel. Trying to do so in 24 hours proved tough, and we only go as far as running the separate programs but not to the full pipeline. Something like this may still be worth exploring, though I don’t think this is the best approach to go about it.</p> <p><a href="/projects/hacks/vividvr/">VividVr</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on June 17, 2016.</p> <![CDATA[The Power of IPython Notebook + Pandas + and Scikit-learn]]> /writing/project/power-of-ipython-pandas-scikilearn 2016-06-10T19:19:34-07:00 2016-06-10T19:19:34-07:00 www.andreykurenkov.com contact@andreykurenkov.com <p>IPython Notebook, Numpy, Pandas, MongoDB, R — for the better part of a year now, I have been trying out these technologies as part of Udacity’s <a href="https://www.udacity.com/course/data-analyst-nanodegree--nd002">Data Analyst Nanodegree</a>. My undergrad education barely touched on data visualization or more broadly data science, and so I figured being exposed to the aforementioned technologies would be fun. And fun it has been, with R’s powerful IDE-powered data mundging and visualization techniques having been particularly revelatory. I learned enough of R to create <a href="/writing/fun-visualizations-of-stackoverflow/">some complex visualizations</a>, and was impressed by how easy is to import data into its Dataframe representations and then transform and visualize that data. I also thought RStudio’s paradigm of continuously intermixed code editing and execution was superior to my habitual workflow of just endlessly cycling between tweaking and executing of Python scripts.</p> <figure class="figure"><div class="figure__main"> <p><a href="/writing/images/2016-06-10-power-of-ipython-pandas-scikitlearn/rstudio.png"><img class="postimageactual" src="/writing/images/2016-06-10-power-of-ipython-pandas-scikitlearn/rstudio.png" alt="History" /></a></p> </div><figcaption class="figure__caption" style="padding-top:0;"><p>The RStudio IDE</p> </figcaption></figure> <p>Still, R is a not-quite-general-purpose-language and I hit upon multiple instances in which simple things were hard to do. In such times, I could not help but miss the powers of Python, a language I have tons of experience with and which is about as general purpose as it gets. Luckily, the courses also covered the equivalent of an R implementation for Python: the Python Data Analysis Library, Pandas. This let me use the features of R I now liked — dataframes, powerful plotting methods, elegant methods for transforming data — with Python’s lovely syntax and libraries I already knew and loved. And soon I got to do just that, using both Pandas and the supremely good Machine Learning package Scikit-learn for the final project of <a href="https://www.udacity.com/course/intro-to-machine-learning--ud120">Udacity’s Intro to Machine Learning Course</a>. Not only that, but I also used IPython Notebook for RStudio-esque intermixed code editing and execution and nice PDF output.</p> <p>I had such a nice experience with this combination of tools that I decided to dedicate a post to it, and what follows is mostly a summation of that experience. Reading it should be sufficient to get a general idea for why these tools are useful, whereas a much more detailed introdution and tutorial for Pandas can be found elsewhere (for instance <a href="http://nbviewer.jupyter.org/github/fonnesbeck/pytenn2014_tutorial/blob/master/Part%201.%20Data%20Wrangling%20with%20Pandas.ipynb">here</a>). Incidentally, this whole post was written in IPython Notebook and the source of that <a href="http://www.andreykurenkov.com/writing/files/2016-06-10-power-of-ipython-pandas-scikilearn/post.ipynb">can be found here</a> with the produced HTML <a href="http://www.andreykurenkov.com/writing/files/2016-06-10-power-of-ipython-pandas-scikilearn/post.html">here</a>.</p> <h2 id="data-summarization">Data Summarization</h2> <p>First, a bit about the project. The task was to first explore and clean a given dataset, and then train classification models using it. The dataset contained dozens of features about roughly 150 important employees from the <a href="https://en.wikipedia.org/wiki/Enron_scandal">notoriously corrupt</a> company Enron, witch were classified as either a “Person of Interest” or not based on the outcome of investigations into Enron’s corruption. It’s a tiny dataset and not what I would have chosen, but such were the instructions. The data was provided in a bunch of Python dictionaries, and at first I just used a Python script to change it into a CSV and started exploring it in RStudio. But, it soon dawned on me that I would be much better off just working entirely in Python, and the following code is taken verbatim from my final project submission.</p> <p>And so, the code. Following some imports and a ‘%matplotlib notebook’ comment to allow plotting within IPython, I loaded the data using pickle and printed out some basic things about it (not yet using Pandas):</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span> <span class="kn">import</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span> <span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">display</span> <span class="o">%</span><span class="n">matplotlib</span> <span class="n">notebook</span></code></pre></div> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">enron_data</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s">&quot;./ud120-projects/final_project/final_project_dataset.pkl&quot;</span><span class="p">,</span> <span class="s">&quot;rb&quot;</span><span class="p">))</span> <span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of people: </span><span class="si">%d</span><span class="s">&quot;</span><span class="o">%</span><span class="nb">len</span><span class="p">(</span><span class="n">enron_data</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span> <span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of features per person: </span><span class="si">%d</span><span class="s">&quot;</span><span class="o">%</span><span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">enron_data</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="mi">0</span><span class="p">]))</span> <span class="k">print</span><span class="p">(</span><span class="s">&quot;Number of POI: </span><span class="si">%d</span><span class="s">&quot;</span><span class="o">%</span><span class="nb">sum</span><span class="p">([</span><span class="mi">1</span> <span class="k">if</span> <span class="n">x</span><span class="p">[</span><span class="s">&#39;poi&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">enron_data</span><span class="o">.</span><span class="n">values</span><span class="p">()]))</span></code></pre></div> <pre><code>Number of people: 146 Number of features per person: 21 Number of POI: 18 </code></pre> <p>But working with this set of dictionaries would not be nearly as fast or easy as a Pandas dataframe, so I soon converted it to that and went ahead and summarized all the features with a single method call:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">enron_data</span><span class="p">)</span> <span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s">&#39;TOTAL&#39;</span><span class="p">]</span> <span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">transpose</span><span class="p">()</span> <span class="n">numeric_df</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">to_numeric</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="s">&#39;coerce&#39;</span><span class="p">)</span> <span class="k">del</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;email_address&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span></code></pre></div> <div class="post_table_div"> <table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th></th> <th>bonus</th> <th>deferral_payments</th> <th>deferred_income</th> <th>director_fees</th> <th>exercised_stock_options</th> <th>expenses</th> <th>from_messages</th> <th>from_poi_to_this_person</th> <th>from_this_person_to_poi</th> <th>loan_advances</th> <th>long_term_incentive</th> <th>other</th> <th>poi</th> <th>restricted_stock</th> <th>restricted_stock_deferred</th> <th>salary</th> <th>shared_receipt_with_poi</th> <th>to_messages</th> <th>total_payments</th> <th>total_stock_value</th> </tr> </thead> <tbody> <tr> <th>count</th> <td>81.000000</td> <td>38.000000</td> <td>48.000000</td> <td>16.000000</td> <td>101.000000</td> <td>94.000000</td> <td>86.000000</td> <td>86.000000</td> <td>86.000000</td> <td>3.000000</td> <td>65.000000</td> <td>92.000000</td> <td>145</td> <td>109.000000</td> <td>17.000000</td> <td>94.000000</td> <td>86.000000</td> <td>86.000000</td> <td>1.240000e+02</td> <td>125.000000</td> </tr> <tr> <th>mean</th> <td>1201773.074074</td> <td>841602.526316</td> <td>-581049.812500</td> <td>89822.875000</td> <td>2959559.257426</td> <td>54192.010638</td> <td>608.790698</td> <td>64.895349</td> <td>41.232558</td> <td>27975000.000000</td> <td>746491.200000</td> <td>465276.663043</td> <td>0.124138</td> <td>1147424.091743</td> <td>621892.823529</td> <td>284087.542553</td> <td>1176.465116</td> <td>2073.860465</td> <td>2.623421e+06</td> <td>3352073.024000</td> </tr> <tr> <th>std</th> <td>1441679.438330</td> <td>1289322.626180</td> <td>942076.402972</td> <td>41112.700735</td> <td>5499449.598994</td> <td>46108.377454</td> <td>1841.033949</td> <td>86.979244</td> <td>100.073111</td> <td>46382560.030684</td> <td>862917.421568</td> <td>1389719.064851</td> <td>0.330882</td> <td>2249770.356903</td> <td>3845528.349509</td> <td>177131.115377</td> <td>1178.317641</td> <td>2582.700981</td> <td>9.488106e+06</td> <td>6532883.097201</td> </tr> <tr> <th>min</th> <td>70000.000000</td> <td>-102500.000000</td> <td>-3504386.000000</td> <td>3285.000000</td> <td>3285.000000</td> <td>148.000000</td> <td>12.000000</td> <td>0.000000</td> <td>0.000000</td> <td>400000.000000</td> <td>69223.000000</td> <td>2.000000</td> <td>False</td> <td>-2604490.000000</td> <td>-1787380.000000</td> <td>477.000000</td> <td>2.000000</td> <td>57.000000</td> <td>1.480000e+02</td> <td>-44093.000000</td> </tr> <tr> <th>25%</th> <td>425000.000000</td> <td>79644.500000</td> <td>-611209.250000</td> <td>83674.500000</td> <td>506765.000000</td> <td>22479.000000</td> <td>22.750000</td> <td>10.000000</td> <td>1.000000</td> <td>1200000.000000</td> <td>275000.000000</td> <td>1209.000000</td> <td>0</td> <td>252055.000000</td> <td>-329825.000000</td> <td>211802.000000</td> <td>249.750000</td> <td>541.250000</td> <td>3.863802e+05</td> <td>494136.000000</td> </tr> <tr> <th>50%</th> <td>750000.000000</td> <td>221063.500000</td> <td>-151927.000000</td> <td>106164.500000</td> <td>1297049.000000</td> <td>46547.500000</td> <td>41.000000</td> <td>35.000000</td> <td>8.000000</td> <td>2000000.000000</td> <td>422158.000000</td> <td>51984.500000</td> <td>0</td> <td>441096.000000</td> <td>-140264.000000</td> <td>258741.000000</td> <td>740.500000</td> <td>1211.000000</td> <td>1.100246e+06</td> <td>1095040.000000</td> </tr> <tr> <th>75%</th> <td>1200000.000000</td> <td>867211.250000</td> <td>-37926.000000</td> <td>112815.000000</td> <td>2542813.000000</td> <td>78408.500000</td> <td>145.500000</td> <td>72.250000</td> <td>24.750000</td> <td>41762500.000000</td> <td>831809.000000</td> <td>357577.250000</td> <td>0</td> <td>985032.000000</td> <td>-72419.000000</td> <td>308606.500000</td> <td>1888.250000</td> <td>2634.750000</td> <td>2.084663e+06</td> <td>2606763.000000</td> </tr> <tr> <th>max</th> <td>8000000.000000</td> <td>6426990.000000</td> <td>-833.000000</td> <td>137864.000000</td> <td>34348384.000000</td> <td>228763.000000</td> <td>14368.000000</td> <td>528.000000</td> <td>609.000000</td> <td>81525000.000000</td> <td>5145434.000000</td> <td>10359729.000000</td> <td>True</td> <td>14761694.000000</td> <td>15456290.000000</td> <td>1111258.000000</td> <td>5521.000000</td> <td>15149.000000</td> <td>1.035598e+08</td> <td>49110078.000000</td> </tr> </tbody> </table> </div> <p>This high level summarization of data is one example of what Pandas can do for you. But the main strength is in how easy it is to manipulate the data and derive new things from it. The project instructed me to first summarize some things about the data, and then handle outliers. The summary indicated a large standard deviation for many of the features, and also a lot of missing values in the data for various features. First I dropped features with almost no non-null values, such as loan_advances and restricted_stock_deferred. Then, in order to investigate if any features are particularly bad in terms of outliers, I went ahead computed the standard deviation of each feature for each entry in the data, and easily got summary statistics for this data as well:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="k">del</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;loan_advances&#39;</span><span class="p">]</span> <span class="k">del</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;restricted_stock_deferred&#39;</span><span class="p">]</span> <span class="k">del</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;director_fees&#39;</span><span class="p">]</span> <span class="n">std</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">x</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span> <span class="o">/</span> <span class="n">x</span><span class="o">.</span><span class="n">std</span><span class="p">())</span> <span class="n">std</span> <span class="o">=</span> <span class="n">std</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">std</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span> <span class="n">std</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span></code></pre></div> <div class="post_table_div"> <table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th></th> <th>bonus</th> <th>deferral_payments</th> <th>deferred_income</th> <th>exercised_stock_options</th> <th>expenses</th> <th>from_messages</th> <th>from_poi_to_this_person</th> <th>from_this_person_to_poi</th> <th>long_term_incentive</th> <th>other</th> <th>poi</th> <th>restricted_stock</th> <th>salary</th> <th>shared_receipt_with_poi</th> <th>to_messages</th> <th>total_payments</th> <th>total_stock_value</th> </tr> </thead> <tbody> <tr> <th>count</th> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> <td>145.000000</td> </tr> <tr> <th>mean</th> <td>0.612134</td> <td>0.670659</td> <td>0.690552</td> <td>0.558364</td> <td>0.739307</td> <td>0.487468</td> <td>0.694769</td> <td>0.532234</td> <td>0.670577</td> <td>0.444004</td> <td>0.657200</td> <td>0.525893</td> <td>0.568830</td> <td>0.794256</td> <td>0.648079</td> <td>0.287221</td> <td>0.547885</td> </tr> <tr> <th>std</th> <td>0.587181</td> <td>0.371822</td> <td>0.409188</td> <td>0.689763</td> <td>0.537626</td> <td>0.669599</td> <td>0.549542</td> <td>0.648923</td> <td>0.491393</td> <td>0.711333</td> <td>0.751724</td> <td>0.735294</td> <td>0.659254</td> <td>0.462087</td> <td>0.582615</td> <td>0.884946</td> <td>0.774945</td> </tr> <tr> <th>min</th> <td>0.001230</td> <td>0.001025</td> <td>0.002415</td> <td>0.040311</td> <td>0.005314</td> <td>0.028674</td> <td>0.010294</td> <td>0.032302</td> <td>0.027083</td> <td>0.000058</td> <td>0.375173</td> <td>0.044846</td> <td>0.025148</td> <td>0.037736</td> <td>0.041484</td> <td>0.003077</td> <td>0.014143</td> </tr> <tr> <th>25%</th> <td>0.380270</td> <td>0.670659</td> <td>0.611358</td> <td>0.346078</td> <td>0.510059</td> <td>0.310038</td> <td>0.481671</td> <td>0.342075</td> <td>0.546392</td> <td>0.297679</td> <td>0.375173</td> <td>0.302841</td> <td>0.250755</td> <td>0.605495</td> <td>0.455283</td> <td>0.130231</td> <td>0.296228</td> </tr> <tr> <th>50%</th> <td>0.612134</td> <td>0.670659</td> <td>0.690552</td> <td>0.470558</td> <td>0.739307</td> <td>0.324161</td> <td>0.694769</td> <td>0.412024</td> <td>0.670577</td> <td>0.334411</td> <td>0.375173</td> <td>0.417338</td> <td>0.568830</td> <td>0.794256</td> <td>0.648079</td> <td>0.196170</td> <td>0.423551</td> </tr> <tr> <th>75%</th> <td>0.612134</td> <td>0.670659</td> <td>0.690552</td> <td>0.558364</td> <td>0.817162</td> <td>0.487468</td> <td>0.694769</td> <td>0.532234</td> <td>0.670577</td> <td>0.444004</td> <td>0.375173</td> <td>0.525893</td> <td>0.568830</td> <td>0.847365</td> <td>0.648079</td> <td>0.271301</td> <td>0.508700</td> </tr> <tr> <th>max</th> <td>4.715491</td> <td>4.332032</td> <td>3.103078</td> <td>5.707630</td> <td>3.786101</td> <td>7.473631</td> <td>5.324312</td> <td>5.673526</td> <td>5.097756</td> <td>7.119750</td> <td>2.647054</td> <td>6.051404</td> <td>4.669820</td> <td>3.687066</td> <td>5.062584</td> <td>10.638201</td> <td>7.004259</td> </tr> </tbody> </table> </div> <p>This result suggested that most features have large outliers (larger than 3 standard deviations). In order to be careful not to remove any useful data, I manually inspected all rows with large outliers to see any values that seem appropriate for removal:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">outliers</span> <span class="o">=</span> <span class="n">std</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="mi">5</span><span class="p">)</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="n">outlier_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="n">numeric_df</span><span class="p">[</span><span class="n">outliers</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span> <span class="n">outlier_df</span><span class="p">[</span><span class="nb">str</span><span class="p">((</span><span class="n">col</span><span class="p">,</span><span class="n">col</span><span class="o">+</span><span class="s">&#39;_std&#39;</span><span class="p">))]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">numeric_df</span><span class="p">[</span><span class="n">outliers</span><span class="p">][</span><span class="n">col</span><span class="p">],</span><span class="n">std</span><span class="p">[</span><span class="n">outliers</span><span class="p">][</span><span class="n">col</span><span class="p">]))</span> <span class="n">display</span><span class="p">(</span><span class="n">outlier_df</span><span class="p">)</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s">&#39;FREVERT MARK A&#39;</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">df</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s">&#39;FREVERT MARK A&#39;</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span></code></pre></div> <div class="post_table_div"> <table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th></th> <th>('bonus', 'bonus_std')</th> <th>('deferral_payments', 'deferral_payments_std')</th> <th>('deferred_income', 'deferred_income_std')</th> <th>('exercised_stock_options', 'exercised_stock_options_std')</th> <th>('expenses', 'expenses_std')</th> <th>('from_messages', 'from_messages_std')</th> <th>('from_poi_to_this_person', 'from_poi_to_this_person_std')</th> <th>('from_this_person_to_poi', 'from_this_person_to_poi_std')</th> <th>('long_term_incentive', 'long_term_incentive_std')</th> <th>('other', 'other_std')</th> <th>('poi', 'poi_std')</th> <th>('restricted_stock', 'restricted_stock_std')</th> <th>('salary', 'salary_std')</th> <th>('shared_receipt_with_poi', 'shared_receipt_with_poi_std')</th> <th>('to_messages', 'to_messages_std')</th> <th>('total_payments', 'total_payments_std')</th> <th>('total_stock_value', 'total_stock_value_std')</th> </tr> </thead> <tbody> <tr> <th>DELAINEY DAVID W</th> <td>(3000000.0, 1.24731398542)</td> <td>(nan, 0.67065886001)</td> <td>(nan, 0.690552246623)</td> <td>(2291113.0, 0.121547846815)</td> <td>(86174.0, 0.6936264325)</td> <td>(3069.0, 1.3363193564)</td> <td>(66.0, 0.0127001697143)</td> <td>(609.0, 5.67352642171)</td> <td>(1294981.0, 0.635622582522)</td> <td>(1661.0, 0.333603873451)</td> <td>(True, 2.64705431598)</td> <td>(1323148.0, 0.078107486712)</td> <td>(365163.0, 0.457714373186)</td> <td>(2097.0, 0.781228126919)</td> <td>(3093.0, 0.394602217763)</td> <td>(4747979.0, 0.22391802188)</td> <td>(3614261.0, 0.0401335784062)</td> </tr> <tr> <th>FREVERT MARK A</th> <td>(2000000.0, 0.553678511813)</td> <td>(6426990.0, 4.33203246439)</td> <td>(-3367011.0, 2.95725609803)</td> <td>(10433518.0, 1.35903759241)</td> <td>(86987.0, 0.711258803121)</td> <td>(21.0, 0.319272057897)</td> <td>(242.0, 2.03617142019)</td> <td>(6.0, 0.352068179278)</td> <td>(1617011.0, 1.00881008801)</td> <td>(7427621.0, 5.00989337561)</td> <td>(False, 0.375173052658)</td> <td>(4188667.0, 1.3518014845)</td> <td>(1060932.0, 4.38570296241)</td> <td>(2979.0, 1.5297529467)</td> <td>(3275.0, 0.465071080146)</td> <td>(17252530.0, 1.54183664695)</td> <td>(14622185.0, 1.72513602468)</td> </tr> <tr> <th>HIRKO JOSEPH</th> <td>(nan, 0.612134343218)</td> <td>(10259.0, 0.644790923106)</td> <td>(nan, 0.690552246623)</td> <td>(30766064.0, 5.05623412708)</td> <td>(77978.0, 0.515871316129)</td> <td>(nan, 0.487467982744)</td> <td>(nan, 0.694769235346)</td> <td>(nan, 0.532233915598)</td> <td>(nan, 0.670576589457)</td> <td>(2856.0, 0.332743987428)</td> <td>(True, 2.64705431598)</td> <td>(nan, 0.52589323995)</td> <td>(nan, 0.568830375372)</td> <td>(nan, 0.794256482633)</td> <td>(nan, 0.648079292459)</td> <td>(91093.0, 0.266895026444)</td> <td>(30766064.0, 4.19630821004)</td> </tr> <tr> <th>KAMINSKI WINCENTY J</th> <td>(400000.0, 0.556138245963)</td> <td>(nan, 0.67065886001)</td> <td>(nan, 0.690552246623)</td> <td>(850010.0, 0.383592797689)</td> <td>(83585.0, 0.637476115725)</td> <td>(14368.0, 7.47363149225)</td> <td>(41.0, 0.274724723819)</td> <td>(171.0, 1.29672636328)</td> <td>(323466.0, 0.490226746415)</td> <td>(4669.0, 0.331439407211)</td> <td>(False, 0.375173052658)</td> <td>(126027.0, 0.454000599932)</td> <td>(275101.0, 0.0507338450054)</td> <td>(583.0, 0.503654613618)</td> <td>(4607.0, 0.980810226817)</td> <td>(1086821.0, 0.161950156636)</td> <td>(976037.0, 0.363704047455)</td> </tr> <tr> <th>LAVORATO JOHN J</th> <td>(8000000.0, 4.71549135347)</td> <td>(nan, 0.67065886001)</td> <td>(nan, 0.690552246623)</td> <td>(4158995.0, 0.21810105193)</td> <td>(49537.0, 0.100958023148)</td> <td>(2585.0, 1.07342360688)</td> <td>(528.0, 5.32431220222)</td> <td>(411.0, 3.69497297064)</td> <td>(2035380.0, 1.4936409531)</td> <td>(1552.0, 0.33368230657)</td> <td>(False, 0.375173052658)</td> <td>(1008149.0, 0.0619063591605)</td> <td>(339288.0, 0.311636142127)</td> <td>(3962.0, 2.3639931937)</td> <td>(7259.0, 2.00764222154)</td> <td>(10425757.0, 0.822328102755)</td> <td>(5167144.0, 0.277836132837)</td> </tr> <tr> <th>LAY KENNETH L</th> <td>(7000000.0, 4.02185587986)</td> <td>(202911.0, 0.495369827029)</td> <td>(-300000.0, 0.29833016899)</td> <td>(34348384.0, 5.70763022327)</td> <td>(99832.0, 0.98984158372)</td> <td>(36.0, 0.311124462355)</td> <td>(123.0, 0.668028926971)</td> <td>(16.0, 0.252141237305)</td> <td>(3600000.0, 3.30681561025)</td> <td>(10359729.0, 7.11975001798)</td> <td>(True, 2.64705431598)</td> <td>(14761694.0, 6.05140425399)</td> <td>(1072321.0, 4.44999996622)</td> <td>(2411.0, 1.0477097521)</td> <td>(4273.0, 0.851488248598)</td> <td>(103559793.0, 10.6382007936)</td> <td>(49110078.0, 7.00425896119)</td> </tr> <tr> <th>MARTIN AMANDA K</th> <td>(nan, 0.612134343218)</td> <td>(85430.0, 0.586488215565)</td> <td>(nan, 0.690552246623)</td> <td>(2070306.0, 0.16169859209)</td> <td>(8211.0, 0.997237664333)</td> <td>(230.0, 0.205748893335)</td> <td>(8.0, 0.654125583284)</td> <td>(0.0, 0.412024344462)</td> <td>(5145434.0, 5.09775639018)</td> <td>(2818454.0, 1.6932755666)</td> <td>(False, 0.375173052658)</td> <td>(nan, 0.52589323995)</td> <td>(349487.0, 0.36921495869)</td> <td>(477.0, 0.593613378808)</td> <td>(1522.0, 0.21367570973)</td> <td>(8407016.0, 0.609562657351)</td> <td>(2070306.0, 0.196202351233)</td> </tr> <tr> <th>SHAPIRO RICHARD S</th> <td>(650000.0, 0.382729377561)</td> <td>(nan, 0.67065886001)</td> <td>(nan, 0.690552246623)</td> <td>(607837.0, 0.427628659031)</td> <td>(137767.0, 1.81257710587)</td> <td>(1215.0, 0.329276547308)</td> <td>(74.0, 0.104676135645)</td> <td>(65.0, 0.237500778364)</td> <td>(nan, 0.670576589457)</td> <td>(705.0, 0.33429178227)</td> <td>(False, 0.375173052658)</td> <td>(379164.0, 0.341483782727)</td> <td>(269076.0, 0.0847481963923)</td> <td>(4527.0, 2.84349038551)</td> <td>(15149.0, 5.06258356331)</td> <td>(1057548.0, 0.165035387918)</td> <td>(987001.0, 0.362025768533)</td> </tr> <tr> <th>WHITE JR THOMAS E</th> <td>(450000.0, 0.521456472283)</td> <td>(nan, 0.67065886001)</td> <td>(nan, 0.690552246623)</td> <td>(1297049.0, 0.302304844785)</td> <td>(81353.0, 0.58906842664)</td> <td>(nan, 0.487467982744)</td> <td>(nan, 0.694769235346)</td> <td>(nan, 0.532233915598)</td> <td>(nan, 0.670576589457)</td> <td>(1085463.0, 0.446267416662)</td> <td>(False, 0.375173052658)</td> <td>(13847074.0, 5.64486498335)</td> <td>(317543.0, 0.188873972681)</td> <td>(nan, 0.794256482633)</td> <td>(nan, 0.648079292459)</td> <td>(1934359.0, 0.072623789327)</td> <td>(15144123.0, 1.80502999986)</td> </tr> </tbody> </table> </div> <p>Looking through these, I found one instance of a valid outlier - Mark A. Frevert (CEO of Enron), and removed him from the dataset.</p> <p>I should emphasize the benefits of doing all this in IPython Notebook. Being able to tweak parts of the code without reexecuting all of it and reloading all the data made iterating on ideas much faster, and iterating on ideas fast is essential for exploratory data analysis and development of machine learned models. It’s no accident that the Matlab IDE and RStudio, both tools commonly used in the sciences for data processing and analysis, have essentially the same structure. I did not understand the benefits of IPython Notebook when I was first made to use it for class assignments in College, but now it has finally dawned on me that it fills the same role as those IDEs and became popular because it is similaly well suited for working with data.</p> <h2 id="feature-visualization-engineering-and-selection">Feature Visualization, Engineering and Selection</h2> <p>The project also instructed me to choose a set of features, and to engineer some of my own. In order to get an initial idea of possible promising features and how I could use them to create new features, I computed the correlation of each feature to the Person of Interest classification:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">corr</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">corr</span><span class="p">()</span> <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">Correlations between features to POI:</span><span class="se">\n</span><span class="s"> &#39;</span> <span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">corr</span><span class="p">[</span><span class="s">&#39;poi&#39;</span><span class="p">]))</span></code></pre></div> <pre><code>Correlations between features to POI: bonus 0.306907 deferral_payments -0.075632 deferred_income -0.334810 exercised_stock_options 0.513724 expenses 0.064293 from_messages -0.076108 from_poi_to_this_person 0.183128 from_this_person_to_poi 0.111313 long_term_incentive 0.264894 other 0.174291 poi 1.000000 restricted_stock 0.232410 salary 0.323374 shared_receipt_with_poi 0.239932 to_messages 0.061531 total_payments 0.238375 total_stock_value 0.377033 Name: poi, dtype: float64 </code></pre> <p>The results indicated that ‘exercised_stock_options’, ‘total_stock_value’, and ‘bonus’ are the most promising features. Just for fun, I went ahead and plotted these features to see if I could visually verify their significance:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">numeric_df</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">column</span><span class="o">=</span><span class="s">&#39;exercised_stock_options&#39;</span><span class="p">,</span><span class="n">by</span><span class="o">=</span><span class="s">&#39;poi&#39;</span><span class="p">,</span><span class="n">bins</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;exercised_stock_options by POI&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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" /></p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">numeric_df</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">column</span><span class="o">=</span><span class="s">&#39;total_stock_value&#39;</span><span class="p">,</span><span class="n">by</span><span class="o">=</span><span class="s">&#39;poi&#39;</span><span class="p">,</span><span class="n">bins</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;total_stock_value by POI&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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" /></p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">numeric_df</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">column</span><span class="o">=</span><span class="s">&#39;bonus&#39;</span><span class="p">,</span><span class="n">by</span><span class="o">=</span><span class="s">&#39;poi&#39;</span><span class="p">,</span><span class="n">bins</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;bonus by POI&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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" /></p> <p>As well as one that is not strongly correlated:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">numeric_df</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">column</span><span class="o">=</span><span class="s">&#39;to_messages&#39;</span><span class="p">,</span><span class="n">by</span><span class="o">=</span><span class="s">&#39;poi&#39;</span><span class="p">,</span><span class="n">bins</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span><span class="n">sharex</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span><span class="n">sharey</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;to_messages by POI&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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" /></p> <p>The data and plots above indicated that the exercised_stock_options, total_stock_value, and restricted_stock, and to a lesser extent to payment related information (total_payments, salary, bonus, and expenses), are all correlated to Persons of Interest. Therefore, I created new features as sums and ratios of these ones. Working with Pandas made this incredibely easy due to vectorized operations, and though Numpy could similarly make this easy I think Pandas’ Dataframe construct makes it especially easy.</p> <p>It was also easy to fix any problems with the data before starting to train machine learning models. In order to use the data for evaluation and training, I replaced null values with the mean of each feature so as to be able to use the dataset with Scikit-learn. I also scaled all features to a range of 1-0, to better work with Support Vector Machines:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="c">#Get rid of label</span> <span class="k">del</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;poi&#39;</span><span class="p">]</span> <span class="n">poi</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s">&#39;poi&#39;</span><span class="p">]</span> <span class="c">#Create new features</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;stock_sum&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;exercised_stock_options&#39;</span><span class="p">]</span> <span class="o">+</span>\ <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;total_stock_value&#39;</span><span class="p">]</span> <span class="o">+</span>\ <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;restricted_stock&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;stock_ratio&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;exercised_stock_options&#39;</span><span class="p">]</span><span class="o">/</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;total_stock_value&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;money_total&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;salary&#39;</span><span class="p">]</span> <span class="o">+</span>\ <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;bonus&#39;</span><span class="p">]</span> <span class="o">-</span>\ <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;expenses&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;money_ratio&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;bonus&#39;</span><span class="p">]</span><span class="o">/</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;salary&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;email_ratio&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;from_messages&#39;</span><span class="p">]</span><span class="o">/</span><span class="p">(</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;to_messages&#39;</span><span class="p">]</span><span class="o">+</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;from_messages&#39;</span><span class="p">])</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;poi_email_ratio_from&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;from_poi_to_this_person&#39;</span><span class="p">]</span><span class="o">/</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;to_messages&#39;</span><span class="p">]</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;poi_email_ratio_to&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;from_this_person_to_poi&#39;</span><span class="p">]</span><span class="o">/</span><span class="n">numeric_df</span><span class="p">[</span><span class="s">&#39;from_messages&#39;</span><span class="p">]</span> <span class="c">#Feel in NA values with &#39;marker&#39; value outside range of real values</span> <span class="n">numeric_df</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span> <span class="c">#Scale to 1-0</span> <span class="n">numeric_df</span> <span class="o">=</span> <span class="p">(</span><span class="n">numeric_df</span><span class="o">-</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">min</span><span class="p">())</span><span class="o">/</span><span class="p">(</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">max</span><span class="p">()</span><span class="o">-</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">min</span><span class="p">())</span></code></pre></div> <p>Then, I scored features using Scikit-learn’s SelectKBest to get an ordering of them to test with multiple algorithms afterward. Pandas Dataframes can be used directly with Scikit-learn, which is another great benefit of it:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">from</span> <span class="nn">sklearn.feature_selection</span> <span class="kn">import</span> <span class="n">SelectKBest</span> <span class="n">selector</span> <span class="o">=</span> <span class="n">SelectKBest</span><span class="p">()</span> <span class="n">selector</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">numeric_df</span><span class="p">,</span><span class="n">poi</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">{</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span><span class="n">selector</span><span class="o">.</span><span class="n">scores_</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">numeric_df</span><span class="o">.</span><span class="n">columns</span><span class="p">))}</span> <span class="n">sorted_features</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">scores</span><span class="p">,</span><span class="n">key</span><span class="o">=</span><span class="n">scores</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="n">sorted_features</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">&#39;Feature </span><span class="si">%s</span><span class="s"> has value </span><span class="si">%f</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">feature</span><span class="p">,</span><span class="n">scores</span><span class="p">[</span><span class="n">feature</span><span class="p">]))</span></code></pre></div> <pre><code>Feature exercised_stock_options has value 30.528310 Feature total_stock_value has value 22.901164 Feature stock_sum has value 16.090150 Feature salary has value 14.428640 Feature poi_email_ratio_to has value 13.619580 Feature bonus has value 11.771121 Feature money_total has value 11.005135 Feature deferred_income has value 9.058555 Feature total_payments has value 8.334006 Feature restricted_stock has value 7.335986 Feature long_term_incentive has value 6.448285 Feature shared_receipt_with_poi has value 6.340473 Feature other has value 4.067974 Feature money_ratio has value 3.781568 Feature from_poi_to_this_person has value 3.626045 Feature email_ratio has value 2.176411 Feature from_this_person_to_poi has value 1.318493 Feature poi_email_ratio_from has value 1.279491 Feature from_messages has value 0.613342 Feature expenses has value 0.543049 Feature to_messages has value 0.400295 Feature deferral_payments has value 0.223368 Feature stock_ratio has value 0.013109 </code></pre> <p>It appeared that several of my features are among the most useful, as ‘poi_email_ratio_to’, ‘stock_sum’, and ‘money_total’ are all ranked highly. But, since the data is so small I had no need to get rid of any of the features and went ahead with testing several classifiers with several sets of features.</p> <h1 id="training-and-evaluating-models">Training and Evaluating Models</h1> <p>Proceding with the project, I selected three algorithms to test and compare: Naive Bayes, Decision Trees, and Support Vector Machines. Naive Bayes is a good baseline for any ML task, and the other two fit well into the task of binary classification with many features and can both be automatically tuned using sklearn classes. A word on SkLearn: it is simply a very well designed Machine Learning toolkit, with great compatibility with Numpy (and therefore also Pandas) and an elegant and smart API structure that makes trying out different models and evaluating features and just about anything one might want short of Deep Learning easy.</p> <p>I think the code that follows will attest to that. I tested those three algorithms with a variable number of features, from one to all of them ordered by the SelectKBest scoring. Because the data is so small, I could afford an extensive validation scheme and did multiple random splits of the data into training and testing to get an average that best indicated the strength of each algorithm. I also went ahead and evaluated precision and recall besides accuracy, since those were to be the metric of performance. And all it took to do all that is maybe 50 lines of code:</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">from</span> <span class="nn">sklearn.naive_bayes</span> <span class="kn">import</span> <span class="n">GaussianNB</span> <span class="kn">from</span> <span class="nn">sklearn.svm</span> <span class="kn">import</span> <span class="n">SVC</span> <span class="kn">from</span> <span class="nn">sklearn.grid_search</span> <span class="kn">import</span> <span class="n">RandomizedSearchCV</span><span class="p">,</span> <span class="n">GridSearchCV</span> <span class="kn">from</span> <span class="nn">sklearn.tree</span> <span class="kn">import</span> <span class="n">DecisionTreeClassifier</span> <span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="n">precision_score</span><span class="p">,</span> <span class="n">recall_score</span><span class="p">,</span> <span class="n">accuracy_score</span> <span class="kn">from</span> <span class="nn">sklearn.cross_validation</span> <span class="kn">import</span> <span class="n">StratifiedShuffleSplit</span> <span class="kn">import</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="nn">warnings</span> <span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s">&#39;ignore&#39;</span><span class="p">)</span> <span class="n">gnb_clf</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">GaussianNB</span><span class="p">(),{})</span> <span class="c">#No params to tune for for linear bayes, use for convenience</span> <span class="n">svc_clf</span> <span class="o">=</span> <span class="n">SVC</span><span class="p">()</span> <span class="n">svc_search_params</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;C&#39;</span><span class="p">:</span> <span class="n">scipy</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">expon</span><span class="p">(</span><span class="n">scale</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span> <span class="s">&#39;gamma&#39;</span><span class="p">:</span> <span class="n">scipy</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">expon</span><span class="p">(</span><span class="n">scale</span><span class="o">=.</span><span class="mi">1</span><span class="p">),</span> <span class="s">&#39;kernel&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s">&#39;linear&#39;</span><span class="p">,</span><span class="s">&#39;poly&#39;</span><span class="p">,</span><span class="s">&#39;rbf&#39;</span><span class="p">],</span> <span class="s">&#39;class_weight&#39;</span><span class="p">:[</span><span class="s">&#39;balanced&#39;</span><span class="p">,</span><span class="bp">None</span><span class="p">]}</span> <span class="n">svc_search</span> <span class="o">=</span> <span class="n">RandomizedSearchCV</span><span class="p">(</span><span class="n">svc_clf</span><span class="p">,</span> <span class="n">param_distributions</span><span class="o">=</span><span class="n">svc_search_params</span><span class="p">,</span> <span class="n">n_iter</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span> <span class="n">tree_clf</span> <span class="o">=</span> <span class="n">DecisionTreeClassifier</span><span class="p">()</span> <span class="n">tree_search_params</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;criterion&#39;</span><span class="p">:[</span><span class="s">&#39;gini&#39;</span><span class="p">,</span><span class="s">&#39;entropy&#39;</span><span class="p">],</span> <span class="s">&#39;max_leaf_nodes&#39;</span><span class="p">:[</span><span class="bp">None</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">1000</span><span class="p">],</span> <span class="s">&#39;min_samples_split&#39;</span><span class="p">:[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">],</span> <span class="s">&#39;max_features&#39;</span><span class="p">:[</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.75</span><span class="p">,</span><span class="mf">1.0</span><span class="p">]}</span> <span class="n">tree_search</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">tree_clf</span><span class="p">,</span> <span class="n">tree_search_params</span><span class="p">,</span> <span class="n">scoring</span><span class="o">=</span><span class="s">&#39;recall&#39;</span><span class="p">)</span> <span class="n">search_methods</span> <span class="o">=</span> <span class="p">[</span><span class="n">gnb_clf</span><span class="p">,</span><span class="n">svc_search</span><span class="p">,</span><span class="n">tree_search</span><span class="p">]</span> <span class="n">average_accuracies</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">]]</span> <span class="n">average_precision</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">]]</span> <span class="n">average_recall</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">]]</span> <span class="n">num_splits</span> <span class="o">=</span> <span class="mi">10</span> <span class="n">train_split</span> <span class="o">=</span> <span class="mf">0.9</span> <span class="n">indices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">StratifiedShuffleSplit</span><span class="p">(</span><span class="n">poi</span><span class="o">.</span><span class="n">tolist</span><span class="p">(),</span> <span class="n">num_splits</span><span class="p">,</span> <span class="n">test_size</span><span class="o">=</span><span class="mi">1</span><span class="o">-</span><span class="n">train_split</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span> <span class="n">best_features</span> <span class="o">=</span> <span class="bp">None</span> <span class="n">max_score</span> <span class="o">=</span> <span class="mi">0</span> <span class="n">best_classifier</span> <span class="o">=</span> <span class="bp">None</span> <span class="n">num_features</span> <span class="o">=</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">num_features</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">sorted_features</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span> <span class="n">features</span> <span class="o">=</span> <span class="n">sorted_features</span><span class="p">[:</span><span class="n">num_features</span><span class="p">]</span> <span class="n">feature_df</span> <span class="o">=</span> <span class="n">numeric_df</span><span class="p">[</span><span class="n">features</span><span class="p">]</span> <span class="k">for</span> <span class="n">classifier_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span> <span class="n">sum_values</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span> <span class="c">#Only do parameter search once, too wasteful to do a ton</span> <span class="n">search_methods</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">feature_df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">indices</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],:],</span> <span class="n">poi</span><span class="p">[</span><span class="n">indices</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span> <span class="n">classifier</span> <span class="o">=</span> <span class="n">search_methods</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">best_estimator_</span> <span class="k">for</span> <span class="n">split_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_splits</span><span class="p">):</span> <span class="n">train_indices</span><span class="p">,</span> <span class="n">test_indices</span> <span class="o">=</span> <span class="n">indices</span><span class="p">[</span><span class="n">split_idx</span><span class="p">]</span> <span class="n">train_data</span> <span class="o">=</span> <span class="p">(</span><span class="n">feature_df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">train_indices</span><span class="p">,:],</span><span class="n">poi</span><span class="p">[</span><span class="n">train_indices</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span> <span class="n">test_data</span> <span class="o">=</span> <span class="p">(</span><span class="n">feature_df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">test_indices</span><span class="p">,:],</span><span class="n">poi</span><span class="p">[</span><span class="n">test_indices</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span> <span class="n">classifier</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">train_data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">train_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">predicted</span> <span class="o">=</span> <span class="n">classifier</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">test_data</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">sum_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+=</span><span class="n">accuracy_score</span><span class="p">(</span><span class="n">predicted</span><span class="p">,</span><span class="n">test_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">sum_values</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+=</span><span class="n">precision_score</span><span class="p">(</span><span class="n">predicted</span><span class="p">,</span><span class="n">test_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">sum_values</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+=</span><span class="n">recall_score</span><span class="p">(</span><span class="n">predicted</span><span class="p">,</span><span class="n">test_data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">avg_acc</span><span class="p">,</span><span class="n">avg_prs</span><span class="p">,</span><span class="n">avg_recall</span> <span class="o">=</span> <span class="p">[</span><span class="n">val</span><span class="o">/</span><span class="n">num_splits</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">sum_values</span><span class="p">]</span> <span class="n">average_accuracies</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">avg_acc</span><span class="p">)</span> <span class="n">average_precision</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">avg_prs</span><span class="p">)</span> <span class="n">average_recall</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">avg_recall</span><span class="p">)</span> <span class="n">score</span> <span class="o">=</span> <span class="p">(</span><span class="n">avg_prs</span><span class="o">+</span><span class="n">avg_recall</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span> <span class="k">if</span> <span class="n">score</span><span class="o">&gt;</span><span class="n">max_score</span> <span class="ow">and</span> <span class="n">avg_prs</span><span class="o">&gt;</span><span class="mf">0.3</span> <span class="ow">and</span> <span class="n">avg_recall</span><span class="o">&gt;</span><span class="mf">0.3</span><span class="p">:</span> <span class="n">max_score</span> <span class="o">=</span> <span class="n">score</span> <span class="n">best_features</span> <span class="o">=</span> <span class="n">features</span> <span class="n">best_classifier</span> <span class="o">=</span> <span class="n">search_methods</span><span class="p">[</span><span class="n">classifier_idx</span><span class="p">]</span><span class="o">.</span><span class="n">best_estimator_</span> <span class="k">print</span><span class="p">(</span><span class="s">&#39;Best classifier found is </span><span class="si">%s</span><span class="s"> </span><span class="se">\n\</span> <span class="s"> with score (recall+precision)/2 of </span><span class="si">%f</span><span class="se">\n\</span> <span class="s"> and feature set </span><span class="si">%s</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">best_classifier</span><span class="p">),</span><span class="n">max_score</span><span class="p">,</span><span class="n">best_features</span><span class="p">))</span></code></pre></div> <pre><code>Best classifier found is DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None, max_features=0.25, max_leaf_nodes=25, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=None, splitter='best') with score (recall+precision)/2 of 0.370000 and feature set ['exercised_stock_options', 'total_stock_value', 'stock_sum', 'salary', 'poi_email_ratio_to', 'bonus'] </code></pre> <p>Then, I could go right back to Pandas to plot the results. Sure, I could do this with matplotlib just as well, but the flexibility and simplicity of the ‘plot’ function call on a DataFrame is more elegant in my opinion.</p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">results</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="o">.</span><span class="n">from_dict</span><span class="p">({</span><span class="s">&#39;Naive Bayes&#39;</span><span class="p">:</span> <span class="n">average_accuracies</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s">&#39;SVC&#39;</span><span class="p">:</span><span class="n">average_accuracies</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s">&#39;Decision Tree&#39;</span><span class="p">:</span><span class="n">average_accuracies</span><span class="p">[</span><span class="mi">2</span><span class="p">]})</span> <span class="n">results</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xlim</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">sorted_features</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">ylim</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;Classifier accuracy by # of features&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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EB23Z8+eWnLJJXXaaadpjTXWiF5TaAj4vvvuizJyzz33XLR4x1nLP/3pT1p00UWbrsbn9fGPPvpo/f73v5eFd9iwYTrrrLOi1xdbWhPA7bffXs8880x0fYcddphefPHF6Hp8PhdPUL7kkkuic3sj8S233DJqZ3pT8e+//16nnnqq/vrXv+q9996Lsp077rijTjzxxIhZSwUBLLYHeR0EIFCPBBBABDA0rhHAPIKWmT333FP//ve/9ZOf/CSSKMvUq6++GsndMssso9GjR+uEE06IMoVnnHFGdARvSLzyyitHK6f/+Mc/Rq+zBN5222267LLL1KNHj0ja0nMATz755Ej2LEAeUnXdsWPHavjw4dp0000LCqDlb5NNNtEGG2ygfffdV1999VUkeVOmTJGHi/v37x/Vs+S99tprmnvuuXXUUUdFf5955pnyEO+7776ruebyWqG2S2sC6DmT9957r/r27RvJ8GKLLaZ+/fppueWW04EHHqiLL75YBx98sNZdd135aTJux+KLLx6xTYql8MEHH9Qf/vAHrbLKKnrppZei69l888113XXXIYBtdxGvgAAEGpAAAogAhoZ9yQTQ08OmTAltTuv1e/WSUgm3Dp3MAuY5gIWGgH1AC9ZGG22km266KVoQYgnZdddd9eijj2rNNddsOucpp5wSSeAHH3ygeeaZR8cee6z8s2effTaSv0IlXwA322yzaD6d5yO2VPIzgJYky94rr7zSlH200FmsLF3OsCUC+OSTT0avS4a6Pf9wwIAB0TVZ3oopbQmg500+8MADzbKKr7/+epTJdFsOOeSQptM8/PDDWm+99aIMq7cauv/++6O/nVl15jUpV155pfbYYw/973//i7KWhQoZwGJ6j9dAAAL1SgABRABDY7tkAjh5stTHuxGVsUyaJIU+krgtAfQeSxtvvHG0IMTzAX/961/LImVhTJf//ve/GjFihG6//fYoW+chWw8HP/HEEy0SyBdAC6QzgJakn//851EGMX/YMy2A33zzjXr16hVlGH2sdHHG7+uvv44yfIkAWvicUUsXLyaxKCbDtG11V1sC6OFuC2m6XHDBBTrggAMiOfYweFJmzpwZDf/6ek866aTob2dHPXTepUuXptd5sczQoUN16aWXRkPtCGBbvcTvIQCBRiOAACKAoTFfMgGslwyghWTvvfduyvhtuOGGUYarULHwOVu1yy67RBk4r5a1OLZU8gXQw8uek+cFFs7UeZjYWUcPK3so1SUtgJ4nOGTIkGhu3T777NPsNM7oWf7eeuutJgH08Z25TJf2bivTlgB6yDpfjj1UbsFriZmH2C+66CLtvPPO0dy/ll7njOrhh3sB/I8LGcDQtz71IQCBWiaAACKAofFbMgEMbUhW9dvKAHrbEw9NfvbZZ9EiEIvVf/7zn2iYMtkGJd1W74lnWetIBjB9HGfB/vWvfzVlA70wJF8A25sBzEIAvQjEQ77p4hXUnvvnuX7eZzG/eKGHRfaggw7SVVddJQ8NF2LrxTbJnMb8YyCAWb1jOA8EIFCNBBBABDA0LhHAFMFbb71V2267bTR8efbZ3m9b0aINZ6y8wtVZvpaKV796UYeHhpdddtmCLytmI2jPhbNQ+Xz5Auj/97Czh1xffvnlpjmAXj2bzAE8/fTTo3oeEq6UADqbaQZtzTX0cLuHvh9//HGtvvrq7YplBLBduHgxBCBQZwQQQAQwNKQbUgD9ZA1n9AYPHhw9T9EbQXsum3/mIV9n4pJnI3ubEq+49TCn56x5ta7rvPnmm7rjjjuiep6351XAXqDhv72i1QLkOXieI+itUAqtAna20cdbaaWVopW0lkfX9fCuV+wWEkBnJy1NySpgy6Dl0x8G3hYmvQq4UgLodpuV5/Dtv//+0T6CXuxiUfUiG2cHzcrF8yydKfTPPAfSxU9Kufvuu6Nh4pY2wEYAQ9/61IcABGqZAAKIAIbGb0MKoFcBJ8XDvF6oYAnz/nNbbbXVj5ha+LxY48Ybb4z28LPMec89L/7wgoykeBjX/28x9BCyZcyrXi2AlsT8DOA555wTSafl0sO7CyywgH71q19F26UkiyK8gterkNOPgrMEWvqSfQC9zYpX3C6yyCJNbXEG0Isu0luu+JeFjtdaEPn1FjhnQvOLh8ctrd5uplC5+uqrI4lzttLX4+tbf/31o+vzMLCLh37PPfdc+bXm4P7wvEOvxDbLOeaYo+CxEcDQtz71IQCBWiaAACKAofHbcAIYCoz61UEAAayOfqAVEIBAZQgggAhgaOQhgKEEqV8RAghgRbBzUghAoEoIIIAIYGgoIoChBKlfEQIIYEWwc1IIQKBKCCCACGBoKCKAoQSpXxECCGBFsHNSCECgSggggAhgaCgigKEEqV8RAghgRbBzUghAoEoIIIAIYGgoIoChBKlfEQIIYEWwc1IIQKBKCCCACGBoKCKAoQSpXxECCGBFsHNSCECgSggggAhgaCgigKEEqV8RAghgRbBzUghAoEoIIIAIYGgoIoChBKlfEQIIYEWwc1IIQKBKCCCACGBoKCKAoQSpXxECCGBFsHNSCECgSggggAhgaCgigKEEqV8RAghgRbBzUghAoEoIIIAIYGgoNpwA+pm2u+22m/r16xc917dXr15NDN97773oObSXX3650s8LLgayj+n6Dz30UDEvL8lrfM70M3q7deumIUOGaMstt9TRRx/d7NpKcsIqOggCWEWdQVMgAIHMCSCACGBo0DWsAHbq1EnHHnusjjnmmJIIoGXy22+/1RJLLBHaJ0XXtwDec889uuOOOzRr1qzo/GPHjo2uaf3119c///nPoo9Vay9EAGutx2gvBCBQSgIIIAIYGk8NK4AbbrihxowZE2UB55prrohjSAYwtCM6Ut8C+OCDD+r9999vVt3Zv9NOO03+gJhjjjk6cuiqr4MAVn0X0UAIQKCMBBBABDA0vBpSAD28+8gjj8gSeMghh+ikk05qUQBffvllnXzyyXryySc1ceJEDRo0SBtttFH0s969jS9XLGPvvvuuHn74YU2YMCEaij3nnHP0u9/9rlkf/elPf4oydB999JH69u0b/e4f//iHzjjjDL3wwgvyMO4GG2ygs846KzpGa6UlAfQ5jjzySH355ZdNw8C33367/vKXv+j555/XlClTtPDCC2v33XfX/vvvL2dDXTbffHONHz9ezzzzTLPT+roWWWQRXXbZZU1D4/7ZH/7wB91///2RaC655JJRRvUXv/hFU9033nhDv//97yN2fs18882n1VZbTTfccIM6d+4cFLsIYBA+KkMAAjVOAAFEAENDuGEF0HJy/vnn68orr9Tbb7+tueeeu2AG8N57740EZpVVVomEbdy4cZGczT777Hr88cebCWB6DqAl0QI2evToZn203HLLafHFF9ctt9wS/fziiy/Wvvvuq9/+9rfaeuutIzmzSHk417LWs2fPFvs4EUBnMV2SIeCddtpJyy+/vCx9SbGMWvQ8RD3nnHNGsmnxtQQmAuzh5E033VRPP/20hg8f3lT3qKOO0kUXXaQPP/wwyih+8MEHWmmllTT//PNHojnPPPPopptu0lVXXaXbbrstOobLYostFnE94ogjor8tl3fffXfEfLbZZguKXQQwCB+VIQCBGieAACKAoSFcMgH0HLQp06eEtqfV+r269WrKVnX0RF404QygBdBy5UzYPvvsE2XgihkCnjFjRiQyCy64oJ577jlZ6FzyF4Fcf/312nnnnfXqq69GIuTi11ucPDdviy220Ndffx1lFLfZZpsou5YUt8OS6EzeAQcc0KoApheBJC9cY401onmBSYax0AF8Hc7E+fifffZZ9BL3odu67rrr6tJLL41+9v3330eZyG233VbnnXde9DPL6p133qnXXnutafjcP3dG9ZNPPtGzzz4bHXPeeeeNJDQRwo72WaF6CGApaXIsCECg1ggggAhgaMyWTAAnfztZfU7rE9qeVutPOmKSenf/Ydi1IydLC6Dl7/DDD9eFF16ot956S9OmTfvRKmAL0JlnnqnrrrsuEsRvvvkmOq2zaRYoi1EhAfTr+vfvr4MOOkgnnHBC9BoPN/v8HiJ2BuyBBx7QyJEjo79/+tOfNl2ORcwZOMtYkiksdK2WTmconVVzHbf19ddfj87neY2PPfaYunfvHlX9+OOPdfzxx0eLRiywfm1yHR6O9vCsi0X4xBNPjLJ9FmSff7vttosyhksvvXT0msGDB0fD1F4tnRSf/9xzz414Tpo0Kaq76KKLRpnSgw8+WGuvvXYk26UqCGCpSHIcCECgFgkggAhgaNyWTABrMQNoIfn8888j6dt1110jUcnfBubQQw/VJZdcEsmTs3feNmbmzJkaMWKErr766ijLV0gA/bNddtklGia2XLpOskXLBRdcENX529/+pl//+tcF+9CCaSn0nMKWSktzAL0SeNVVV42Gbffaa6+ouv/fYubhXIuZh3K9CMZzFD2EvMACC0Svc+bOguch47333jsSPYuxZTIpnqfoDKL7PL94bp+vd+jQodGcSA9n33XXXRFn8z7ssMOa2hQSvAhgCD3qQgACtU4AAUQAQ2O4ZAIY2pCs6udnAH1eL8pwlu++++6LpCu9D6ClzRL1xz/+samJnjNoiWpLAJMM36OPPhoN92688cbRfELLo8uoUaOin1177bVaaqmlfoTAspkMHxfi05IATp06VT169IiGtpPspo/jdvzkJz9pOtQVV1yhPffcs5kA+peW2hdffFG33nprdH63b8cdd2yqN2DAgIiT5/YVksBll11WXbt2bdZk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" /></p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">results</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="o">.</span><span class="n">from_dict</span><span class="p">({</span><span class="s">&#39;Naive Bayes&#39;</span><span class="p">:</span> <span class="n">average_precision</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s">&#39;SVC&#39;</span><span class="p">:</span><span class="n">average_precision</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s">&#39;Decision Tree&#39;</span><span class="p">:</span><span class="n">average_precision</span><span class="p">[</span><span class="mi">2</span><span class="p">]})</span> <span class="n">results</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xlim</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">sorted_features</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">ylim</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;Classifier precision by # of features&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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QCikAkkgFJrkH0gCiUUApscgYE1c70jxxdA9x+HWOA5+H9ObSQYUdoEEjPT6Utwyo5viMZAEwpIvDMNTpMciADkOimeuLeX6SXr9eE/JmCzdbJvjpU0xWYb3nqzpweZSCK6h7ezUJqSX8X4nCSo9Ach1hxSJtA/aHZNCuOSAQpIim305ZobdaTu8NpdPuC1pcLsn+r0IZGgCEoAZ+vZqcnEmQNHGhwsFDz17FHhMMuDDm6IkVEjxwUTRx2PpjeFDlQ8/ChCWJaE4oVeDIU0KJno6RjmZrRQBTDphKJAijcKA52DjsTxvwMvCTEkKxsC6p3CCjg9yCk56m+hN5LgpWtPKzgyHjgKV6xgpQik4+CCmN40FqNkoUMN5APk7ruFiWRuGMymClztr5OglZeM6Noo58mBJHHruKDhC50sPKUXDec4aNSYMcO0g5xFuJxB6nCiQKFpYBoYha16bLVYPYHoMAtxYroTr0iiAGMJ0a1z3R8HHe0wvL4UuXzjcGr1svAdcLxhcBoaJJ2yxCED2o00yw5beSHrSmInMl5WANzU922Z/Jo1wjStfaOgh5jjZeK8YYqZd02vJl5HgnVWCbTt47hSPHA9D5hR5PzhikCFk2hZfLviSxoQZ1lDkPec6UTUREIE0CEgAyjREQAQiJZDoIsiRjsMPx9FLSO8oBXeitqXzAweNUQREIEUJSACm6I3RsEQgBQlIALrfFO6iQq8WM1cZwmfig5oIiIAIpBwBCcCUuyUakAikLAEJQPdbw7AyM34Zvg2sf3PvpSNEQAREwGMCEoAeA9flREAEREAEREAERCDZBCQAk30HdH0REAEREAEREAER8JiABKDHwHU5ERABERABERABEUg2AQnAZN8BXV8EREAEREAEREAEPCYgAegxcF1OBERABERABERABJJNQAIw2XdA1xcBERABERABERABjwlIAHoMXJcTAREQAREQAREQgWQTkABM9h3Q9UVABERABERABETAYwISgB4D1+VEQAREQAREQAREINkEJACTfQd0fREQAREQAREQARHwmIAEoMfAdTkREAEREAEREAERSDYBCcBk3wFdXwREQAREQAREQAQ8JiAB6DFwXU4EREAEREAEREAEkk1AAjDZd0DXFwEREAEREAEREAGPCUgAegxclxMBERABERABERCBZBOQAEz2HdD1RUAEREAEREAERMBjAhKAHgPX5URABERABERABEQg2QQkAJN9B3R9ERABERABERABEfCYQGYQgE0AdAZwKYB8AHIAOJoO57wAXgfQFMAhAO8D6O7Sx+PbpsuJgAiIgAiIgAiIQOwEMoMAbAugpCPg+kYgAN91xOLtAE4FMArAMAC9Y8esniIgAiIgAiIgAiKQOgQygwAM0L4GwDwXAVgQwA4A9Zxj2bcDgBcBFAFwLHVunUYiAiIgAiIgAiIgArERkAA8kVsdALMA5AZwxPkVvYcbAVwE4MfYMKuXCIiACIiACIiACKQOAQnAE+/FLQD+D0DhoB/nAbAPwFUAFqfOrdNIREAEREAEREAERCA2AhKAZgKQ/M4CsDc2/OolAiIgAiIgAiKQJAJMDP0tsy7vkgA80erSCgH/DKBMmBDw2QB+TZLh6rIiIAIiIAIiIAJmBIoD2GJ2Cn/2lgA88b4xCWQ7gBsiTALJD2D35s2bkT8//6nmFYFevXqhb18mdatlNAK6txntjtrz0X3VfU0lAnv27EGJEiU4pAIA9qTS2LwaS2YQgBR1TOS4DMBQp8QLEzzWOzd+LoB2AJY50N8BUBXAHU4ZGNYBZBmYZ8LcFEsA7t69WwLQK4t1rtOtWzf079/f46vqcl4Q0L31grL319B99Z65F1f0632lACxQgNpPAtALO0nWNVjPb2SYGH8tAJsA/ASA/17oDDC4EPS/AFgX8JE0CkFLACbprvr1SydJuHx1Wd1bX92uiAer+xoxKl8d6Nf7KgEIZAYPYCI/TBKAiaSbzrlnz56NevVYrlEtoxHQvc1od9Sej+6r7msqEZAAlAA0tUcJQFOC6i8CIiACIiACHhOQAJQANDU5CUBTguovAiIgAiIgAh4TkACUADQ1OQlAU4LqLwIi4GsCBw4cwKFDh3w9Bw0+YxLImTMncufmxl4nNwlACUBTq5cANCWo/iIgAr4lQPFXunRpbNu2zbdz0MAzLoGiRYti48aNYUWgBKAEoKnlSwCaElR/ERAB3xIIPERVC9W3tzDDDjxQ5y+tMm0SgBKApsYvAWhKUP1FQAR8SyDwEFUtVN/ewgw7cDfblACUADQ1fglAU4LqLwIi4FsCbg9Z305MA/c9ATfblACUADQ1cglAU4LqLwIi4FsCbg9Z305MA/c9ATfblACUADQ1cglAU4LqLwIi4FsCbg9Z305MA/c9ATfblACUADQ1cglAU4LqLwIi4FsCbg9ZP07s3XffRYcOHY4P/ZRTTkHhwoVRuXJl3HLLLWjRokXCpvXMM8+A1//pJ+5QGlljFjbH+9RTT0XWwfCorFmzup7hnHPOiWoOrieM4QA325QAlACMwaxO6CIBaEpQ/UVABHxLwO0h68eJUYDdcccdmDBhAs4++2wcPHgQv/zyC2bMmIFx48ahVq1amD59OnLlyhX36f3222/4/fffUbFixYjPvWrVKkugnnXWWRH3MTlw6dKlJ3Rv3LgxKlWqBIrXY8eOWb8jm2jmYDKetPq62aYEoASgqd1JAJoSVH8REAHfEnB7yPpxYgEB+OOPP+Lcc889YQqTJ09G8+bNcf/992PQoEF+nF7cx0wP5FVXXYX33nsvonOzdmRaxZkjOkGEB7nZpgSgBGCEppTmYRKApgTVXwREwLcE3B6yfpxYegKQ82nWrBk+/vhj7Ny587iQ2b9/P3r37o3x48djy5YtlufwrrvuwmOPPYYsWbIcx/DHH39YoVp6EHfs2IEzzzwT1157Ld5++23kyJHDOgevz+LFbEeOHLF+Nnr0aOu8p556KsqWLYt+/fqhevXq1jHhQsCffPKJ5ZFbuXIluBsGvZYvvfQSzj///ONj4XV5/ieffBKPPvooKHjLlCmDV1991To+0paeAGzdujWWL19uze+RRx7BN998Y82H12MbPHgwhgwZYl07f/78aNKkiTVO/jvQDh8+jBdeeAEffPABNm3aZHk727Zti+eee85illZzs00JQAnASG08reMkAE0Jqr8IiIBvCbg9ZP04MTcBSDHTsWNHLFiwADVr1rREFMXUDz/8YIm7cuXKYcmSJXj22WctT+HLL79sYWCtxEsvvRRk9sQTT1jHUQROnToVw4YNQ968eS3RFrwGsE+fPpbYowBiSJV9ly1bhqpVq6JBgwZhBSDFX/369XH99dfjvvvuw99//22JvL1794Lh4iJFilj9KPLWrl2LM844A7169bL+fuWVV8AQ788//4zTTjstotuXngDkmslZs2ahYMGClhi+4IILcPrpp6NChQp48MEH8dZbb6Fbt26oXbs2WEyc47jwwgsttoFGUTh37lw8/vjjuOyyy/Dtt99a82nUqBHef/99CcCI7lL4g/57NTE4SSbuKgGYiW++pi4CmZ1AZhSAFFg33HADxo4dayWEUIS0b98eCxcuRI0aNY6bRN++fS0R+Ouvv6JQoUJ4+umnwZ+tWLHCEn/hWqgAbNiwobWejusR02qhHkCKJIq977///rj3kYKOwoqiix62gAD84osvrOMCoW6uPyxWrJg1J4q3SJqbAOS6yTlz5pzgVVy3bp3lyeRYHn744eOXmT9/PurUqWN5WOvVq4dPP/3U+pueVXpeA23EiBG4++678d1331ley3DNzTblAZQHMBL7Tu8YCUBTguovAiLgWwJuD9ngiTE/YO/exE41Xz4gKOIa08XcPICzZ8/GjTfeaCWEcD3grbfeCgophjGD2//+9z9cfvnlmDZtmuWtY8iW4eDFixenOa5QAUgBSQ8gRdJNN91keRBDw57BAvCff/5Bvnz5LA8jzxXc6PHbt2+f5eELCEAKPnrUghuTSSgUA2FaN4huApDhbgrS4Pb666+ja9euljhmGDzQjh49aoV/Od/nn3/e+pveUYbOs2XLdvw4JsuUKlUKQ4cOtULtEoBudyn87+UBjI1boJcEoBk/9RYBEfAxgWgE4J49QIECiZ3s7t1A0PKxmC7mJgApSO65557jHr+6detaHq5wjYKP3qrbb7/d8sAxW5bCMa0WKgAZXuaaPCZY0FPHMDG9jgwrM5TKFiwAuU6wRIkS1tq6e++994TL0KNH8bdhw4bjApDnp+cyuEVbVsZNADJkHSqOGSqnwEuLGUPsb775Jm677TZr7V9ax9Gj2qNHDwnAmCxdHsAYsR3vJgFoSlD9RUAEfEsgGgGYUTyALHvC0OSff/5pJYFQWH399ddWmDJQBiX4hrImHsVaLB7A4PPQCzZlypTj3kAmhoQKwGg9gF4IQCaBMOQb3JhBzbV/XOvHOouhjYkeFLIPPfQQRo4cCYaGw7Flsk1gTWPoOdxsUyFgCUDTL14JQFOC6i8CIuBbAm4PWT9OLD0P4MSJE9GyZUsrfNm/f39rejyeHitmuNLLl1Zj9iuTOhgaLl++fNjDIikEzbVwFFS8XqgA5P8z7MyQ65o1a46vAWT2bGAN4Isvvmj1Y0g4WQKQ3kwycFtryHA7Q9+LFi3ClVdeGZU5udmmBKAEYFQGFeZgCUBTguovAiLgWwJuD1k/TiywEwg9esWLF8ehQ4esQtBcy8afMeRLTxzLq7CxTAkzbhnm5Jo1Zuuyz/r16/HRRx9Z/bhuj1nATNDg38xopQDiGjyuEWQplHBZwPQ28nxVqlSxMmkpHtmX4V1m7IYTgPROUjQFsoApBik+ea9YFiY4CzhZApDjJiuu4evSpYtVR5DJLhSqTLKhd5Cs2LjOkp5C/oxrINm4U8rMmTOtMHFaBbDdbFMCUALQ9PtJAtCUoPqLgAj4loDbQ9aPEwt4AANjZ5iXiQoUYaw/17Rp05OmRcHHZI0xY8ZYNfwo5lhzj8kfTMgINIZx+f8UhgwhU4wx65UCkCIx1AM4YMAAS3RSXDK8W7JkSbRp08YqlxJIimAGL7OQg7eCowik6AvUAWSZFWbcnnfeecfHQg8gky6CS67wl+HOl9595PEUcOQW2hgep2hluZlw7Z133rFEHL2VnA/nd91111nzYxiYjaHfgQMHgseSA+8H1x0yE5ss8+TJE/bcbrYpASgBaPr9JAFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHr24lp4L4n4GabEoASgKZGLgFoSlD9RUAEfEvA7SHrx4lxT9sOHTrg9NNPt/b1zZcv3/FpbNq0ydqHdvjw4bjjjjuimh7Pyf7z5s2Lqp/Jwbxm8B69OXPmRIkSJdCkSRM8+eSTJ8zN5Dqp2NfNNiUAJQBN7VYC0JSg+ouACPiWgNtD1o8TCwjALFmy4Omnn8ZTTz0VFwFIMXnw4EFcdNFFnmGhAPz444/x0Ucf4dixY9b1ly1bZs3puuuuw+TJkz0bi9cXcrNNCUAJQFOblAA0Jaj+IiACviXg9pD148QCArBu3br46quvLC/gaaedZk3FxAOYDBYUgHPnzsUvv/xywuXp/evXrx94//LkyZOMoSX8mm62KQEoAWhqhBKApgTVXwREwLcE3B6yfpwYBSDDu5999hkoAh9++GE8//zzaQrANWvWoE+fPvjiiy+wY8cOnH322bjhhhusn+XPz0eE3SjGfv75Z8yfPx/btm2zQrEDBgzA/ffffwKml156yfLQbd26FQULFrR+N2nSJLz88stYvXo1GMa9/vrr8eqrr1rnSK+lJQB5jcceewy7du06HgaeNm0a3njjDaxatQp79+7Fueeei7vuugtdunQBvaFsjRo1wpYtW7B8+fITLst5nXfeeRg2bNjx0Dh/9vjjj+PTTz+1hGbZsmUtj2rjxo2P9/3xxx/x6KOPWux4zJlnnokrrrgCo0ePRtasWY3Mx802JQAlAI0MDIAEoClB9RcBEfAtAbeHrB8nFhCAFCevvfYaRowYgZ9++glnnHFGWA/grFmzLAFz2WWXWYJt8+bNljjLnTs3Fi1adIIADF4DSJFIAbZkyZITMFWoUAEXXnghJkyYYP38rbfewn333Yc777wTzZo1s8QZhRTDuRRrp556apqYAwKQXky2QAi4Xbt2qFixIij6Ao1ilEKPIepTTjnFEpsUvhSBAQHMcHKDBg2wdOlSVK1a9XjfXr164c0338Rvv/1meRR//fVXVKlSBUWLFrWEZqFChTB27FiMHDkSU6dOtc7BdsEFF1hce/bsaf1NcTlz5kyLefbs2Y3Mx802JQAlAI0MTALQFJ/6i4AI+JmA20PWj3MLFoAUV/SE3XvvvZYHLpIQ8JEjRywhc84552DlypWgoGMLTQIZNWoUbrvtNvzwww+WEGLj8RROXJt38803Y9++fZZHsUWLFpZ3LdA4DopEevK6du2argAMTgIJHFi9enVrXWDAwxjuBJwHPXE8/59//mkdwnWEHGvt2rUxdOhQ62eHDx+2PJEtW7bEoEGDrJ9RrE6fPh1r1649Hj7nz+lR/f3337FixQrrnIULF7ZEaEAQxtNe3GxTAlAC0NTe5AE0Jaj+IiACviXg9pANnhjFw95DexM613w58x0PV8Z6oWABSPHXo0cPDB48GBs2bMCBAwdOygKmAHrllVfw/vvvWwLxn3/+sS5NbxoFFIVROAHI44oUKYKHHnoIzz77rHUMw828PkPE9IDNmTMH9erVs/6++uqrj0+JLOmBoxgLeArDzZeikx5KetXYh2Ndt26ddT2ua/z888+RK1cuq+v27dvxzDPPWEkjFLA8NjAPhqMZnmWjEH7uuecsbx8FMq/fqlUry2N4ySWXWMcUL17cClMzWzrQeP2BAwdaPHfv3m31Pf/88y1Pabdu3XDttddaYjtezc02JQAlAE1tTQLQlKD6i4AI+JaA20M2eJsMTT4AACAASURBVGJ7Du5BgX4FEjrX3T13I3+u/9bdxXKxUAG4c+dOS/S1b9/eEiqhZWC6d++OIUOGWOKJ3juWjTl69Cguv/xyvPPOO5aXL5wA5M9uv/12K0xMcck+gRItr7/+utXnww8/xK233hp2GhSYFIVcU5hWS2sNIDOBq1WrZoVtO3XqZHXn/1OYMZxLYcZQLpNguEaRIeSSJUtax9FzR4HHkPE999xjCT0KY4rJQOM6RXoQKfpCG9f2cb6lSpWy1kQynD1jxgyQMwXgI488cnxMsdy/QB8325QAlAA0sS/2lQA0Jaj+IiACviXg9pANnphfPYCcA5My6OX75JNPLNEVXAeQoo0i6oknnjg+Xa4ZpIhyE4ABD9/ChQutcO+NN95orSekeGSbPXu29bP33nsPF1988Ul2QrEZCB+HM6K0BOD+/fuRN29eK7Qd8G7yPBxHzZo1j5/q7bffRseOHU8QgPwlRe0333yDiRMnWtfn+Nq2bXu8X7FixSxOXNsXTgSWL18eOXLkOGHIPB89hFwnSC8kPZ8mzc02JQAlAE3sSwLQlJ76i4AI+JqA20PWj5ML9QByDvSM0fNHLxmzWoOzXZm8wLAms1kDjcKHoVKKmfQ8gBRHFJD169cHRRkTQhiiDTQmfNDb9uCDD1oexmhbWgKQ1+E6QHrf+Ifii0kh/DnnGGg8JlAKJ+AB5O8C/WvVqmWFfhkyptcv0HhdHsM1jYEQcyRj53wLFChgsWM43KS52aYEoASgiX1JAJrSU38REAFfE3B7yPpxcuEEIOfBTFh6Ahl6DRaADNHSU/fiiy9aYVKut2NIc/369a4CkOelcKRH8d9//7WEZLAnkb9nsgXDsEysoDeQAomCi2VqGH5lgkhaLVAImpm3bFzXx8SMvn37WqFcJmMwWYXXLlOmjHXugNBkWJuZ0AzXBoeAA9fiGkQKPIbFKdiCGzOh6cWkeOXYeY2//vrLEpr8Hc/NfzPBhOsH6S1lyJiCmSVvKB4rV65sZD5utikBKAFoZGAKAZviU38REAE/E3B7yPpxbmkJwL///ttao8a1ahRlga3gKGwoZBi2pJCqU6eOFcqk6HHzAJIPhVClSpUsYUnBRU9jaGMiB0UW6+9RxDEz+KqrrrLEI7OB0xOADM8GWrZs2ay+NWrUsMRscF/WM6RY4/pAhpZvueUWS2DSOxlOAL7wwguWWA3OYg4eB5NEevfubXFh5i89peXKlbOyoVu3bm39jOP/8ssvrbIxTAZhaJi1A7lLiWlzs00JQAlAUxvTGkBTguovAiLgWwJuD1nfTkwDdyVw5ZVXWvUCudNIKjY325QAlAA0tVsJQFOC6i8CIuBbAm4PWd9OTAMPS4AeThafZjIMt5NjuNs0WSNRqN1sUwJQAtDU9iQATQmqvwiIgG8JuD1kfTsxDTwsgUAh7NNPP93aIo4JJKna3GxTAlAC0NR2JQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWR9OzEN3PcE3GxTAlAC0NTIJQBNCaq/CIiAbwm4PWT9OrEpU6ZgwIAB1j63e/fuxZlnnonKlSvj3nvvRd26dfHQQw9h8ODB4H63hQoVCjvNUqVK4bzzzsO8efOO/577/nJP388++wzbt2+3tlLjPsDcd5d7C2fPnt2vyFJu3G62KQEoAWhqtBKApgTVXwREwLcE3B6yfpzYoEGDLIF311134eabb0bevHmxYcMGzJgxAxdeeCH69euHlStXokqVKhg4cCAeeOCBk6Y5f/581KlTB++88w5uu+026/djxozB7bffbgnJTp064YILLgD5USAOHz4cr732Gtq1a+dHZCk5ZjfblACUADQ1XAlAU4LqLwIi4FsCbg9ZP06sZMmSqFatGiZMmJDu8CtWrIgcOXJg2bJlJx3XoUMHq/+2bdssAblu3TrL01e/fn2MGzcOWbJkOaHP1q1bLW9i1apV/YgsJcfsZpsSgBKApoYrAWhKUP1FQAR8S8DtIevHieXLl8/y2jHEm17r378/HnnkEXz77bcoW7bs8UP379+PokWLokmTJpYHkI2h45EjR2Lz5s0oXLiwH7H4bsxutikBKAFoatQSgKYE1V8ERMC3BNwesn6cGEO3S5YswXPPPWeJuNKlS4edBtfwFS9eHN27d8cLL7xw/JgPP/zQCuXOmTMHtWrVsn5epkwZS/gtWrTIj0h8OWY325QAlAA0NWwJQFOC6i8CIuBbAm4PWT9O7Mcff0SLFi3AhI1jx45ZSR5M/GCSRu3atU+YUoMGDbB69Wr88ssvx39+ww034Pvvv8emTZuO/4zJHhSTo0aN8iMSX47ZzTYlACUATQ1bAtCUoPqLgAj4loDbQ/aEiR07Buzdm9i55ssHhKyvi+WCFH6LFy/GJ598YnkD6bk7cOCA5enr0aPH8VOOHz8erVu3to6j55Br/kqUKIGePXtaHsRAkwCM5S6Y9XGzTQlACUAzCwMkAE0Jqr8IiIBvCbg9ZE+Y2J49QIECiZ3r7t1Afn4tx7dR2NGzx7IwDP0WcOZx8OBBFCtWDA0bNsS7776LV155xRKIPI5ZvoHGEDBLyXz++efxHZjOliYBN9uUAJQANP34SACaElR/ERAB3xJwe8j61QMY7oawTMuDDz6Ir776CpdeeunxQ5jgwdAuRWL16tWt2n5ffPHFCae47777MGLECCWBeGjpbrYpASgBaGqOEoCmBNVfBETAtwTcHrJ+nBg9fEWKFDlp6BRxQ4YMsdb2Mfkj0BgipvDr1q0bmBn81ltvoWPHjif0ZxkYlo2hp5D1ALNmzXrC71kGZsuWLScISz+yS6Uxu9mmBKAEoKm9SgCaElR/ERAB3xJwe8j6cWLM1q1Xr54V8uVuHpwji0BT/LVq1QrM8g1tF110EZg8kitXLlDMBULEwcdR+LVv3/54IWjuEvL333+DRaOHDh2qQtBxNhY325QAzDwCsCeALgBOAzAHAF/Ptqdhb+UAvAqgGoAjABYC6Apgc5jjJQDj/KHV6URABPxDwO0h65+Z/DdSirGZM2di1apV1nq/bNmyWTuAtGnTBl27dg27XVvfvn3x5JNPWtnDFHppNdYM5FZwFH07duw4vhUcy8Zwl5BQz6Af+aXKmN1sUwIwcwjADgAGAeAeOxudf7MM+7VpGOrPALiA42kAuQEMAJATwNUSgKny0dY4REAEUoGA20M2FcaoMWROAm62KQGYOQTgcgAzADzlfAxY1XMDgEoAVod8NLir946Q39UHMA5AXgnAzPlFolmLgAiEJ+D2kBU3EUgWATfblADM+AKQnrt/AFwPYH6QIf4EgKXbh4UxTgrGeQAedzx/QwCcAqCJBGCyPsq6rgiIQCoScHvIpuKYNabMQcDNNiUAM74ALAZgC4DyANYEmf1XAKYB6BPmo8D0rk8BsIgTQ8VLAdQFEK6CqdYAZo7vEs1SBEQgDAG3h6ygiUCyCLjZpgSgBGCoAMwOgOJwHYCXAeQC8AyAQwAayAOYrI+yrisCIpCKBNwesqk4Zo0pcxBws00JwIwvAKMNAd8AYCIAlqs/7HxM0vIi8teWB7Bz587ImZOXglU+gH/UREAERCCjE3B7yGb0+Wt+qUsgnG3Onj0b/MN26NAhDB48mP/k835P6s4kcSNjiDOjt2iSQG5yEj4o7I46YIoC+A1ARQDfhMBSCDijW4/mJwIikCYBCUAZR6oScLNNeQAzvgeQttneKf1yu1MGpj8AlmGvBeAsAHOdEjHLABQEsBbAdAAvOiFghokvBHBJkFcwYPMSgKn66de4REAEEk7A7SGb8AHoAiKQBgE325QAzBwCkObRwynmTMHGBI9OTrmXUgCYEUwxyILPbNzkkeKvslMI+ksA3Z11gaGmJgGorx8REIFMS8DtIZtpwWjiSSfgZpsSgJlHACbKGCUAE0VW5xUBEUh5AoGH6ObNm5E/P78O1UQgNQjQNkuUKIHdu3eHtU0JQAlAU0uVADQlqP4iIAK+JXDgwAGULl0a27Zt8+0cNPCMS6Bo0aLYuHEjcufmpl4nNglACUBTy5cANCWo/iIgAr4mQBHIjEo1EUg1AqzOEU78cZwSgBKApvYqAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoASgKYmJwFoSlD9RUAEREAERMBjAhKAEoCmJicBaEpQ/UVABERABETAYwISgBKApiYnAWhKUP1FQAREQAREwGMCEoCZRwD2BNAFwGkA5gDoCGB7OvZ2CwD2KQPgDwADALwa5ngJQI8/tLqcCIiACIiACJgSkADMHAKwA4BBANoB2Oj8OwuAa9MwIB7XH8BDABYDKOD8WSABaPqRU38REAEREAERSD4BCcDMIQCXA5gB4CnH5EoD2ACgEoDVIWaYHcBmAI8A+CACE5UHMAJIOkQEREAEREAEUomABGDGF4A5AfwD4HoA84OM7ycALwAYFmKQlwP4wgkRP+h4/uYB6AZgpzyAqfTx1VhEQAREQAREIDYCEoAZXwAWA7AFQHkAa4LM5CsA0wD0CTGdVgBGA1jvrBncDWAggF0AbpAAjO2Dpl4iIAIiIAIikEoEJAAlAEMFIJM/RgG4LSgEXAHACgAlHTEZbMMKAafSJ1pjEQEREAEREIEICEgAZnwBGG0IuDaATwFcCWCpY0O5AOwHUB3AkhC7sgRg586dkTMnLwXUq1fP+qMmAiIgAiIgAiKQOgRmz54N/mE7dOgQBg8ezH8y0XNP6ozSu5EwGzajt2iSQGgIOwAwc/hDB0w5AKsAlADwWzgBuHv3buTPTy2oJgIiIAIiIAIikOoE5AHM+B5A2mB7p/TL7U4ZGJZ4yQqgFoCzAMx1SsQscwx2CIA6Tj++FbzmvB00DGPQCgGn+qdc4xMBERABERCBEAISgJlDAPK29wDQFQAFG0O8nRxPXykAzAimGFzo2AdDviz8zISQwwA+BsCMYCaChDYJQH2tiIAIiIAIiIDPCEgAZh4BmCjTlABMFFmdVwREQAREQAQSREACUALQ1LQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhMQAJQAtDU5CQATQmqvwiIgAiIgAh4TEACUALQ1OQkAE0Jqr8IiIAIiIAIeExAAlAC0NTkJABNCaq/CIiACIiACHhM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" /></p> <div class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">results</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="o">.</span><span class="n">from_dict</span><span class="p">({</span><span class="s">&#39;Naive Bayes&#39;</span><span class="p">:</span> <span class="n">average_recall</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s">&#39;SVC&#39;</span><span class="p">:</span><span class="n">average_recall</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s">&#39;Decision Tree&#39;</span><span class="p">:</span><span class="n">average_recall</span><span class="p">[</span><span class="mi">2</span><span class="p">]})</span> <span class="n">results</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">xlim</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">sorted_features</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">ylim</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s">&quot;Classifier recall by # of features&quot;</span><span class="p">)</span></code></pre></div> <p><img src="data:image/png;base64,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qm+SbVoAWgCG2p0FYChB9zcBE8gsgaSHbBYnlheAH374oeaee+4JpnD77bfrf//7n/baay+dc845WZxexceMB3KVVVbRVVddVdS5qR3ZVHHmok5Q5EFJtmkBaAFYpCk1eZgFYChB9zcBE8gsgaSHbBYn1pwAZD6bbbaZ7r//fv3444/jhczvv/+uY445RjfffLOGDx8eeQ779OmjQw89VG3atBmP4fvvv49CtXgQR4wYoRlmmEGrr766Lr30UrVr1y46B9eneDFt3Lhx0e+uv/766LxTTjmlFlpoIZ1yyilaccUVo2MKhYAffPDByCP32muvid0w8FqedtppmnfeecePhety/iOPPFIHH3ywELwLLLCAzjzzzOj4YltzAnCrrbbSyy+/HM3voIMO0ptvvhnNh+vRBg4cqIsuuii6dseOHbXJJptE4+S/8+2vv/7SySefrGuuuUaff/555O3cdtttdfzxx0fMmmpJtmkBaAFYrI03dZwFYChB9zcBE8gsgaSHbBYnliQAETO77rqrHn/8ca288sqRiEJMvffee5G4W3TRRfXcc8/puOOOizyFp59+eoSBWolLL720YHbEEUdExyEC77zzTg0ePFhTTDFFJNoargE88cQTI7GHACKkSt+XXnpJXbt21frrr19QACL+evbsqbXWWkt77rmnfvnll0jkjR49WoSLZ5xxxqgfIu/999/XtNNOq8MOOyz694wzzhAh3s8++0xTTTVVUbevOQHImskHHnhAU089dSSG55tvPk0zzTRafPHFtd9+++nCCy9Uv379tMYaa4hi4oxj/vnnj9jmG6LwkUce0eGHH65llllGb731VjSfDTfcUFdffbUFYFF3qfBB/76aBJykFXe1AGzFN99TN4HWTqA1CkAE1jrrrKMbb7wxSghBhOy000564okntNJKK403iZNOOikSgV9++aWmm246HX300eJ3r776aiT+CrXGAnCDDTaI1tOxHrGp1tgDiEhC7L377rvjvY8IOoQVogsPW14APvPMM9Fx+VA36w9nnnnmaE6It2JakgBk3eTDDz88gVfxgw8+iDyZjOWAAw4Yf5mhQ4eqe/fukYe1R48eeuihh6J/8aziec23yy67TLvssoveeeedyGtZqCXZpj2A9gAWY9/NHWMBGErQ/U3ABDJLIOkh23Bi5AeMHl3dqXboIDWIuJZ1sSQP4JAhQ7TuuutGCSGsB9xuu+2EkCKM2bC98sorWm655XTXXXdF3jpCtoSDn3766SbH1VgAIiDxACKS1ltvvciD2Djs2VAA/vbbb+rQoUPkYeRcDRsev19//TXy8OUFIIIPj1rDRjIJQjEfpk2CmCQACXcjSBu2888/X/vuu28kjgmD59vff/8dhX+Z7wknnBD9i3eU0PlEE000/jiSZeaYYw5dfPHFUajdAjDpLhX+uz2A5XHL97IADOPn3iZgAhkmUIoAHDVK6tSpupMdOVJqsHysrIslCUAEye677z7e47f22mtHHq5CDcGHt2rHHXeMPHBkyyIcm2qNBSDhZdbkkWCBp44wMV5HwsqEUmkNBSDrBDt37hytrdtjjz0muAwePcTfxx9/PF4Acn48lw1bqWVlkgQgIevG4phQOQKvKWaE2C+44ALtsMMO0dq/po7Do3rIIYdYAJZl6fYAloltfDcLwFCC7m8CJpBZAqUIwHrxAFL2hNDkDz/8ECWBIKxefPHFKEyZL4PS8IZSEw+xVo4HsOF58ILdcccd472BJIY0FoClegDTEIAkgRDybdjIoGbtH2v9qLPYuJHogZDdf//9dfnll4vQcCG2JNvk1zQ2PkeSbToEbAEY+sVrARhK0P1NwAQySyDpIZvFiTXnAbz11lu1xRZbROHLAQMGRNPjeDxWZLji5Wuqkf1KUgeh4cUWW6zgYcUUgmYtHIKK6zUWgPx/ws6EXN9+++3xawDJns2vATz11FOjfoSEW0oA4s2EQdJaQ8LthL6feuoprbDCCiWZU5JtWgBaAJZkUAUOtgAMJej+JmACmSWQ9JDN4sTyO4Hg0Zttttk0duzYqBA0a9n4HSFfPHGUV6FRpoSMW8KcrFkjW5c+H330ke6+++6oH+v2yAImQYN/yWhFALEGjzWClEIplAWMt5HzLbXUUlEmLeKRvoR3ydgtJADxTiKa8lnAiEHEJ/eKsjANs4BbSgAyblixhm/vvfeO6giS7IJQJckG7yCsaKyzxFPI71gDSWOnlPvuuy8KEzdVADvJNi0ALQBDv58sAEMJur8JmEBmCSQ9ZLM4sbwHMD92wrwkKiDCqD+36aab/mdaCD6SNW644Yaohh9ijpp7JH+QkJFvhHH5/whDQsiIMbJeEYCIxMYewLPOOisSnYhLwruzzz67ttlmm6hcSj4pggxespAbbgWHCET05esAUmaFjNt55pln/FjwAJJ00bDkCn8sdL7m7iPHI+Dg1rgRHke0Um6mULviiisiEYe3kvkwvzXXXDOaH2FgGqHfs88+WxwLB+4H6w7JxIblZJNNVvDcSbZpAWgBGPr9ZAEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGb2Yl54JknkGSbFoAWgKFGbgEYStD9TcAEMksg6SGbxYmxp22vXr00zTTTRPv6dujQYfw0Pv/882gf2ksuuUS9e/cuaXqck/6PPvpoSf1CDuaaDffobd++vTp37qxNNtlERx555ARzC7lOLfZNsk0LQAvAULu1AAwl6P4mYAKZJZD0kM3ixPICsE2bNjr66KN11FFHVUQAIib/+OMPLbjggqlhQQDef//9uvvuu/XPP/9E13/ppZeiOa255pq6/fbbUxtL2hdKsk0LQAvAUJu0AAwl6P4mYAKZJZD0kM3ixPICcO2119bzzz8feQGnmmqqaCohHsCWYIEAfOSRR/TFF19McHm8f6eccoq4f5NNNllLDK3q10yyTQtAC8BQI7QADCXo/iZgApklkPSQzeLEEICEdx977DEhAg844ACdcMIJTQrAt99+WyeeeKKeeeYZjRgxQrPOOqvWWWed6HcdO/KIiBti7LPPPtPQoUP1zTffRKHYs846S3vttdcEmE477bTIQ/f1119r6qmnjv5222236fTTT9cbb7whwrhrrbWWzjzzzOgczbWmBCDXOPTQQ/Xzzz+PDwPfddddGjRokF5//XWNHj1ac889t/r06aO9995beENpG264oYYPH66XX355gssyr3nmmUeDBw8eHxrnd4cffrgeeuihSGgutNBCkUd14403Ht/3ww8/1MEHHxyx45gZZphByy+/vK6//nq1bds2yHySbNMC0AIwyMAkWQCGEnR/EzCBzBJIeshmcWJ5AYg4Oe+883TZZZfpk08+0bTTTlvQA/jAAw9EAmaZZZaJBNuwYcMicTbppJPqqaeemkAANlwDiEhEgD333HMTYFp88cU1//zz65Zbbol+f+GFF2rPPffUzjvvrM022ywSZwgpwrmItSmnnLJJzHkBiBeTlg8Bb7/99lpiiSWE6Ms3xChCjxD15JNPHolNhC8iMC+ACSevv/76euGFF9S1a9fxfQ877DBdcMEF+uqrryKP4pdffqmlllpKM800UyQ0p5tuOt144426/PLLdeedd0bnoM0333wR1/79+0f/Ii7vu+++iPnEE08cZD5JtmkBaAEYZGAWgKH43N8ETCDLBJIeslmcW0MBiLjCE7bHHntEHrhiQsDjxo2LhMycc86p1157TQg6WuMkkGuvvVY77LCD3nvvvUgI0Tge4cTavI022ki//vpr5FHcfPPNI+9avjEORCKevH333bdZAdgwCSR/4IorrhitC8x7GAudgHngieP8P/zwQ3QI6wgZ6xprrKGLL744+t1ff/0VeSK32GILnXPOOdHvEKv33HOP3n///fHhc36PR/W7777Tq6++Gp1z+umnj0RoXhBW0l6SbNMC0AIw1N7sAQwl6P4mYAKZJZD0kG04McTD6LGjqzrXDu07jA9XlnuhhgIQ8XfIIYdo4MCB+vjjjzVmzJj/ZAEjgM444wxdffXVkUD87bffokvjTUNAIYwKCUCOm3HGGbX//vvruOOOi44h3Mz1CRHjAXv44YfVo0eP6N9VV111/JRgiQcOMZb3FBaaL6ITDyVeNfow1g8++CC6Husan3zySU0yySRR12+//VbHHntslDSCgOXY/DwIRxOepSGEjz/++Mjbh0Dm+ltuuWXkMVxkkUWiY2abbbYoTE22dL5x/bPPPjviOXLkyKjvvPPOG3lK+/Xrp9VXXz0S25VqSbZpAWgBGGprFoChBN3fBEwgswSSHrINJzbqj1HqdEqnqs51ZP+R6jjJv+vuyrlYYwH4448/RqJvp512ioRK4zIwBx54oC666KJIPOG9o2zM33//reWWW05XXHFF5OUrJAD5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IASEgBAQAkKghAiIAJZw0TRlISAEhIAQEAJCQAj4ICAC6IOexgoBISAEhIAQEAJCoIQIiACWcNE0ZSEgBISAEBACQkAI+CAgAuiDnsYKASEgBISAEBACQqCECIgAlnDRNGUhIASEgBAQAkJACPggIALog57GCgEhIASEgBAQAkKghAiIAJZw0TRlISAEhIAQEAJCQAj4ICAC6IOexgoBISAEhIAQEAJCoIQIiACWcNE0ZSEgBISAEBACQkAI+CAgAuiDnsYKASEgBISAEBACQqCECIgAlnDRNGUhIASEgBAQAkJACPggIALog57GCgEhIASEgBAQAkKghAiIAJZw0TRlISAEhIAQEAJCQAj4ICAC6IOexgoBISAEhIAQEAJCoIQIiACWcNE0ZSEgBISAEBACQkAI+CAgAuiDnsYKASEgBISAEBACQqCECIgAlnDRNGUhIASEgBAQAkJACPggIALog57GCgEhIASEgBAQAkKghAiIAJZw0TRlISAEhIAQEAJCQAj4ICAC6IOexgoBISAEhIAQEAJCoIQIiACWcNE0ZSEgBISAEBACQkAI+CAgAuiDnsYKASEgBISAEBACQqCECIgAlnDRNGUhIASEgBAQAkJACPggIALog57GCgEhIASEgBAQAkKghAiIAJZw0TRlISAEhIAQEAJCQAj4IPD/Q7hIRxX7ufkAAAAASUVORK5CYII=" /></p> <p>As output by my code, the best algorithm was consistently found to be Decision Trees and so I could finally finish up the project by submitting that as my model.</p> <h2 id="conclusion">Conclusion</h2> <p>I did not much care for the project’s dataset and overall structure, but I still greatly enjoyed completing it because of how fun it was to combine Pandas data processing with Scikit-learn model training in the process, with IPython Notebook making that process even more fluid. While not at all a well written introduction or tutorial for these packages, I do hope that this write up about a single project I finished using them might inspire some readers to try out doing that as well.</p> <p><a href="/writing/project/power-of-ipython-pandas-scikilearn/">The Power of IPython Notebook + Pandas + and Scikit-learn</a> was originally published by Andrey Kurenkov at <a href="">Andrey Kurenkov's Web World</a> on June 10, 2016.</p>