redoules.github.io/machine-learning/Source code for the recommandation engine for articles.html
redoules b2a2d71169 added an article
added an article on extanding pandas datatypes
2018-12-24 18:25:16 +01:00

1082 lines
76 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="Data Science for Political and Social Phenomena">
<meta name="author" content="Guillaume Redoulès">
<link rel="icon" href="../favicon.ico">
<title>Article Recommander - Machine Learning</title>
<!-- JQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
</script>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
<!-- Custom styles for this template -->
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<meta name="tags" content="Basics" />
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
</div>
<div class="navbar-collapse collapse" id="searchbar">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="../pages/about.html">About Guillaume</a></li>
<li><a href="https://github.com/redoules">GitHub</a></li>
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="..#Blog">Blog</a></li>
<li><a href="..#Python">Python</a></li>
<li><a href="..#Bash">Bash</a></li>
<li><a href="..#SQL">SQL</a></li>
<li><a href="..#Mathematics">Mathematics</a></li>
<li><a href="..#Machine_Learning">Machine Learning</a></li>
<li><a href="..#Projects">Projects</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
</ul>
</li>
<!--<li class="dropdown">
<a href="../feeds/blog.rss.xml">Blog RSS</a>
</li>-->
</ul>
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
<div class="form-group" style="display:inline;">
<div class="input-group" style="display:table;">
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
</div>
</div>
</form>
</div>
<!--/.nav-collapse -->
</div>
</div>
<!-- end of header section -->
<div class="container">
<!-- <div class="alert alert-warning" role="alert">
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
</div> -->
<section id="content" class="body">
<header>
<h1>
Article Recommander
</h1>
<ol class="breadcrumb">
<li>
<time class="published" datetime="2017-06-23T08:22:00+02:00">
23 juin 2017
</time>
</li>
<li>Machine Learning</li>
<li>Basics</li>
</ol>
</header>
<div class='article_content'>
<div class="highlight"><pre><span></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="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
</pre></div>
<h2>Loading data and preprocessing</h2>
<p>we first learn the pickled article database. We will be cleaning it and separating the interesting articles from the uninteresting ones. </p>
<div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_pickle</span><span class="p">(</span><span class="s1">&#39;./article.pkl&#39;</span><span class="p">)</span>
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;html&quot;</span><span class="p">]</span>
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;image&quot;</span><span class="p">]</span>
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;URL&quot;</span><span class="p">]</span>
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;hash&quot;</span><span class="p">]</span>
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;source&quot;</span><span class="p">]</span>
<span class="n">df</span><span class="p">[</span><span class="s2">&quot;label&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s2">&quot;note&quot;</span><span class="p">]</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="mi">0</span> <span class="k">if</span> <span class="n">x</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
</pre></div>
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>authors</th>
<th>note</th>
<th>resume</th>
<th>texte</th>
<th>titre</th>
<th>label</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>[Danny Bradbury, Marco Santori, Adam Draper, M...</td>
<td>-10.0</td>
<td>Black Market Reloaded, a black market site tha...</td>
<td>Black Market Reloaded, a black market site tha...</td>
<td>Black Market Reloaded back online after source...</td>
<td>0</td>
</tr>
<tr>
<th>1</th>
<td>[Emily Spaven, Stan Higgins, Emilyspaven]</td>
<td>1.0</td>
<td>The UK Home Office believes the government sho...</td>
<td>The UK Home Office believes the government sho...</td>
<td>Home Office: UK Should Create a Crime-Fighting...</td>
<td>1</td>
</tr>
<tr>
<th>2</th>
<td>[Pete Rizzo, Alex Batlin, Yessi Bello Perez, P...</td>
<td>-10.0</td>
<td>Though lofty in its ideals, lead developer Dan...</td>
<td>A new social messaging app is aiming to disrup...</td>
<td>Gems Bitcoin App Lets Users Earn Money From So...</td>
<td>0</td>
</tr>
<tr>
<th>3</th>
<td>[Nermin Hajdarbegovic, Stan Higgins, Pete Rizz...</td>
<td>3.0</td>
<td>US satellite service provider DISH Network has...</td>
<td>US satellite service provider DISH Network has...</td>
<td>DISH Becomes World's Largest Company to Accept...</td>
<td>1</td>
</tr>
<tr>
<th>4</th>
<td>[Stan Higgins, Bailey Reutzel, Garrett Keirns,...</td>
<td>-10.0</td>
<td>An unidentified 28-year-old man was robbed of ...</td>
<td>An unidentified 28-year-old man was robbed of ...</td>
<td>Bitcoin Stolen at Gunpoint in New York City Ro...</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
<h2>Basic statistics on the dataset</h2>
<p>let's explore the dataset and extract some numbers :
* the number of article liked/disliked</p>
<div class="highlight"><pre><span></span><span class="n">df</span><span class="p">[</span><span class="s2">&quot;label&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
</pre></div>
<div class="highlight"><pre><span></span>0 879
1 324
Name: label, dtype: int64
</pre></div>
<h2>Create the full content column</h2>
<div class="highlight"><pre><span></span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;full_content&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">titre</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="n">df</span><span class="o">.</span><span class="n">resume</span> <span class="c1">#exclude the full texte of the article for the moment</span>
<span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>authors</th>
<th>note</th>
<th>resume</th>
<th>texte</th>
<th>titre</th>
<th>label</th>
<th>full_content</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>[Danny Bradbury, Marco Santori, Adam Draper, M...</td>
<td>-10.0</td>
<td>Black Market Reloaded, a black market site tha...</td>
<td>Black Market Reloaded, a black market site tha...</td>
<td>Black Market Reloaded back online after source...</td>
<td>0</td>
<td>Black Market Reloaded back online after source...</td>
</tr>
</tbody>
</table>
</div>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">train_test_split</span>
<span class="n">training</span><span class="p">,</span> <span class="n">testing</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span>
<span class="n">df</span><span class="p">,</span> <span class="c1"># The dataset we want to split</span>
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span> <span class="c1"># The proportional size of our training set</span>
<span class="n">stratify</span><span class="o">=</span><span class="n">df</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="c1"># The labels are used for stratification</span>
<span class="n">random_state</span><span class="o">=</span><span class="mi">400</span> <span class="c1"># Use the same random state for reproducibility</span>
<span class="p">)</span>
<span class="n">training</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
</pre></div>
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>authors</th>
<th>note</th>
<th>resume</th>
<th>texte</th>
<th>titre</th>
<th>label</th>
<th>full_content</th>
</tr>
</thead>
<tbody>
<tr>
<th>748</th>
<td>[Jon Brodkin]</td>
<td>-10.0</td>
<td>Amazon, Reddit, Mozilla, and other Internet co...</td>
<td>Amazon, Reddit, Mozilla, and other Internet co...</td>
<td>Amazon and Reddit try to save net neutrality r...</td>
<td>0</td>
<td>Amazon and Reddit try to save net neutrality r...</td>
</tr>
<tr>
<th>1183</th>
<td>[Jon Brodkin]</td>
<td>-10.0</td>
<td>(The Time Warner involved in this transaction ...</td>
<td>A group of mostly Democratic senators led by A...</td>
<td>Democrats urge Trump administration to block A...</td>
<td>0</td>
<td>Democrats urge Trump administration to block A...</td>
</tr>
<tr>
<th>769</th>
<td>[Joseph Brogan]</td>
<td>-10.0</td>
<td>On Twitter, bad news comes at all hours, with ...</td>
<td>On Twitter, bad news comes at all hours, with ...</td>
<td>Some of the best art on Twitter comes from the...</td>
<td>0</td>
<td>Some of the best art on Twitter comes from the...</td>
</tr>
<tr>
<th>57</th>
<td>[Michael Del Castillo, Pete Rizzo, Trond Vidar...</td>
<td>-10.0</td>
<td>Publicly traded online travel service Webjet i...</td>
<td>Publicly traded online travel service Webjet i...</td>
<td>Webjet Ethereum Pilot Targets Hotel Industry's...</td>
<td>0</td>
<td>Webjet Ethereum Pilot Targets Hotel Industry's...</td>
</tr>
<tr>
<th>892</th>
<td>[Andrew Cunningham]</td>
<td>10.0</td>
<td>What has changed on the 2017 MacBook, then?\nI...</td>
<td>Andrew Cunningham\n\nAndrew Cunningham\n\nAndr...</td>
<td>Mini-review: The 2017 MacBook could actually b...</td>
<td>1</td>
<td>Mini-review: The 2017 MacBook could actually b...</td>
</tr>
</tbody>
</table>
</div>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.feature_extraction.text</span> <span class="kn">import</span> <span class="n">TfidfVectorizer</span><span class="p">,</span> <span class="n">CountVectorizer</span>
<span class="kn">from</span> <span class="nn">sklearn.svm</span> <span class="kn">import</span> <span class="n">LinearSVC</span><span class="p">,</span> <span class="n">SVC</span>
<span class="kn">from</span> <span class="nn">sklearn.pipeline</span> <span class="kn">import</span> <span class="n">Pipeline</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">cross_val_predict</span>
<span class="kn">from</span> <span class="nn">utils.plotting</span> <span class="kn">import</span> <span class="n">pipeline_performance</span>
<span class="n">steps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;vectorizer&#39;</span><span class="p">,</span> <span class="n">TfidfVectorizer</span><span class="p">()),</span>
<span class="p">(</span><span class="s1">&#39;classifier&#39;</span><span class="p">,</span> <span class="n">LinearSVC</span><span class="p">())</span>
<span class="p">)</span>
<span class="n">pipeline</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="p">(</span><span class="n">steps</span><span class="p">)</span>
<span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">cross_val_predict</span><span class="p">(</span><span class="n">pipeline</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">full_content</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
<span class="n">pipeline_performance</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">predicted_labels</span><span class="p">)</span>
<span class="n">pipeline</span> <span class="o">=</span> <span class="n">pipeline</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">titre</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span>Accuracy = 80.6%
Confusion matrix, without normalization
[[624 35]
[140 103]]
</pre></div>
<p><img alt="png" src="../images/recommender/output_8_1.png"></p>
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">re</span>
<span class="kn">from</span> <span class="nn">utils.plotting</span> <span class="kn">import</span> <span class="n">print_top_features</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">GridSearchCV</span>
<span class="k">def</span> <span class="nf">mask_integers</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
<span class="k">return</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;\d+&#39;</span><span class="p">,</span> <span class="s1">&#39;INTMASK&#39;</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span><span class="n">steps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;vectorizer&#39;</span><span class="p">,</span> <span class="n">TfidfVectorizer</span><span class="p">()),</span>
<span class="p">(</span><span class="s1">&#39;classifier&#39;</span><span class="p">,</span> <span class="n">LinearSVC</span><span class="p">())</span>
<span class="p">)</span>
<span class="n">pipeline</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="p">(</span><span class="n">steps</span><span class="p">)</span>
<span class="n">gs_params</span> <span class="o">=</span> <span class="p">{</span>
<span class="c1">#&#39;vectorizer__use_idf&#39;: (True, False),</span>
<span class="s1">&#39;vectorizer__lowercase&#39;</span><span class="p">:</span> <span class="p">[</span><span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">],</span>
<span class="s1">&#39;vectorizer__stop_words&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;english&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;vectorizer__ngram_range&#39;</span><span class="p">:</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span>
<span class="s1">&#39;vectorizer__preprocessor&#39;</span><span class="p">:</span> <span class="p">[</span><span class="n">mask_integers</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;classifier__C&#39;</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">25</span><span class="p">)</span>
<span class="p">}</span>
<span class="n">gs</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">pipeline</span><span class="p">,</span> <span class="n">gs_params</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">gs</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">full_content</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_params_</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_score_</span><span class="p">)</span>
<span class="n">pipeline1</span> <span class="o">=</span> <span class="n">gs</span><span class="o">.</span><span class="n">best_estimator_</span>
<span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">pipeline1</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">full_content</span><span class="p">)</span>
<span class="n">pipeline_performance</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">predicted_labels</span><span class="p">)</span>
<span class="n">print_top_features</span><span class="p">(</span><span class="n">pipeline1</span><span class="p">,</span> <span class="n">n_features</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span><span class="n">aaa</span> <span class="o">=</span> <span class="n">gs</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">full_content</span><span class="p">)</span> <span class="o">==</span> <span class="n">testing</span><span class="o">.</span><span class="n">label</span>
<span class="n">aaa</span> <span class="o">=</span> <span class="n">aaa</span><span class="p">[</span><span class="n">testing</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="mi">1</span><span class="p">]</span>
<span class="n">testing</span><span class="p">[</span><span class="s2">&quot;titre&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">~</span><span class="n">aaa</span><span class="o">.</span><span class="n">values</span><span class="p">]</span>
<span class="c1">#pipeline1.predict([&quot;windows xbox bitcoin&quot;])</span>
<span class="kn">from</span> <span class="nn">sklearn.externals</span> <span class="kn">import</span> <span class="n">joblib</span>
<span class="n">joblib</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">pipeline1</span><span class="p">,</span> <span class="s1">&#39;classifier.pkl&#39;</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span><span class="n">gs</span><span class="o">.</span><span class="n">predict</span><span class="p">([</span><span class="s1">&#39;Google&#39;</span><span class="p">])</span>
</pre></div>
<div class="highlight"><pre><span></span>array([1], dtype=int64)
</pre></div>
<div class="highlight"><pre><span></span><span class="n">steps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;vectorizer&#39;</span><span class="p">,</span> <span class="n">TfidfVectorizer</span><span class="p">()),</span>
<span class="p">(</span><span class="s1">&#39;classifier&#39;</span><span class="p">,</span> <span class="n">SVC</span><span class="p">())</span>
<span class="p">)</span>
<span class="n">pipeline</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="p">(</span><span class="n">steps</span><span class="p">)</span>
<span class="n">gs_params</span> <span class="o">=</span> <span class="p">{</span>
<span class="c1">#&#39;vectorizer__use_idf&#39;: (True, False),</span>
<span class="s1">&#39;vectorizer__stop_words&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;english&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;vectorizer__ngram_range&#39;</span><span class="p">:</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span>
<span class="s1">&#39;vectorizer__preprocessor&#39;</span><span class="p">:</span> <span class="p">[</span><span class="n">mask_integers</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;classifier__C&#39;</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">25</span><span class="p">)</span>
<span class="p">}</span>
<span class="n">gs</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">pipeline</span><span class="p">,</span> <span class="n">gs_params</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">gs</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">full_content</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_params_</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_score_</span><span class="p">)</span>
<span class="n">pipeline1</span> <span class="o">=</span> <span class="n">gs</span><span class="o">.</span><span class="n">best_estimator_</span>
<span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">pipeline1</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">full_content</span><span class="p">)</span>
<span class="n">pipeline_performance</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">predicted_labels</span><span class="p">)</span>
<span class="n">print_top_features</span><span class="p">(</span><span class="n">pipeline1</span><span class="p">,</span> <span class="n">n_features</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span>{&#39;classifier__C&#39;: 5.0, &#39;vectorizer__ngram_range&#39;: (1, 1), &#39;vectorizer__preprocessor&#39;: &amp;lt;function mask_integers at 0x00000237491B67B8&amp;gt;, &#39;vectorizer__stop_words&#39;: &#39;english&#39;}
0.711180124224
Accuracy = 71.2%
Confusion matrix, without normalization
[[153 0]
[ 62 0]]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
&amp;lt;ipython-input-9-3e0781e307fb&amp;gt; in &amp;lt;module&amp;gt;()
25 pipeline_performance(testing.label, predicted_labels)
26
---&amp;gt; 27 print_top_features(pipeline1, n_features=10)
C:\Users\Guillaume\Documents\Code\recommandation\utils\plotting.py in print_top_features(pipeline, vectorizer_name, classifier_name, n_features)
81 def print_top_features(pipeline, vectorizer_name=&#39;vectorizer&#39;, classifier_name=&#39;classifier&#39;, n_features=7):
82 vocabulary = np.array(pipeline.named_steps[vectorizer_name].get_feature_names())
---&amp;gt; 83 coefs = pipeline.named_steps[classifier_name].coef_[0]
84 top_feature_idx = np.argsort(coefs)
85 top_features = vocabulary[top_feature_idx]
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\svm\base.py in coef_(self)
483 def coef_(self):
484 if self.kernel != &#39;linear&#39;:
--&amp;gt; 485 raise ValueError(&#39;coef_ is only available when using a &#39;
486 &#39;linear kernel&#39;)
487
ValueError: coef_ is only available when using a linear kernel
</pre></div>
<p><img alt="png" src="../images/recommender/output_13_2.png"></p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.naive_bayes</span> <span class="kn">import</span> <span class="n">BernoulliNB</span>
<span class="n">steps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;vectorizer&#39;</span><span class="p">,</span> <span class="n">TfidfVectorizer</span><span class="p">()),</span>
<span class="p">(</span><span class="s1">&#39;classifier&#39;</span><span class="p">,</span> <span class="n">BernoulliNB</span><span class="p">())</span>
<span class="p">)</span>
<span class="n">pipeline2</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="p">(</span><span class="n">steps</span><span class="p">)</span>
<span class="n">gs_params</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">&#39;vectorizer__stop_words&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;english&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;vectorizer__ngram_range&#39;</span><span class="p">:</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span>
<span class="s1">&#39;vectorizer__preprocessor&#39;</span><span class="p">:</span> <span class="p">[</span><span class="n">mask_integers</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;classifier__alpha&#39;</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</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="mi">5</span><span class="p">),</span>
<span class="s1">&#39;classifier__fit_prior&#39;</span><span class="p">:</span> <span class="p">[</span><span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">]</span>
<span class="p">}</span>
<span class="n">gs</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">pipeline2</span><span class="p">,</span> <span class="n">gs_params</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">gs</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">full_content</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_params_</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_score_</span><span class="p">)</span>
<span class="n">pipeline2</span> <span class="o">=</span> <span class="n">gs</span><span class="o">.</span><span class="n">best_estimator_</span>
<span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">pipeline2</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">full_content</span><span class="p">)</span>
<span class="n">pipeline_performance</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">predicted_labels</span><span class="p">)</span>
<span class="n">print_top_features</span><span class="p">(</span><span class="n">pipeline2</span><span class="p">,</span> <span class="n">n_features</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span>C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:820: RuntimeWarning: divide by zero encountered in log
neg_prob = np.log(1 - np.exp(self.feature_log_prob_))
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:823: RuntimeWarning: invalid value encountered in add
jll += self.class_log_prior_ + neg_prob.sum(axis=1)
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:801: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
{&#39;classifier__alpha&#39;: 0.25, &#39;classifier__fit_prior&#39;: True, &#39;vectorizer__ngram_range&#39;: (1, 1), &#39;vectorizer__preprocessor&#39;: &amp;lt;function mask_integers at 0x00000237491B67B8&amp;gt;, &#39;vectorizer__stop_words&#39;: &#39;english&#39;}
0.805900621118
Accuracy = 78.1%
Confusion matrix, without normalization
[[140 13]
[ 34 28]]
Top like features:
[&#39;use&#39; &#39;just&#39; &#39;year&#39; &#39;price&#39; &#39;time&#39; &#39;Bitcoin&#39; &#39;bitcoin&#39; &#39;new&#39; &#39;The&#39;
&#39;INTMASK&#39;]
---
Top dislike features:
[&#39;ABBA&#39; &#39;cable&#39; &#39;cab&#39; &#39;byte&#39; &#39;publication&#39; &#39;bye&#39; &#39;publications&#39; &#39;publicity&#39;
&#39;buyer&#39; &#39;publicizing&#39;]
</pre></div>
<p><img alt="png" src="../images/recommender/output_14_2.png"></p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.naive_bayes</span> <span class="kn">import</span> <span class="n">MultinomialNB</span>
<span class="n">steps</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;vectorizer&#39;</span><span class="p">,</span> <span class="n">TfidfVectorizer</span><span class="p">()),</span>
<span class="p">(</span><span class="s1">&#39;classifier&#39;</span><span class="p">,</span> <span class="n">MultinomialNB</span><span class="p">())</span>
<span class="p">)</span>
<span class="n">pipeline3</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="p">(</span><span class="n">steps</span><span class="p">)</span>
<span class="n">gs_params</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">&#39;vectorizer__stop_words&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;english&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;vectorizer__ngram_range&#39;</span><span class="p">:</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span>
<span class="s1">&#39;vectorizer__preprocessor&#39;</span><span class="p">:</span> <span class="p">[</span><span class="n">mask_integers</span><span class="p">,</span> <span class="bp">None</span><span class="p">],</span>
<span class="s1">&#39;classifier__alpha&#39;</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</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="mi">5</span><span class="p">),</span>
<span class="s1">&#39;classifier__fit_prior&#39;</span><span class="p">:</span> <span class="p">[</span><span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">]</span>
<span class="p">}</span>
<span class="n">gs</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">pipeline3</span><span class="p">,</span> <span class="n">gs_params</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">gs</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">full_content</span><span class="p">,</span> <span class="n">training</span><span class="o">.</span><span class="n">label</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_params_</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">best_score_</span><span class="p">)</span>
<span class="n">pipeline3</span> <span class="o">=</span> <span class="n">gs</span><span class="o">.</span><span class="n">best_estimator_</span>
<span class="n">predicted_labels</span> <span class="o">=</span> <span class="n">pipeline3</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">full_content</span><span class="p">)</span>
<span class="n">pipeline_performance</span><span class="p">(</span><span class="n">testing</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="n">predicted_labels</span><span class="p">)</span>
<span class="n">print_top_features</span><span class="p">(</span><span class="n">pipeline3</span><span class="p">,</span> <span class="n">n_features</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
<div class="highlight"><pre><span></span>C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
C:\Users\Guillaume\Anaconda3\lib\site-packages\sklearn\naive_bayes.py:699: RuntimeWarning: divide by zero encountered in log
self.feature_log_prob_ = (np.log(smoothed_fc) -
{&#39;classifier__alpha&#39;: 0.5, &#39;classifier__fit_prior&#39;: False, &#39;vectorizer__ngram_range&#39;: (1, 1), &#39;vectorizer__preprocessor&#39;: &amp;lt;function mask_integers at 0x00000237491B67B8&amp;gt;, &#39;vectorizer__stop_words&#39;: &#39;english&#39;}
0.80900621118
Accuracy = 79.1%
Confusion matrix, without normalization
[[141 12]
[ 33 29]]
Top like features:
[&#39;time&#39; &#39;Google&#39; &#39;Pro&#39; &#39;Apple&#39; &#39;new&#39; &#39;The&#39; &#39;Bitcoin&#39; &#39;price&#39; &#39;bitcoin&#39;
&#39;INTMASK&#39;]
---
Top dislike features:
[&#39;ABBA&#39; &#39;categories&#39; &#39;catching&#39; &#39;catalyst&#39; &#39;catalog&#39; &#39;casually&#39; &#39;casts&#39;
&#39;cast&#39; &#39;cashier&#39; &#39;ran&#39;]
</pre></div>
<p><img alt="png" src="../images/recommender/output_15_2.png"></p>
</div>
<aside>
<div class="bug-reporting__panel">
<h3>Find an error or bug? Have a suggestion?</h3>
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
</div>
</aside>
</section>
</div>
<!-- start of footer section -->
<footer class="footer">
<div class="container">
<p class="text-muted">
<center>This project contains 81 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
<br/>
Copyright &copy; Guillaume Redoulès,
<time datetime="2018">2018</time>.
</center>
</p>
</div>
</footer>
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
<script>
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
</script>
<!-- Load Google Analytics -->
<script>
/*
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-66582-32', 'auto');
ga('send', 'pageview');
*/
</script>
<!-- End of Google Analytics -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="../theme/js/bootstrap.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>