{"componentChunkName":"component---src-templates-tag-js","path":"/tags/nlp/","result":{"data":{"site":{"siteMetadata":{"title":"LoginRadius Blog"}},"allMarkdownRemark":{"totalCount":1,"edges":[{"node":{"fields":{"slug":"/engineering/full-data-science-pipeline-implementation/"},"html":"<h2 id=\"what-is-data-enrichment-and-its-importance\" style=\"position:relative;\"><a href=\"#what-is-data-enrichment-and-its-importance\" aria-label=\"what is data enrichment and its importance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is data enrichment? and its importance</h2>\n<p>Data enrichment is the process of combining first-party data from internal sources with disparate data from other internal systems or third-party data from external sources.</p>\n<p>Usually, the data available from clients or stakeholders are not enough to solve the given problem statement, like if a client comes with a problem statement to build a recommendation engine for his mutual fund industry, the usual data they have is old purchase data but that's not enough as client behaviour changes with time and is impacted by the present market condition, oil prices, etc. which needs to be incorporated in the model to make it efficient.</p>\n<p>Codes for this tutorial is at <a href=\"https://github.com/LoginRadius/engineering-blog-samples/tree/master/Data_Science/Full_DataScience_Pipeline_Implementation\">Link</a></p>\n<p><strong>The whole process id divided into four steps:</strong></p>\n<p>I have implemented a full pipeline of data science from scrapping data from web to implementing ml and NLP classification.</p>\n<ul>\n<li>Phase I:</li>\n</ul>\n<p>Here I have scraped data from IMDB website (imdb.py)</p>\n<ul>\n<li>Phase II:</li>\n</ul>\n<p>I have tried to implement simple ML regression on the data (ml_imdb.py)</p>\n<ul>\n<li>Phase III:</li>\n</ul>\n<p>I have prepared the data for NLP classification (multilabel_prep.py)</p>\n<ul>\n<li>Phase IV:</li>\n</ul>\n<p>I have implemented multilabel NLP classifier using various techniques like chain classifier etc. (multilabel<em>nlp</em>classifier.ipynb)</p>\n<h2 id=\"what-is-web-scraping\" style=\"position:relative;\"><a href=\"#what-is-web-scraping\" aria-label=\"what is web scraping permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is web scraping?</h2>\n<p>Web scraping is the process of extracting and parsing raw data from the web. Web scraping is a technique which helps data scientist to make their data-rich and is an efficient technique of data collection.</p>\n<p>This world is full of data, but unfortunately, most of them are not in the form to be used. Data is like crude oil, or we say it is in unstructured form. For a data scientist or engineer, our first challenge is to make the data model consumption ready, which takes the majority of the time, and this whole process is collectively known as data preprocessing.</p>\n<p>HTML  is a form of primary markup language and the base framework of mostly all websites. For performing web scraping its necessary to know it</p>\n<p>Here we will start with requesting the web page using python package requests.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> requests </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> get</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  url = </span><span class=\"mtk8\">&#39;http://www.imdb.com/search/title?release_date=2017&sort=num_votes,desc&page=1&#39;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  response = get(url)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">print</span><span class=\"mtk1\">(</span><span class=\"mtk11\">len</span><span class=\"mtk1\">(response.text))</span></span></code></pre>\n<p>The whole web page is now stored in the variable object response.\nThen we parse the web page using beautifulsoup package.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> bs4 </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> BeautifulSoup</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  html_soup = BeautifulSoup(response.text, </span><span class=\"mtk8\">&#39;html.parser&#39;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk10\">type</span><span class=\"mtk1\">(html_soup)</span></span></code></pre>\n<p>Then I will store all the div with the class named lister-item mode-advanced in variable movie_containers.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">movie_containers = html_soup.find_all(</span><span class=\"mtk8\">&#39;div&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;lister-item mode-advanced&#39;</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>Then I iterate through this object and store the information in lists to make my final DataFrame, using simple for loops.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\"># Lists to store the scraped data in</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">names = []</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">years = []</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">imdb_ratings = []</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">metascores = []</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">votes = []</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#gross=[] #many movies have no record</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">movie_description=[]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">movie_duration=[]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">movie_genre=[]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Extract data from individual movie container</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> container </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> movie_containers:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># If the movie has Metascore, then extract:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> container.find(</span><span class=\"mtk8\">&#39;div&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;ratings-metascore&#39;</span><span class=\"mtk1\">) </span><span class=\"mtk4\">is</span><span class=\"mtk1\"> </span><span class=\"mtk4\">not</span><span class=\"mtk1\"> </span><span class=\"mtk4\">None</span><span class=\"mtk1\">:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># The name</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        name = container.h3.a.text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        names.append(name)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># The year</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        year = container.h3.find(</span><span class=\"mtk8\">&#39;span&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;lister-item-year&#39;</span><span class=\"mtk1\">).text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        years.append(year)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># The IMDB rating</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        imdb = </span><span class=\"mtk10\">float</span><span class=\"mtk1\">(container.strong.text)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        imdb_ratings.append(imdb)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># The Metascore</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        m_score = container.find(</span><span class=\"mtk8\">&#39;span&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;metascore&#39;</span><span class=\"mtk1\">).text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        metascores.append(</span><span class=\"mtk10\">int</span><span class=\"mtk1\">(m_score))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># The number of votes</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        vote = container.find(</span><span class=\"mtk8\">&#39;span&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">attrs</span><span class=\"mtk1\"> = {</span><span class=\"mtk8\">&#39;name&#39;</span><span class=\"mtk1\">:</span><span class=\"mtk8\">&#39;nv&#39;</span><span class=\"mtk1\">})[</span><span class=\"mtk8\">&#39;data-value&#39;</span><span class=\"mtk1\">]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        votes.append(</span><span class=\"mtk10\">int</span><span class=\"mtk1\">(vote))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Gross income of movie</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk3\">#gross_inc =container.find_all(&#39;span&#39;, attrs = {&#39;name&#39;:&#39;nv&#39;})[1][&#39;data-value&#39;]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk3\">#gross.append(gross_inc)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># movie description</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_desc=container.find_all(</span><span class=\"mtk8\">&#39;p&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;text-muted&#39;</span><span class=\"mtk1\">)[</span><span class=\"mtk7\">1</span><span class=\"mtk1\">].text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_description.append(movie_desc)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_det=container.find_all(</span><span class=\"mtk8\">&#39;p&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">class_</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;text-muted&#39;</span><span class=\"mtk1\">)[</span><span class=\"mtk7\">0</span><span class=\"mtk1\">]</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Movie duration</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_dur=movie_det.find(</span><span class=\"mtk8\">&#39;span&#39;</span><span class=\"mtk1\">,</span><span class=\"mtk12\">class_</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&#39;runtime&#39;</span><span class=\"mtk1\">).text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_duration.append(movie_dur)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Movie genre</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_gen=movie_det.find(</span><span class=\"mtk8\">&#39;span&#39;</span><span class=\"mtk1\">,</span><span class=\"mtk12\">class_</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&#39;genre&#39;</span><span class=\"mtk1\">).text</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        movie_genre.append(movie_gen)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> pandas </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> pd</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">one_df = pd.DataFrame({</span><span class=\"mtk8\">&#39;movie&#39;</span><span class=\"mtk1\">: names,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;year&#39;</span><span class=\"mtk1\">: years,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;imdb&#39;</span><span class=\"mtk1\">: imdb_ratings,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;metascore&#39;</span><span class=\"mtk1\">: metascores,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;votes&#39;</span><span class=\"mtk1\">: votes,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#&#39;gross&#39;:gross,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;movie decription&#39;</span><span class=\"mtk1\">:movie_description,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;movie duration&#39;</span><span class=\"mtk1\">:movie_duration,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk8\">&#39;movie genre&#39;</span><span class=\"mtk1\">:movie_genre</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">})</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk11\">print</span><span class=\"mtk1\">(one_df.info())</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">one_df.to_csv(</span><span class=\"mtk8\">&#39;50_movie_details.csv&#39;</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>But this was only for one page which has data for 50 movies only which is not enough to build a model.</p>\n<p>Please refer my code to understand how I use simple for loops to iterate through all the movies and downloading data for 20 years(approx).</p>\n<h2 id=\"implementing-simple-linear-algorithms-in-numerical-data-we-just-scrapped\" style=\"position:relative;\"><a href=\"#implementing-simple-linear-algorithms-in-numerical-data-we-just-scrapped\" aria-label=\"implementing simple linear algorithms in numerical data we just scrapped permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Implementing simple linear algorithms in numerical data we just scrapped</h2>\n<p>Whats is linear regression??</p>\n<p>It is one of the most popular and used statistical techniques\n• Used to understand the relationship between variables</p>\n<p>  • Can also be used to predict a value of interest for new observations</p>\n<p>  • The aim is to predict the value of a continuous numeric variable of interest (known as the response or dependent or target variable)</p>\n<p>  • The values of one or more predictor (or independent) variables are used to make the prediction</p>\n<p>  • One predictor = simple regression</p>\n<p>  • More predictors = multiple regression</p>\n<p>Here I just tried to use metascore of movies firstly to predict IMDB ratings and secondly I wanted to enhance it by using metascore and votes to predict IMDB rating. </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">## ML model</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">X = data.loc[:, </span><span class=\"mtk8\">&#39;metascore&#39;</span><span class=\"mtk1\">].values</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y = data.loc[:, </span><span class=\"mtk8\">&#39;imdb&#39;</span><span class=\"mtk1\">].values</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Splitting the dataset into the Training set and Test set</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.cross_validation </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> train_test_split</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">X_train, X_test, y_train, y_test = train_test_split(X, y, </span><span class=\"mtk12\">test_size</span><span class=\"mtk1\"> = </span><span class=\"mtk7\">0.33</span><span class=\"mtk1\">, </span><span class=\"mtk12\">random_state</span><span class=\"mtk1\"> = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.linear_model </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> LinearRegression</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">regressor = LinearRegression()</span><span class=\"mtk3\">#making object for reg package</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">regressor.fit(X_train.reshape(-</span><span class=\"mtk7\">1</span><span class=\"mtk1\">,</span><span class=\"mtk7\">1</span><span class=\"mtk1\">), y_train.reshape(-</span><span class=\"mtk7\">1</span><span class=\"mtk1\">,</span><span class=\"mtk7\">1</span><span class=\"mtk1\">))</span><span class=\"mtk3\">#to fit the regressor to our training data</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#predict the test results</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y_pred =regressor.predict(X_test.reshape(-</span><span class=\"mtk7\">1</span><span class=\"mtk1\">,</span><span class=\"mtk7\">1</span><span class=\"mtk1\">))</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.metrics </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> mean_squared_error</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">mean_squared_error(y_test, y_pred)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># 0.18041462828221905</span></span></code></pre>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">## Let try with imdb and votes</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">X1 = data.loc[:, [</span><span class=\"mtk8\">&#39;metascore&#39;</span><span class=\"mtk1\">,</span><span class=\"mtk8\">&#39;votes&#39;</span><span class=\"mtk1\">]].values</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y1 = data.loc[:, </span><span class=\"mtk8\">&#39;imdb&#39;</span><span class=\"mtk1\">].values</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Splitting the dataset into the Training set and Test set</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.cross_validation </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> train_test_split</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">X_train, X_test, y_train, y_test = train_test_split(X1, y1, </span><span class=\"mtk12\">test_size</span><span class=\"mtk1\"> = </span><span class=\"mtk7\">0.33</span><span class=\"mtk1\">, </span><span class=\"mtk12\">random_state</span><span class=\"mtk1\"> = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.linear_model </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> LinearRegression</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">regressor = LinearRegression()</span><span class=\"mtk3\">#making object for reg package</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">regressor.fit(X_train, y_train)</span><span class=\"mtk3\">#to fit the regressor to our training data</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#predict the test results</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y_pred =regressor.predict(X_test)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.metrics </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> mean_squared_error</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">mean_squared_error(y_test, y_pred)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># 0.15729132122310804 good score</span></span></code></pre>\n<p>I tried to scrape data from the IMDB site and then applied ML regression techniques on it. Later I found that the movies listed are multi-class like Logan belongs to Action, Drama, Sci-Fi, which led me to think about how to implement the classifier model in the multilabel data. Usually, the data we get in real-world is mostly multi labelled like chatbot data; the intent is many and like these movies which are multi-class.</p>\n<p>Here we will first see how we prep our data for multilabel classification.</p>\n<p>Here we have all tags in one single column which is not usable while we do classification, so we have to make separate columns for all labels, and if the row doesn't belong to that category, it will be filled by 0 else 1.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> os</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">os.chdir(</span><span class=\"mtk8\">&#39;Desktop/web_scraping/imdb scrapper_ml/&#39;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> pandas </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> pd</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">data=pd.read_csv(</span><span class=\"mtk8\">&#39;multilabel_nlp_classification.csv&#39;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">movie_list=[x </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> data[</span><span class=\"mtk8\">&#39;movie genre&#39;</span><span class=\"mtk1\">]]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">movie_list1=</span><span class=\"mtk8\">&#39;&#39;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> data[</span><span class=\"mtk8\">&#39;movie genre&#39;</span><span class=\"mtk1\">]:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    movie_list1+=</span><span class=\"mtk8\">&#39;,&#39;</span><span class=\"mtk1\">+x</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">li_m=movie_list1.split(</span><span class=\"mtk8\">&#39;,&#39;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">li=[x.strip() </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> li_m]</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">list_s=</span><span class=\"mtk10\">list</span><span class=\"mtk1\">(</span><span class=\"mtk10\">set</span><span class=\"mtk1\">(li))</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> list_s:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    data[x]=</span><span class=\"mtk7\">0</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">data[</span><span class=\"mtk8\">&#39;movie_genre&#39;</span><span class=\"mtk1\">]=[x.strip().split(</span><span class=\"mtk8\">&#39;,&#39;</span><span class=\"mtk1\">) </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> data[</span><span class=\"mtk8\">&#39;movie genre&#39;</span><span class=\"mtk1\">]]</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">de=data.copy()</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#data.loc[0,&#39;Action&#39;]=1</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">de[</span><span class=\"mtk8\">&#39;id&#39;</span><span class=\"mtk1\">]=</span><span class=\"mtk11\">range</span><span class=\"mtk1\">(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">,</span><span class=\"mtk7\">6116</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#print(de.loc[de[&#39;id&#39;]==0,&#39;Action&#39;])</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> i </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> </span><span class=\"mtk11\">range</span><span class=\"mtk1\">(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">,</span><span class=\"mtk7\">6116</span><span class=\"mtk1\">):</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> x </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> de.loc[de[</span><span class=\"mtk8\">&#39;id&#39;</span><span class=\"mtk1\">]==i,</span><span class=\"mtk8\">&#39;movie_genre&#39;</span><span class=\"mtk1\">]:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> y </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> x:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            y=y.strip()</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            de.loc[de[</span><span class=\"mtk8\">&#39;id&#39;</span><span class=\"mtk1\">]==i,y]=</span><span class=\"mtk7\">1</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">de.to_csv(</span><span class=\"mtk8\">&#39;multilabel_nlp_classification.csv&#39;</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>Now, as our data is ready, we can start with NLP implementation.</p>\n<p>For multilabel classification, I used techniques like classifier chain, label powerset, etc.</p>\n<p>Here the problem statement is that using the movie description our model has to guess which genre the movie belongs to. It is a popular use case. Take an example of ecommerce product description data; now instead of manually assigning the labels to it, we can use a model which will find relevant labels or genre for it and make the content relevant to the type it belongs.</p>\n<p>I start with Exploratory data analysis and then data cleaning, which is the most crucial step as if all the description has some very 30-50 common words it will simply make the data-heavy and model slow and inefficient.</p>\n<p>Then we go on to make the data model ready as ML models don't understand text data we have to feed numbers in it. For that purpose, we use TfidfVectorizer.</p>\n<h3 id=\"what-is-tfidfvectorizer\" style=\"position:relative;\"><a href=\"#what-is-tfidfvectorizer\" aria-label=\"what is tfidfvectorizer permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is TfidfVectorizer?</h3>\n<p>TfidfVectorizer - Transforms text to feature vectors that can be used as input to the estimator.</p>\n<p>Then simply diving the data in train and test split. </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">x_train = vectorizer.transform(train_text)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y_train = train.drop(</span><span class=\"mtk12\">labels</span><span class=\"mtk1\"> = [</span><span class=\"mtk8\">&#39;id&#39;</span><span class=\"mtk1\">,</span><span class=\"mtk8\">&#39;movie decription&#39;</span><span class=\"mtk1\">], </span><span class=\"mtk12\">axis</span><span class=\"mtk1\">=</span><span class=\"mtk7\">1</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">x_test = vectorizer.transform(test_text)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">y_test = test.drop(</span><span class=\"mtk12\">labels</span><span class=\"mtk1\"> = [</span><span class=\"mtk8\">&#39;id&#39;</span><span class=\"mtk1\">,</span><span class=\"mtk8\">&#39;movie decription&#39;</span><span class=\"mtk1\">], </span><span class=\"mtk12\">axis</span><span class=\"mtk1\">=</span><span class=\"mtk7\">1</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>I tried first with applying logistic regression and one vs rest classifier.</p>\n<h3 id=\"what-is-onevsrestclassifier\" style=\"position:relative;\"><a href=\"#what-is-onevsrestclassifier\" aria-label=\"what is onevsrestclassifier permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is OneVsRestClassifier??</h3>\n<p>OneVsRestClassifier strategy splits a multi-class classification into one binary classification problem per class.\nOneVsRestClassifier is when we want to do multi-class or multilabel classification, and its strategy consists of fitting one classifier per class. For each classifier, the class is fitted against all the other classes. </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\"># Using pipeline for applying logistic regression and one vs rest classifier</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LogReg_pipeline = Pipeline([</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                (</span><span class=\"mtk8\">&#39;clf&#39;</span><span class=\"mtk1\">, OneVsRestClassifier(LogisticRegression(</span><span class=\"mtk12\">solver</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&#39;sag&#39;</span><span class=\"mtk1\">), </span><span class=\"mtk12\">n_jobs</span><span class=\"mtk1\">=-</span><span class=\"mtk7\">1</span><span class=\"mtk1\">)),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            ])</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> category </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> categories:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    printmd(</span><span class=\"mtk8\">&#39;**Processing </span><span class=\"mtk4\">{}</span><span class=\"mtk8\"> comments...**&#39;</span><span class=\"mtk1\">.format(category))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk3\"># Training logistic regression model on train data</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    LogReg_pipeline.fit(x_train, train[category])</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk3\"># calculating test accuracy</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    prediction = LogReg_pipeline.predict(x_test)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk11\">print</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;Test accuracy is </span><span class=\"mtk4\">{}</span><span class=\"mtk8\">&#39;</span><span class=\"mtk1\">.format(accuracy_score(test[category], prediction)))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk11\">print</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;</span><span class=\"mtk6\">\\n</span><span class=\"mtk8\">&quot;</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>Next, I tried with BinaryRelevance</p>\n<h3 id=\"what-is-binaryrelevance\" style=\"position:relative;\"><a href=\"#what-is-binaryrelevance\" aria-label=\"what is binaryrelevance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is BinaryRelevance?</h3>\n<p>It is a simple technique which treats each label as a separate single class classification problem.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\"># using binary relevance</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> skmultilearn.problem_transform </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> BinaryRelevance</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.naive_bayes </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> GaussianNB</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># initialize binary relevance multi-label classifier</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># with a gaussian naive bayes base classifier</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier = BinaryRelevance(GaussianNB())</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># train</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier.fit(x_train, y_train)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># predict</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">predictions = classifier.predict(x_test)</span></span></code></pre>\n<p>Next, I tried using ClassifierChain.</p>\n<h3 id=\"what-is-classifierchain\" style=\"position:relative;\"><a href=\"#what-is-classifierchain\" aria-label=\"what is classifierchain permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is ClassifierChain?</h3>\n<p>It is almost similar to BinaryRelevance, here the first classifier is trained just on the input data, and then each next classifier is trained on the input space and all the previous classifiers in the chain.  </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> skmultilearn.problem_transform </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> ClassifierChain</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> sklearn.linear_model </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> LogisticRegression</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># initialize classifier chains multi-label classifier</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier = ClassifierChain(LogisticRegression())</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># Training logistic regression model on train data</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier.fit(x_train, y_train)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># predict</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">predictions = classifier.predict(x_test)</span></span></code></pre>\n<p>Next, I tried using Label Powerset.</p>\n<h3 id=\"what-is-labelpowerset\" style=\"position:relative;\"><a href=\"#what-is-labelpowerset\" aria-label=\"what is labelpowerset permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is LabelPowerset?</h3>\n<p>Here we transform the problem into a multi-class problem with one multi-class classifier is trained on all unique label combinations found in the training data.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> skmultilearn.problem_transform </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> LabelPowerset</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># initialize label powerset multi-label classifier</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier = LabelPowerset(LogisticRegression())</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># train</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">classifier.fit(x_train, y_train)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\"># predict</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">predictions = classifier.predict(x_test)</span></span></code></pre>\n<p>Please refer my notebook multilabel<em>nlp</em>classifier.ipynb from my repo for more details.</p>\n<h2 id=\"improvement\" style=\"position:relative;\"><a href=\"#improvement\" aria-label=\"improvement permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Improvement:</h2>\n<ol>\n<li>More feature engineering and data to avoid this overfitting and make more efficient pipeline</li>\n<li>If we collect more data, deep learning and state of the art algorithms like BERT can help us to leverage the efficiency of the model.</li>\n</ol>\n<h2 id=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary:</h2>\n<ul>\n<li>We have learnt how to collect data by web scraping and tools to perform the same.</li>\n<li>We completed the modelling techniques on in numerical data</li>\n<li>We prepared the label data to be model fed ready</li>\n<li>We learnt how different ML techniques could be applied to text data and build a multilabel classifier.</li>\n</ul>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk6 { color: #D7BA7D; }\n</style>","frontmatter":{"date":"October 09, 2020","updated_date":null,"title":" Full data science pipeline implementation","tags":["DataScience","Python","Web scraping","NLP","Machine learning"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/5a2492e69b5cbb1c2f5bb0a3d4ca9fc2/58556/ds.webp","srcSet":"/static/5a2492e69b5cbb1c2f5bb0a3d4ca9fc2/61e93/ds.webp 200w,\n/static/5a2492e69b5cbb1c2f5bb0a3d4ca9fc2/1f5c5/ds.webp 400w,\n/static/5a2492e69b5cbb1c2f5bb0a3d4ca9fc2/58556/ds.webp 800w,\n/static/5a2492e69b5cbb1c2f5bb0a3d4ca9fc2/df6a9/ds.webp 1125w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rinki Nag","github":"eaglewarrior","avatar":null}}}}]}},"pageContext":{"tag":"NLP"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}