You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openai-cookbook/examples/Clustering.ipynb

278 lines
71 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Clustering\n",
"\n",
"We use a simple k-means algorithm to demonstrate how clustering can be done. Clustering can help discover valuable, hidden groupings within the data. The dataset is created in the [Obtain_dataset Notebook](Obtain_dataset.ipynb)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1000, 1536)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# imports\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"# load data\n",
"datafile_path = \"./data/fine_food_reviews_with_embeddings_1k.csv\"\n",
"\n",
"df = pd.read_csv(datafile_path)\n",
"df[\"embedding\"] = df.embedding.apply(eval).apply(np.array) # convert string to numpy array\n",
"matrix = np.vstack(df.embedding.values)\n",
"matrix.shape\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. Find the clusters using K-means"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We show the simplest use of K-means. You can pick the number of clusters that fits your use case best."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ted/.virtualenvs/openai/lib/python3.9/site-packages/sklearn/cluster/_kmeans.py:870: FutureWarning: The default value of `n_init` will change from 10 to 'auto' in 1.4. Set the value of `n_init` explicitly to suppress the warning\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
"Cluster\n",
"0 4.105691\n",
"1 4.191176\n",
"2 4.215613\n",
"3 4.306590\n",
"Name: Score, dtype: float64"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.cluster import KMeans\n",
"\n",
"n_clusters = 4\n",
"\n",
"kmeans = KMeans(n_clusters=n_clusters, init=\"k-means++\", random_state=42)\n",
"kmeans.fit(matrix)\n",
"labels = kmeans.labels_\n",
"df[\"Cluster\"] = labels\n",
"\n",
"df.groupby(\"Cluster\").Score.mean().sort_values()\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Clusters identified visualized in language 2d using t-SNE')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.manifold import TSNE\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"\n",
"tsne = TSNE(n_components=2, perplexity=15, random_state=42, init=\"random\", learning_rate=200)\n",
"vis_dims2 = tsne.fit_transform(matrix)\n",
"\n",
"x = [x for x, y in vis_dims2]\n",
"y = [y for x, y in vis_dims2]\n",
"\n",
"for category, color in enumerate([\"purple\", \"green\", \"red\", \"blue\"]):\n",
" xs = np.array(x)[df.Cluster == category]\n",
" ys = np.array(y)[df.Cluster == category]\n",
" plt.scatter(xs, ys, color=color, alpha=0.3)\n",
"\n",
" avg_x = xs.mean()\n",
" avg_y = ys.mean()\n",
"\n",
" plt.scatter(avg_x, avg_y, marker=\"x\", color=color, s=100)\n",
"plt.title(\"Clusters identified visualized in language 2d using t-SNE\")\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualization of clusters in a 2d projection. In this run, the green cluster (#1) seems quite different from the others. Let's see a few samples from each cluster."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. Text samples in the clusters & naming the clusters\n",
"\n",
"Let's show random samples from each cluster. We'll use text-davinci-003 to name the clusters, based on a random sample of 5 reviews from that cluster."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster 0 Theme: All of the reviews are positive and the customers are satisfied with the product they purchased.\n",
"5, Loved these gluten free healthy bars, saved $$ ordering on Amazon: These Kind Bars are so good and healthy & gluten free. My daughter ca\n",
"1, Should advertise coconut as an ingredient more prominently: First, these should be called Mac - Coconut bars, as Coconut is the #2\n",
"5, very good!!: just like the runts<br />great flavor, def worth getting<br />I even o\n",
"5, Excellent product: After scouring every store in town for orange peels and not finding an\n",
"5, delicious: Gummi Frogs have been my favourite candy that I have ever tried. of co\n",
"----------------------------------------------------------------------------------------------------\n",
"Cluster 1 Theme: All of the reviews are about pet food.\n",
"2, Messy and apparently undelicious: My cat is not a huge fan. Sure, she'll lap up the gravy, but leaves th\n",
"4, The cats like it: My 7 cats like this food but it is a little yucky for the human. Piece\n",
"5, cant get enough of it!!!: Our lil shih tzu puppy cannot get enough of it. Everytime she sees the\n",
"1, Food Caused Illness: I switched my cats over from the Blue Buffalo Wildnerness Food to this\n",
"5, My furbabies LOVE these!: Shake the container and they come running. Even my boy cat, who isn't \n",
"----------------------------------------------------------------------------------------------------\n",
"Cluster 2 Theme: All of the reviews are positive and express satisfaction with the product.\n",
"5, Fog Chaser Coffee: This coffee has a full body and a rich taste. The price is far below t\n",
"5, Excellent taste: This is to me a great coffee, once you try it you will enjoy it, this \n",
"4, Good, but not Wolfgang Puck good: Honestly, I have to admit that I expected a little better. That's not \n",
"5, Just My Kind of Coffee: Coffee Masters Hazelnut coffee used to be carried in a local coffee/pa\n",
"5, Rodeo Drive is Crazy Good Coffee!: Rodeo Drive is my absolute favorite and I'm ready to order more! That\n",
"----------------------------------------------------------------------------------------------------\n",
"Cluster 3 Theme: All of the reviews are about food or drink products.\n",
"5, Wonderful alternative to soda pop: This is a wonderful alternative to soda pop. It's carbonated for thos\n",
"5, So convenient, for so little!: I needed two vanilla beans for the Love Goddess cake that my husbands \n",
"2, bot very cheesy: Got this about a month ago.first of all it smells horrible...it tastes\n",
"5, Delicious!: I am not a huge beer lover. I do enjoy an occasional Blue Moon (all o\n",
"3, Just ok: I bought this brand because it was all they had at Ranch 99 near us. I\n",
"----------------------------------------------------------------------------------------------------\n"
]
}
],
"source": [
"import openai\n",
"\n",
"# Reading a review which belong to each group.\n",
"rev_per_cluster = 5\n",
"\n",
"for i in range(n_clusters):\n",
" print(f\"Cluster {i} Theme:\", end=\" \")\n",
"\n",
" reviews = \"\\n\".join(\n",
" df[df.Cluster == i]\n",
" .combined.str.replace(\"Title: \", \"\")\n",
" .str.replace(\"\\n\\nContent: \", \": \")\n",
" .sample(rev_per_cluster, random_state=42)\n",
" .values\n",
" )\n",
" response = openai.Completion.create(\n",
" engine=\"text-davinci-003\",\n",
" prompt=f'What do the following customer reviews have in common?\\n\\nCustomer reviews:\\n\"\"\"\\n{reviews}\\n\"\"\"\\n\\nTheme:',\n",
" temperature=0,\n",
" max_tokens=64,\n",
" top_p=1,\n",
" frequency_penalty=0,\n",
" presence_penalty=0,\n",
" )\n",
" print(response[\"choices\"][0][\"text\"].replace(\"\\n\", \"\"))\n",
"\n",
" sample_cluster_rows = df[df.Cluster == i].sample(rev_per_cluster, random_state=42)\n",
" for j in range(rev_per_cluster):\n",
" print(sample_cluster_rows.Score.values[j], end=\", \")\n",
" print(sample_cluster_rows.Summary.values[j], end=\": \")\n",
" print(sample_cluster_rows.Text.str[:70].values[j])\n",
"\n",
" print(\"-\" * 100)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's important to note that clusters will not necessarily match what you intend to use them for. A larger amount of clusters will focus on more specific patterns, whereas a small number of clusters will usually focus on largest discrepencies in the data."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "openai",
"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.9.9"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "365536dcbde60510dc9073d6b991cd35db2d9bac356a11f5b64279a5e6708b97"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}