Skip to content

Instantly share code, notes, and snippets.

@jaskiratr
Last active June 14, 2016 05:41
Show Gist options
  • Save jaskiratr/188b9c8dd93c63c921f603300f7f8f7e to your computer and use it in GitHub Desktop.
Save jaskiratr/188b9c8dd93c63c921f603300f7f8f7e to your computer and use it in GitHub Desktop.
ML Spring 2016: Clustering Task
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"class ProcessAmazon():\n",
" \"\"\"Read, filter, aggregate by ProductId, and generate X matrix\"\"\"\n",
"\n",
" def __init__(self, raw_data_filename, num_reviews_filter):\n",
" \"\"\"Initialize attributes.\"\"\"\n",
" self.raw_data_filename = raw_data_filename\n",
" self.num_reviews_filter = num_reviews_filter\n",
" self.raw_data = self.read_and_report()\n",
" self.grouped_by_userid = self.group_by_userid()\n",
" self.filtered = self.filter_()\n",
" self.grouped_by_productid = self.group_by_productid()\n",
" self.X = self.write_X()\n",
" \n",
" def read_and_report(self):\n",
" \"\"\"Read Amazon csv, report on file structure\"\"\"\n",
" data = pd.read_csv(self.raw_data_filename)\n",
" print(self.raw_data_filename, \"has\", data.shape[0], \"rows and\", data.shape[1], \"columns. First five observations:\")\n",
" print(data.head(5))\n",
" print(50 * '-')\n",
" return data\n",
" \n",
" def group_by_userid(self):\n",
" \"\"\"Group by UserId and look at the distribution of number of reviews\"\"\"\n",
" grouped_by_uid = self.raw_data.groupby('UserId').count()\n",
" print('Distribution of number of reviews for each UserId:')\n",
" print(grouped_by_uid['ProductId'].value_counts())\n",
" print(50 * '-')\n",
" return grouped_by_uid\n",
" \n",
" def filter_(self):\n",
" \"\"\"Filter out reviewers with fewer than x reviews\"\"\"\n",
" filtered = self.grouped_by_userid[self.grouped_by_userid['Id'] > self.num_reviews_filter]\n",
" # remove redundant columns\n",
" filtered_final = filtered.drop(filtered.columns[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], axis=1)\n",
" # recreate UserId from index\n",
" filtered_final['UserId'] = filtered_final.index\n",
" # rename columns\n",
" filtered_final.columns = ['num_reviews', 'UserId']\n",
" # left merge filtered list with raw data\n",
" filtered = pd.merge(filtered_final, self.raw_data, how='left', on='UserId')\n",
" filtered = filtered.sort_values('num_reviews', axis=0, ascending=True)\n",
" print(\"Filtered data has\", filtered.shape[0], \"rows and\", filtered.shape[1], \"columns. First five observations:\")\n",
" print(filtered.head(5))\n",
" print(50 * '-')\n",
" return filtered\n",
" \n",
" def group_by_productid(self):\n",
" \"\"\"Group by ProductId and create a column that lists each UserId (separated by spaces) who reviewed that product\"\"\"\n",
" grouped_by_pid = self.filtered.groupby('ProductId')['UserId'].apply(lambda x: ' '.join(x)).reset_index()\n",
" print(\"Data grouped by ProductId has\", grouped_by_pid.shape[0], \"rows and\", grouped_by_pid.shape[1], \"columns. First five observations:\")\n",
" print(grouped_by_pid.head(5))\n",
" print(50 * '-')\n",
" return grouped_by_pid\n",
" \n",
" def write_X(self):\n",
" \"\"\"use bag of words to create boolean X to represent reviews by UserId (one UserId per column)\"\"\"\n",
" from sklearn.feature_extraction.text import CountVectorizer\n",
" count = CountVectorizer()\n",
" uidArray = self.grouped_by_productid.UserId.as_matrix()\n",
" userFeatures = count.fit_transform(uidArray)\n",
" print(\"Shape of final X matrix:\", userFeatures.shape)\n",
" return userFeatures"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"class ViewClusteringResults():\n",
" \"\"\"Merge cluster definitions to raw data and view samples of clustering results, showing review summaries and texts.\"\"\"\n",
" \n",
" def __init__(self, data_instance, model_instance):\n",
" \"\"\"Initialize attributes\"\"\"\n",
" self.data_instance = data_instance\n",
" self.model_instance = model_instance\n",
" \n",
" def merge_labels(self):\n",
" \"\"\"Merge cluster labels to raw data (as structured in Amazon.csv)\"\"\"\n",
" labels_tomerge = pd.DataFrame(self.model_instance.labels_)\n",
" labelled_products = pd.concat([self.data_instance.grouped_by_productid, labels_tomerge], axis=1, ignore_index=True)\n",
" labelled_products.columns = ['ProductId', 'UserIds', 'cluster']\n",
" merged = pd.merge(labelled_products, self.data_instance.raw_data, how='left', on='ProductId')\n",
" merged_lite = merged[['ProductId', 'cluster', 'Summary', 'Text']]\n",
" return merged_lite\n",
"\n",
" def view_cluster_samples(self, n_samples):\n",
" \"\"\"Print x samples of cluster results for each cluster, showing details of product reviews.\"\"\"\n",
" merged = self.merge_labels()\n",
" num_clusters = self.model_instance.cluster_centers_.shape[0]\n",
" for i in range(1, num_clusters): \n",
" print(50 * '-')\n",
" print('cluster: ', i)\n",
" cluster = merged.loc[merged['cluster'] == i]\n",
" print('cluster size: ', cluster.shape)\n",
" print(cluster.sample(n_samples))"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"../Data/Amazon.csv has 455000 rows and 13 columns. First five observations:\n",
" Unnamed: 0 Id ProductId UserId ProfileName \\\n",
"0 138806 138807 B000E63LME A1CQGW1AOD0LF2 Alena K. \"Alena\" \n",
"1 469680 469681 B004ZIH4KM A37S7U1OX2MCWI Becky Cole \n",
"2 238202 238203 B003ZXE9QA A2OM6G73E64EQ9 jeff \n",
"3 485307 485308 B001RVFERK A25W349EE97NBK Tangent4 \n",
"4 375283 375284 B000OQZNTS A3CPPW0HUC07YS Amy Nicolai \n",
"\n",
" HelpfulnessNumerator HelpfulnessDenominator Score Time \\\n",
"0 1 2 2 1294185600 \n",
"1 0 0 5 1349740800 \n",
"2 0 0 5 1329264000 \n",
"3 1 1 4 1248307200 \n",
"4 0 0 5 1333238400 \n",
"\n",
" Summary \\\n",
"0 Not as pictured. \n",
"1 seeds \n",
"2 I'm addicted! \n",
"3 I wanted to love these... \n",
"4 Excellent chamomile tea \n",
"\n",
" Text helpScore helpful \n",
"0 I was looking forward to try cranberry apple f... 0.5 False \n",
"1 TY for everything. The seeds arrived quickly,... NaN False \n",
"2 I've finally found the best cereal in the worl... NaN False \n",
"3 I originally bought these chips because I'd he... 1.0 False \n",
"4 Really excellent tea, flowers are visible in t... NaN False \n",
"--------------------------------------------------\n",
"Distribution of number of reviews for each UserId:\n",
"1 152249\n",
"2 28392\n",
"3 12758\n",
"4 8038\n",
"5 4586\n",
"6 3133\n",
"7 2273\n",
"8 1623\n",
"9 1201\n",
"10 948\n",
"11 699\n",
"12 573\n",
"13 461\n",
"14 324\n",
"15 262\n",
"16 201\n",
"17 172\n",
"18 170\n",
"19 149\n",
"20 145\n",
"21 126\n",
"22 110\n",
"23 77\n",
"24 72\n",
"25 68\n",
"26 50\n",
"27 44\n",
"28 40\n",
"31 33\n",
"29 31\n",
" ... \n",
"107 1\n",
"138 1\n",
"105 1\n",
"126 1\n",
"101 1\n",
"124 1\n",
"356 1\n",
"109 1\n",
"171 1\n",
"95 1\n",
"157 1\n",
"66 1\n",
"71 1\n",
"72 1\n",
"293 1\n",
"204 1\n",
"80 1\n",
"81 1\n",
"158 1\n",
"85 1\n",
"145 1\n",
"65 1\n",
"342 1\n",
"87 1\n",
"320 1\n",
"89 1\n",
"90 1\n",
"68 1\n",
"93 1\n",
"127 1\n",
"Name: ProductId, dtype: int64\n",
"--------------------------------------------------\n",
"Filtered data has 55605 rows and 14 columns. First five observations:\n",
" num_reviews UserId Unnamed: 0 Id ProductId \\\n",
"24615 16 A2PHKBUVKWDN2F 47443 47444 B001JYVTNS \n",
"14142 16 A2065HBMYDXJ1S 16627 16628 B001LGGH40 \n",
"14143 16 A2065HBMYDXJ1S 64937 64938 B005MWAM72 \n",
"14144 16 A2065HBMYDXJ1S 56303 56304 B0039ZOZ86 \n",
"14145 16 A2065HBMYDXJ1S 28119 28120 B007POT6RM \n",
"\n",
" ProfileName HelpfulnessNumerator HelpfulnessDenominator \\\n",
"24615 Vern's Mom 0 0 \n",
"14142 Jenn B \"Happy Mom\" 0 0 \n",
"14143 Jenn B \"Happy Mom\" 0 0 \n",
"14144 Jenn B \"Happy Mom\" 2 2 \n",
"14145 Jenn B \"Happy Mom\" 0 0 \n",
"\n",
" Score Time Summary \\\n",
"24615 5 1346889600 Booda bones \n",
"14142 4 1239235200 Good taste \n",
"14143 5 1343088000 Very yummy oatmeal \n",
"14144 5 1280361600 Awesome product \n",
"14145 5 1343088000 Very yummy oatmeal \n",
"\n",
" Text helpScore helpful \n",
"24615 My dog really enjoys the Booda bones. I was v... NaN False \n",
"14142 This is a good drink, tastes like soda, but fr... NaN False \n",
"14143 This stuff is great. the brown sugar flavor i... NaN False \n",
"14144 Love these fries (chip alternative). Much mor... 1.0 False \n",
"14145 This stuff is great. the brown sugar flavor i... NaN False \n",
"--------------------------------------------------\n",
"Data grouped by ProductId has 17058 rows and 2 columns. First five observations:\n",
" ProductId UserId\n",
"0 7310172001 ADXXVGRCGQQUO A34BRSDS9MJXTZ A18UVHCREY2RE2 A3...\n",
"1 7310172101 ADXXVGRCGQQUO A34BRSDS9MJXTZ A18UVHCREY2RE2 A3...\n",
"2 7800648702 AR7TAEEUDHMUB\n",
"3 B00002N8SM A29GWIJL72GXXZ\n",
"4 B00004CI84 A1OBPHRXHZF8P6 A2XAKGRUHIE2ZA A1Y09QLADQYQJG A...\n",
"--------------------------------------------------\n",
"Shape of final X matrix: (17058, 1941)\n"
]
}
],
"source": [
"# process Amazon.csv, filtering out people who left 4 or fewer reviews\n",
"amazonData = ProcessAmazon('../Data/Amazon.csv', 15)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a9bf334b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# first attempt at fitting K means to view change in Inertia\n",
"from sklearn.cluster import KMeans\n",
"\n",
"# container to store inertia scores over iterations\n",
"distortions = []\n",
"\n",
"# fit KMeans iteratively to begin to assess the appropriate number of clusters\n",
"for i in range(1, 20):\n",
" km = KMeans(n_clusters=i)\n",
" km.fit(amazonData.X)\n",
" distortions.append(km.inertia_)\n",
" \n",
"# vizualize change in inertia\n",
"plt.plot(range(1, 20), distortions, marker='o')\n",
"plt.xlabel('Number of clusters')\n",
"plt.ylabel('Inertia')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=20, n_init=10,\n",
" n_jobs=1, precompute_distances='auto', random_state=None, tol=0.0001,\n",
" verbose=0)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# fit KMeans with 50 clusters\n",
"from sklearn.cluster import KMeans\n",
"km = KMeans(n_clusters=20)\n",
"km.fit(amazonData.X)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# create an instance of ViewClusteringResults to view results of final KMeans fit\n",
"viz = ViewClusteringResults(amazonData, km)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--------------------------------------------------\n",
"cluster: 1\n",
"cluster size: (1102, 4)\n",
" ProductId cluster \\\n",
"172640 B001VIYCK4 1 \n",
"86835 B000QSN7P6 1 \n",
"215220 B003BJOORW 1 \n",
"223292 B003M60K54 1 \n",
"215248 B003BJOORW 1 \n",
"312035 B009B87SAC 1 \n",
"172617 B001VIYCK4 1 \n",
"86819 B000QSN7P6 1 \n",
"11996 B0006345PW 1 \n",
"223077 B003M5TG28 1 \n",
"223921 B003MWBFMK 1 \n",
"223598 B003MA8P02 1 \n",
"312324 B009GHI5Q4 1 \n",
"172555 B001VIY8BW 1 \n",
"12027 B0006345PW 1 \n",
"10007 B0002MLA5K 1 \n",
"223069 B003M5TG28 1 \n",
"223986 B003MWBFXY 1 \n",
"223067 B003M5TG28 1 \n",
"10062 B0002MLA5K 1 \n",
"\n",
" Summary \\\n",
"172640 Great product, but trust your vet not the hype \n",
"86835 Does what it claims \n",
"215220 Worth the money! \n",
"223292 stops fecal balls \n",
"215248 Saved my kitty from having dental surgery! \n",
"312035 Too large for cats \n",
"172617 Filler food is empty, leaves your cat always n... \n",
"86819 Best Catfood \n",
"11996 Five stars and an Eight paw Salute \n",
"223077 Saved my Cat \n",
"223921 Close call! \n",
"223598 Excellent cat food ! \n",
"312324 The only food I give my cats! \n",
"172555 Best for Dental Health \n",
"12027 BAD, do NOT buy! \n",
"10007 Filler food is empty, leaves your cat always n... \n",
"223069 Only food my cats can agree on \n",
"223986 Science Diet = terrible for cats, it's addictive \n",
"223067 The worst snap-lock reseal ever made? \n",
"10062 Five stars and an Eight paw Salute \n",
"\n",
" Text \n",
"172640 I have two cats, one 6 and one 2 years old. Bo... \n",
"86835 I had to stop giving my 15 year old cat dry f... \n",
"215220 Our cat was a stray that showed up at a friend... \n",
"223292 My eight month old kitty, Jitterbug came to us... \n",
"215248 I have a multiple cat household. My vet said ... \n",
"312035 This food may be good for my cats, but two of ... \n",
"172617 This review will make me sound really stupid, ... \n",
"86819 My cat is picky. He also gets an upset stomac... \n",
"11996 Ok cats, you can stop wiggling and showing me ... \n",
"223077 This product was recommended by my vet, and li... \n",
"223921 I took my 10 year old cat in to the vet today ... \n",
"223598 I got my cat at a shelter and they feed this t... \n",
"312324 My cats have been on Hill's Science Diet since... \n",
"172555 The vet showed me that my 14-year-old cat's te... \n",
"12027 Chicken by-product, corn gluten meal, and whol... \n",
"10007 This review will make me sound really stupid, ... \n",
"223069 This is the only flavor of Science Diet (or an... \n",
"223986 My kitten--now a hefty 11 pound slug--went thr... \n",
"223067 I feed Hills Science diet to my pet because I ... \n",
"10062 Ok cats, you can stop wiggling and showing me ... \n",
"--------------------------------------------------\n",
"cluster: 2\n",
"cluster size: (262299, 4)\n",
" ProductId cluster \\\n",
"218884 B003E728CE 2 \n",
"263652 B0053WMOKY 2 \n",
"131654 B001E52YO0 2 \n",
"45258 B000F6SOZ2 2 \n",
"176712 B0026RQTGE 2 \n",
"76446 B000LKZ91Y 2 \n",
"41628 B000EVMNMI 2 \n",
"117171 B0018KNGDY 2 \n",
"137670 B001E8DHPW 2 \n",
"61454 B000H154US 2 \n",
"200236 B002TN49F8 2 \n",
"89998 B000TGBULI 2 \n",
"177173 B0026RQTGE 2 \n",
"241398 B00472672C 2 \n",
"57609 B000GAT6NG 2 \n",
"119538 B001ABOCBG 2 \n",
"144138 B001EO777A 2 \n",
"111338 B0014AWBS4 2 \n",
"71658 B000KV61FC 2 \n",
"55389 B000G1ILU4 2 \n",
"\n",
" Summary \\\n",
"218884 Very good deal \n",
"263652 My German Shephers love these! \n",
"131654 OUR BENGI LOVES NATHAN'S HOWEVER IT APPEARS TH... \n",
"45258 Eat Natural Bar \n",
"176712 Bow Wow Yum \n",
"76446 Took a chance with one more rice pasta... and ... \n",
"41628 Just like I remember as a kid \n",
"117171 Delivered as promised. Thanks! \n",
"137670 Perfect Product, Perfect Price \n",
"61454 Spectacular - Really \n",
"200236 Very strong vanilla taste \n",
"89998 Possibly the greatest soda EVER! \n",
"177173 Happy Customer \n",
"241398 Great taste for Westphalian Pumperknickle, but... \n",
"57609 Great Stuff! \n",
"119538 Vanilla Bean Powder Disaster \n",
"144138 tasty and quick to make \n",
"111338 Nighty Night tea \n",
"71658 Love love love it \n",
"55389 Great tasting \n",
"\n",
" Text \n",
"218884 Terrific product and great price from this ven... \n",
"263652 We have 2 German Shepherds that need very dura... \n",
"131654 BENGI JUST LOVES NATHAN'S SAUGAGES BUT I JUST ... \n",
"45258 I am a very picky eater & to find something I ... \n",
"176712 Both of my dogs will practically sell their so... \n",
"76446 I found this product discounted 50%, so I took... \n",
"41628 These are awesome. I love cola bottle gummi ca... \n",
"117171 Product arrived as promised. Also, I have had ... \n",
"137670 This is my favorite coconut oil for eating and... \n",
"61454 Especially for people wanting to avoid wheat, ... \n",
"200236 If you like a strong vanilla flavor, you will ... \n",
"89998 Ramune has to be one of the coolest and most u... \n",
"177173 I am not only very happy with this product but... \n",
"241398 This is a good quality, totally \"natural\" Wesp... \n",
"57609 Stuff was great! Used it in lip balm that I cr... \n",
"119538 When I placed my order,this product was listed... \n",
"144138 I have used this in protein powders to create ... \n",
"111338 Another great product from Traditional Medicin... \n",
"71658 When i took this out my puppy couldn't wait to... \n",
"55389 This lo carb pancake mix is really good and ea... \n",
"--------------------------------------------------\n",
"cluster: 3\n",
"cluster size: (1012, 4)\n",
" ProductId cluster \\\n",
"120256 B001AHJ2FQ 3 \n",
"174773 B00248EE4O 3 \n",
"101303 B000YSTIL0 3 \n",
"120207 B001AHJ2D8 3 \n",
"120300 B001AHJ2FQ 3 \n",
"100899 B000YSRK7E 3 \n",
"120361 B001AHJ2FQ 3 \n",
"120328 B001AHJ2FQ 3 \n",
"119964 B001AHFVHO 3 \n",
"101299 B000YSTIL0 3 \n",
"120081 B001AHJ2D8 3 \n",
"120491 B001AHL6CI 3 \n",
"120168 B001AHJ2D8 3 \n",
"120017 B001AHFVHO 3 \n",
"120125 B001AHJ2D8 3 \n",
"101313 B000YSTIL0 3 \n",
"120263 B001AHJ2FQ 3 \n",
"101339 B000YSTIL0 3 \n",
"174788 B00248EE4O 3 \n",
"120065 B001AHFVHO 3 \n",
"\n",
" Summary \\\n",
"120256 DELICIOUS \n",
"174773 Interesting chip, but maybe not the best for s... \n",
"101303 No Olive flavor \n",
"120207 Addictive! \n",
"120300 simply the best \n",
"100899 Here's the chips \n",
"120361 Average Chip, Good Ingredients. \n",
"120328 unbeleivable! \n",
"119964 unbeleivable! \n",
"101299 Great gluten free chips! \n",
"120081 Delicious! If you like olives and like corn c... \n",
"120491 A Great change from other chips -- Tasty and H... \n",
"120168 Delicious.....You'll like this so much you'll ... \n",
"120017 Not as healthy as you think \n",
"120125 Great Product! \n",
"101313 Delish! \n",
"120263 Only flavor I did not like at all \n",
"101339 Amazing taste! \n",
"174788 No Rating, No Comment \n",
"120065 Ahoy! These Chocolate Chips Rock the boat! \n",
"\n",
" Text \n",
"120256 I love these chips. Wonderfully pristine and ... \n",
"174773 These tortilla chips have an \"all-natural\" fee... \n",
"101303 While these chips taste good, there was no oli... \n",
"120207 These are quite good. I wasn't too sure about ... \n",
"120300 i cannot say enough good things about this pro... \n",
"100899 I tried the multigrain chips without any dip o... \n",
"120361 Not too bad. It is similar to the stone ground... \n",
"120328 Whoever thought of putting Chocolate with thes... \n",
"119964 Whoever thought of putting Chocolate with thes... \n",
"101299 My 12 year old daughter who has celiac loves t... \n",
"120081 AMAZING chips. I picked them up at Whole Payc... \n",
"120491 Like another reviewer, I've had sweet potato f... \n",
"120168 Well, the manufactures of the Multigrain, Food... \n",
"120017 The added grains make these a better choice th... \n",
"120125 These are wonderful chips that really do taste... \n",
"101313 These were absolutely delicious. They came ve... \n",
"120263 I like all of the flavors to a degree, except ... \n",
"101339 I purchased these chips because I love sweet p... \n",
"174788 I have to write a review in order to get this ... \n",
"120065 Tried these with our homemade chipotle salsa..... \n",
"--------------------------------------------------\n",
"cluster: 4\n",
"cluster size: (2553, 4)\n",
" ProductId cluster \\\n",
"277912 B005VOOLXM 4 \n",
"277714 B005VOOL00 4 \n",
"279080 B005VOONI0 4 \n",
"279485 B005VOONKI 4 \n",
"278717 B005VOOM5E 4 \n",
"279657 B005VOONLW 4 \n",
"278898 B005VOONGM 4 \n",
"279120 B005VOONI0 4 \n",
"279116 B005VOONI0 4 \n",
"278804 B005VOOM5E 4 \n",
"278962 B005VOONGM 4 \n",
"278240 B005VOOM2W 4 \n",
"277438 B005VOOKS8 4 \n",
"278420 B005VOOM4A 4 \n",
"279659 B005VOONLW 4 \n",
"278473 B005VOOM4A 4 \n",
"279427 B005VOONKI 4 \n",
"278753 B005VOOM5E 4 \n",
"279406 B005VOONKI 4 \n",
"278643 B005VOOM5E 4 \n",
"\n",
" Summary \\\n",
"277912 One Love of the Smell of it! \n",
"277714 A Nice, Crisp Cup of Joe - Make you \"feel alri... \n",
"279080 Not Quite Feeling the Love \n",
"279485 Love the pods \n",
"278717 Mona Lisa \n",
"279657 Okay \n",
"278898 not a fan \n",
"279120 Not bad \n",
"279116 Smells Great.... \n",
"278804 Not that great \n",
"278962 Decent but Not Particularly Strong Coffee \n",
"278240 Smooth cup of coffee \n",
"277438 Marley coffee \n",
"278420 Very Good Coffee \n",
"279659 A tasty treat \n",
"278473 Marley \"One Love\" organic coffee pods: Better ... \n",
"279427 Capitalizing on the Marley Legend-Organic Fair... \n",
"278753 Pod Brewing - Bleh; LOOSE Brewing FANTASTIC \n",
"279406 Wonderful coffee aroma \n",
"278643 not a fan \n",
"\n",
" Text \n",
"277912 The name and packaging is what attracted me to... \n",
"277714 I took the box of Marley Coffee pods to work f... \n",
"279080 These coffee pods ae from Fair Trade farms tha... \n",
"279485 I'm the only coffee drinker in my household, s... \n",
"278717 I love the flavor of the Marley Coffee & Tea O... \n",
"279657 I didn't have the appropriate brewer, so I jus... \n",
"278898 I did not enjoy this coffee. This is more of t... \n",
"279120 Unfortunately I got this coffee through the Am... \n",
"279116 Love, love, love! The smell of the coffee pac... \n",
"278804 I found that the pod made a very weak and not ... \n",
"278962 The first thing you will notice with Marley Co... \n",
"278240 I've never had a cup of coffee that was so smo... \n",
"277438 This coffee is good, and because it is organic... \n",
"278420 I don't have a pod coffeemaker, so I cut open ... \n",
"279659 We saw that some of the coffee reviews said th... \n",
"278473 Marley \"One Love\" organic coffee pods are targ... \n",
"279427 The great late Reggae singer Bob Marley's son ... \n",
"278753 I did not realize when I had these sent to me ... \n",
"279406 This Marley Coffee has a beautiful strong arom... \n",
"278643 I did not enjoy this coffee. This is more of t... \n",
"--------------------------------------------------\n",
"cluster: 5\n",
"cluster size: (13368, 4)\n",
" ProductId cluster \\\n",
"261630 B004YV80O4 5 \n",
"159215 B001LGGH40 5 \n",
"269257 B005HG9ERW 5 \n",
"252208 B004JGQ15E 5 \n",
"159122 B001LGGH40 5 \n",
"259304 B004U43ZO0 5 \n",
"192136 B002IEVJRY 5 \n",
"285540 B006MONQMC 5 \n",
"265042 B005A1LGIY 5 \n",
"194941 B002NHYQAS 5 \n",
"159606 B001LGGH54 5 \n",
"253042 B004JRMG98 5 \n",
"259252 B004U43ZO0 5 \n",
"252995 B004JRMG98 5 \n",
"259456 B004U49QU2 5 \n",
"252885 B004JRKEH4 5 \n",
"261644 B004YV80O4 5 \n",
"292601 B007I7Z3Z0 5 \n",
"310819 B0090X8IPM 5 \n",
"259258 B004U43ZO0 5 \n",
"\n",
" Summary \\\n",
"261630 Like Hamburger Helper with a Bit More Cheese a... \n",
"159215 way too sweet \n",
"269257 An options for runners who usually use a sport... \n",
"252208 what ain't good for ya is good to ya \n",
"159122 Not quite my cup of tea \n",
"259304 Good Dough, Tasty Fudge! \n",
"192136 disappointed \n",
"285540 Reminds Me of Hawaiian Punch \n",
"265042 love the flavor, hate the aspartame \n",
"194941 Good, Albet Average Dark Chocolate Bar \n",
"159606 Switch Watermelon Strawberry Drink \n",
"253042 Creamy \n",
"259252 Pretty Good but not as good as the Megafudge o... \n",
"252995 It's different! \n",
"259456 Good, but Chocolate a Little Chalky/Off \n",
"252885 Awesome! Not just about the chipotle. \n",
"261644 Filling, easy, savory meal for 5 \n",
"292601 Addicted! \n",
"310819 no matter what I do, it still taste bad \n",
"259258 Mona Lisa \n",
"\n",
" Text \n",
"261630 I've enjoyed many a meal of Mac & Cheese Hambu... \n",
"159215 This has more calories than a regular coke. Ev... \n",
"269257 The makers of Essential Water claim to deliver... \n",
"252208 ok, so the kids LOVED it, hands down, greasy h... \n",
"159122 Overly sweet w/ a slight fizzy touch on the to... \n",
"259304 Chips Ahoy! Chewy Gooey Chocofudge are normal ... \n",
"192136 I was looking forward to a new cold cappuccino... \n",
"285540 I cant say how much energy this drink suppleme... \n",
"265042 Unfortunately, the product description doesn't... \n",
"194941 A good, not too sweet dark chocolate bar that ... \n",
"159606 This drink was surprisingly refreshing. Light,... \n",
"253042 I didn't think this would be very hot and it i... \n",
"259252 These cookies are okay but they certainly aren... \n",
"252995 My family likes Taco Bell and we like this Jal... \n",
"259456 These cookies were reviewed my myself and my 7... \n",
"252885 The additional spices, especially the hickory ... \n",
"261644 This is an easy-to-make dish that takes macaro... \n",
"292601 I am trying so hard to drink more water but I ... \n",
"310819 Taste bitter, in a bad way, some coffee taste ... \n",
"259258 The Chips Ahoy! Chewey Gooey Chocofudge cookie... \n",
"--------------------------------------------------\n",
"cluster: 6\n",
"cluster size: (1021, 4)\n",
" ProductId cluster Summary \\\n",
"122538 B001BCVY9W 6 Warning: Contains Menadione \n",
"122932 B001BDDT8K 6 Our kitties LOVE this food!!!! \n",
"122607 B001BCXTGS 6 the 10 cat review..... \n",
"122140 B001BCVY4W 6 petite cuisine, variety pack. \n",
"122402 B001BCVY9W 6 Even for a picky cat \n",
"122905 B001BDDT8K 6 Nutritious but... \n",
"122149 B001BCVY4W 6 One ate, the other didn't \n",
"123166 B001BDDTB2 6 the kitties say \"more, please!\" \n",
"122970 B001BDDT8K 6 Healthy food for cats \n",
"123140 B001BDDTB2 6 It looks good, but is it good for the cats? \n",
"122261 B001BCVY4W 6 Speaking for \"The Cat\" - This Stuff is Great! \n",
"122994 B001BDDT8K 6 Great food for you kitties \n",
"122349 B001BCVY9W 6 The cats weren't too impressed \n",
"122664 B001BCXTGS 6 50/50 response from family cats \n",
"122505 B001BCVY9W 6 ALMOST PERFECT-- \n",
"122627 B001BCXTGS 6 Very good but expensive \n",
"122805 B001BDDT8K 6 My cat gave these five stars... \n",
"122407 B001BCVY9W 6 Meow \n",
"122803 B001BDDT8K 6 Paris loves it and that's enough for me! \n",
"123039 B001BDDTB2 6 If it looks good, is it good for the cats? \n",
"\n",
" Text \n",
"122538 According to the manufacturer's website, this ... \n",
"122932 I wasn't sure how my cats would like Petite Cu... \n",
"122607 yes, that's right, our family has 10 cats (all... \n",
"122140 i do not like the smell of cat food. this say... \n",
"122402 I tried these out with my cat in the hopes of ... \n",
"122905 I do have to say that the cat food is quite nu... \n",
"122149 This cat food is really special. It doesn't sm... \n",
"123166 We have six cats ranging in age from a year ol... \n",
"122970 My two cats loved these Petite Cuisine chicken... \n",
"123140 My two traditional striped cats eat mostly dry... \n",
"122261 What can I say? The cat loved it and lapped ev... \n",
"122994 This is great food and all my cats love it. It... \n",
"122349 I really wanted to like this product. I hadn'... \n",
"122664 The quality of this cat food is excellent, wit... \n",
"122505 Would of given this 5 star if it was cheaper. ... \n",
"122627 The main reason I tried the Petite Cuisine cat... \n",
"122805 my cat practically inhaled this food! and it ... \n",
"122407 Meow.<br /><br />Typing with my paws is diffic... \n",
"122803 My sweet cat Paris loves this kitty food and t... \n",
"123039 My two traditional striped cats eat mostly dry... \n",
"--------------------------------------------------\n",
"cluster: 7\n",
"cluster size: (4097, 4)\n",
" ProductId cluster \\\n",
"284888 B006HYLW32 7 \n",
"168302 B001RVFEP2 7 \n",
"294397 B007M832YY 7 \n",
"284736 B006HYLW32 7 \n",
"94588 B000VK8AVK 7 \n",
"168888 B001RVFERK 7 \n",
"168312 B001RVFEP2 7 \n",
"295154 B007M83302 7 \n",
"109170 B0013NUGDE 7 \n",
"176119 B0026KPDG8 7 \n",
"284701 B006HYLW32 7 \n",
"294712 B007M832YY 7 \n",
"295065 B007M83302 7 \n",
"294671 B007M832YY 7 \n",
"176300 B0026KPDG8 7 \n",
"294718 B007M832YY 7 \n",
"168695 B001RVFERK 7 \n",
"294409 B007M832YY 7 \n",
"295111 B007M83302 7 \n",
"294757 B007M83302 7 \n",
"\n",
" Summary \\\n",
"284888 YUM!! \n",
"168302 My wife and I love these! \n",
"294397 Popchips 5 Stars, Chili Lime Flavor 3 Stars \n",
"284736 Chili Lime Flavor - Review \n",
"94588 Popchips \n",
"168888 popchips prices \n",
"168312 delicious \n",
"295154 Pop Chips are great \n",
"109170 Greatest chips on Earth \n",
"176119 salty \n",
"284701 Healthy at a great bargain! \n",
"294712 THE BARBEQUE FLAVOR IS GREAT!!! \n",
"295065 YUMMY:) \n",
"294671 They have a strange taste. Much worse than bak... \n",
"176300 Popchips Delicious \n",
"294718 Who said chips have to be fattening to taste g... \n",
"168695 Tasty \n",
"294409 Never tasted cheddar cheese like this! \n",
"295111 We do the POPchip happy dance! \n",
"294757 Fantastic tasting healthy or not! \n",
"\n",
" Text \n",
"284888 I cannot stop eating these wonderful chips! E... \n",
"168302 My wife loves these, and we can't wait for the... \n",
"294397 I have a bag of Popchips everyday with lunch. ... \n",
"284736 In general, I love Popchips. (BBQ are my abso... \n",
"94588 Excellent Robust flavor, cannot find in Grocer... \n",
"168888 I loved buying a case of popchips for $13.42. ... \n",
"168312 the chips are delicious. great snack to grab b... \n",
"295154 I have enjoyed Pop Chips for over a year now a... \n",
"109170 We got a discount with Weight Watchers on this... \n",
"176119 a little too salty for me but tasty. I hope m... \n",
"284701 Great for diabetics who struggle with what to ... \n",
"294712 These POPCHIPS are fantastic!!! I tried them a... \n",
"295065 We ordered a case of these without never havin... \n",
"294671 I was disappointed with the taste of these chi... \n",
"176300 Not only were the chips delicious but they wer... \n",
"294718 If you are a person that eats a \"clean\" health... \n",
"168695 These are super tasty treats for days when you... \n",
"294409 I really wanted to like these after reading al... \n",
"295111 When the case arrives, my kids do the POPchips... \n",
"294757 These chips are great for snacking regarless t... \n",
"--------------------------------------------------\n",
"cluster: 8\n",
"cluster size: (758, 4)\n",
" ProductId cluster \\\n",
"193589 B002LANN56 8 \n",
"172857 B001VJ0B0I 8 \n",
"193342 B002LANN56 8 \n",
"172956 B001VJ0B0I 8 \n",
"193657 B002LANN56 8 \n",
"172831 B001VJ0B0I 8 \n",
"172644 B001VJ0B0I 8 \n",
"193575 B002LANN56 8 \n",
"193659 B002LANN56 8 \n",
"193478 B002LANN56 8 \n",
"172934 B001VJ0B0I 8 \n",
"193605 B002LANN56 8 \n",
"172902 B001VJ0B0I 8 \n",
"193493 B002LANN56 8 \n",
"193609 B002LANN56 8 \n",
"172776 B001VJ0B0I 8 \n",
"193502 B002LANN56 8 \n",
"172933 B001VJ0B0I 8 \n",
"172848 B001VJ0B0I 8 \n",
"172964 B001VJ0B0I 8 \n",
"\n",
" Summary \\\n",
"193589 He likes it so well we may wind up with a plum... \n",
"172857 It does the trick \n",
"193342 My picky dog will eat this \n",
"172956 Absolute big time disappointing \n",
"193657 Dog Picks Out Meat Pieces \n",
"172831 No Complaints \n",
"172644 At Least One Chocolate Lab Loves It \n",
"193575 Pretty good \n",
"193659 Chef Michael's Dry Food Review \n",
"193478 Good for a picky eater - not good for a health... \n",
"172934 Dogs like it just fine, but not terribly excit... \n",
"193605 Wow, loaded with sugar or something! \n",
"172902 Smiley Likes It \n",
"193493 Awwwwwwwwwwwwwwwwwwwwwwwwl \n",
"193609 My Champ loves it!!! \n",
"172776 Great taste; lost weight. \n",
"193502 Great for Kong stuffing \n",
"172933 Dogs loved it! \n",
"172848 You get what you pay for \n",
"172964 Nice variety - dog likes it \n",
"\n",
" Text \n",
"193589 Our dog has tried near every dog food on the m... \n",
"172857 I have tried a lot of different foods with my ... \n",
"193342 We have been Iams and Science Diet fans for th... \n",
"172956 I got this for a neighbor's dog and the dog at... \n",
"193657 When presented with this food, my dog picked o... \n",
"172831 This doggie food was similar to the one she (t... \n",
"172644 At almost two years old, it's a struggle to ke... \n",
"193575 I'm always a little challenged to review somet... \n",
"193659 My 2 dogs love this dry food,both the beef and... \n",
"193478 \"Grilled Sirloin\" sounds great for a dog food,... \n",
"172934 We've used Beneful several times in the past y... \n",
"193605 This dog food was so well liked by the dogs th... \n",
"172902 While our dog Smiley will eat just about anyth... \n",
"193493 They missed the mark here. This does not have ... \n",
"193609 The Chef Michael's dog food by Purina is great... \n",
"172776 I haven't sampled this myself but I can tell m... \n",
"193502 My dog really loved the taste of this food. I... \n",
"172933 Going to the store and lugging home 15 pounds ... \n",
"172848 Yes, my dog loves this. Is it good for him? ... \n",
"172964 Food comes in different colored pellets, which... \n",
"--------------------------------------------------\n",
"cluster: 9\n",
"cluster size: (1399, 4)\n",
" ProductId cluster \\\n",
"124052 B001BM4NAE 9 \n",
"207951 B0032B0BD0 9 \n",
"207876 B0032B0BD0 9 \n",
"124107 B001BM4RC8 9 \n",
"123994 B001BM4NAE 9 \n",
"38865 B000EQYQBO 9 \n",
"38635 B000EQX57K 9 \n",
"38394 B000EQT9MK 9 \n",
"38819 B000EQYQBO 9 \n",
"124073 B001BM4RC8 9 \n",
"38832 B000EQYQBO 9 \n",
"38093 B000EQT4MA 9 \n",
"38564 B000EQX57K 9 \n",
"207877 B0032B0BD0 9 \n",
"123411 B001BLXRPC 9 \n",
"38433 B000EQT9MK 9 \n",
"123439 B001BLXRPC 9 \n",
"38621 B000EQX57K 9 \n",
"207933 B0032B0BD0 9 \n",
"123732 B001BM3C0Q 9 \n",
"\n",
" Summary \\\n",
"124052 Good taste, but not perfect \n",
"207951 3g. Fiber Per Serving! \n",
"207876 Disappointed \n",
"124107 If Amazon could have sent the right product, i... \n",
"123994 Broken Chips \n",
"38865 My Favorite Torilla Chips \n",
"38635 Garden of FakeLime Detergenty Flavors and othe... \n",
"38394 STALE Tasting! \n",
"38819 If you want fiber, don't buy! \n",
"124073 I love the sesame in these chips, you will too! \n",
"38832 25% chance of rancid chips - No Thanks \n",
"38093 Wonderful Amazon experience \n",
"38564 Great snack with or without dip. \n",
"207877 Deceptive packaging-it does have GMO ingredients \n",
"123411 Great little chip \n",
"38433 Blue Corn Chips Taste Really Good \n",
"123439 The best chips ever invented, truly the pinnac... \n",
"38621 Blech \n",
"207933 Highest Rating. \n",
"123732 Garden of Good Eating soy corn chips \n",
"\n",
" Text \n",
"124052 Lime and chili? When I saw that on the package... \n",
"207951 Love these tortilla chips made with organic wh... \n",
"207876 I have always loved these chips and buy them o... \n",
"124107 These are excellent chips, except Amazon could... \n",
"123994 These are great chips! I also like the red ch... \n",
"38865 I tried these chips about 4 years ago before t... \n",
"38635 I'm just going to say it: These CHIPS Taste li... \n",
"38394 don't be fooled and misled by believing these ... \n",
"38819 I specifically ordered these chips because the... \n",
"124073 I love sesame in general. It makes foods more ... \n",
"38832 I have eaten the varieties of these for years ... \n",
"38093 My first shipment of corn chips was rancid and... \n",
"38564 These chips are great by themselves or with sa... \n",
"207877 Either these folks are completely ignorant or ... \n",
"123411 Bought these to try with our new eating life s... \n",
"38433 These corn chips are crispy and taste great. A... \n",
"123439 Fate has smiled upon you today, for you have s... \n",
"38621 These were not good at all... too spicy. Too \"... \n",
"207933 This product when received became an instant h... \n",
"123732 I love these chips. Nice alternative to the r... \n",
"--------------------------------------------------\n",
"cluster: 10\n",
"cluster size: (1644, 4)\n",
" ProductId cluster Summary \\\n",
"22701 B000CQBZOW 10 Wonderful Herbal Tea \n",
"26004 B000CQID2Y 10 Best herb tea on the planet! \n",
"26022 B000CQID2Y 10 Gross \n",
"105092 B0012BUR8Q 10 decent tea \n",
"23222 B000CQC04Q 10 Yumberry .... miss Wild Blackcurrant \n",
"26450 B000CQIDHE 10 The Best Herbal Tea \n",
"255466 B004OQBC8K 10 It's the best! \n",
"24867 B000CQG89Y 10 Great Tasting Tea \n",
"216192 B003CK0XC0 10 Best Price Available \n",
"105023 B0012BUR8Q 10 It is not real Acai \n",
"24694 B000CQG87Q 10 Stash Premium Peppermint Herbal Tea \n",
"24727 B000CQG87Q 10 The best tasting hibiscus tea! \n",
"104992 B0012BUR8Q 10 Tastes like dessert \n",
"23205 B000CQC04Q 10 Peppermint for sure! \n",
"255573 B004OQBC8K 10 A Calming Experience \n",
"23424 B000CQC05K 10 Stashed Premium Chamomile Herbash \n",
"22714 B000CQBZOW 10 Disappointed with Amazon's policy \n",
"22709 B000CQBZOW 10 Excellent tea! \n",
"24830 B000CQG89Y 10 SOY??? WHY? \n",
"23199 B000CQC04Q 10 Raspberry Tea is the BEST \n",
"\n",
" Text \n",
"22701 I'm not a traditional tea drinker; in fact don... \n",
"26004 I really hope Amazon dosn't discontinue this t... \n",
"26022 Tasted artificial, weird, unnatural. Could no... \n",
"105092 I gave up drinking coffee because I always add... \n",
"23222 It seems that this Yumberry Blackcurrat tea ma... \n",
"26450 I only like herbal tea especially raspberry. ... \n",
"255466 Stash teas are really good and this is the bes... \n",
"24867 I like the light Peppermint flavor. I usually ... \n",
"216192 Love this tea but it's hard to find at a reaso... \n",
"105023 I am dissapointed!! When I bought this product... \n",
"24694 Very nice product. It was fresh and in date a... \n",
"24727 My local grocery store didn't carry it anymore... \n",
"104992 For licorice lovers only. Intense licorice fl... \n",
"23205 I started using peppermint oil for my sebhorri... \n",
"255573 This is a great tea. I like to drink it in th... \n",
"23424 After a lengthy trek in the Himalayan Range, t... \n",
"22714 Price dropped by $5 in matter of 2 days. Item... \n",
"22709 Chamomile Nights Tea from Stash is delicious a... \n",
"24830 Maybe I didn't read the ingredient list thorou... \n",
"23199 I love raspberries and this tea does not disap... \n",
"--------------------------------------------------\n",
"cluster: 11\n",
"cluster size: (1387, 4)\n",
" ProductId cluster Summary \\\n",
"96614 B000WFEN74 11 Best canned wet food out there! My cat loves it! \n",
"98261 B000WFU8O6 11 Sample? \n",
"97060 B000WFKWDI 11 My cat's favorite flavor \n",
"97200 B000WFN0VO 11 Great Option For Diabetic Cats! \n",
"97846 B000WFRQQ4 11 Fantastic Food for Good Cat Health \n",
"97474 B000WFORH0 11 Loved the first three cans... \n",
"1615 B000084EZ4 11 cats love it, and it's good for them. \n",
"98381 B000WFUL3E 11 Great Cat Food \n",
"97794 B000WFRQQ4 11 best cat food in the world!!!! \n",
"97594 B000WFPJIG 11 Fantastic Food for Good Cat Health \n",
"97642 B000WFPJIG 11 The Best Money can Buy for your Cat, Next to H... \n",
"96650 B000WFEN74 11 Cat loves it, good protein content, good ingre... \n",
"1588 B000084EZ4 11 Excellent product just when I needed it \n",
"97047 B000WFKWDI 11 Wellness Review Turkey/Salmon \n",
"1775 B00008CQVA 11 My Cats Wouldn't Touch It \n",
"97640 B000WFPJIG 11 Wellness Grain-Free canned cat food \n",
"97209 B000WFN0VO 11 cats love it \n",
"98274 B000WFUL3E 11 Poor Packaging \n",
"1522 B000084EZ4 11 High quality food \n",
"96858 B000WFKI82 11 It's pricey, but our picky cats like it. \n",
"\n",
" Text \n",
"96614 My cat is a very finicky eater, and so finding... \n",
"98261 I wish every brand would offer a 1 can sample ... \n",
"97060 My cat absolutely loves this flavor. Normally,... \n",
"97200 My 14 year-old cat was diagnosed with Diabetes... \n",
"97846 The pet food industry can be one of the most i... \n",
"97474 After feeding my recently-acquired cat a case ... \n",
"1615 Our little monster, Gary, had problems when he... \n",
"98381 Wellness wet cat food is terrific.<br />My thr... \n",
"97794 My cat was very sick with kidney problems and ... \n",
"97594 The pet food industry can be one of the most i... \n",
"97642 I like to provide variety for the cats, howeve... \n",
"96650 Used to feed my cat Natural Balance pouches ex... \n",
"1588 We needed a high quality wet cat food to help ... \n",
"97047 We've been purchasing direct from retail store... \n",
"1775 A short background on the eating habits of my ... \n",
"97640 When my female cat came down w/pancreatitis a ... \n",
"97209 Cats love it! And Wellness is a brand I trust.... \n",
"98274 First let me say that the product itself is ex... \n",
"1522 I did A LOT of research on cat food before ado... \n",
"96858 Our kittens will eat anything, even styrofoam ... \n",
"--------------------------------------------------\n",
"cluster: 12\n",
"cluster size: (3445, 4)\n",
" ProductId cluster Summary \\\n",
"93651 B000VJYTZM 12 A must have if you have painful heavy periods \n",
"12633 B0006I5M2M 12 Add honey? \n",
"93575 B000VJYTZM 12 Actually works. \n",
"6671 B00020HHHC 12 good stuff \n",
"13623 B00073IVAQ 12 Fish tea \n",
"13570 B00073IVAQ 12 Bad taste, but helps you fall asleep \n",
"54253 B000FVDWU4 12 Fennel Seed Tea Bags \n",
"6600 B00020HHGS 12 Does the job \n",
"93571 B000VJYTZM 12 Mild sweet tea \n",
"115892 B00188S3PM 12 Stale \n",
"7174 B00020HHRW 12 Great stuff \n",
"236317 B00412W76S 12 UTI \n",
"13566 B00073IVAQ 12 Great herbal tea for cramps \n",
"54128 B000FVBYCW 12 Good price for the quantity :) \n",
"3810 B00014DXCC 12 Very high quality tea \n",
"54322 B000FVDWU4 12 Great stuff \n",
"115945 B00188S3PM 12 Horsetail grass tea bags \n",
"115922 B00188S3PM 12 Mild sweet tea \n",
"54070 B000FVBYCW 12 Distinct Odor but I Really Like It .. \n",
"13602 B00073IVAQ 12 Delicious Herbal Tea! \n",
"\n",
" Text \n",
"93651 I had very painful cramps with Very Heavy blee... \n",
"12633 Are you supposed to avoid sugars if you have a... \n",
"93575 I was surprised to see that this product actua... \n",
"6671 this red clover tea is worth my money, i have ... \n",
"13623 I know nettle tea has a pretty distinct taste,... \n",
"13570 I bought this to help me fall asleep and it wo... \n",
"54253 I do like herbal teas in general and this fenn... \n",
"6600 I ordered this for my boyfriend because he has... \n",
"93571 I've been watching the new Dr. Oz show and he ... \n",
"115892 I think these had been sitting around in a war... \n",
"7174 I love this stuff. It has really helped me wit... \n",
"236317 My husband is a paraplegic and was having UTIs... \n",
"13566 My mother-in-law recommended this tea to me to... \n",
"54128 It came in a timely fashion & it was a good pr... \n",
"3810 Many of the common brands of herbal teas are n... \n",
"54322 I love this stuff. It has really helped me wit... \n",
"115945 Have purchased these tea bas before. I bought ... \n",
"115922 I've been watching the new Dr. Oz show and he ... \n",
"54070 This tea has a strong pungent smell that my hu... \n",
"13602 Love this herbal tea! It's so delicious! It ta... \n",
"--------------------------------------------------\n",
"cluster: 13\n",
"cluster size: (7001, 4)\n",
" ProductId cluster \\\n",
"94323 B000VK4K3W 13 \n",
"272552 B005K4Q1YA 13 \n",
"94204 B000VK4K2S 13 \n",
"273981 B005K4Q4LK 13 \n",
"165867 B001PMC3PM 13 \n",
"280891 B005ZBZLT4 13 \n",
"165965 B001PMC3QG 13 \n",
"273304 B005K4Q37A 13 \n",
"281146 B005ZBZLT4 13 \n",
"286891 B006N3I0N2 13 \n",
"272661 B005K4Q1YA 13 \n",
"286468 B006N3HZ6K 13 \n",
"300340 B007TJGY5K 13 \n",
"286312 B006N3HZ6K 13 \n",
"272323 B005K4Q1YA 13 \n",
"281067 B005ZBZLT4 13 \n",
"107379 B001397WYY 13 \n",
"182513 B0029XDZDK 13 \n",
"35023 B000EGZ2R6 13 \n",
"166253 B001PMDYXW 13 \n",
"\n",
" Summary \\\n",
"94323 Watch for dented cans. I will re-rate this pro... \n",
"272552 Our New Favorite!!! \n",
"94204 great healthy dog food \n",
"273981 Not As Good As Starbucks, But Better Price \n",
"165867 Disgusting \n",
"280891 Good coffee, bad packaging \n",
"165965 Unhappy \n",
"273304 Delicious! \n",
"281146 Good coffee, not a K-Cup \n",
"286891 Good Coffee! \n",
"272661 I LOVE this product \n",
"286468 Great coffee but the price is a rip off \n",
"300340 Nice Decaf \n",
"286312 Awesome coffee! \n",
"272323 Fantastic coffee \n",
"281067 SF Bay Fog Chaser \n",
"107379 confused about this product \n",
"182513 This tiger is still roaring \n",
"35023 excellent ingredients but my dogs don't like i... \n",
"166253 Cats Like it \n",
"\n",
" Text \n",
"94323 The last 3 cases I've ordered had some dented ... \n",
"272552 LOVE THIS COFFEE! So delicious and love having... \n",
"94204 Great organic dog food from a company I trust.... \n",
"273981 I bought this item for an occasional treat but... \n",
"165867 I was very excited to find this product, havin... \n",
"280891 One of my biggest pet peeves is over-packaging... \n",
"165965 Price at Amazon entirely too expensive. Plus s... \n",
"273304 The flavor is rich, sweet and you do not need ... \n",
"281146 While I am happy with the coffee itself, I fin... \n",
"286891 I have bought this coffee in the past through ... \n",
"272661 I absolutely LOVE this product. I order and re... \n",
"286468 I've been buying Jet Fuel for over a year and ... \n",
"300340 Emeril's Jazzed Up Decaf for Keurig Brewers pr... \n",
"286312 The coffee is full-bodied and delicious. I use... \n",
"272323 This is my new favorite coffee. I have tried ... \n",
"281067 I first tried San Francisco Bay Rainforest ble... \n",
"107379 I ordered this product knowing that my cat lov... \n",
"182513 I reviewed this coffee before and still find i... \n",
"35023 I am trying to get my dogs (all shelter dogs a... \n",
"166253 I have been feeding my cats dry food that is s... \n",
"--------------------------------------------------\n",
"cluster: 14\n",
"cluster size: (1326, 4)\n",
" ProductId cluster \\\n",
"217371 B003D4IYSU 14 \n",
"218061 B003D4MYLS 14 \n",
"217641 B003D4MW38 14 \n",
"217540 B003D4MW38 14 \n",
"216847 B003D4F1QS 14 \n",
"216866 B003D4F1QS 14 \n",
"217938 B003D4MYLS 14 \n",
"217696 B003D4MW38 14 \n",
"217566 B003D4MW38 14 \n",
"217680 B003D4MW38 14 \n",
"218148 B003D4MYLS 14 \n",
"218041 B003D4MYLS 14 \n",
"217261 B003D4IYSU 14 \n",
"216864 B003D4F1QS 14 \n",
"216838 B003D4F1QS 14 \n",
"217105 B003D4F1QS 14 \n",
"216948 B003D4F1QS 14 \n",
"217348 B003D4IYSU 14 \n",
"217565 B003D4MW38 14 \n",
"217413 B003D4IYSU 14 \n",
"\n",
" Summary \\\n",
"217371 Health in a Teabag \n",
"218061 iced tea with mangosteen \n",
"217641 Decaf. White Tea w/ Raspberry: Simple, Unsophi... \n",
"217540 love it can't wait for the next cup! \n",
"216847 Stash Tea \n",
"216866 You don't know what you are missing \n",
"217938 Has STASH tea become weaker in flavor? \n",
"217696 Essential Everyday Luxury \n",
"217566 Great tea!! \n",
"217680 slick shopper \n",
"218148 Just OK \n",
"218041 Delicious \n",
"217261 PEACH!!!! :) \n",
"216864 Very \"fresh\" taste! \n",
"216838 Very nice peach team \n",
"217105 Dessert Tea! \n",
"216948 White Peach Oolong Yum! \n",
"217348 Love this tea. \n",
"217565 Great Taste! \n",
"217413 Yummy iced tea \n",
"\n",
" Text \n",
"217371 Aaah, nothing like good black tea! Black tea,... \n",
"218061 We make sweetened iced tea combining 3 black t... \n",
"217641 I ordered this because I enjoy white teas, and... \n",
"217540 Best tasting tea... love everything about it! ... \n",
"216847 This tea is a routine purchase for me. Findin... \n",
"216866 If you have never had a cuppa Earl Grey Tea wi... \n",
"217938 It how takes three to four tea bags and steepi... \n",
"217696 I love Stash Premium Green Tea. I drink it eve... \n",
"217566 This tea is amazing -- and affordable!!! Licor... \n",
"217680 I found that my grocery store stopped carrying... \n",
"218148 Marginally better than Lipton. Don't think I w... \n",
"218041 I bought this tea for the relaxation benefit i... \n",
"217261 I hate tea and I LOVE this stuff because I lov... \n",
"216864 I decided to try this brand because it is made... \n",
"216838 This is nice tea, but I have also tried their ... \n",
"217105 This is a terrific dessert alternative. Witho... \n",
"216948 I am a bit of a Tea Crazy (I counted last week... \n",
"217348 I have been using Stash tea for many years, wh... \n",
"217565 I first tried this tea when my local grocery s... \n",
"217413 I really enjoy using this tea for making iced ... \n",
"--------------------------------------------------\n",
"cluster: 15\n",
"cluster size: (1853, 4)\n",
" ProductId cluster Summary \\\n",
"268792 B005GYULZY 15 Lickety Stik \n",
"266323 B005CUU23S 15 Dogs KNOW it's bacon \n",
"266450 B005CUU25G 15 What? \n",
"187340 B002CJG1YQ 15 MY CAT HATES IT \n",
"18376 B0009YL2R2 15 Decent, but not great \n",
"187196 B002CJARMI 15 Terrible cat food \n",
"267458 B005GBIXZM 15 Too confusing for my dog \n",
"18377 B0009YL2R2 15 \"Lion's \" waiter \n",
"165603 B001PICX42 15 Deal!! \n",
"268842 B005GYULZY 15 Awesome. For training, not an a regular treat! \n",
"275489 B005OU6UGY 15 Made in china! Do not buy these! \n",
"266268 B005CUU23S 15 Too confusing for my dog \n",
"98561 B000WUVZCK 15 Ninja likes them. \n",
"165601 B001PICX42 15 Delicious healthier snack for the kids! \n",
"187201 B002CJARMI 15 My Cats Love The Friskies Pates \n",
"98571 B000WUVZCK 15 Picky cat loves these! \n",
"275483 B005OU6UGY 15 Excellent alternative to rawhide. \n",
"211894 B003760Z90 15 how to get beef for your cat back into Canada!! \n",
"309258 B008O3G2GG 15 Interesting way to \"treat\" your dog! \n",
"275492 B005OU6UGY 15 Dream Bones name is correct \n",
"\n",
" Text \n",
"268792 At first the dogs were confused and the golden... \n",
"266323 When I picked up the padded envelope from our ... \n",
"266450 This was not at all what I expected. It was li... \n",
"187340 The vet suggested to feed my cat a variety of ... \n",
"18376 When I first started to use IAMS Savory Sauce,... \n",
"187196 I bought this cat food because of the wonderfu... \n",
"267458 I decided to try this \"treat\" with my new dog.... \n",
"18377 Our dog Lion-a Golden Retriever loves the baco... \n",
"165603 How can I say anything bad about this product?... \n",
"268842 Many of these reviews seemed to be confused. T... \n",
"275489 Another treat I purchased at the store for my ... \n",
"266268 I decided to try this \"treat\" with my new dog.... \n",
"98561 It is difficult to give a review of this produ... \n",
"165601 My kids (3 years old and 17 months old) love t... \n",
"187201 My cats just love the Friskies Pates and will ... \n",
"98571 My cat turns up her nose to almost all treats.... \n",
"275483 I've been giving these bones to my 3 dogs for ... \n",
"211894 Finally, my cat is back to eating beef again w... \n",
"309258 I have to say this is an unusual product. It'... \n",
"275492 These dog bones must really taste wonderful - ... \n",
"--------------------------------------------------\n",
"cluster: 16\n",
"cluster size: (969, 4)\n",
" ProductId cluster Summary \\\n",
"141511 B001EO5TJ8 16 Lemon Ginger Tea \n",
"141403 B001EO5TIE 16 Very Bergamot-y Tea! \n",
"149601 B001EQ5OAA 16 Great Coffee Substitute \n",
"135264 B001E5E268 16 Good tea. \n",
"284346 B006H32VYC 16 Excellent tea \n",
"140525 B001EO5QZK 16 nice organic Assam \n",
"135300 B001E5E268 16 Quality Teas at Reasonable Prices \n",
"141374 B001EO5TGQ 16 Good stuff \n",
"149569 B001EQ5OAA 16 Pretty bad \n",
"141495 B001EO5TJ8 16 E.G. tea \n",
"149550 B001EQ5OAA 16 Terrible \n",
"140698 B001EO5R0Y 16 Stash Darjeeling Tea \n",
"140606 B001EO5R04 16 Stash Premium Gunpowder Green Tea, Loose Leaf \n",
"141333 B001EO5TGQ 16 Doesn't taste like English Breakfast to me. \n",
"140642 B001EO5R04 16 Very Bergamot-y Tea! \n",
"140443 B001EO5QPA 16 Smokey tea! \n",
"135244 B001E5E268 16 a darn good pitcher of tea \n",
"149617 B001EQ5OAA 16 Very strong... \n",
"141461 B001EO5TIE 16 Not what I expected \n",
"140625 B001EO5R04 16 Solid, Strong Green Tea \n",
"\n",
" Text \n",
"141511 Excellent tea. Normally I am a black tea drin... \n",
"141403 ****<br />I enjoy bergamot a lot, but this tea... \n",
"149601 Coffee was killing my stomach so I went in sea... \n",
"135264 This is good loose leaf tea and the packaging ... \n",
"284346 This tea is absolutely delicious, my husband a... \n",
"140525 Satisfactory but not completely satisfying as ... \n",
"135300 Stash is a decent brand of tea. We've got a nu... \n",
"141374 Back to buy more. Love this tea! I have had ... \n",
"149569 pros:<br />+ resistant to overbrewing (getting... \n",
"141495 Nice light earl grey flavor. pleasant aroma. U... \n",
"149550 This was the worst loose tea I have ever had. ... \n",
"140698 I was disappointed with this tea. The taste w... \n",
"140606 This is a high quality green tea from Stash th... \n",
"141333 I usually drink Twinnings or Bigelow English B... \n",
"140642 ****<br />I enjoy bergamot a lot, but this tea... \n",
"140443 As others have said, \"if you like your tea to ... \n",
"135244 I have been making black tea in my bodum iced ... \n",
"149617 This is my first bag of chai tea and I have to... \n",
"141461 The price + being organic is what drew me in t... \n",
"140625 This is a pretty good all around tea. You can... \n",
"--------------------------------------------------\n",
"cluster: 17\n",
"cluster size: (1697, 4)\n",
" ProductId cluster \\\n",
"157864 B001KVPBS4 17 \n",
"159788 B001LNTY70 17 \n",
"250272 B004HOLD60 17 \n",
"159787 B001LNTY70 17 \n",
"146775 B001EQ4RBM 17 \n",
"250931 B004HOSGWE 17 \n",
"146699 B001EQ4QJK 17 \n",
"250463 B004HOLD92 17 \n",
"250798 B004HOQE64 17 \n",
"102449 B000ZSZ5S4 17 \n",
"250870 B004HOQE64 17 \n",
"102389 B000ZSZ5S4 17 \n",
"250997 B004HOSGWE 17 \n",
"250263 B004HOLD60 17 \n",
"250388 B004HOLD60 17 \n",
"146477 B001EQ4P2I 17 \n",
"146631 B001EQ4QJK 17 \n",
"157874 B001KVPBS4 17 \n",
"146554 B001EQ4P2I 17 \n",
"250948 B004HOSGWE 17 \n",
"\n",
" Summary \\\n",
"157864 Best Nuts Ever \n",
"159788 I Didn't Know \n",
"250272 Best Nuts Ever \n",
"159787 tasty almonds \n",
"146775 Wasabi Lovers Rejoice! These Wasabi SoySauce B... \n",
"250931 Great flavor for snacking \n",
"146699 YUM! \n",
"250463 Great taste \n",
"250798 Zesty Deliciousness in a Can \n",
"102449 A Great Spicy, Healthy Snack!! \n",
"250870 Not worth the money \n",
"102389 Love Love Love \n",
"250997 Not a typical nut \n",
"250263 Healthy, satisfying snack on the go \n",
"250388 Yum \n",
"146477 I LOVE this stuff \n",
"146631 I LOVE this stuff \n",
"157874 taste awesome! \n",
"146554 You can definitely taste the salt & vinegar \n",
"250948 Perfect Treat - Perfect Heat \n",
"\n",
" Text \n",
"157864 I absolutely love these nuts! I can't find the... \n",
"159788 I didn't like these.<br />I guess it's my faul... \n",
"250272 I absolutely love these nuts! I can't find the... \n",
"159787 I love all these different flavors that they h... \n",
"146775 Hello everyone, I just had to write a review f... \n",
"250931 The Jalapeno Smokehouse almonds taste great an... \n",
"146699 Love these almonds! Great flavor -- really hi... \n",
"250463 Love the taste not to hot but a little tangy. ... \n",
"250798 I love these. They have exactly the right amo... \n",
"102449 Blue Diamond Bold Jalapeno Smokehouse Almonds ... \n",
"250870 These have no bite at all...Nothing. They shou... \n",
"102389 These are my favorite flavored almonds! Inten... \n",
"250997 This flavor is the best of the bunch by far. ... \n",
"250263 While trying to cut back on carbs, and add mor... \n",
"250388 Eaten alone these flavored almonds are a bit o... \n",
"146477 I'd been buying it for years WHEN I COULD FIND... \n",
"146631 I'd been buying it for years WHEN I COULD FIND... \n",
"157874 these taste amazing. might make the poops burn... \n",
"146554 Even though I (thought) I hated them for 25 ye... \n",
"250948 I was concerned that these might be too hot, '... \n",
"--------------------------------------------------\n",
"cluster: 18\n",
"cluster size: (115, 4)\n",
" ProductId cluster Summary \\\n",
"182298 B0029O6UQI 18 They run me over to get their Cod and Shrimp... \n",
"181912 B0029NVNY8 18 Cats love it!!! \n",
"182301 B0029O6UQI 18 They like em'....they like em'. \n",
"181910 B0029NVNY8 18 My cats come running \n",
"181885 B0029NVMGC 18 Happy Cat \n",
"181929 B0029NVOEC 18 Happy Cat \n",
"181937 B0029NVOEC 18 Good Cat Food Without Smelly Cans \n",
"266926 B005DL797S 18 They lovbe it \n",
"181954 B0029NVOS8 18 Happy Cat \n",
"181889 B0029NVMGC 18 Cats love it \n",
"266925 B005DL797S 18 They run me over to get their Cod and Shrimp... \n",
"182302 B0029O6UQI 18 Good Cat Food Without Smelly Cans \n",
"181919 B0029NVNY8 18 Horrible stuff but it's all the cat will eat!! \n",
"181932 B0029NVOEC 18 My cats come running \n",
"266923 B005DL797S 18 Horrible stuff but it's all the cat will eat!! \n",
"181917 B0029NVNY8 18 My cat's favorite flavor \n",
"274712 B005M16UHY 18 They run me over to get their Cod and Shrimp... \n",
"181888 B0029NVMGC 18 They like em'....they like em'. \n",
"181936 B0029NVOEC 18 They like em'....they like em'. \n",
"181948 B0029NVOS8 18 My cat's favorite flavor \n",
"\n",
" Text \n",
"182298 Another popular seafood flavor that Sophie and... \n",
"181912 Every day is Thanksgiving at Sophie and Sam's ... \n",
"182301 My finicky cats are difficult to please partic... \n",
"181910 I have two big cats that are over 15 lbs. each... \n",
"181885 My cat will only eat the Whiskas Choice cuts w... \n",
"181929 My cat will only eat the Whiskas Choice cuts w... \n",
"181937 What self-respecting cat isn't a picky eater? ... \n",
"266926 They LOVE it, I give my kitties (Silki and Tuf... \n",
"181954 My cat will only eat the Whiskas Choice cuts w... \n",
"181889 Cats love this stuff. One pouch doesn't go far... \n",
"266925 Another popular seafood flavor that Sophie and... \n",
"182302 What self-respecting cat isn't a picky eater? ... \n",
"181919 I adopted a 12 yo cat from a woman who had a p... \n",
"181932 I have two big cats that are over 15 lbs. each... \n",
"266923 I adopted a 12 yo cat from a woman who had a p... \n",
"181917 It is hard to get just one falvor of this prod... \n",
"274712 Another popular seafood flavor that Sophie and... \n",
"181888 My finicky cats are difficult to please partic... \n",
"181936 My finicky cats are difficult to please partic... \n",
"181948 It is hard to get just one falvor of this prod... \n",
"--------------------------------------------------\n",
"cluster: 19\n",
"cluster size: (3270, 4)\n",
" ProductId cluster \\\n",
"288456 B006N3IG4K 19 \n",
"230072 B003VXFK44 19 \n",
"230604 B003VXHGDM 19 \n",
"231558 B003VXL0V6 19 \n",
"230819 B003VXHGE6 19 \n",
"288511 B006N3IG4K 19 \n",
"229959 B003VXFK44 19 \n",
"231099 B003VXHGPK 19 \n",
"231320 B003VXHGPK 19 \n",
"230220 B003VXFK44 19 \n",
"230052 B003VXFK44 19 \n",
"288285 B006N3IE6A 19 \n",
"288759 B006N3IG4K 19 \n",
"231592 B003VXL0V6 19 \n",
"249134 B004FGWU9O 19 \n",
"227687 B003TC7WN4 19 \n",
"231063 B003VXHGPK 19 \n",
"230274 B003VXFK44 19 \n",
"227977 B003TC7WN4 19 \n",
"231008 B003VXHGE6 19 \n",
"\n",
" Summary \\\n",
"288456 Superb coffee \n",
"230072 Not Bad! Smooth, Not Bitter, Plenty Strong But... \n",
"230604 Just Okay - Hidden Decaf. \n",
"231558 Excellent coffee \n",
"230819 I would order again! \n",
"288511 Wolfgang Puck Sumatra \n",
"229959 Not the best \n",
"231099 Works for me. \n",
"231320 Smooth coffee taste \n",
"230220 These K Cups Have ISSUES - Coffee Not Bad \n",
"230052 Best caramel K-cup! \n",
"288285 Poor quality Kcups \n",
"288759 K-Cup Fan \n",
"231592 Wolfgang Puck Coffee, Vienna Coffee House \n",
"249134 Wolfgang Puck Keurig Cup Coffee \n",
"227687 An EXCELLENT hazelnut choice for your Keurig b... \n",
"231063 Yummo!! \n",
"230274 Good tasting Coffee \n",
"227977 Ewwwww!!!! \n",
"231008 Pretty Good Decaf \n",
"\n",
" Text \n",
"288456 I'm actually suprised from reading some of the... \n",
"230072 NOTE: This one is better for me at the smalles... \n",
"230604 Taste is okay. Not blown away. Hidden is the... \n",
"231558 This is an excellent full-bodied coffee withou... \n",
"230819 Wolfgang Puck makes the BEST coffee! The packa... \n",
"288511 I ordered this by accident and I'm so happy I ... \n",
"229959 With so many choices now, I thought I woudl gi... \n",
"231099 This is a good tasting K-cup from a guy who dr... \n",
"231320 I find many of the K cups are a bit bitter for... \n",
"230220 First of all, I have owned a Keurig for about ... \n",
"230052 These have a stronger caramel flavor although ... \n",
"288285 I love the taste but have found that many of t... \n",
"288759 Wolfgang's Reserve Columbian Decaf is probably... \n",
"231592 great tasting coffee. strong, but not obnoxiou... \n",
"249134 This coffee is a smooth, yet robust taste that... \n",
"227687 I've long been a fan of flavored coffees so wh... \n",
"231063 I want this coffee in bed every morning, just ... \n",
"230274 I drink a lot of coffee and I buy several diff... \n",
"227977 Really? Who blends this stuff and decides tha... \n",
"231008 I switched to Decaf and was looking for a dece... \n"
]
}
],
"source": [
"# view samples of product reviews, organized by KMeans cluster results\n",
"viz.view_cluster_samples(20)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment