├── LICENSE ├── README.md └── online_news_popularity_for_course ├── README.md ├── generate_online_news_for_course.ipynb └── online_news_popularity_for_course.csv /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # open-datasets 2 | A collection of open datasets 3 | -------------------------------------------------------------------------------- /online_news_popularity_for_course/README.md: -------------------------------------------------------------------------------- 1 | # Online News Popularity (modified for ML courses) 2 | 3 | This is a slightly modified version of the OnlineNewsPopularity dataset available on UC Irvine's Machine Learning Repository at: https://archive.ics.uci.edu/ml/datasets/Online+News+Popularity 4 | 5 | It was modified for the purpose of using it in Machine Learning courses: 6 | * The `url` column contained only URLs of format `"https://mashable.com/{year}/{month}/{day}/{slug}/"`. It was replaced with 2 columns: 7 | * `date` with format `"{year}-{month}-{day}` 8 | * `slug` 9 | * The `weekday_is_*` columns were replaced with a single `weekday` column with values ranging from 0 (Monday) to 6 (Sunday). This was done to illustrate how to encode integer categorical columns. 10 | * Similarly, the `data_channel_is_*` columns were replaced with a single `data_channel` column with values `"Lifestyle"`, `"Entertainment"`, `"Business"`, `"Social media"`, `"Technology"` and `"World"`, to illustrate text categorical columns. 11 | * The `num_*` columns were renamed to `n_*` for consistency. 12 | * The `shares` column was replaced with a `n_shares_percentile` column containing the corresponding percentiles (i.e., assuming `df` is a Pandas dataframen containing the dataset, this column is `df["n_shares_percentile"] = df["shares"].rank() / len(df)`). 13 | * The `self_reference_avg_sharess` column was renamed to `self_reference_avg_shares`, as it was presumably a typo. 14 | 15 | The [generate_online_news_for_course.ipynb](generate_online_news_for_course.ipynb) notebook contains the code that converts the original dataset into this dataset. 16 | 17 | The objective is to build a model that can predict the `n_shares_percentile` column based on some or all of the other columns. 18 | 19 | Below is the information regarding the original dataset (from UCI's website). 20 | 21 | ---- 22 | 23 | 1. Title: Online News Popularity 24 | 25 | 2. Source Information 26 | -- Creators: Kelwin Fernandes (kafc ‘@’ inesctec.pt, kelwinfc ’@’ gmail.com), 27 | Pedro Vinagre (pedro.vinagre.sousa ’@’ gmail.com) and 28 | Pedro Sernadela 29 | -- Donor: Kelwin Fernandes (kafc ’@’ inesctec.pt, kelwinfc '@' gmail.com) 30 | -- Date: May, 2015 31 | 32 | 3. Past Usage: 33 | 1. K. Fernandes, P. Vinagre and P. Cortez. A Proactive Intelligent Decision 34 | Support System for Predicting the Popularity of Online News. Proceedings 35 | of the 17th EPIA 2015 - Portuguese Conference on Artificial Intelligence, 36 | September, Coimbra, Portugal. 37 | 38 | -- Results: 39 | -- Binary classification as popular vs unpopular using a decision 40 | threshold of 1400 social interactions. 41 | -- Experiments with different models: Random Forest (best model), 42 | Adaboost, SVM, KNN and Naïve Bayes. 43 | -- Recorded 67% of accuracy and 0.73 of AUC. 44 | - Predicted attribute: online news popularity (boolean) 45 | 46 | 4. Relevant Information: 47 | -- The articles were published by Mashable (www.mashable.com) and their 48 | content as the rights to reproduce it belongs to them. Hence, this 49 | dataset does not share the original content but some statistics 50 | associated with it. The original content can be publicly accessed and 51 | retrieved using the provided urls. 52 | -- Acquisition date: January 8, 2015 53 | -- The estimated relative performance values were estimated by the authors 54 | using a Random Forest classifier and a rolling windows as assessment 55 | method. See their article for more details on how the relative 56 | performance values were set. 57 | 58 | 5. Number of Instances: 39797 59 | 60 | 6. Number of Attributes: 61 (58 predictive attributes, 2 non-predictive, 61 | 1 goal field) 62 | 63 | 7. Attribute Information: 64 | 0. url: URL of the article 65 | 1. timedelta: Days between the article publication and 66 | the dataset acquisition 67 | 2. n_tokens_title: Number of words in the title 68 | 3. n_tokens_content: Number of words in the content 69 | 4. n_unique_tokens: Rate of unique words in the content 70 | 5. n_non_stop_words: Rate of non-stop words in the content 71 | 6. n_non_stop_unique_tokens: Rate of unique non-stop words in the 72 | content 73 | 7. num_hrefs: Number of links 74 | 8. num_self_hrefs: Number of links to other articles 75 | published by Mashable 76 | 9. num_imgs: Number of images 77 | 10. num_videos: Number of videos 78 | 11. average_token_length: Average length of the words in the 79 | content 80 | 12. num_keywords: Number of keywords in the metadata 81 | 13. data_channel_is_lifestyle: Is data channel 'Lifestyle'? 82 | 14. data_channel_is_entertainment: Is data channel 'Entertainment'? 83 | 15. data_channel_is_bus: Is data channel 'Business'? 84 | 16. data_channel_is_socmed: Is data channel 'Social Media'? 85 | 17. data_channel_is_tech: Is data channel 'Tech'? 86 | 18. data_channel_is_world: Is data channel 'World'? 87 | 19. kw_min_min: Worst keyword (min. shares) 88 | 20. kw_max_min: Worst keyword (max. shares) 89 | 21. kw_avg_min: Worst keyword (avg. shares) 90 | 22. kw_min_max: Best keyword (min. shares) 91 | 23. kw_max_max: Best keyword (max. shares) 92 | 24. kw_avg_max: Best keyword (avg. shares) 93 | 25. kw_min_avg: Avg. keyword (min. shares) 94 | 26. kw_max_avg: Avg. keyword (max. shares) 95 | 27. kw_avg_avg: Avg. keyword (avg. shares) 96 | 28. self_reference_min_shares: Min. shares of referenced articles in 97 | Mashable 98 | 29. self_reference_max_shares: Max. shares of referenced articles in 99 | Mashable 100 | 30. self_reference_avg_sharess: Avg. shares of referenced articles in 101 | Mashable 102 | 31. weekday_is_monday: Was the article published on a Monday? 103 | 32. weekday_is_tuesday: Was the article published on a Tuesday? 104 | 33. weekday_is_wednesday: Was the article published on a Wednesday? 105 | 34. weekday_is_thursday: Was the article published on a Thursday? 106 | 35. weekday_is_friday: Was the article published on a Friday? 107 | 36. weekday_is_saturday: Was the article published on a Saturday? 108 | 37. weekday_is_sunday: Was the article published on a Sunday? 109 | 38. is_weekend: Was the article published on the weekend? 110 | 39. LDA_00: Closeness to LDA topic 0 111 | 40. LDA_01: Closeness to LDA topic 1 112 | 41. LDA_02: Closeness to LDA topic 2 113 | 42. LDA_03: Closeness to LDA topic 3 114 | 43. LDA_04: Closeness to LDA topic 4 115 | 44. global_subjectivity: Text subjectivity 116 | 45. global_sentiment_polarity: Text sentiment polarity 117 | 46. global_rate_positive_words: Rate of positive words in the content 118 | 47. global_rate_negative_words: Rate of negative words in the content 119 | 48. rate_positive_words: Rate of positive words among non-neutral 120 | tokens 121 | 49. rate_negative_words: Rate of negative words among non-neutral 122 | tokens 123 | 50. avg_positive_polarity: Avg. polarity of positive words 124 | 51. min_positive_polarity: Min. polarity of positive words 125 | 52. max_positive_polarity: Max. polarity of positive words 126 | 53. avg_negative_polarity: Avg. polarity of negative words 127 | 54. min_negative_polarity: Min. polarity of negative words 128 | 55. max_negative_polarity: Max. polarity of negative words 129 | 56. title_subjectivity: Title subjectivity 130 | 57. title_sentiment_polarity: Title polarity 131 | 58. abs_title_subjectivity: Absolute subjectivity level 132 | 59. abs_title_sentiment_polarity: Absolute polarity level 133 | 60. shares: Number of shares (target) 134 | 135 | 8. Missing Attribute Values: None 136 | 137 | 9. Class Distribution: the class value (shares) is continuously valued. We 138 | transformed the task into a binary task using a decision 139 | threshold of 1400. 140 | ``` 141 | Shares Value Range: Number of Instances in Range: 142 | < 1400 18490 143 | >= 1400 21154 144 | 145 | 146 | Summary Statistics: 147 | Feature Min Max Mean SD 148 | timedelta 8.0000 731.0000 354.5305 214.1611 149 | n_tokens_title 2.0000 23.0000 10.3987 2.1140 150 | n_tokens_content 0.0000 8474.0000 546.5147 471.1016 151 | n_unique_tokens 0.0000 701.0000 0.5482 3.5207 152 | n_non_stop_words 0.0000 1042.0000 0.9965 5.2312 153 | n_non_stop_unique_tokens 0.0000 650.0000 0.6892 3.2648 154 | num_hrefs 0.0000 304.0000 10.8837 11.3319 155 | num_self_hrefs 0.0000 116.0000 3.2936 3.8551 156 | num_imgs 0.0000 128.0000 4.5441 8.3093 157 | num_videos 0.0000 91.0000 1.2499 4.1078 158 | average_token_length 0.0000 8.0415 4.5482 0.8444 159 | num_keywords 1.0000 10.0000 7.2238 1.9091 160 | data_channel_is_lifestyle 0.0000 1.0000 0.0529 0.2239 161 | data_channel_is_entertainment 0.0000 1.0000 0.1780 0.3825 162 | data_channel_is_bus 0.0000 1.0000 0.1579 0.3646 163 | data_channel_is_socmed 0.0000 1.0000 0.0586 0.2349 164 | data_channel_is_tech 0.0000 1.0000 0.1853 0.3885 165 | data_channel_is_world 0.0000 1.0000 0.2126 0.4091 166 | kw_min_min -1.0000 377.0000 26.1068 69.6323 167 | kw_max_min 0.0000 298400.0000 1153.9517 3857.9422 168 | kw_avg_min -1.0000 42827.8571 312.3670 620.7761 169 | kw_min_max 0.0000 843300.0000 13612.3541 57985.2980 170 | kw_max_max 0.0000 843300.0000 752324.0667 214499.4242 171 | kw_avg_max 0.0000 843300.0000 259281.9381 135100.5433 172 | kw_min_avg -1.0000 3613.0398 1117.1466 1137.4426 173 | kw_max_avg 0.0000 298400.0000 5657.2112 6098.7950 174 | kw_avg_avg 0.0000 43567.6599 3135.8586 1318.1338 175 | self_reference_min_shares 0.0000 843300.0000 3998.7554 19738.4216 176 | self_reference_max_shares 0.0000 843300.0000 10329.2127 41027.0592 177 | self_reference_avg_sharess 0.0000 843300.0000 6401.6976 24211.0269 178 | weekday_is_monday 0.0000 1.0000 0.1680 0.3739 179 | weekday_is_tuesday 0.0000 1.0000 0.1864 0.3894 180 | weekday_is_wednesday 0.0000 1.0000 0.1875 0.3903 181 | weekday_is_thursday 0.0000 1.0000 0.1833 0.3869 182 | weekday_is_friday 0.0000 1.0000 0.1438 0.3509 183 | weekday_is_saturday 0.0000 1.0000 0.0619 0.2409 184 | weekday_is_sunday 0.0000 1.0000 0.0690 0.2535 185 | is_weekend 0.0000 1.0000 0.1309 0.3373 186 | LDA_00 0.0000 0.9270 0.1846 0.2630 187 | LDA_01 0.0000 0.9259 0.1413 0.2197 188 | LDA_02 0.0000 0.9200 0.2163 0.2821 189 | LDA_03 0.0000 0.9265 0.2238 0.2952 190 | LDA_04 0.0000 0.9272 0.2340 0.2892 191 | global_subjectivity 0.0000 1.0000 0.4434 0.1167 192 | global_sentiment_polarity -0.3937 0.7278 0.1193 0.0969 193 | global_rate_positive_words 0.0000 0.1555 0.0396 0.0174 194 | global_rate_negative_words 0.0000 0.1849 0.0166 0.0108 195 | rate_positive_words 0.0000 1.0000 0.6822 0.1902 196 | rate_negative_words 0.0000 1.0000 0.2879 0.1562 197 | avg_positive_polarity 0.0000 1.0000 0.3538 0.1045 198 | min_positive_polarity 0.0000 1.0000 0.0954 0.0713 199 | max_positive_polarity 0.0000 1.0000 0.7567 0.2478 200 | avg_negative_polarity -1.0000 0.0000 -0.2595 0.1277 201 | min_negative_polarity -1.0000 0.0000 -0.5219 0.2903 202 | max_negative_polarity -1.0000 0.0000 -0.1075 0.0954 203 | title_subjectivity 0.0000 1.0000 0.2824 0.3242 204 | title_sentiment_polarity -1.0000 1.0000 0.0714 0.2654 205 | abs_title_subjectivity 0.0000 0.5000 0.3418 0.1888 206 | abs_title_sentiment_polarity 0.0000 1.0000 0.1561 0.2263 207 | ``` 208 | 209 | Citation Request: 210 | 211 | Please include this citation if you plan to use this database: 212 | 213 | K. Fernandes, P. Vinagre and P. Cortez. A Proactive Intelligent Decision 214 | Support System for Predicting the Popularity of Online News. Proceedings 215 | of the 17th EPIA 2015 - Portuguese Conference on Artificial Intelligence, 216 | September, Coimbra, Portugal. 217 | -------------------------------------------------------------------------------- /online_news_popularity_for_course/generate_online_news_for_course.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import tensorflow as tf\n", 11 | "import numpy as np\n", 12 | "import matplotlib.pyplot as plt" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "df = pd.read_csv(\"OnlineNewsPopularity.csv\", skipinitialspace=True)" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 3, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "name": "stdout", 31 | "output_type": "stream", 32 | "text": [ 33 | "\n", 34 | "RangeIndex: 39644 entries, 0 to 39643\n", 35 | "Data columns (total 61 columns):\n", 36 | "url 39644 non-null object\n", 37 | "timedelta 39644 non-null float64\n", 38 | "n_tokens_title 39644 non-null float64\n", 39 | "n_tokens_content 39644 non-null float64\n", 40 | "n_unique_tokens 39644 non-null float64\n", 41 | "n_non_stop_words 39644 non-null float64\n", 42 | "n_non_stop_unique_tokens 39644 non-null float64\n", 43 | "num_hrefs 39644 non-null float64\n", 44 | "num_self_hrefs 39644 non-null float64\n", 45 | "num_imgs 39644 non-null float64\n", 46 | "num_videos 39644 non-null float64\n", 47 | "average_token_length 39644 non-null float64\n", 48 | "num_keywords 39644 non-null float64\n", 49 | "data_channel_is_lifestyle 39644 non-null float64\n", 50 | "data_channel_is_entertainment 39644 non-null float64\n", 51 | "data_channel_is_bus 39644 non-null float64\n", 52 | "data_channel_is_socmed 39644 non-null float64\n", 53 | "data_channel_is_tech 39644 non-null float64\n", 54 | "data_channel_is_world 39644 non-null float64\n", 55 | "kw_min_min 39644 non-null float64\n", 56 | "kw_max_min 39644 non-null float64\n", 57 | "kw_avg_min 39644 non-null float64\n", 58 | "kw_min_max 39644 non-null float64\n", 59 | "kw_max_max 39644 non-null float64\n", 60 | "kw_avg_max 39644 non-null float64\n", 61 | "kw_min_avg 39644 non-null float64\n", 62 | "kw_max_avg 39644 non-null float64\n", 63 | "kw_avg_avg 39644 non-null float64\n", 64 | "self_reference_min_shares 39644 non-null float64\n", 65 | "self_reference_max_shares 39644 non-null float64\n", 66 | "self_reference_avg_sharess 39644 non-null float64\n", 67 | "weekday_is_monday 39644 non-null float64\n", 68 | "weekday_is_tuesday 39644 non-null float64\n", 69 | "weekday_is_wednesday 39644 non-null float64\n", 70 | "weekday_is_thursday 39644 non-null float64\n", 71 | "weekday_is_friday 39644 non-null float64\n", 72 | "weekday_is_saturday 39644 non-null float64\n", 73 | "weekday_is_sunday 39644 non-null float64\n", 74 | "is_weekend 39644 non-null float64\n", 75 | "LDA_00 39644 non-null float64\n", 76 | "LDA_01 39644 non-null float64\n", 77 | "LDA_02 39644 non-null float64\n", 78 | "LDA_03 39644 non-null float64\n", 79 | "LDA_04 39644 non-null float64\n", 80 | "global_subjectivity 39644 non-null float64\n", 81 | "global_sentiment_polarity 39644 non-null float64\n", 82 | "global_rate_positive_words 39644 non-null float64\n", 83 | "global_rate_negative_words 39644 non-null float64\n", 84 | "rate_positive_words 39644 non-null float64\n", 85 | "rate_negative_words 39644 non-null float64\n", 86 | "avg_positive_polarity 39644 non-null float64\n", 87 | "min_positive_polarity 39644 non-null float64\n", 88 | "max_positive_polarity 39644 non-null float64\n", 89 | "avg_negative_polarity 39644 non-null float64\n", 90 | "min_negative_polarity 39644 non-null float64\n", 91 | "max_negative_polarity 39644 non-null float64\n", 92 | "title_subjectivity 39644 non-null float64\n", 93 | "title_sentiment_polarity 39644 non-null float64\n", 94 | "abs_title_subjectivity 39644 non-null float64\n", 95 | "abs_title_sentiment_polarity 39644 non-null float64\n", 96 | "shares 39644 non-null int64\n", 97 | "dtypes: float64(59), int64(1), object(1)\n", 98 | "memory usage: 18.5+ MB\n" 99 | ] 100 | } 101 | ], 102 | "source": [ 103 | "df.info()" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 4, 109 | "metadata": {}, 110 | "outputs": [], 111 | "source": [ 112 | "import re\n", 113 | "REGEX = re.compile(\"http://mashable.com/([0-9]{4}/[0-9]{2}/[0-9]{2})/([-a-z0-9_]+)/\")\n", 114 | "def parse_url(url):\n", 115 | " date, slug = REGEX.findall(url)[0]\n", 116 | " date = date.replace(\"/\", \"-\")\n", 117 | " return date, slug" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 5, 123 | "metadata": {}, 124 | "outputs": [], 125 | "source": [ 126 | "parsed = [parse_url(url) for url in df[\"url\"]]" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 6, 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": [ 135 | "dates = [rec[0] for rec in parsed]\n", 136 | "slugs = [rec[1] for rec in parsed]" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 7, 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "df[\"date\"] = dates\n", 146 | "df[\"slug\"] = slugs" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 8, 152 | "metadata": {}, 153 | "outputs": [], 154 | "source": [ 155 | "df = df.drop(\"url\", axis=1)" 156 | ] 157 | }, 158 | { 159 | "cell_type": "code", 160 | "execution_count": 9, 161 | "metadata": {}, 162 | "outputs": [], 163 | "source": [ 164 | "weekdays = df[[\n", 165 | " \"weekday_is_monday\",\n", 166 | " \"weekday_is_tuesday\",\n", 167 | " \"weekday_is_wednesday\",\n", 168 | " \"weekday_is_thursday\",\n", 169 | " \"weekday_is_friday\",\n", 170 | " \"weekday_is_saturday\",\n", 171 | " \"weekday_is_sunday\",\n", 172 | "]].values\n", 173 | "df[\"weekday\"] = weekdays.argmax(axis=1)\n", 174 | "df = df.drop([\n", 175 | " \"weekday_is_monday\",\n", 176 | " \"weekday_is_tuesday\",\n", 177 | " \"weekday_is_wednesday\",\n", 178 | " \"weekday_is_thursday\",\n", 179 | " \"weekday_is_friday\",\n", 180 | " \"weekday_is_saturday\",\n", 181 | " \"weekday_is_sunday\",\n", 182 | "], axis=1)" 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "execution_count": 10, 188 | "metadata": {}, 189 | "outputs": [], 190 | "source": [ 191 | "data_channels = df[[\n", 192 | " \"data_channel_is_lifestyle\",\n", 193 | " \"data_channel_is_entertainment\",\n", 194 | " \"data_channel_is_bus\",\n", 195 | " \"data_channel_is_socmed\",\n", 196 | " \"data_channel_is_tech\",\n", 197 | " \"data_channel_is_world\",\n", 198 | "]].values\n", 199 | "others = (data_channels.sum(axis=1) == 0)\n", 200 | "all_data_channels = np.array([\"Lifestyle\", \"Entertainment\", \"Business\", \"Social media\", \"Technology\", \"World\"])\n", 201 | "data_channels = all_data_channels[data_channels.argmax(axis=1)]\n", 202 | "data_channels[others] = \"Other\"\n", 203 | "df[\"data_channel\"] = data_channels\n", 204 | "df = df.drop([\n", 205 | " \"data_channel_is_lifestyle\",\n", 206 | " \"data_channel_is_entertainment\",\n", 207 | " \"data_channel_is_bus\",\n", 208 | " \"data_channel_is_socmed\",\n", 209 | " \"data_channel_is_tech\",\n", 210 | " \"data_channel_is_world\",\n", 211 | "], axis=1)" 212 | ] 213 | }, 214 | { 215 | "cell_type": "code", 216 | "execution_count": 11, 217 | "metadata": {}, 218 | "outputs": [], 219 | "source": [ 220 | "number_cols = [col for col in df.columns if col.startswith(\"num_\")]\n", 221 | "renaming = {col: \"n\" + col[3:] for col in number_cols}\n", 222 | "renaming[\"self_reference_avg_sharess\"] = \"self_reference_avg_shares\"\n", 223 | "renaming[\"shares\"] = \"n_shares\"\n", 224 | "df = df.rename(columns=renaming)" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 12, 230 | "metadata": {}, 231 | "outputs": [ 232 | { 233 | "data": { 234 | "text/html": [ 235 | "
\n", 236 | "\n", 249 | "\n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | "
timedeltan_tokens_titlen_tokens_contentn_unique_tokensn_non_stop_wordsn_non_stop_unique_tokensn_hrefsn_self_hrefsn_imgsn_videos...max_negative_polaritytitle_subjectivitytitle_sentiment_polarityabs_title_subjectivityabs_title_sentiment_polarityn_sharesdateslugweekdaydata_channel
0731.012.0219.00.6635941.00.8153854.02.01.00.0...-0.2000000.500000-0.1875000.0000000.1875005932013-01-07amazon-instant-video-browser0Entertainment
1731.09.0255.00.6047431.00.7919463.01.01.00.0...-0.1000000.0000000.0000000.5000000.0000007112013-01-07ap-samsung-sponsored-tweets0Business
2731.09.0211.00.5751301.00.6638663.01.01.00.0...-0.1333330.0000000.0000000.5000000.00000015002013-01-07apple-40-billion-app-downloads0Business
3731.09.0531.00.5037881.00.6656359.00.01.00.0...-0.1666670.0000000.0000000.5000000.00000012002013-01-07astronaut-notre-dame-bcs0Entertainment
4731.013.01072.00.4156461.00.54089019.019.020.00.0...-0.0500000.4545450.1363640.0454550.1363645052013-01-07att-u-verse-apps0Technology
..................................................................
396398.011.0346.00.5290521.00.6847839.07.01.01.0...-0.1250000.1000000.0000000.4000000.00000018002014-12-27samsung-app-autism2Technology
396408.012.0328.00.6962961.00.8850579.07.03.048.0...-0.1000000.3000001.0000000.2000001.00000019002014-12-27seth-rogen-james-franco-will-live-tweet-the-in...2Social media
396418.010.0442.00.5163551.00.64412824.01.012.01.0...-0.1666670.4545450.1363640.0454550.13636419002014-12-27son-pays-off-mortgage2Other
396428.06.0682.00.5394931.00.69266110.01.01.00.0...-0.0125000.0000000.0000000.5000000.00000011002014-12-27ukraine-blasts2World
396438.010.0157.00.7019871.00.8461541.01.00.02.0...-0.2000000.3333330.2500000.1666670.25000013002014-12-27youtube-channels-20152Entertainment
\n", 543 | "

39644 rows × 51 columns

\n", 544 | "
" 545 | ], 546 | "text/plain": [ 547 | " timedelta n_tokens_title n_tokens_content n_unique_tokens \\\n", 548 | "0 731.0 12.0 219.0 0.663594 \n", 549 | "1 731.0 9.0 255.0 0.604743 \n", 550 | "2 731.0 9.0 211.0 0.575130 \n", 551 | "3 731.0 9.0 531.0 0.503788 \n", 552 | "4 731.0 13.0 1072.0 0.415646 \n", 553 | "... ... ... ... ... \n", 554 | "39639 8.0 11.0 346.0 0.529052 \n", 555 | "39640 8.0 12.0 328.0 0.696296 \n", 556 | "39641 8.0 10.0 442.0 0.516355 \n", 557 | "39642 8.0 6.0 682.0 0.539493 \n", 558 | "39643 8.0 10.0 157.0 0.701987 \n", 559 | "\n", 560 | " n_non_stop_words n_non_stop_unique_tokens n_hrefs n_self_hrefs \\\n", 561 | "0 1.0 0.815385 4.0 2.0 \n", 562 | "1 1.0 0.791946 3.0 1.0 \n", 563 | "2 1.0 0.663866 3.0 1.0 \n", 564 | "3 1.0 0.665635 9.0 0.0 \n", 565 | "4 1.0 0.540890 19.0 19.0 \n", 566 | "... ... ... ... ... \n", 567 | "39639 1.0 0.684783 9.0 7.0 \n", 568 | "39640 1.0 0.885057 9.0 7.0 \n", 569 | "39641 1.0 0.644128 24.0 1.0 \n", 570 | "39642 1.0 0.692661 10.0 1.0 \n", 571 | "39643 1.0 0.846154 1.0 1.0 \n", 572 | "\n", 573 | " n_imgs n_videos ... max_negative_polarity title_subjectivity \\\n", 574 | "0 1.0 0.0 ... -0.200000 0.500000 \n", 575 | "1 1.0 0.0 ... -0.100000 0.000000 \n", 576 | "2 1.0 0.0 ... -0.133333 0.000000 \n", 577 | "3 1.0 0.0 ... -0.166667 0.000000 \n", 578 | "4 20.0 0.0 ... -0.050000 0.454545 \n", 579 | "... ... ... ... ... ... \n", 580 | "39639 1.0 1.0 ... -0.125000 0.100000 \n", 581 | "39640 3.0 48.0 ... -0.100000 0.300000 \n", 582 | "39641 12.0 1.0 ... -0.166667 0.454545 \n", 583 | "39642 1.0 0.0 ... -0.012500 0.000000 \n", 584 | "39643 0.0 2.0 ... -0.200000 0.333333 \n", 585 | "\n", 586 | " title_sentiment_polarity abs_title_subjectivity \\\n", 587 | "0 -0.187500 0.000000 \n", 588 | "1 0.000000 0.500000 \n", 589 | "2 0.000000 0.500000 \n", 590 | "3 0.000000 0.500000 \n", 591 | "4 0.136364 0.045455 \n", 592 | "... ... ... \n", 593 | "39639 0.000000 0.400000 \n", 594 | "39640 1.000000 0.200000 \n", 595 | "39641 0.136364 0.045455 \n", 596 | "39642 0.000000 0.500000 \n", 597 | "39643 0.250000 0.166667 \n", 598 | "\n", 599 | " abs_title_sentiment_polarity n_shares date \\\n", 600 | "0 0.187500 593 2013-01-07 \n", 601 | "1 0.000000 711 2013-01-07 \n", 602 | "2 0.000000 1500 2013-01-07 \n", 603 | "3 0.000000 1200 2013-01-07 \n", 604 | "4 0.136364 505 2013-01-07 \n", 605 | "... ... ... ... \n", 606 | "39639 0.000000 1800 2014-12-27 \n", 607 | "39640 1.000000 1900 2014-12-27 \n", 608 | "39641 0.136364 1900 2014-12-27 \n", 609 | "39642 0.000000 1100 2014-12-27 \n", 610 | "39643 0.250000 1300 2014-12-27 \n", 611 | "\n", 612 | " slug weekday \\\n", 613 | "0 amazon-instant-video-browser 0 \n", 614 | "1 ap-samsung-sponsored-tweets 0 \n", 615 | "2 apple-40-billion-app-downloads 0 \n", 616 | "3 astronaut-notre-dame-bcs 0 \n", 617 | "4 att-u-verse-apps 0 \n", 618 | "... ... ... \n", 619 | "39639 samsung-app-autism 2 \n", 620 | "39640 seth-rogen-james-franco-will-live-tweet-the-in... 2 \n", 621 | "39641 son-pays-off-mortgage 2 \n", 622 | "39642 ukraine-blasts 2 \n", 623 | "39643 youtube-channels-2015 2 \n", 624 | "\n", 625 | " data_channel \n", 626 | "0 Entertainment \n", 627 | "1 Business \n", 628 | "2 Business \n", 629 | "3 Entertainment \n", 630 | "4 Technology \n", 631 | "... ... \n", 632 | "39639 Technology \n", 633 | "39640 Social media \n", 634 | "39641 Other \n", 635 | "39642 World \n", 636 | "39643 Entertainment \n", 637 | "\n", 638 | "[39644 rows x 51 columns]" 639 | ] 640 | }, 641 | "execution_count": 12, 642 | "metadata": {}, 643 | "output_type": "execute_result" 644 | } 645 | ], 646 | "source": [ 647 | "df" 648 | ] 649 | }, 650 | { 651 | "cell_type": "code", 652 | "execution_count": 13, 653 | "metadata": {}, 654 | "outputs": [ 655 | { 656 | "data": { 657 | "text/plain": [ 658 | "['date',\n", 659 | " 'weekday',\n", 660 | " 'data_channel',\n", 661 | " 'slug',\n", 662 | " 'timedelta',\n", 663 | " 'n_tokens_title',\n", 664 | " 'n_tokens_content',\n", 665 | " 'n_unique_tokens',\n", 666 | " 'n_non_stop_words',\n", 667 | " 'n_non_stop_unique_tokens',\n", 668 | " 'n_hrefs',\n", 669 | " 'n_self_hrefs',\n", 670 | " 'n_imgs',\n", 671 | " 'n_videos',\n", 672 | " 'average_token_length',\n", 673 | " 'n_keywords',\n", 674 | " 'kw_min_min',\n", 675 | " 'kw_max_min',\n", 676 | " 'kw_avg_min',\n", 677 | " 'kw_min_max',\n", 678 | " 'kw_max_max',\n", 679 | " 'kw_avg_max',\n", 680 | " 'kw_min_avg',\n", 681 | " 'kw_max_avg',\n", 682 | " 'kw_avg_avg',\n", 683 | " 'self_reference_min_shares',\n", 684 | " 'self_reference_max_shares',\n", 685 | " 'self_reference_avg_shares',\n", 686 | " 'is_weekend',\n", 687 | " 'LDA_00',\n", 688 | " 'LDA_01',\n", 689 | " 'LDA_02',\n", 690 | " 'LDA_03',\n", 691 | " 'LDA_04',\n", 692 | " 'global_subjectivity',\n", 693 | " 'global_sentiment_polarity',\n", 694 | " 'global_rate_positive_words',\n", 695 | " 'global_rate_negative_words',\n", 696 | " 'rate_positive_words',\n", 697 | " 'rate_negative_words',\n", 698 | " 'avg_positive_polarity',\n", 699 | " 'min_positive_polarity',\n", 700 | " 'max_positive_polarity',\n", 701 | " 'avg_negative_polarity',\n", 702 | " 'min_negative_polarity',\n", 703 | " 'max_negative_polarity',\n", 704 | " 'title_subjectivity',\n", 705 | " 'title_sentiment_polarity',\n", 706 | " 'abs_title_subjectivity',\n", 707 | " 'abs_title_sentiment_polarity',\n", 708 | " 'n_shares']" 709 | ] 710 | }, 711 | "execution_count": 13, 712 | "metadata": {}, 713 | "output_type": "execute_result" 714 | } 715 | ], 716 | "source": [ 717 | "columns = list(df.columns)\n", 718 | "columns = [\"date\", \"weekday\", \"data_channel\", \"slug\"] + columns[:-4]\n", 719 | "columns" 720 | ] 721 | }, 722 | { 723 | "cell_type": "code", 724 | "execution_count": 14, 725 | "metadata": {}, 726 | "outputs": [ 727 | { 728 | "data": { 729 | "text/html": [ 730 | "
\n", 731 | "\n", 744 | "\n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | "
dateweekdaydata_channelslugtimedeltan_tokens_titlen_tokens_contentn_unique_tokensn_non_stop_wordsn_non_stop_unique_tokens...min_positive_polaritymax_positive_polarityavg_negative_polaritymin_negative_polaritymax_negative_polaritytitle_subjectivitytitle_sentiment_polarityabs_title_subjectivityabs_title_sentiment_polarityn_shares
02013-01-070Entertainmentamazon-instant-video-browser731.012.0219.00.6635941.00.815385...0.1000000.70-0.350000-0.600-0.2000000.500000-0.1875000.0000000.187500593
12013-01-070Businessap-samsung-sponsored-tweets731.09.0255.00.6047431.00.791946...0.0333330.70-0.118750-0.125-0.1000000.0000000.0000000.5000000.000000711
22013-01-070Businessapple-40-billion-app-downloads731.09.0211.00.5751301.00.663866...0.1000001.00-0.466667-0.800-0.1333330.0000000.0000000.5000000.0000001500
32013-01-070Entertainmentastronaut-notre-dame-bcs731.09.0531.00.5037881.00.665635...0.1363640.80-0.369697-0.600-0.1666670.0000000.0000000.5000000.0000001200
42013-01-070Technologyatt-u-verse-apps731.013.01072.00.4156461.00.540890...0.0333331.00-0.220192-0.500-0.0500000.4545450.1363640.0454550.136364505
..................................................................
396392014-12-272Technologysamsung-app-autism8.011.0346.00.5290521.00.684783...0.1000000.75-0.260000-0.500-0.1250000.1000000.0000000.4000000.0000001800
396402014-12-272Social mediaseth-rogen-james-franco-will-live-tweet-the-in...8.012.0328.00.6962961.00.885057...0.1363640.70-0.211111-0.400-0.1000000.3000001.0000000.2000001.0000001900
396412014-12-272Otherson-pays-off-mortgage8.010.0442.00.5163551.00.644128...0.1363640.50-0.356439-0.800-0.1666670.4545450.1363640.0454550.1363641900
396422014-12-272Worldukraine-blasts8.06.0682.00.5394931.00.692661...0.0625000.50-0.205246-0.500-0.0125000.0000000.0000000.5000000.0000001100
396432014-12-272Entertainmentyoutube-channels-20158.010.0157.00.7019871.00.846154...0.1000000.50-0.200000-0.200-0.2000000.3333330.2500000.1666670.2500001300
\n", 1038 | "

39644 rows × 51 columns

\n", 1039 | "
" 1040 | ], 1041 | "text/plain": [ 1042 | " date weekday data_channel \\\n", 1043 | "0 2013-01-07 0 Entertainment \n", 1044 | "1 2013-01-07 0 Business \n", 1045 | "2 2013-01-07 0 Business \n", 1046 | "3 2013-01-07 0 Entertainment \n", 1047 | "4 2013-01-07 0 Technology \n", 1048 | "... ... ... ... \n", 1049 | "39639 2014-12-27 2 Technology \n", 1050 | "39640 2014-12-27 2 Social media \n", 1051 | "39641 2014-12-27 2 Other \n", 1052 | "39642 2014-12-27 2 World \n", 1053 | "39643 2014-12-27 2 Entertainment \n", 1054 | "\n", 1055 | " slug timedelta \\\n", 1056 | "0 amazon-instant-video-browser 731.0 \n", 1057 | "1 ap-samsung-sponsored-tweets 731.0 \n", 1058 | "2 apple-40-billion-app-downloads 731.0 \n", 1059 | "3 astronaut-notre-dame-bcs 731.0 \n", 1060 | "4 att-u-verse-apps 731.0 \n", 1061 | "... ... ... \n", 1062 | "39639 samsung-app-autism 8.0 \n", 1063 | "39640 seth-rogen-james-franco-will-live-tweet-the-in... 8.0 \n", 1064 | "39641 son-pays-off-mortgage 8.0 \n", 1065 | "39642 ukraine-blasts 8.0 \n", 1066 | "39643 youtube-channels-2015 8.0 \n", 1067 | "\n", 1068 | " n_tokens_title n_tokens_content n_unique_tokens n_non_stop_words \\\n", 1069 | "0 12.0 219.0 0.663594 1.0 \n", 1070 | "1 9.0 255.0 0.604743 1.0 \n", 1071 | "2 9.0 211.0 0.575130 1.0 \n", 1072 | "3 9.0 531.0 0.503788 1.0 \n", 1073 | "4 13.0 1072.0 0.415646 1.0 \n", 1074 | "... ... ... ... ... \n", 1075 | "39639 11.0 346.0 0.529052 1.0 \n", 1076 | "39640 12.0 328.0 0.696296 1.0 \n", 1077 | "39641 10.0 442.0 0.516355 1.0 \n", 1078 | "39642 6.0 682.0 0.539493 1.0 \n", 1079 | "39643 10.0 157.0 0.701987 1.0 \n", 1080 | "\n", 1081 | " n_non_stop_unique_tokens ... min_positive_polarity \\\n", 1082 | "0 0.815385 ... 0.100000 \n", 1083 | "1 0.791946 ... 0.033333 \n", 1084 | "2 0.663866 ... 0.100000 \n", 1085 | "3 0.665635 ... 0.136364 \n", 1086 | "4 0.540890 ... 0.033333 \n", 1087 | "... ... ... ... \n", 1088 | "39639 0.684783 ... 0.100000 \n", 1089 | "39640 0.885057 ... 0.136364 \n", 1090 | "39641 0.644128 ... 0.136364 \n", 1091 | "39642 0.692661 ... 0.062500 \n", 1092 | "39643 0.846154 ... 0.100000 \n", 1093 | "\n", 1094 | " max_positive_polarity avg_negative_polarity min_negative_polarity \\\n", 1095 | "0 0.70 -0.350000 -0.600 \n", 1096 | "1 0.70 -0.118750 -0.125 \n", 1097 | "2 1.00 -0.466667 -0.800 \n", 1098 | "3 0.80 -0.369697 -0.600 \n", 1099 | "4 1.00 -0.220192 -0.500 \n", 1100 | "... ... ... ... \n", 1101 | "39639 0.75 -0.260000 -0.500 \n", 1102 | "39640 0.70 -0.211111 -0.400 \n", 1103 | "39641 0.50 -0.356439 -0.800 \n", 1104 | "39642 0.50 -0.205246 -0.500 \n", 1105 | "39643 0.50 -0.200000 -0.200 \n", 1106 | "\n", 1107 | " max_negative_polarity title_subjectivity title_sentiment_polarity \\\n", 1108 | "0 -0.200000 0.500000 -0.187500 \n", 1109 | "1 -0.100000 0.000000 0.000000 \n", 1110 | "2 -0.133333 0.000000 0.000000 \n", 1111 | "3 -0.166667 0.000000 0.000000 \n", 1112 | "4 -0.050000 0.454545 0.136364 \n", 1113 | "... ... ... ... \n", 1114 | "39639 -0.125000 0.100000 0.000000 \n", 1115 | "39640 -0.100000 0.300000 1.000000 \n", 1116 | "39641 -0.166667 0.454545 0.136364 \n", 1117 | "39642 -0.012500 0.000000 0.000000 \n", 1118 | "39643 -0.200000 0.333333 0.250000 \n", 1119 | "\n", 1120 | " abs_title_subjectivity abs_title_sentiment_polarity n_shares \n", 1121 | "0 0.000000 0.187500 593 \n", 1122 | "1 0.500000 0.000000 711 \n", 1123 | "2 0.500000 0.000000 1500 \n", 1124 | "3 0.500000 0.000000 1200 \n", 1125 | "4 0.045455 0.136364 505 \n", 1126 | "... ... ... ... \n", 1127 | "39639 0.400000 0.000000 1800 \n", 1128 | "39640 0.200000 1.000000 1900 \n", 1129 | "39641 0.045455 0.136364 1900 \n", 1130 | "39642 0.500000 0.000000 1100 \n", 1131 | "39643 0.166667 0.250000 1300 \n", 1132 | "\n", 1133 | "[39644 rows x 51 columns]" 1134 | ] 1135 | }, 1136 | "execution_count": 14, 1137 | "metadata": {}, 1138 | "output_type": "execute_result" 1139 | } 1140 | ], 1141 | "source": [ 1142 | "df[columns]" 1143 | ] 1144 | }, 1145 | { 1146 | "cell_type": "code", 1147 | "execution_count": 15, 1148 | "metadata": {}, 1149 | "outputs": [], 1150 | "source": [ 1151 | "df[\"n_shares_percentile\"] = df[\"n_shares\"].rank() / len(df)" 1152 | ] 1153 | }, 1154 | { 1155 | "cell_type": "code", 1156 | "execution_count": 16, 1157 | "metadata": {}, 1158 | "outputs": [], 1159 | "source": [ 1160 | "columns.remove(\"n_shares\")\n", 1161 | "columns.append(\"n_shares_percentile\")" 1162 | ] 1163 | }, 1164 | { 1165 | "cell_type": "code", 1166 | "execution_count": 17, 1167 | "metadata": {}, 1168 | "outputs": [ 1169 | { 1170 | "data": { 1171 | "text/plain": [ 1172 | "Text(0, 0.5, 'n_shares_percentile')" 1173 | ] 1174 | }, 1175 | "execution_count": 17, 1176 | "metadata": {}, 1177 | "output_type": "execute_result" 1178 | }, 1179 | { 1180 | "data": { 1181 | "image/png": "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\n", 1182 | "text/plain": [ 1183 | "
" 1184 | ] 1185 | }, 1186 | "metadata": { 1187 | "needs_background": "light" 1188 | }, 1189 | "output_type": "display_data" 1190 | } 1191 | ], 1192 | "source": [ 1193 | "df[\"n_shares_percentile\"].rolling(1000).mean().plot()\n", 1194 | "plt.xlabel(\"Article index (time)\", fontsize=14)\n", 1195 | "plt.ylabel(\"n_shares_percentile\", fontsize=14)" 1196 | ] 1197 | }, 1198 | { 1199 | "cell_type": "code", 1200 | "execution_count": 18, 1201 | "metadata": {}, 1202 | "outputs": [], 1203 | "source": [ 1204 | "df[columns].to_csv(\"online_news_popularity_for_course.csv\", index=False)" 1205 | ] 1206 | }, 1207 | { 1208 | "cell_type": "code", 1209 | "execution_count": 19, 1210 | "metadata": {}, 1211 | "outputs": [ 1212 | { 1213 | "name": "stdout", 1214 | "output_type": "stream", 1215 | "text": [ 1216 | "date,weekday,data_channel,slug,timedelta,n_tokens_title,n_tokens_content,n_unique_tokens,n_non_stop_words,n_non_stop_unique_tokens,n_hrefs,n_self_hrefs,n_imgs,n_videos,average_token_length,n_keywords,kw_min_min,kw_max_min,kw_avg_min,kw_min_max,kw_max_max,kw_avg_max,kw_min_avg,kw_max_avg,kw_avg_avg,self_reference_min_shares,self_reference_max_shares,self_reference_avg_shares,is_weekend,LDA_00,LDA_01,LDA_02,LDA_03,LDA_04,global_subjectivity,global_sentiment_polarity,global_rate_positive_words,global_rate_negative_words,rate_positive_words,rate_negative_words,avg_positive_polarity,min_positive_polarity,max_positive_polarity,avg_negative_polarity,min_negative_polarity,max_negative_polarity,title_subjectivity,title_sentiment_polarity,abs_title_subjectivity,abs_title_sentiment_polarity,n_shares_percentile\r\n", 1217 | "2013-01-07,0,Entertainment,amazon-instant-video-browser,731.0,12.0,219.0,0.663594466988,0.9999999923080001,0.8153846091120001,4.0,2.0,1.0,0.0,4.6803652968,5.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,496.0,496.0,496.0,0.0,0.5003312040810001,0.378278929586,0.0400046751006,0.0412626477296,0.0401225435029,0.521617145481,0.09256198347110002,0.045662100456600005,0.013698630137,0.769230769231,0.23076923076900002,0.378636363636,0.1,0.7,-0.35,-0.6,-0.2,0.5,-0.1875,0.0,0.1875,0.052984058117243465\r\n" 1218 | ] 1219 | } 1220 | ], 1221 | "source": [ 1222 | "!head -n 2 online_news_popularity_for_course.csv" 1223 | ] 1224 | }, 1225 | { 1226 | "cell_type": "code", 1227 | "execution_count": null, 1228 | "metadata": {}, 1229 | "outputs": [], 1230 | "source": [] 1231 | } 1232 | ], 1233 | "metadata": { 1234 | "kernelspec": { 1235 | "display_name": "Python 3", 1236 | "language": "python", 1237 | "name": "python3" 1238 | }, 1239 | "language_info": { 1240 | "codemirror_mode": { 1241 | "name": "ipython", 1242 | "version": 3 1243 | }, 1244 | "file_extension": ".py", 1245 | "mimetype": "text/x-python", 1246 | "name": "python", 1247 | "nbconvert_exporter": "python", 1248 | "pygments_lexer": "ipython3", 1249 | "version": "3.7.4" 1250 | } 1251 | }, 1252 | "nbformat": 4, 1253 | "nbformat_minor": 2 1254 | } 1255 | --------------------------------------------------------------------------------