Full Code of echen/dirichlet-process for AI

master be67339856cc cached
8 files
127.3 KB
53.3k tokens
2 symbols
1 requests
Download .txt
Repository: echen/dirichlet-process
Branch: master
Commit: be67339856cc
Files: 8
Total size: 127.3 KB

Directory structure:
gitextract_tvfncltk/

├── README.md
├── chinese_restaurant_process.rb
├── dpgmm.py
├── mcdonalds-normalized-data.tsv
├── plots.R
├── polya_urn_model.R
├── polya_urn_model.rb
└── stick_breaking_process.R

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
Imagine you're a budding chef. A data-curious one, of course, so you start by taking a set of foods (pizza, salad, spaghetti, etc.) and ask 10 friends how much of each they ate in the past day.

Your goal: to find natural *groups* of foodies, so that you can better cater to each cluster's tastes. For example, your fratboy friends might love [wings and beer](https://twitter.com/#!/edchedch/status/166343879547822080), your anime friends might love soba and sushi, your hipster friends probably dig tofu, and so on.

So how can you use the data you've gathered to discover different kinds of groups?

[![Clustering Example](http://dl.dropbox.com/u/10506/blog/dirichlet-process/clustering-example.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/clustering-example.png)

One way is to use a standard clustering algorithm like **k-means** or **Gaussian mixture modeling** (see [this previous post](http://blog.echen.me/2011/03/19/counting-clusters/) for a brief introduction). The problem is that these both assume a *fixed* number of clusters, which they need to be told to find. There are a couple methods for selecting the number of clusters to learn (e.g., the [gap and prediction strength statistics](http://blog.echen.me/2011/03/19/counting-clusters/)), but the problem is a more fundamental one: most real-world data simply doesn't have a fixed number of clusters.

That is, suppose we've asked 10 of our friends what they ate in the past day, and we want to find groups of eating preferences. There's really an infinite number of foodie types (carnivore, vegan, snacker, Italian, healthy, fast food, heavy eaters, light eaters, and so on), but with only 10 friends, we simply don't have enough data to detect them all. (Indeed, we're limited to 10 clusters!) So whereas k-means starts with the incorrect assumption that there's a fixed, finite number of clusters that our points come from, *no matter if we feed it more data*, what we'd really like is a method positing an infinite number of hidden clusters that naturally arise as we ask more friends about their food habits. (For example, with only 2 data points, we might not be able to tell the difference between vegans and vegetarians, but with 200 data points, we probably could.)

Luckily for us, this is precisely the purview of **nonparametric Bayes**.*

*Nonparametric Bayes refers to a class of techniques that allow some parameters to change with the data. In our case, for example, instead of fixing the number of clusters to be discovered, we allow it to grow as more data comes in.

# A Generative Story

Let's describe a generative model for finding clusters in any set of data. We assume an infinite set of latent groups, where each group is described by some set of parameters. For example, each group could be a Gaussian with a specified mean `μ_i` and standard deviation `σ_i`, and these group parameters themselves are assumed to come from some base distribution `G_0`. Data is then generated in the following manner:

* Select a cluster.
* Sample from that cluster to generate a new point.

(Note the resemblance to a [finite mixture model](http://en.wikipedia.org/wiki/Mixture_model).)

For example, suppose we ask 10 friends how many calories of pizza, salad, and rice they ate yesterday. Our groups could be:

* A Gaussian centered at (pizza = 5000, salad = 100, rice = 500) (i.e., a pizza lovers group).
* A Gaussian centered at (pizza = 100, salad = 3000, rice = 1000) (maybe a vegan group).
* A Gaussian centered at (pizza = 100, salad = 100, rice = 10000) (definitely Asian).
* ...

When deciding what to eat when she woke up yesterday, Alice could have thought *girl, I'm in the mood for pizza* and her food consumption yesterday would have been a sample from the pizza Gaussian. Similarly, Bob could have spent the day in Chinatown, thereby sampling from the Asian Gaussian for his day's meals. And so on.

The big question, then, is: how do we assign each friend to a group?

# Assigning Groups

## Chinese Restaurant Process

One way to assign friends to groups is to use a **Chinese Restaurant Process**. This works as follows: Imagine a restaurant where all your friends went to eat yesterday...

* Initially the restaurant is empty.
* The first person to enter (Alice) sits down at a table (selects a group). She then orders food for the table (i.e., she selects parameters for the group); everyone else who joins the table will then be limited to eating from the food she ordered.
* The second person to enter (Bob) sits down at a table. Which table does he sit at? With probability `α / (1 + α)` he sits down at a new table (i.e., selects a new group) and orders food for the table; with probability `1 / (1 + α)` he sits with Alice and eats from the food she's already ordered (i.e., he's in the same group as Alice).
* ...
* The (n+1)-st person sits down at a new table with probability `α / (n + α)`, and at table k with probability `n_k / (n + α)`, where `n_k` is the number of people currently sitting at table k.

Note a couple things:

* The more people (data points) there are at a table (cluster), the more likely it is that people (new data points) will join it. In other words, our groups satisfy a **rich get richer** property.
* There's always a small probability that someone joins an entirely new table (i.e., a new group is formed).
* The probability of a new group depends on `α`. So we can think of `α` as a **dispersion parameter** that affects the dispersion of our datapoints. The lower alpha is, the more tightly clustered our data points; the higher it is, the more clusters we have in any finite set of points.

(Also notice the resemblance between table selection probabilities and a Dirichlet distribution...)

Just to summarize, given n data points, the Chinese Restaurant Process specifies a distribution over partitions (table assignments) of these points. We can also generate parameters for each partition/table from a base distribution `G_0` (for example, each table could represent a Gaussian whose mean and standard deviation are sampled from `G_0`), though to be clear, this is not part of the CRP itself.

### Code

Since code makes everything better, here's some Ruby to simulate a CRP:

``` ruby
# Generate table assignments for `num_customers` customers, according to
# a Chinese Restaurant Process with dispersion parameter `α`.
#
# returns an array of integer table assignments
def chinese_restaurant_process(num_customers, alpha)
 return [] if num_customers <= 0

 table_assignments = [1] # first customer sits at table 1
 next_open_table = 2 # index of the next empty table

 # Now generate table assignments for the rest of the customers.
 1.upto(num_customers - 1) do |i|
   if rand < alpha.to_f / (alpha + i)
     # Customer sits at new table.
     table_assignments << next_open_table
     next_open_table += 1
   else
     # Customer sits at an existing table.
     # He chooses which table to sit at by giving equal weight to each
     # customer already sitting at a table. 
     which_table = table_assignments[rand(table_assignments.size)]
     table_assignments << which_table
   end
 end

 table_assignments
end
```

And here's some sample output:

```
> chinese_restaurant_process(num_customers = 10, alpha = 1)
1, 2, 3, 4, 3, 3, 2, 1, 4, 3 # table assignments from run 1
1, 1, 1, 1, 1, 1, 2, 2, 1, 3 # table assignments from run 2
1, 2, 2, 1, 3, 3, 2, 1, 3, 4 # table assignments from run 3

> chinese_restaurant_process(num_customers = 10, alpha = 3)
1, 2, 1, 1, 3, 1, 2, 3, 4, 5
1, 2, 3, 3, 4, 3, 4, 4, 5, 5
1, 1, 2, 3, 1, 4, 4, 3, 1, 1

> chinese_restaurant_process(num_customers = 10, alpha = 5)
1, 2, 1, 3, 4, 5, 6, 7, 1, 8
1, 2, 3, 3, 4, 5, 6, 5, 6, 7
1, 2, 3, 4, 5, 6, 2, 7, 2, 1
```

Notice that as we increase `α`, so too does the number of distinct tables increase.

## Polya Urn Model

Another method for assigning friends to groups is to follow the **Polya Urn Model**. This is basically the same model as the Chinese Restaurant Process, just with a different metaphor.

* We start with an urn containing `α G_0(x)` balls of "color" `x`, for each possible value of `x`. (`G_0` is our base distribution, and `G_0(x)` is the probability of sampling `x` from `G_0`). Note that these are possibly fractional balls.
* At each time step, draw a ball from the urn, note its color, and then drop both the original ball plus a new ball of the same color back into the urn.

Note the connection between this process and the CRP: balls correspond to people (i.e., data points), colors correspond to table assignments (i.e., clusters), alpha is again a dispersion parameter (put differently, a prior), colors satisfy a rich-get-richer property (since colors with many balls are more likely to get drawn), and so on. (Again, there's also a connection between this urn model and [the urn model for the (finite) Dirichlet distribution](http://en.wikipedia.org/wiki/Dirichlet_distribution#P.C3.B3lya.27s_urn)...)

To be precise, the difference between the CRP and the Polya Urn Model is that the CRP specifies only a distribution over *partitions* (i.e., table assignments), but doesn't assign parameters to each group, whereas the Polya Urn Model does both.

### Code

Again, here's some code for simulating a Polya Urn Model:

``` ruby
# Draw `num_balls` colored balls according to a Polya Urn Model
# with a specified base color distribution and dispersion parameter
# `α`.
#
# returns an array of ball colors
def polya_urn_model(base_color_distribution, num_balls, alpha)
  return [] if num_balls <= 0

  balls_in_urn = []
  0.upto(num_balls - 1) do |i|
    if rand < alpha.to_f / (alpha + balls_in_urn.size)
      # Draw a new color, put a ball of this color in the urn.
      new_color = base_color_distribution.call      
      balls_in_urn << new_color
    else
      # Draw a ball from the urn, add another ball of the same color.
      ball = balls_in_urn[rand(balls_in_urn.size)]
      balls_in_urn << ball
    end
  end

  balls_in_urn
end
```

And here's some sample output, using a uniform distribution over the unit interval as the color distribution to sample from:

```
> unit_uniform = lambda { (rand * 100).to_i / 100.0 }

> polya_urn_model(unit_uniform, num_balls = 10, alpha = 1)
0.27, 0.89, 0.89, 0.89, 0.73, 0.98, 0.43, 0.98, 0.89, 0.53 # colors in the urn from run 1
0.26, 0.26, 0.46, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.85 # colors in the urn from run 2
0.96, 0.87, 0.96, 0.87, 0.96, 0.96, 0.87, 0.96, 0.96, 0.96 # colors in the urn from run 3
```

### Code, Take 2

Here's the same code for a Polya Urn Model, but in R:

``` r
# Return a vector of `num_balls` ball colors according to a Polya Urn Model
# with dispersion `α`, sampling from a specified base color distribution.
polya_urn_model = function(base_color_distribution, num_balls, alpha) {
  balls = c()
  
  for (i in 1:num_balls) {
    if (runif(1) < alpha / (alpha + length(balls))) {
      # Add a new ball color.
      new_color = base_color_distribution()
      balls = c(balls, new_color)
    } else {
      # Pick out a ball from the urn, and add back a
      # ball of the same color.
      ball = balls[sample(1:length(balls), 1)]
      balls = c(balls, ball)
    }
  }
  
  balls
}
```

Here are some sample density plots of the colors in the urn, when using a unit normal as the base color distribution:

[![Polya Urn Model, Alpha = 1](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_1.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_1.png)

[![Polya Urn Model, Alpha = 5](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_5.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_5.png)

[![Polya Urn Model, Alpha = 25](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_25.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_25.png)

[![Polya Urn Model, Alpha = 50](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_50.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_50.png)

Notice that as alpha increases (i.e., we sample more new ball colors from our base; i.e., as we place more weight on our prior), the colors in the urn tend to a unit normal (our base color distribution).

And here are some sample plots of points generated by the urn, for varying values of alpha:

* Each color in the urn is sampled from a uniform distribution over \[0,10\] x \[0,10\] (i.e., a [0, 10] square).
* Each group is a Gaussian with standard deviation 0.1 and mean equal to its associated color, and these Gaussian groups generate points.

[![Alpha 0.1](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.1.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.1.png)

[![Alpha 0.2](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.2.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.2.png)

[![Alpha 0.3](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.3.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.3.png)

[![Alpha 0.5](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.5.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-0.5.png)

[![Alpha 1.0](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-1.0.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/alpha-1.0.png)

Notice that the points clump together in fewer clusters for low values of alpha, but become more dispersed as alpha increases. 

## Stick-Breaking Process

Imagine running either the Chinese Restaurant Process or the Polya Urn Model without stop. For each group `i`, this gives a proportion `w_i` of points that fall into group `i`.

So instead of running the CRP or Polya Urn model to figure out these proportions, can we simply generate them directly?

This is exactly what the Stick-Breaking Process does:

* Start with a stick of length one.
* Generate a random variable `β_1 ~ Beta(1, α)`. By the definition of the [Beta distribution](http://en.wikipedia.org/wiki/Beta_distribution), this will be a real number between 0 and 1, with expected value `1 / (1 + α)`. Break off the stick at `β_1`; `w_1` is then the length of the stick on the left.
* Now take the stick to the right, and generate `β_2 ~ Beta(1, α)`. Break off the stick `β_2` into the stick. Again, `w_2` is the length of the stick to the left, i.e., `w_2 = (1 - \beta_1) \beta_2`.
* And so on.

Thus, the Stick-Breaking process is simply the CRP or Polya Urn Model from a different point of view. For example, assigning customers to table 1 according to the Chinese Restaurant Process is equivalent to assigning customers to table 1 with probability `w_1`.

### Code

Here's some R code for simulating a Stick-Breaking process:

``` r
# Return a vector of weights drawn from a stick-breaking process
# with dispersion `α`.
#
# Recall that the kth weight is
#   \beta_k = (1 - \beta_1) * (1 - \beta_2) * ... * (1 - \beta_{k-1}) * beta_k
# where each `beta_i` is drawn from a Beta distribution
#   \beta_i ~ Beta(1, α)
stick_breaking_process = function(num_weights, alpha) {
  betas = rbeta(num_weights, 1, alpha)
  remaining_stick_lengths = c(1, cumprod(1 - betas))[1:num_weights]
  weights = remaining_stick_lengths * betas
  weights
}
```

And here's some sample output:

[![Stick-Breaking Process, alpha = 1](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_1.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_1.png)

[![Stick-Breaking Process, alpha = 3](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_3.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_3.png)

[![Stick-Breaking Process, alpha = 5](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_5.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/sbp_alpha_5.png)

Notice that for low values of alpha, the stick weights are concentrated on the first few weights (meaning our data points are concentrated on a few clusters), while the weights become more evenly dispersed as we increase alpha (meaning we posit more clusters in our data points).

## Dirichlet Process

Suppose we run a Polya Urn Model several times, where we sample colors from a base distribution `G_0`. Each run produces a distribution of colors in the urn (say, 5% blue balls, 3% red balls, 2% pink balls, etc.), and the distribution will be different each time (for example, 5% blue balls in run 1, but 1% blue balls in run 2).

For example, let's look again at the plots from above, where I generated samples from a Polya Urn Model with the standard unit normal as the base distribution:

[![Polya Urn Model, Alpha = 1](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_1.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_1.png)

[![Polya Urn Model, Alpha = 5](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_5.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_5.png)

[![Polya Urn Model, Alpha = 25](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_25.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_25.png)

[![Polya Urn Model, Alpha = 50](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_50.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/polya_alpha_50.png)

Each run of the Polya Urn Model produces a slighly different distribution, though each is "centered" in some fashion around the standard Gaussian I used as base. In other words, the Polya Urn Model gives us a **distribution over distributions** (we get a distribution of ball colors, and this distribution of colors changes each time) -- and so we finally get to the Dirichlet Process.

Formally, given a base distribution `G_0` and a dispersion parameter `α`, a sample from the Dirichlet Process `DP(G_0, α)` is a distribution `G ~ DP(G_0, α)`. This sample `G` can be thought of as a distribution of colors in a single simulation of the Polya Urn Model; sampling from `G` gives us the balls in the urn.

So here's the connection between the Chinese Restaurant Process, the Polya Urn Model, the Stick-Breaking Process, and the Dirichlet Process:

* **Dirichlet Process**: Suppose we want samples `x_i ~ G`, where `G` is a distribution sampled from the Dirichlet Process `G ~ DP(G_0, α)`.
* **Polya Urn Model**: One way to generate these values `x_i` would be to take a Polya Urn Model with color distribution `G_0` and dispersion `α`. (`x_i` would be the color of the ith ball in the urn.)
* **Chinese Restaurant Process**: Another way to generate `x_i` would be to first assign tables to customers according to a Chinese Restaurant Process with dispersion `α`. Every customer at the nth table would then be given the same value (color) sampled from `G_0`. (`x_i` would be the value given to the ith customer; `x_i` can also be thought of as the food at table `i`, or as the parameters of table `i`.)
* **Stick-Breaking Process**: Finally, we could generate weights `w_k` according to a Stick-Breaking Process with dispersion `α`. Next, we would give each weight `w_k` a value (or color) `v_k` sampled from `G_0`. Finally, we would assign `x_i` to value (color) `v_k` with probability `w_k`.

# Recap

Let's summarize what we've discussed so far.

We have a bunch of data points `p_i` that we want to cluster, and we've described four essentially equivalent generative models that allow us to describe how each cluster and point could have arisen.

In the **Chinese Restaurant Process**:

* We generate table assignments `g_1, ..., g_n ~ CRP(α)` according to a Chinese Restaurant Process. (`g_i` is the table assigned to datapoint `i`.)
* We generate table parameters `φ_1, ..., φ_m ~ G_0` according to the base distribution `G_0`, where `φ_k` is the parameter for the kth distinct group.
* Given table assignments and table parameters, we generate each datapoint `p_i ~ F(φ_{g_i})` from a distribution `F` with the specified table parameters. (For example, `F` could be a Gaussian, and `φ_i` could be a parameter vector specifying the mean and standard deviation).

In the **Polya Urn Model**:

* We generate colors `φ_1, ..., φ_n ~ Polya(G_0, α)` according to a Polya Urn Model. (`φ_i` is the color of the ith ball.)
* Given ball colors, we generate each datapoint `p_i ~ F(φ_i)`.

In the **Stick-Breaking Process**:

* We generate group probabilities (stick lengths) `w_1, ..., w_{∞} ~ Stick(α)` according to a Stick-Breaking process.
* We generate group parameters `φ_1, ..., φ_{∞} ~ G_0` from `G_0`, where `φ_k` is the parameter for the kth distinct group.
* We generate group assignments `g_1, ..., g_n ~ Multinomial(w_1, ..., w_{∞})` for each datapoint.
* Given group assignments and group parameters, we generate each datapoint `p_i ~ F(φ_{g_i})`.

In the **Dirichlet Process**:

* We generate a distribution `G ~ DP(G_0, α)` from a Dirichlet Process with base distribution `G_0` and dispersion parameter `α`.
* We generate group-level parameters `x_i ~ G` from `G`, where `x_i` is the group parameter for the ith datapoint. (Note: this is not the same as `φ_i`. `x_i` is the parameter associated to the group that the ith datapoint belongs to, whereas `φ_k` is the parameter of the kth distinct group.)
* Given group-level parameters `x_i`, we generate each datapoint `p_i ~ F(x_i)`.

Also, remember that each model naturally allows the number of clusters to grow as more points come in.

# Inference in the Dirichlet Process Mixture

So we've described a generative model that allows us to calculate the probability of any particular set of group assignments to data points, but we haven't described how to actually learn a good set of group assignments.

Let's briefly do this now. Very roughly, the **Gibbs sampling** approach works as follows:

* Take the set of data points, and randomly initialize group assignments.
* Pick a point. Fix the group assignments of all the other points, and assign the chosen point a new group (which can be either an existing cluster or a new cluster) with a CRP-ish probability (as described in the models above) that depends on the group assignments and values of all the other points.
* We will eventually converge on a good set of group assignments, so repeat the previous step until happy.

For more details, [this paper](http://www.cs.toronto.edu/~radford/ftp/mixmc.pdf) provides a good description. Philip Resnick and Eric Hardisty also have a friendlier, more general description of Gibbs sampling (plus an application to naive Bayes) [here](http://www.cs.umd.edu/~hardisty/papers/gsfu.pdf).

# Fast Food Application: Clustering the McDonald's Menu

Finally, let's show an application of the Dirichlet Process Mixture. Unfortunately, I didn't have a data set of people's food habits offhand, so instead I took [this list](http://nutrition.mcdonalds.com/nutritionexchange/nutritionfacts.pdf) of McDonald's foods and nutrition facts.

After normalizing each item to have an equal number of calories, and representing each item as a vector of **(total fat, cholesterol, sodium, dietary fiber, sugars, protein, vitamin A, vitamin C, calcium, iron, calories from fat, satured fat, trans fat, carbohydrates)**, I ran [scikit-learn](http://scikit-learn.sourceforge.net/dev/index.html)'s [Dirichlet Process Gaussian Mixture Model](http://scikit-learn.sourceforge.net/dev/modules/mixture.html) to cluster McDonald's menu based on nutritional value.

First, how does the number of clusters inferred by the Dirichlet Process mixture vary as we feed in more (randomly ordered) points?

[![Growth of Number of Clusters](http://dl.dropbox.com/u/10506/blog/dirichlet-process/num-clusters-vary.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/num-clusters-vary.png)

As expected, the Dirichlet Process model discovers more and more clusters as more and more food items arrive. (And indeed, the number of clusters appears to grow logarithmically, which can in fact be proved.)

How many clusters does the mixture model infer from the entire dataset? Running the Gibbs sampler several times, we find that the number of clusters tends around 11:

[![Number of clusters](http://dl.dropbox.com/u/10506/blog/dirichlet-process/num_mcdonalds_clusters_small.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/num_mcdonalds_clusters.png)

Let's dive into one of these clusterings.

**Cluster 1 (Desserts)**

Looking at a sample of foods from the first cluster, we find a lot of desserts and dessert-y drinks:

* Caramel Mocha
* Frappe Caramel
* Iced Hazelnut Latte
* Iced Coffee
* Strawberry Triple Thick Shake
* Snack Size McFlurry
* Hot Caramel Sundae
* Baked Hot Apple Pie
* Cinnamon Melts
* Kiddie Cone
* Strawberry Sundae

We can also look at the nutritional profile of some foods from this cluster (after [z-scaling](http://en.wikipedia.org/wiki/Standard_score) each nutrition dimension to have mean 0 and standard deviation 1):

[![Cluster 1](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster1.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster1.png)

We see that foods in this cluster tend to be high in trans fat and low in vitamins, protein, fiber, and sodium.

**Cluster 2 (Sauces)**

Here's a sample from the second cluster, which contains a lot of sauces:

* Hot Mustard Sauce
* Spicy Buffalo Sauce
* Newman's Own Low Fat Balsamic Vinaigrette

And looking at the nutritional profile of points in this cluster, we see that it's heavy in sodium and fat:

[![Cluster 2](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster2.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster2.png)

**Cluster 3 (Burgers, Crispy Foods, High-Cholesterol)**

The third cluster is very burgery:

* Hamburger
* Cheeseburger
* Filet-O-Fish
* Quarter Pounder with Cheese
* Premium Grilled Chicken Club Sandwich
* Ranch Snack Wrap
* Premium Asian Salad with Crispy Chicken
* Butter Garlic Croutons
* Sausage McMuffin
* Sausage McGriddles

It's also high in fat and sodium, and low in carbs and sugar

[![Cluster 3](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster3.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster3.png)

**Cluster 4 (Creamy Sauces)**

Interestingly, even though we already found a cluster of sauces above, we discover another one as well. These sauces appear to be much more cream-based:

* Creamy Ranch Sauce
* Newman's Own Creamy Caesar Dressing
* Coffee Cream
* Iced Coffee with Sugar Free Vanilla Syrup

Nutritionally, these sauces are higher in calories from fat, and much lower in sodium:

[![Cluster 4](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster4.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster4.png)

**Cluster 5 (Salads)**

Here's a salad cluster. A lot of salads also appeared in the third cluster (along with hamburgers and McMuffins), but that's because those salads also all contained crispy chicken. The salads in this cluster are either crisp-free or have their chicken grilled instead:

* Premium Southwest Salad with Grilled Chicken
* Premium Caesar Salad with Grilled Chicken
* Side Salad
* Premium Asian Salad without Chicken
* Premium Bacon Ranch Salad without Chicken

This is reflected in the higher content of iron, vitamin A, and fiber:

[![Cluster 5](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster5.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster5.png)

**Cluster 6 (More Sauces)**

Again, we find another cluster of sauces:

* Ketchup Packet
* Barbeque Sauce
* Chipotle Barbeque Sauce

These are still high in sodium, but much lower in fat compared to the other sauce clusters:

[![Cluster 6](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster6.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster6.png)

**Cluster 7 (Fruit and Maple Oatmeal)**

Amusingly, fruit and maple oatmeal is in a cluster by itself:

* Fruit & Maple Oatmeal

[![Cluster 7](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster7.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster7.png)

**Cluster 8 (Sugary Drinks)**

We also get a cluster of sugary drinks:

* Strawberry Banana Smoothie
* Wild Berry Smoothie
* Iced Nonfat Vanilla Latte
* Nonfat Hazelnut
* Nonfat Vanilla Cappuccino
* Nonfat Caramel Cappuccino
* Sweet Tea
* Frozen Strawberry Lemonade
* Coca-Cola
* Minute Maid Orange Juice

In addition to high sugar content, this cluster is also high in carbohydrates and calcium, and low in fat.

[![Cluster 8](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster8.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster8.png)

**Cluster 9 (Breakfast Foods)**

Here's a cluster of high-cholesterol breakfast foods:

* Sausage McMuffin with Egg
* Sausage Burrito
* Egg McMuffin
* Bacon, Egg & Chees Biscuit
* McSkillet Burrito with Sausage
* Big Breakfast with Hotcakes

[![Cluster 9](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster9.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster9.png)

**Cluster 10 (Coffee Drinks)**

We find a group of coffee drinks next:

* Nonfat Cappuccino
* Nonfat Latte
* Nonfat Latte with Sugar Free Vanilla Syrup
* Iced Nonfat Latte

These are much higher in calcium and protein, and lower in sugar, than the other drink cluster above:

[![Cluster 11](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster11.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster11.png)

**Cluster 11 (Apples)**

Here's a cluster of apples:

* Apple Dippers with Low Fat Caramel Dip
* Apple Slices

Vitamin C, check.

[![Cluster 10](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster10.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/cluster10.png)

And finally, here's an overview of all the clusters at once (using a different clustering run):

[![All Clusters](http://dl.dropbox.com/u/10506/blog/dirichlet-process/all-clusters-small.png)](http://dl.dropbox.com/u/10506/blog/dirichlet-process/all-clusters.png)

# No More!

I'll end with a couple notes:

* Kevin Knight has a [hilarious introduction](http://www.isi.edu/natural-language/people/bayes-with-tears.pdf) to Bayesian inference that describes some applications of nonparametric Bayesian techniques to computational linguistics (though I don't think he ever quite says "nonparametric Bayes" directly).
* In the Chinese Restaurant Process, each customer sits at a single table. The [Indian Buffet Process](http://en.wikipedia.org/wiki/Chinese_restaurant_process#The_Indian_buffet_process) is an extension that allows customers to sample food from multiple tables (i.e., belong to multiple clusters).
* The Chinese Restaurant Process, the Polya Urn Model, and the Stick-Breaking Process are all *sequential* models for generating groups: to figure out table parameters in the CRP, for example, you wait for customer 1 to come in, then customer 2, then customer 3, and so on. The equivalent Dirichlet Process, on the other hand, is a *parallelizable* model for generating groups: just sample `G ~ DP(G_0, α)`, and then all your group parameters can be independently generated by sampling from `G` at once. This duality is an instance of a more general phenomenon known as [de Finetti's theorem](http://en.wikipedia.org/wiki/De_Finetti's_theorem).

And that's it.


================================================
FILE: chinese_restaurant_process.rb
================================================
# Generate table assignments for `num_customers` customers, according to
# a Chinese Restaurant Process with dispersion parameter `alpha`.
#
# Returns an array of integer table assignments.
#
# Examples
#
#   chinese_restaurant_process(num_customers = 5, alpha = 1)
#     => [1, 2, 3, 4, 3]
#
#   chinese_restaurant_process(num_customers = 10, alpha = 3)
#     => [1, 2, 1, 1, 3, 1, 2, 3, 4, 5]
#
def chinese_restaurant_process(num_customers, alpha)
  return [] if num_customers <= 0

  table_assignments = [1] # first customer sits at table 1
  next_open_table = 2 # index of the next empty table

  # Now generate table assignments for the rest of the customers.
  1.upto(num_customers - 1) do |i|
    if rand < alpha.to_f / (alpha + i)
      # Customer sits at a new table.
      table_assignments << next_open_table
      next_open_table += 1
    else
      # Customer sits at an existing table.
      # He chooses which table to sit at by giving equal weight to each
      # customer already sitting at a table. 
      which_table = table_assignments[rand(table_assignments.size)]
      table_assignments << which_table
    end
  end

  table_assignments
end

puts chinese_restaurant_process(num_customers = 10, alpha = 3).join(", ")

================================================
FILE: dpgmm.py
================================================
'''
Code to calculate clusters using a Dirichlet Process
Gaussian mixture model. 

Requires scikit-learn:
  http://scikit-learn.org/stable/
'''

import numpy
from sklearn import mixture

FILENAME = "mcdonalds-normalized-data.tsv"

# Note: you'll have to remove the last "name" column in the file (or
# some other such thing), so that all the columns are numeric.
x = numpy.loadtxt(open(FILENAME, "rb"), delimiter = "\t", skiprows = 1)
dpgmm = mixture.DPGMM(n_components = 25)
dpgmm.fit(x)
clusters = dpgmm.predict(x)

================================================
FILE: mcdonalds-normalized-data.tsv
================================================
total_fat	cholesterol	sodium	dietary_fiber	sugars	protein	vitamin_a_dv	vitamin_c_dv	calcium_dv	iron_dv	calories_from_fat	saturated_fat	trans_fat	carbohydrates	name
0.256971688752397	-0.0431346522284659	0.623001266503495	0.737521875200214	-1.18708667988519	0.563394253820262	-0.3171382913788	-0.13995270865773	-0.485007970342801	2.00278415050186	0.237144358839616	0.0590243458833798	2.07875068500529	-0.525869929309607	Hamburger
0.426905582218839	0.216793304907238	0.912521193791668	0.531005012641724	-1.23709321681206	0.639829341854432	-0.220047929586982	-0.142032155343128	-0.17097578425598	1.52763021779944	0.455109205487154	0.574436535712918	1.66064842463114	-0.751854798524492	Cheeseburger
0.948293664445421	0.594870333468262	0.990854507451888	0.202455458571399	-1.28823626594182	0.900403505607285	-0.206808334797189	-0.14534036597899	-0.286953580253954	1.31165115748016	0.97171419916476	1.0039466939042	3.84618296749598	-1.28013111616968	DoubleCheeseburger
0.797274324389289	0.476721262042942	0.815307542992831	0.292716325074235	-1.26273759472328	0.884813598374209	-0.242453397692786	-0.144431516903204	-0.352148199306069	1.58854738865873	0.778463648315919	0.618488859629972	2.78630835640768	-1.16160758336467	McDouble
0.893390779969855	0.553170661200502	0.797632333756679	0.409524505254377	-1.26650882676905	0.902106604716781	-0.221951662171136	-0.140197349444247	-0.263338191928574	1.48104649890705	0.848911239346152	0.877620176789117	3.25927471429698	-1.26142852322472	QuarterPounder®withCheese+
1.13879081160528	0.810412558365805	0.4747014839286	0.126343592763601	-1.33507899862824	1.20792796913543	-0.251536695573518	-0.143999199504992	-0.478642453057257	1.39921023598798	1.1409831437796	1.06198860717329	3.80766003195782	-1.65492174693147	DoubleQuarterPounder®withCheese++
1.00908651353906	0.260114631096522	0.516792898115593	0.358907627176315	-1.27876533091779	0.498282882531895	-0.263199201494457	-0.146653147977348	-0.41086148196119	1.35164727976151	0.991371923429509	0.447174266619204	3.05432262587829	-1.18230216845761	BigMac®
0.944095692768879	0.363709106766549	0.268144544030205	0.508557527581018	-1.26970617567742	0.722910959282878	-0.253818490210223	-0.125306171134487	-0.572049500182083	1.7342188841918	0.976329490948658	0.350344279265292	3.66026793076835	-1.22908992605903	BigN'Tasty®
1.0599926363095	0.476721262042942	0.486756594838472	0.409524505254377	-1.29102183506654	0.752233883081153	-0.221951662171136	-0.127965310118373	-0.49424421111006	1.48104649890705	1.03207497602475	0.709184820635673	3.25927471429698	-1.32472960703842	BigN'Tasty®withCheese
0.824852041602278	0.608330354263551	0.995415687740964	0.282661950071388	-1.2814028064941	0.905900850834139	-0.255688695308029	-0.144532755787595	-0.583391471680128	1.25697291436136	0.811814786347953	0.70492063440394	2.74559732813367	-1.24019461536317	AngusBacon&Cheese
0.936707262618164	0.580692444897223	0.751676789742683	0.324488150083234	-1.32043744502352	0.767221155244716	-0.220047929586982	-0.135793815286932	-0.563516016864506	1.3692455735653	0.922176734017593	0.68897257789726	2.91495520575357	-1.21458572120259	AngusDeluxe
0.934500328936781	0.544235017143124	0.236616601637769	0.303031852674559	-1.35723879254546	0.912811799119326	-0.266701739798635	-0.152429388770122	-0.344305237615589	1.31165115748016	0.926220608723484	0.752934263792411	2.82807681398752	-1.29061278913883	AngusMushroom&Swiss
0.739941701762284	-0.00209339583861803	0.35017045783093	0.313618841527524	-1.32263071418698	0.237539404832484	-0.291588196170427	-0.152429388770122	-0.491205974015567	0.402265640346351	0.832040895178385	-0.352401174068269	-0.429862877239568	-0.91327256224941	Filet-O-Fish®
0.615721019403774	-0.0647953153231078	0.778484190417514	0.358907627176315	-1.31349209267257	0.21518996388682	-0.3171382913788	-0.143765027580961	-0.628939388965927	1.13166860721409	0.688642969752374	-0.427753833400073	-0.429862877239568	-0.733919491443946	McChicken®
0.936707262618164	0.268778896334379	0.540281287278302	0.427746581362479	-1.21208994834863	0.410524077751921	-0.297720219020436	-0.146191048713926	-0.602770040125359	1.05247628509703	0.984452404488318	0.574436535712918	-0.429862877239568	-1.10697387871931	McRib®†
-0.18000118016131	0.625251523263344	0.804197411472964	0.826029102010996	-1.2013742618643	1.78635566236699	-0.261658084640618	-0.116781731306145	-0.451361664690642	1.86702588401545	-0.189888810102499	-0.652735344833601	-0.429862877239568	-0.590437034799574	PremiumGrilledChickenClassicSandwich
0.560187067290558	-0.134873931217538	0.527305604262586	0.409524505254377	-1.24199581847156	0.527424800627711	-0.279063639695734	-0.13408132978131	-0.609697220700803	1.01520930998311	0.574165634328247	-0.554080350515156	-0.429862877239568	-0.755019852715177	PremiumCrispyChickenClassicSandwich
0.205252677697393	0.702745572595728	0.732695151997771	0.508557527581018	-1.24252870995629	1.63680875099578	-0.232711889820698	-0.125306171134487	-0.188042750891133	1.21774721821091	0.265574556228426	-0.0231428148140829	-0.429862877239568	-1.01854501685262	PremiumGrilledChickenClubSandwich
0.714696853412006	0.0574826215014839	0.523381506576381	0.24787705590831	-1.26532271346433	0.639829341854432	-0.254499348287305	-0.137336630569648	-0.386239782783236	0.684615175908058	0.70119854847631	-0.173742449523509	-0.429862877239568	-1.0434481781566	PremiumCrispyChickenClubSandwich
-0.154447211218988	0.716128590983722	1.00322292539824	0.721217912366649	-1.19103456437942	1.84669915292028	-0.266038100962054	-0.119596020053301	-0.491205974015567	1.65267072640534	-0.151259164885696	-0.465430163065975	-0.429862877239568	-0.743359126749496	PremiumGrilledChickenRanchBLTSandwich
0.537047920576718	-0.0286942101653713	0.682743473721689	0.358907627176315	-1.23246298191143	0.639829341854432	-0.281178898122571	-0.1351006663918	-0.628939388965927	0.91168993466668	0.55890198960503	-0.427753833400073	-0.429862877239568	-0.853488205314255	PremiumCrispyChickenRanchBLTSandwich
0.649438061758227	0.0125641957291848	0.715568862303115	0.235980923272452	-1.27876533091779	0.639829341854432	-0.294021538571224	-0.145002793465127	-0.53547742882104	0.848838885367419	0.633039692546369	-0.530018156778949	-0.429862877239568	-0.874839761362525	SouthernStyleCrispyChickenSandwich
1.03381234459899	-0.0431346522284659	0.666330779430976	-0.0590431660968195	-1.4156879915509	0.257653901683581	-0.289398188009709	-0.143517474404127	-0.619593192951438	0.509443219151407	1.0111419775472	0.0835677834943101	-0.429862877239568	-1.09775000650646	RanchSnackWrap®(Crispy)
0.615721019403774	0.476721262042942	0.976348338255551	0.0720786514006346	-1.3945212034337	0.993695490160776	-0.281178898122571	-0.140876907184574	-0.519900435463559	0.91168993466668	0.645395976369926	0.129018593884922	-0.429862877239568	-1.03284127611972	RanchSnackWrap®(Grilled)
0.658633618763987	-0.114024095083658	0.651410148257601	-0.0322227943359766	-1.33559094106197	0.350302493240151	-0.287716969623704	-0.142977358381946	-0.59920149255619	0.591720956415895	0.724026873428922	0.0277872434694682	-0.429862877239568	-0.91327256224941	HoneyMustardSnackWrap®(Crispy)
0.0870377952859559	0.580692444897223	0.981454509812662	0.117971287524744	-1.28709975373894	1.17487495809362	-0.278302146662073	-0.13995270865773	-0.485007970342801	1.05247628509703	0.0503173474274412	0.0590243458833798	-0.429862877239568	-0.784138351269476	HoneyMustardSnackWrap®(Grilled)
0.658633618763987	-0.114024095083658	0.693187915543052	-0.0322227943359766	-1.33559094106197	0.350302493240151	-0.258295647868607	-0.142977358381946	-0.59920149255619	0.591720956415895	0.724026873428922	0.0277872434694682	-0.429862877239568	-0.864358088393374	ChipotleBBQSnackWrap®(Crispy)
0.0870377952859559	0.424735670615801	1.03660116262946	0.117971287524744	-1.23709321681206	1.17487495809362	-0.239466001945346	-0.13995270865773	-0.485007970342801	1.05247628509703	0.0503173474274412	0.0590243458833798	-0.429862877239568	-0.784138351269476	ChipotleBBQSnackWrap®(Grilled)
1.01513829037191	0.676665844455022	1.09811089077127	-0.104431487538246	-1.35890401189035	0.786819895766298	-0.242453397692786	-0.144431516903204	-0.654102224389551	1.58854738865873	1.01798545781871	0.838750479215245	2.78630835640768	-1.36855343429405	AngusBacon&CheeseSnackWrap
0.79863597417668	0.590439743289812	0.929754522796917	0.272858934443611	-1.23709321681206	0.878688991961214	-0.256456815258914	-0.148530426234999	-0.588049781402539	1.23065900986043	0.785948704862881	0.789191614808559	2.7059040755665	-1.19575364876802	AngusChipotleBBQBacon†
1.064157682718	0.639176235252757	1.01592116782316	-0.114360182853558	-1.29960138797066	0.735373201897145	-0.244320520034937	-0.144631463699877	-0.661651075016638	1.52763021779944	0.961099028061796	1.0039466939042	2.7059040755665	-1.31681697156171	AngusChipotleBBQBaconSnackWrap†
1.31802234064042	0.603515387474992	0.85367568011521	0.253970197014481	-1.39565052901922	0.593222580857987	-0.222415987191661	-0.137213925218424	-0.668831689027769	1.46968461625037	1.24874427429091	0.951567406319897	4.15906437076931	-1.46445517009059	AngusDeluxeSnackWrap
1.29633480460528	0.537169624167524	0.359451565251137	0.218828359937029	-1.42897876548495	0.684268346525462	-0.271979983568652	-0.152429388770122	-0.5452583316269	1.36187884592651	1.2407964434027	0.854117568953752	3.94562589411774	-1.51389679936538	AngusMushroom&SwissSnackWrap
1.17358481108654	0.240423119192302	0.630521264614876	-0.0322227943359766	-1.37347468115808	0.466113232685864	-0.287716969623704	-0.152429388770122	-0.670572443939559	1.31165115748016	1.1486337175475	0.678560210425956	3.37106676252536	-1.25567387924166	MacSnackWrap†
0.759384939001007	-0.822918523635577	-0.331275595282784	1.51869435531276	-1.48712590144643	-0.772558154429148	-0.3171382913788	-0.0981829534988524	-0.853654449662112	-0.0217847801432202	0.773256652457163	-0.583373455933146	-0.429862877239568	-0.49218274383658	SmallFrenchFries
0.851740315884943	-0.822918523635577	-0.321022356057693	1.5364160540449	-1.48712590144643	-0.868757921977875	-0.3171382913788	-0.0908668224260825	-0.89407621274537	-0.0978963940772457	0.832040895178385	-0.578459152063681	-0.429862877239568	-0.488488973499626	MediumFrenchFries
0.851740315884943	-0.822918523635577	-0.328278494586219	1.35707246287568	-1.48712590144643	-0.812437330794802	-0.3171382913788	-0.090045988208162	-0.908951421560009	-0.0878931533887738	0.797625393076142	-0.542289875584415	-0.429862877239568	-0.493586376564623	LargeFrenchFries
-1.27243335244558	-0.822918523635577	4.24429813480636	-0.501579300150727	0.179758662782684	-1.27104785899982	0.330130787233316	0.0555152797697441	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.700905074999771	KetchupPacket1pkg
0.851740315884943	-0.822918523635577	-0.328278494586219	1.04729716903795	-1.48712590144643	-0.888872418828972	-0.3171382913788	-0.090045988208162	-0.956056249473032	0.102168419692193	0.844332145929186	-0.714093938860927	-0.429862877239568	-0.429019271074656	KidsFries†
1.41073338649824	0.203112886110622	0.495293228401443	0.313618841527524	-1.48712590144643	0.539256857598945	-0.3171382913788	-0.136012704411711	-0.956056249473032	-0.347977411289044	1.44660343271844	-0.239372185070563	-0.429862877239568	-1.50796958649911	ChickenMcNuggets®(4piece)
1.45864707826509	0.291058435517439	0.518616530814561	0.0515908674166574	-1.48712590144643	0.503338113221986	-0.3171382913788	-0.141289495812629	-0.871940485342634	-0.169348113280617	1.41148557343043	-0.22322518664232	-0.429862877239568	-1.48976457555269	ChickenMcNuggets®(6piece)
1.43927771350828	0.255505979374258	0.509187961753939	0.157517069716795	-1.48712590144643	0.517858456693522	-0.3171382913788	-0.139156324820769	-0.905944730416625	-0.241559957156364	1.42568215484473	-0.229752696645227	-0.429862877239568	-1.49712404806294	ChickenMcNuggets®(10piece)
-1.27243335244558	-0.822918523635577	2.7737207263585	-0.501579300150727	1.01320094489724	-1.27104785899982	-0.122957567795165	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.34657612989944	BarbequeSauce1pkg
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.26323362953161	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.34657612989944	Honey1pkg
0.497711371163189	-0.173098630796318	2.06140979414156	4.66134226381153	-0.236962478274595	-0.634088792048405	-0.3171382913788	-0.152429388770122	-0.956056249473032	0.735706996628748	0.299420029310341	-1.14360409705221	-0.429862877239568	-0.10618374362482	HotMustardSauce1pkg
-1.27243335244558	-0.822918523635577	1.25718777389664	-0.501579300150727	1.01320094489724	-1.27104785899982	-0.122957567795165	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.34657612989944	Sweet'NSourSauce1pkg
1.29893477237558	0.305716027085242	0.549714267365385	-0.0939802293116017	-1.48712590144643	1.04211927887638	-0.3171382913788	-0.136012704411711	-0.89407621274537	-0.347977411289044	1.32369092521043	-0.352401174068269	-0.429862877239568	-1.63540466312404	ChickenSelects®PremiumBreastStrips(3pc)
1.25002287869692	0.273652545530673	0.524771291173578	-0.259567351839996	-1.48712590144643	0.998118817014605	-0.3171382913788	-0.137808279263412	-0.882454955858934	-0.402682633804125	1.22382451286017	-0.338272550443556	-0.429862877239568	-1.61947527854593	ChickenSelects®PremiumBreastStrips(5pc)
2.36900722183531	-0.822918523635577	9.82461419364871	-0.501579300150727	-1.48712590144643	-1.27104785899982	0.51506480969392	-0.152429388770122	-0.956056249473032	-0.84813944571264	2.74596422637454	-1.14360409705221	-0.429862877239568	-2.06625658885597	SpicyBuffaloSauce
3.36212737845738	-0.468471309359618	0.254521359045819	-0.501579300150727	-1.37347468115808	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	3.4132035528466	0.418251023643361	-0.429862877239568	-2.38070677793048	CreamyRanchSauce
1.55979820532845	-0.173098630796318	0.510410183669205	2.0798814818304	-0.445323048803235	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	1.46708885063644	-0.427753833400073	-0.429862877239568	-0.91327256224941	HoneyMustardSauce
-1.27243335244558	-0.822918523635577	1.80865430206459	-0.501579300150727	1.01320094489724	-1.27104785899982	0.0712231557884696	-0.152429388770122	-0.485007970342801	1.05247628509703	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.02374060244961	ChipotleBarbequeSauce
-0.100475466470118	1.05931840734711	0.734245376495995	3.23708803927022	-1.01292598231229	2.28713727362534	2.36121651667133	0.0357963887875154	-0.346942095425319	1.60955330964469	-0.130067353246383	-0.403069341549999	-0.429862877239568	-0.968933860085589	PremiumSouthwestSaladwithGrilledChicken
0.710128737996242	0.043508000150102	0.445306496316044	1.90778409636499	-1.12596757919679	0.682293279651194	1.40891258492018	-0.0484570545001888	-0.563516016864506	0.735706996628748	0.714591165781842	-0.284583780669646	-0.429862877239568	-1.02088440473269	PremiumSouthwestSaladwithCrispyChicken
0.0931068629097572	-0.265930044059069	-0.0722404636510994	6.13646271065789	-0.951341577229931	0.366846884589539	5.23088238243933	0.126067935167199	0.305680212482945	2.54581721644748	0.0770069204863232	0.0835677834943101	-0.429862877239568	-0.221482146285476	PremiumSouthwestSalad(withoutchicken)
0.389963431465265	2.05889143591244	1.28715878086229	2.19211890713393	-1.21535124423516	3.71384918670693	3.05991777094528	0.0848987655416817	-0.188042750891133	1.21774721821091	0.367110975474173	0.350344279265292	-0.429862877239568	-1.82563383547721	PremiumBaconRanchSaladwithGrilledChicken
1.12407027336321	0.576693553248982	0.72693149681207	1.0870119502992	-1.26273759472328	1.27678840880585	1.67445887358156	-0.0124666310990582	-0.50312521184781	0.370203971473043	1.01798545781871	0.177965620459427	-0.429862877239568	-1.53411011503756	PremiumBaconRanchSaladwithCrispyChicken
0.851740315884943	0.569552675305693	0.666330779430976	2.81744170525358	-1.12993635196876	1.18579425638422	5.23088238243933	0.181767399954663	0.305680212482945	1.86702588401545	1.07786591019441	1.0039466939042	-0.429862877239568	-1.37446617289203	PremiumBaconRanchSalad(withoutchicken)
-0.154447211218988	2.04996942365378	1.29346846653927	2.75921326656228	-1.15813552692753	4.15986629079648	3.77087694196088	0.134862587502061	0.283544485080208	1.65267072640534	-0.0283466573776855	0.212743770920259	-0.429862877239568	-1.67788302199902	PremiumCaesarSaladwithGrilledChicken
0.912430992122958	0.402456131432741	0.646635546282121	1.2685652360649	-1.23709321681206	1.2403907478372	1.90206997814845	0.00352911263477763	-0.283130136429845	0.509443219151407	1.0111419775472	-0.0391494045603419	-0.429862877239568	-1.4205855339563	PremiumCaesarSaladwithCrispyChicken
0.615721019403774	0.043508000150102	0.5678546136867	4.66134226381153	-0.93149771337006	1.70142778677346	8.31311609011608	0.367432282579543	1.66087863458381	3.37545106719773	0.55890198960503	1.24256344845491	-0.429862877239568	-0.91327256224941	PremiumCaesarSalad(withoutchicken)
-1.27243335244558	-0.822918523635577	-0.466145126628206	7.24280304579265	-0.236962478274595	0.639829341854432	10.6055274102007	1.79705187879112	0.221564448352546	8.65493920833569	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.700905074999771	SideSalad
-0.210346518280317	-0.822918523635577	0.797632333756679	2.0798814818304	-1.48712590144643	0.00287027490301374	-0.3171382913788	-0.152429388770122	-0.563516016864506	2.31955343897014	-0.0898029111316904	-1.14360409705221	-0.429862877239568	0.162845862583377	ButterGarlicCroutons
0.345984680568153	-0.637255697110075	-0.613859375244622	0.973541146695631	0.00116388804385005	-0.543094639626774	-0.3171382913788	1.11009181307906	-0.507438840777574	-0.395611890757958	0.299420029310341	-0.530018156778949	-0.429862877239568	-0.144616544511705	SnackSizeFruit&WalnutSalad1pkg
0.710128737996242	-0.822918523635577	-0.64996730268419	4.66134226381153	-0.73702784754333	0.767221155244716	4.86101433751813	0.315446115444576	-0.17097578425598	3.90339988131153	0.922176734017593	-0.857263991591355	-0.429862877239568	-0.91327256224941	PremiumAsianSalad(withoutchicken)**
0.952891442948301	0.0125641957291848	0.436553059360997	1.71110137011881	-1.04063896459935	0.912811799119326	1.53220193322725	0.0332354938547584	-0.53547742882104	1.41449832906077	0.966659355782396	-0.530018156778949	-0.429862877239568	-1.18230216845761	PremiumAsianSaladwithCrispyChicken**
0.143682426441436	0.909934523935781	0.695508902614466	2.94036840915744	-0.885195364363696	2.69225300203123	2.55961316911949	0.194145058796321	-0.519900435463559	2.671519315046	0.126432055780549	-0.825448424317926	-0.429862877239568	-1.27197870386034	PremiumAsianSaladwithGrilledChicken**
1.27657504955105	0.736649219178646	1.53292103798061	-0.501579300150727	-1.11207687449488	-0.888872418828972	-0.3171382913788	-0.152429388770122	-0.720532109907917	0.102168419692193	1.07786591019441	-0.284583780669646	-0.429862877239568	-0.751854798524492	Newman'sOwnCreamySouthwestDressing(44ml)
2.75231675597015	-0.00209339583861803	1.00322292539824	-0.501579300150727	-1.35552975163887	-0.868757921977875	-0.3171382913788	-0.152429388770122	-0.58417602910706	-0.84813944571264	2.92155352281456	0.438801748915671	-0.429862877239568	-2.18762332849876	Newman'sOwnCreamyCaesarDressing(59ml)
1.76210045945517	-0.822918523635577	7.46118621578607	-0.501579300150727	-0.415557253013429	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	2.07872489990249	-1.14360409705221	-0.429862877239568	-1.14386936757072	Newman'sOwnLowFatBalsamicVinaigrette(44ml)
0.851740315884943	-0.822918523635577	4.56598694290434	-0.501579300150727	-0.987060532177697	-0.506696978658121	-0.3171382913788	-0.152429388770122	-0.485007970342801	-0.84813944571264	0.610798381663967	-0.284583780669646	-0.429862877239568	-0.267601507349737	Newman'sOwnLowFatFamilyRecipeItalianDressing(44ml)
2.47610841519652	0.0944742662551419	1.33828579274486	-0.501579300150727	-1.19296980187659	-1.04623877654638	-0.3171382913788	-0.152429388770122	-0.678969026455249	-0.84813944571264	2.31422113277498	0.119661074098619	-0.429862877239568	-1.67288556801373	Newman'sOwnRanchDressing(59ml)
-0.0923368700397326	-0.822918523635577	2.32948380088987	1.21939455450336	-0.236962478274595	-0.846408481032211	-0.3171382913788	-0.0831144992568331	-0.956056249473032	-0.84813944571264	0.0399380690156536	-1.14360409705221	-0.429862877239568	0.162845862583377	Newman'sOwnLowFatSesameGingerDressing**(44ml)
0.426905582218839	5.93520836189272	1.07336559784065	0.531005012641724	-1.36210955912925	1.02200478202528	-0.155321021725771	-0.152429388770122	0.221564448352546	2.31955343897014	0.455109205487154	0.288096430252063	-0.429862877239568	-0.91327256224941	EggMcMuffin
1.25361100989342	0.125467265913612	0.772791499154519	0.335651223735044	-1.4195495001939	0.175021374079073	-0.238416376412461	-0.143999199504992	-0.160366588780074	1.07816028145932	1.26721761094999	0.713737127558739	-0.429862877239568	-1.26228394327626	SausageMcMuffin®
1.27657504955105	4.1157126619428	0.598491643029363	0.186810241710907	-1.4315630826388	0.512437528464149	-0.209260111610114	-0.145497899818793	-0.17097578425598	1.26365581074254	1.33734787048909	0.765329939353487	-0.429862877239568	-1.4513317746658	SausageMcMuffin®withEgg
-0.475868226821632	-0.822918523635577	0.395521323634215	1.43451628633512	-1.33085547354995	-0.0767496084659137	-0.256456815258914	-0.152429388770122	0.147963154738448	2.12157263367746	-0.381720116463214	-0.875160248182658	-0.429862877239568	0.196474563359402	EnglishMuffin
1.05404257001166	3.54015789971374	1.09306083098951	0.235980923272452	-1.39782851407702	0.0938644273246448	-0.201554527340922	-0.152429388770122	-0.53547742882104	0.848838885367419	1.07786591019441	1.31073966404083	-0.429862877239568	-1.10543656668384	Bacon,Egg&CheeseBiscuit(RegularSizeBiscuit)
1.11726202442626	2.99477334679507	1.01304894632228	0.466468493092196	-1.38294561618211	-0.0767496084659137	-0.165434601079085	-0.152429388770122	-0.588049781402539	1.13166860721409	1.07786591019441	1.0039466939042	-0.429862877239568	-1.08141606612953	Bacon,Egg&CheeseBiscuit(LargeSizeBiscuit)
1.47649727715863	2.99955143424242	0.770599660807269	0.105823236786009	-1.43809988485146	0.0778066357208276	-0.260026313854201	-0.152429388770122	-0.725150230291546	1.01520930998311	1.39840244938196	1.214490889096	-0.429862877239568	-1.38803069085211	SausageBiscuitwithEgg(RegularSizeBiscuit)
1.48526579591334	2.59718617551842	0.737164512685631	0.313618841527524	-1.42132782654265	-0.0641780479339777	-0.23197130735089	-0.152429388770122	-0.749456127047492	0.819067335699348	1.44660343271844	1.1169756829019	-0.429862877239568	-1.3380561509992	SausageBiscuitwithEgg(LargeSizeBiscuit)
1.39513357987647	-0.278883264514337	0.920536695654574	0.218828359937029	-1.42897876548495	-0.293389756237181	-0.3171382913788	-0.152429388770122	-0.79173708233458	0.80937427301672	1.34941679887489	1.25366190215494	-0.429862877239568	-1.25112369562715	SausageBiscuit(RegularSizeBiscuit)
1.47129096914801	-0.335553604006133	0.898160086287294	0.466468493092196	-1.40899068749819	-0.395229141941623	-0.276683973965543	-0.152429388770122	-0.759786133168769	0.636716593982411	1.46708885063644	1.18290925981723	-0.429862877239568	-1.21593086923363	SausageBiscuit(LargeSizeBiscuit)
0.799931202023223	-0.25234495919135	1.17312275435884	0.253970197014481	-1.39565052901922	0.313582014879316	-0.3171382913788	-0.144821656994273	-0.783721513205875	0.890228600759615	0.793068636700236	0.532533105645476	-0.429862877239568	-0.91327256224941	SouthernStyleChickenBiscuit(RegularSizeBiscuit)
0.896935500317507	-0.325184137631038	1.08118781809835	0.487065254650556	-1.38072901436798	0.111288839490489	-0.275823243807814	-0.145792856795445	-0.755610173247402	0.668309275678051	0.928801805344266	0.501328423680359	-0.429862877239568	-0.947616767297265	SouthernStyleChickenBiscuit(LargeSizeBiscuit)
0.941494132856655	2.69160033341056	0.8397043106709	0.152875545985333	-1.36387035268301	0.774398158816	-0.18039130293962	-0.143642994324775	-0.624332109240475	1.15955322767785	0.979189671772482	0.429250003366569	2.22008102654021	-1.25429600673867	Steak,Egg&CheeseBagel†
0.548286934694869	3.63298931297649	1.01099735953594	0.235980923272452	-1.04063896459935	0.0938644273246448	-0.201554527340922	-0.152429388770122	-0.395284488603709	0.848838885367419	0.52183313813436	0.492625077009817	-0.429862877239568	-0.682675756928099	Bacon,Egg&CheeseMcGriddles®
1.15519369707502	2.86713015355879	0.86328311091953	0.0515908674166574	-1.15226069881112	0.0938644273246448	-0.230450468350391	-0.152429388770122	-0.53547742882104	0.424594302597404	1.16127082600341	0.69715372376757	-0.429862877239568	-1.14386936757072	Sausage,Egg&CheeseMcGriddles®
0.952891442948301	-0.173098630796318	0.879695805210243	0.235980923272452	-1.04063896459935	-0.27011218236188	-0.3171382913788	-0.152429388770122	-0.731747545125303	0.283179441674066	0.966659355782396	0.492625077009817	-0.429862877239568	-0.83640696047564	SausageMcGriddles®
1.48325140646969	5.02546051191776	0.642377117493179	0.126343592763601	-1.43644360050703	0.175021374079073	-0.218735897670877	-0.148214294137557	-0.717349351265145	0.757110326930659	1.45656931170557	0.829820954096923	-0.429862877239568	-1.41497642247551	BigBreakfast®(RegularSizeBiscuit)
1.4889924163841	4.58683208425126	0.636787929707693	0.272858934443611	-1.44024477307749	0.0665661815981557	-0.226116077198971	-0.148530426234999	-0.735252368630736	0.933687801921422	1.48654999765854	0.789191614808559	-0.429862877239568	-1.39752585342416	BigBreakfast®(LargeSizeBiscuit)
0.910203811343581	3.29062024754873	0.548882141387343	0.351013251696251	-1.29214628498844	-0.00881704742637008	-0.250332996567916	-0.149567764891133	-0.685959759146065	0.895544710993476	0.927890098280962	0.353770766366938	-0.429862877239568	-0.88365462395126	BigBreakfastwithHotcakes(RegularSizeBiscuit)
0.944095692768879	3.07600083339998	0.54387780811418	0.441215072398902	-1.30231913454277	-0.0746725680302024	-0.253818490210223	-0.149717067006558	-0.648850850040273	0.8045698854262	0.935714923250359	0.350344279265292	-0.429862877239568	-0.899236234968983	BigBreakfastwithHotcakes(LargeSizeBiscuit)
0.993351893773645	2.16625298342502	1.09634336984765	0.0147128562454985	-1.40378167323498	0.257653901683581	-0.155321021725771	-0.142032155343128	-0.367245900560243	1.52763021779944	0.922176734017593	0.860776641173772	-0.429862877239568	-1.12849624721597	SausageBurrito
1.2347880265675	4.41825175959255	0.759963855056682	0.26016322567977	-1.40514797205812	0.420548351592469	-0.15797376385123	-0.126862421326696	-0.569951102644974	1.09921273749398	1.19271858114451	0.827917940547117	0.598257435155864	-1.36312534640082	McSkillet™BurritowithSausage
-0.18000118016131	-0.377327739974371	0.351207049049291	0.826029102010996	-0.987060532177697	-0.397503995752164	-0.3171382913788	-0.152429388770122	-0.451361664690642	1.18823455158343	-0.189888810102499	-0.652735344833601	-0.429862877239568	0.239711464357148	Hotcakes
0.68834234139798	-0.0731263395902778	0.422034137488444	0.392003278227356	-1.15054344136171	-0.16861870466083	-0.3171382913788	-0.152429388770122	-0.616357971254115	0.522496898621254	0.628762517376676	0.0127694057704725	-0.429862877239568	-0.633895663494744	HotcakesandSausage
-1.27243335244558	-0.822918523635577	-0.734219133376515	-0.501579300150727	0.735386850859056	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.50799389362436	HotcakeSyrup1pkg
1.27657504955105	-0.822918523635577	0.613810157700695	1.56358932543417	-1.48712590144643	-1.01626423221926	-0.3171382913788	-0.131634921916135	-0.956056249473032	-0.214600868776085	1.23355508637122	-0.284583780669646	-0.429862877239568	-0.91327256224941	WhippedMargarine(1pat)6g40404.571.580005520000004000HashBrown
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.72758004385258	-1.27104785899982	-0.3171382913788	-0.0633102451101792	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.62329229628502	GrapeJam
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.72758004385258	-1.27104785899982	-0.3171382913788	0.0258088985497633	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.62329229628502	StrawberryPreserves
0.775876970587425	2.79750659361173	0.789425986611322	0.32817595120035	-1.33085547354995	0.366846884589539	-0.143762645321983	-0.146859442291375	-0.53547742882104	0.848838885367419	0.744246246958378	0.236964268562625	0.690053891619743	-0.91327256224941	Bacon,Egg&CheeseBagel†
-0.613207041584381	-0.554027533495194	-0.430489963169072	2.16889737086423	-0.107635227601646	-0.61212468629146	-0.283658856278173	0.54669492787253	-0.549980146774557	0.790322391192244	-0.613240658622699	-0.551176292650441	-0.429862877239568	0.645243777163592	Fruit&MapleOatmeal†
-0.537142467254243	-0.523001650017458	-0.505914347409549	2.47702929444288	-0.621628146942853	-0.536095089440494	-0.279795844535793	0.627363118254375	-0.684297626897899	0.979375680065885	-0.53890630394942	-0.482819238296391	-0.429862877239568	0.452570053884513	Fruit&MapleOatmealwithoutBrownSugar†
-0.741389935362947	-0.579236063820855	-0.444603465371646	0.466468493092196	0.153713591466604	-0.315609258572696	-0.3171382913788	-0.00621829370302858	0.147963154738448	0.339745386043401	-0.673637321794738	-0.606716399313107	-0.429862877239568	0.600018972671697	Fruit'nYogurtParfait
-0.968979971255503	-0.265930044059069	-0.466145126628206	-0.501579300150727	0.120227071203073	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.619593192951438	-0.84813944571264	-0.923852069221759	-1.14360409705221	-0.429862877239568	0.931501880321082	LowFatCaramelDip
-0.281152307224668	-0.0431346522284659	-0.5350784426492	-0.501579300150727	0.0130702063597725	-0.251913351877554	-0.122957567795165	-0.152429388770122	-0.17097578425598	-0.214600868776085	-0.167647499220097	0.00175632479120893	-0.429862877239568	0.0552340201000986	VanillaReducedFatIceCreamCone
-0.328356166520901	0.043508000150102	-0.504441413306536	-0.501579300150727	0.179758662782684	-0.421769103064599	-0.101381931841428	-0.152429388770122	0.0907177041497042	-0.84813944571264	-0.219543891279034	-0.189137078849361	-0.429862877239568	0.342198933388842	KiddieCone
-0.362073208875354	-0.126682924164942	-0.576930813090518	0.0515908674166574	0.522065314365449	-0.452100487205143	-0.143762645321983	-0.130149602855136	-0.114898608169048	-0.84813944571264	-0.256612742749704	0.0835677834943101	-0.429862877239568	0.297360665687476	StrawberrySundae
-0.272822214407685	-0.134873931217538	-0.486419631340263	-0.0460273974481751	0.13073264618771	-0.484216070412777	-0.174358347567304	-0.152429388770122	-0.0901586775424598	-0.84813944571264	-0.295862114895119	0.119661074098619	-0.429862877239568	0.321098572117611	HotCaramelSundae
0.0149446283607988	-0.232173166508978	-0.434811801164118	0.437133711478774	0.331293623167149	-0.344561943434124	-0.170031682603319	-0.152429388770122	-0.0639193571809273	0.0157767955644807	0.0163487998979545	0.678560210425956	-0.429862877239568	0.113931388727341	HotFudgeSundae
2.03183679829079	-0.822918523635577	-0.810811706733175	2.94036840915744	-1.48712590144643	0.427509652870626	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	1.85631179107847	-0.189137078849361	-0.429862877239568	-1.81003791627673	Peanuts(forSundaes)
0.254316471666984	-0.213712374098772	-0.60616592479585	0.466468493092196	0.251382608901904	-0.494753996152782	-0.203360523654014	-0.152429388770122	-0.0360400792967991	-0.25419702983462	0.275093595532715	0.735502845034648	1.52999146826423	-0.131405269206838	McFlurry®withM&M'S®Candiescup
0.143682426441436	-0.134873931217538	-0.405321612492035	0.409524505254377	0.0817066295927361	-0.371811529186056	-0.174358347567304	-0.152429388770122	-0.147885182337831	-0.10279994343434	0.20783816097104	0.372314108328785	0.799849653272616	-0.0270573888577028	McFlurry®withOREO®Cookiescup
0.936707262618164	-0.822918523635577	-0.342065157790418	1.97662305055116	-0.837040921397077	-0.965307506863143	-0.239466001945346	0.00352911263477763	-0.861846593646986	0.292229992773159	0.797625393076142	1.26165278881897	-0.429862877239568	-0.461302823819639	BakedHotApplePie
0.4823188083492	-0.568641174263693	-0.25634807786866	0.508557527581018	-0.617446998370372	-0.772558154429148	-0.274925090599749	-0.152429388770122	-0.802453549756653	0.701275552230022	0.46864739471992	0.53708782630498	-0.429862877239568	-0.211456198228027	CinnamonMelts
0.0347504434501277	-0.822918523635577	-0.0154272911063244	0.0941424187679947	-0.862044189860514	-0.68308564335236	-0.3171382913788	-0.152429388770122	-0.956056249473032	0.979375680065885	1.77674318554183e-05	-0.317623023607437	-0.429862877239568	0.142151277490439	McDonaldland®Cookies
0.851740315884943	-0.335553604006133	-0.423061804115085	0.466468493092196	-0.315097692222835	-0.79332855878626	-0.256456815258914	-0.152429388770122	-0.808853662244835	1.52763021779944	0.785948704862881	0.735502845034648	-0.429862877239568	-0.408842050609041	cookie
0.426905582218839	-0.30306260936417	-0.190411862544231	0.531005012641724	-0.403650934697506	-0.761480605438689	-0.252411383517588	-0.152429388770122	-0.799040156429622	1.05247628509703	0.299420029310341	0.288096430252063	-0.429862877239568	-0.159989664866459	cookie
0.586218607343628	-0.579236063820855	-0.293811836575722	-0.501579300150727	-0.627638548015794	-0.79332855878626	-0.256456815258914	-0.152429388770122	-0.956056249473032	0.339745386043401	0.494031499531357	0.467058996165097	-0.429862877239568	-0.408842050609041	cookie
-1.06001598561252	-0.433026587932022	-0.569545100659697	-0.501579300150727	0.388119233311324	-1.27104785899982	-0.3171382913788	4.68228415478176	-0.249483830777685	-0.84813944571264	-1.02393796819257	-1.14360409705221	-0.429862877239568	1.18515836617453	AppleDipperswithLowFatCaramelDip
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.01320094489724	-1.27104785899982	-0.3171382913788	16.4831440944191	0.614104680961073	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	AppleSlices†
-0.0272280985966515	-0.150691048284619	-0.525570399060098	-0.234531633049231	0.172573815523076	-0.546232369020623	-0.149741115875666	-0.152429388770122	-0.2454230697507	-0.028908527260198	-0.0495384690169974	0.337465413952211	1.73273502124738	0.0886307988018053	ChocolateMcCafé®Shake
-0.0923368700397326	-0.173098630796318	-0.523589556645701	-0.286457568318966	0.214485424537457	-0.47484902531055	-0.148578635490228	-0.152429388770122	-0.220043313332046	0.141764580750727	-0.0898029111316904	0.288096430252063	1.31222987431936	0.140426728732694	ChocolateMcCafé®Shake
-0.113793169719839	-0.158329996868153	-0.52097844619036	-0.325570610470196	0.231848805414844	-0.489325367741264	-0.151643356506384	-0.152429388770122	-0.153133046410138	-0.0382179695153394	-0.0898029111316904	0.320635078599887	1.70816004512821	0.168960171815382	ChocolateMcCafé®Shake
-0.306899866840795	-0.114024095083658	-0.513145114824338	-0.149561920789664	0.302880818095062	-0.40246731315698	-0.151643356506384	-0.152429388770122	-0.0193125125663222	0.0157767955644807	-0.302106333190981	0.0277872434694682	0.995485737672281	0.260674810295449	ChocolateTripleThick®Shakecup
-0.24697020221705	-0.150691048284619	-0.513685344573719	-0.234531633049231	0.32345560797485	-0.41444773447895	-0.149741115875666	-0.152429388770122	-0.0423850184014627	-0.028908527260198	-0.291125121705155	0.0412515117513267	1.73273502124738	0.31127599014652	ChocolateTripleThick®Shakecup
-0.279313195823516	-0.114024095083658	-0.515383209500345	-0.300426511944405	0.315057734554528	-0.377650726132899	-0.128001222953182	-0.152429388770122	-0.0384297316868672	0.0774850985128465	-0.286941803043888	0.0835677834943101	1.19910696837397	0.28163815623375	ChocolateTripleThick®Shakecup
-0.283593886153783	-0.150691048284619	-0.50774281733053	-0.234531633049231	0.32345560797485	-0.381501575843532	-0.149741115875666	-0.152429388770122	-0.0423850184014627	-0.028908527260198	-0.291125121705155	0.0412515117513267	1.73273502124738	0.297360665687476	ChocolateTripleThick®Shakecup
0.308347051893415	-0.188210721327463	-0.602408658297613	0.218828359937029	0.228214609417252	-0.471145774921298	-0.204242521853431	-0.152429388770122	-0.134460413780768	-0.406135787384811	0.263213244152943	0.854117568953752	1.02863337987953	-0.124953251034694	SnackSizeMcFlurry®withM&M'S®Candies
0.226983354611261	-0.134873931217538	-0.405321612492035	0.409524505254377	0.0939631337414795	-0.371811529186056	-0.174358347567304	-0.152429388770122	-0.0901586775424598	-0.00963250564955228	0.116256292631738	0.372314108328785	-0.429862877239568	-0.0112321179042795	SnackSizeMcFlurry®withOREO®Cookies
0.060381498271612	-0.211323330375098	-0.540484977239082	0.105823236786009	0.0571936212952492	-0.521684250821684	-0.174358347567304	-0.152429388770122	-0.147885182337831	-0.661804570143065	0.116256292631738	0.540749464482229	0.799849653272616	0.0995447787696838	SnackSizeMcFlurry®withRolo®†**
-0.00538239238877561	-0.138897583804778	-0.605221115091615	-0.501579300150727	0.245556737686465	-0.533516307792918	-0.14680432332298	-0.146957160650652	-0.129655759770872	-0.681418767571442	-0.0283466573776855	0.363449089583867	1.77067533525592	0.0778891448334205	StrawberryMcCafé®Shake
-0.0757157928227487	-0.109031880798081	-0.606924433995024	-0.501579300150727	0.273667652316719	-0.517462484015047	-0.146204555829826	-0.148036191547449	-0.126745898891639	-0.714293267486607	-0.0733568713947032	0.308261226411278	1.33676639194695	0.109797771218381	StrawberryMcCafé®Shake
-0.0868480491913332	-0.142874449734027	-0.602408658297613	-0.501579300150727	0.315435313359473	-0.471145774921298	-0.147794637090746	-0.145175504983847	-0.134460413780768	-0.737638531130683	-0.0626478222636416	0.354687152452262	1.75788150843908	0.175358867523294	StrawberryMcCafé®Shake
-0.260922081811996	-0.0802672175335665	-0.597446680953909	-0.501579300150727	0.388119233311324	-0.361106334783511	-0.143762645321983	-0.145002793465127	-0.114898608169048	-0.621875668235299	-0.256612742749704	0.0835677834943101	1.06335948123951	0.278144265244033	StrawberryTripleThick®Shakecup
-0.286209863577835	-0.126682924164942	-0.601549854526587	-0.501579300150727	0.388119233311324	-0.383854872888919	-0.143762645321983	-0.146859442291375	-0.00975390300604947	-0.678441612604634	-0.256612742749704	0.0835677834943101	1.80997066047905	0.268536065022311	StrawberryTripleThick®Shakecup
-0.239051567852351	-0.0852851317639854	-0.596559508289546	-0.501579300150727	0.388119233311324	-0.393077253201922	-0.120333503962954	-0.148214294137557	-0.00122865664148207	-0.719719463901176	-0.247595995094676	0.133317994867818	1.26514628643939	0.264640848716209	StrawberryTripleThick®Shakecup
-0.27732496728173	-0.120410531376918	-0.593454403964276	-0.501579300150727	0.405013333624457	-0.410292363119528	-0.142200702564714	-0.146809262593369	-0.00122865664148207	-0.676912803297355	-0.247595995094676	0.0946233860217561	1.83014934099904	0.293725130468446	StrawberryTripleThick®Shakecup
-0.0136637712126761	-0.173098630796318	-0.593799415555972	-0.501579300150727	-0.00545073324277311	-0.563315562387136	-0.137341325097657	-0.152429388770122	-0.192783574956454	-0.672156507674708	0.0399380690156536	0.447174266619204	1.89292745817233	0.103061505648223	VanillaMcCafé®cup)
-0.0229194298982124	-0.134873931217538	-0.587792154900548	-0.501579300150727	0.0204241088490186	-0.484216070412777	-0.13866336161443	-0.152429388770122	-0.176748434735517	-0.708388289035459	-0.0211165098772141	0.372314108328785	1.41470591852871	0.107457414246396	VanillaMcCafé®cup)
-0.0439955683508184	-0.118294543448428	-0.586570799195003	-0.501579300150727	0.0642817200800646	-0.488278885155912	-0.141673782116479	-0.152429388770122	-0.104764178755747	-0.733644522169889	-0.0757346120795689	0.305345834195488	1.83695660671663	0.156363221469927	VanillaMcCafé®cup)
-0.27732496728173	-0.120410531376918	-0.581033986663196	-0.501579300150727	0.145970462156418	-0.410292363119528	-0.142200702564714	-0.152429388770122	-0.00122865664148207	-0.762526124504998	-0.247595995094676	0.0946233860217561	1.83014934099904	0.279182989592328	VanillaTripleThickShake®cup
-0.260922081811996	-0.0802672175335665	-0.581033986663196	-0.501579300150727	0.120227071203073	-0.452100487205143	-0.143762645321983	-0.152429388770122	-0.114898608169048	-0.621875668235299	-0.256612742749704	0.0835677834943101	1.06335948123951	0.239711464357148	VanillaTripleThick®Shake
-0.268278527416604	-0.114024095083658	-0.572678433206106	-0.501579300150727	0.149451670705791	-0.367724091323266	-0.140610360848223	-0.152429388770122	0.00745159420244102	-0.675356197457216	-0.238415306573194	0.105879999504247	1.85069490661939	0.290023494609071	VanillaTripleThick®Shakecup
-0.239051567852351	-0.0852851317639854	-0.577928882337926	-0.501579300150727	0.13470772861433	-0.393077253201922	-0.120333503962954	-0.152429388770122	-0.00122865664148207	-0.719719463901176	-0.247595995094676	0.133317994867818	1.26514628643939	0.264640848716209	VanillaTripleThick®Shakecup
-0.210346518280317	-0.0431346522284659	0.0508547435292466	-0.501579300150727	0.0130702063597725	1.78635566236699	0.168313517580287	-0.090045988208162	2.5768058440037	-0.84813944571264	-0.32333667539691	0.144926377521636	-0.429862877239568	-0.590437034799574	1%LowFatMilkJug
-0.522724998917158	-0.593570326162898	-0.202576565371466	0.409524505254377	0.351349720865093	0.752233883081153	-0.0315784037558076	-0.0973852118036867	1.12209792316034	-0.84813944571264	-0.570607719913024	-0.385644994361712	-0.429862877239568	-0.0587079307645494	1%LowFatChocolateMilkJug
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.01320094489724	-0.761480605438689	-0.3171382913788	1.30318329100894	-0.799040156429622	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.700905074999771	MinuteMaid®OrangeJuicecup
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.07899901980102	-0.667612953466901	-0.3171382913788	1.32507220348682	-0.708136102562384	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.785861792749728	MinuteMaid®OrangeJuicecup
-1.27243335244558	-0.822918523635577	-0.79850218601514	-0.501579300150727	1.10249833226666	-0.725082944470036	-0.3171382913788	1.29575669570394	-0.787824721212235	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.816203477660427	MinuteMaid®OrangeJuice(Large)cup
-1.27243335244558	-0.822918523635577	-0.779478381269087	-0.501579300150727	1.80875948691568	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.72810902597652	Coca-Cola®cup
-1.27243335244558	-0.822918523635577	-0.764856162719179	-0.501579300150727	1.8466432270118	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	Coca-Cola®cup
-1.27243335244558	-0.822918523635577	-0.761573623861037	-0.501579300150727	1.96570641017102	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.9307547033801	Coca-Cola®Classiccup
-1.27243335244558	-0.822918523635577	-0.766338599622856	-0.501579300150727	1.98106940154641	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.95059098770881	Coca-Cola®cup
-1.27243335244558	-0.822918523635577	-0.622811753948647	-0.501579300150727	1.69510826662734	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.58136560440842	cup
-1.27243335244558	-0.822918523635577	-0.626989530677192	-0.501579300150727	1.76329899880034	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.66941165734928	cup
-1.27243335244558	-0.822918523635577	-0.630272069535334	-0.501579300150727	1.8466432270118	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	Sprite®cup
-1.27243335244558	-0.822918523635577	-0.632919278291901	-0.501579300150727	1.86008584446526	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.79438024862018	cup
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.8466432270118	-1.27104785899982	-0.3171382913788	1.27719020744146	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	Hi-C®OrangeLavaburstcup
-1.27243335244558	-0.822918523635577	-0.789270045476614	-0.501579300150727	1.95082351227612	-1.27104785899982	-0.3171382913788	1.30968156190081	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.91153830293666	Hi-C®OrangeLavaburstcup
-1.27243335244558	-0.822918523635577	-0.782089491724428	-0.501579300150727	1.8466432270118	-1.27104785899982	-0.3171382913788	1.21220749852275	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	Hi-C®OrangeLavaburstcup
-1.27243335244558	-0.822918523635577	-0.79111647358432	-0.501579300150727	1.87045586364365	-1.27104785899982	-0.3171382913788	1.27347690978896	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.80776974054207	Hi-C®OrangeLavaburstcup
-1.27243335244558	-0.822918523635577	-0.170716629395376	-0.501579300150727	1.37039049437491	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	2.08448590692764	POWERade®MountainBlastcup
-1.27243335244558	-0.822918523635577	-0.224878520554728	-0.501579300150727	1.13821728721443	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.8308294210742	POWERade®MountainBlastcup
-1.27243335244558	-0.822918523635577	-0.213389634551229	-0.501579300150727	1.0965451731087	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.66941165734928	POWERade®MountainBlastcup
-1.27243335244558	-0.822918523635577	-0.215478522915502	-0.501579300150727	1.12685216518559	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.72810902597652	POWERade®MountainBlastcup
2.97591398421546	3.07600083339998	-0.293811836575722	-0.501579300150727	-1.48712590144643	-1.27104785899982	0.168313517580287	-0.152429388770122	0.221564448352546	-0.84813944571264	3.4132035528466	5.29904827581702	-0.429862877239568	-2.52745019949859	CoffeeCream(11ml)
-1.27243335244558	-0.822918523635577	-0.810811706733175	-0.501579300150727	1.8466432270118	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.77702349983256	SugarPacket1pkg
0.361546392424054	0.376748970836902	-0.386606685065521	-0.501579300150727	0.436202441894856	-0.977066751176092	-0.167768504006773	-0.152429388770122	-0.593711419372854	-0.84813944571264	0.538941838813131	1.16914290859315	-0.429862877239568	0.0800675222116243	IcedCoffee--
0.516344473516966	0.408319168059862	-0.39358374134295	-0.501579300150727	0.289422120955652	-0.868757921977875	-0.163837720128562	-0.152429388770122	-0.58417602910706	-0.84813944571264	0.463303372654355	1.1169756829019	-0.429862877239568	-0.233618820249755	IcedCoffee--Caramel11.5floz(85
0.458374821749662	0.332316841411995	-0.402317982164323	-0.501579300150727	0.411270407814506	-0.987954940354749	-0.173300718353885	-0.152429388770122	-0.607131598265453	-0.84813944571264	0.472408002840134	1.08348561208777	-0.429862877239568	-0.0762915651572421	IcedCoffee--
0.361546392424054	0.376748970836902	-0.598709195899348	-0.501579300150727	0.53236885906192	-0.977066751176092	-0.0930836103207597	-0.152429388770122	-0.593711419372854	-0.84813944571264	0.538941838813131	1.16914290859315	-0.429862877239568	0.0800675222116243	IcedCoffee--Hazelnut
0.516344473516966	0.408319168059862	-0.593127550877405	-0.501579300150727	0.421018270763214	-0.868757921977875	-0.112737529711816	-0.152429388770122	-0.58417602910706	-0.84813944571264	0.463303372654355	1.1169756829019	-0.429862877239568	-0.0637053847498411	IcedCoffee--Hazelnut11.5floz(85
0.458374821749662	0.332316841411995	-0.593799415555972	-0.501579300150727	0.503875105827235	-0.987954940354749	-0.137341325097657	-0.152429388770122	-0.607131598265453	-0.84813944571264	0.472408002840134	1.08348561208777	-0.429862877239568	0.0432771487130678	IcedCoffee--Hazelnut
0.244833553504794	0.291058435517439	-0.613859375244622	-0.501579300150727	0.477416620680741	-0.99806540173493	-0.178437774533346	-0.152429388770122	-0.619593192951438	-0.84813944571264	0.410626583722351	1.0039466939042	-0.429862877239568	0.00911465903583612	IcedCoffee--
0.426905582218839	0.34675728347509	-0.604011758670194	-0.501579300150727	0.388119233311324	-0.888872418828972	-0.171502748691074	-0.152429388770122	-0.602770040125359	-0.84813944571264	0.377264617398748	1.0039466939042	-0.429862877239568	-0.10618374362482	IcedCoffee--Regular11.5floz(86
0.396560244099831	0.291058435517439	-0.601549854526587	-0.501579300150727	0.522065314365449	-0.99806540173493	-0.178437774533346	-0.152429388770122	-0.619593192951438	-0.84813944571264	0.410626583722351	1.0039466939042	-0.429862877239568	0.0667638603661644	IcedCoffee--
0.516344473516966	0.408319168059862	-0.593127550877405	-0.501579300150727	0.355220195859433	-0.868757921977875	-0.163837720128562	-0.152429388770122	-0.58417602910706	-0.84813944571264	0.463303372654355	1.1169756829019	-0.429862877239568	-0.0637053847498411	IcedCoffee--Vanilla11.5floz(85
0.458374821749662	0.332316841411995	-0.606564844448749	-0.501579300150727	0.503875105827235	-0.987954940354749	-0.173300718353885	-0.152429388770122	-0.607131598265453	-0.84813944571264	0.472408002840134	1.08348561208777	-0.429862877239568	0.0432771487130678	IcedCoffee--Vanilla(Large)†cup
2.26785609477196	1.77636104772146	-0.00658968648824816	-0.501579300150727	-1.27876533091779	-0.634088792048405	0.00649624792725806	-0.152429388770122	-0.17097578425598	-0.84813944571264	2.63475767196253	3.86734774851274	-0.429862877239568	-0.375213349833016	IcedCoffeewithSugarFreeVanillaSyrup
2.50387539125313	1.77636104772146	-0.044885973166578	-0.501579300150727	-1.20931180740825	-0.421769103064599	0.00649624792725806	-0.152429388770122	-0.17097578425598	-0.84813944571264	2.37527571166785	3.62873099396203	-0.429862877239568	-0.554566420638481	IcedCoffeewithSugarFreeVanillaSyrup11.5floz(85
2.62188503949371	1.77636104772146	-0.00658968648824816	-0.501579300150727	-1.27876533091779	-0.634088792048405	0.00649624792725806	-0.152429388770122	-0.17097578425598	-0.84813944571264	2.63475767196253	3.86734774851274	-0.429862877239568	-0.375213349833016	IcedCoffeewithSugarFreeVanillaSyrup
-1.27243335244558	-0.523001650017458	0.0906239643105891	0.689864137686716	0.53236885906192	1.37478211141376	0.056286177051267	-0.128435773169368	2.21446101390353	0.61387265491018	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.452570053884513	ml)
-1.27243335244558	-0.822918523635577	-0.741878390712181	-0.501579300150727	1.70079082764175	-1.0799601389144	-0.268593110482891	1.48513487598132	-0.838294179690475	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.34657612989944	FrozenStrawberryLemonade(12flozcup)†
-1.27243335244558	-0.822918523635577	-0.741878390712181	-0.501579300150727	1.76329899880034	-1.11817768293148	-0.239466001945346	1.46953902584083	-0.861846593646986	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.41114323538941	FrozenStrawberryLemonade(16flozcup)†
-1.20806445340526	-0.822918523635577	-0.737700613983636	-0.501579300150727	1.69510826662734	-1.0394263801084	-0.258295647868607	1.35989547333799	-0.813314346706296	-0.560167365286933	-1.18670392510469	-1.01344950366091	-0.429862877239568	1.38570770898427	FrozenStrawberryLemonade(22flozcup)†
-1.27243335244558	-0.822918523635577	-0.779478381269087	-0.501579300150727	1.58145704633899	-1.27104785899982	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.43462218284031	SweetTea(Child)†cup
-1.27243335244558	-0.822918523635577	-0.773883144579071	-0.501579300150727	1.59363396279845	-1.13455663036738	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.45034469229403	SweetTea(Large)†cup
-1.27243335244558	-0.822918523635577	-0.772515420054845	-0.501579300150727	1.63828265648316	-1.05872817001602	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.50799389362436	SweetTea(Medium)†cup
-1.27243335244558	-0.822918523635577	-0.764856162719179	-0.501579300150727	1.51326631416598	-1.01626423221926	-0.3171382913788	-0.152429388770122	-0.956056249473032	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.34657612989944	SweetTea(Small)†cup
-1.27243335244558	-0.173098630796318	0.165743603564236	-0.501579300150727	0.388119233311324	2.55070654270869	0.330130787233316	-0.152429388770122	3.95069665813355	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.10618374362482	NonfatCappuccinocup
-1.27243335244558	-0.335553604006133	0.137021388555489	-0.501579300150727	0.388119233311324	2.55070654270869	0.289676469820059	-0.152429388770122	3.46002136737289	0.339745386043401	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.10618374362482	NonfatCappuccinocup
-1.27243335244558	-0.389705261742738	0.184891746903401	-0.501579300150727	0.318665709801777	2.55070654270869	0.22225260746463	-0.152429388770122	3.62357979762644	0.207758182514952	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.195860279027552	NonfatCappuccinocup
-1.27243335244558	-0.389705261742738	0.0700028868684115	-0.501579300150727	0.318665709801777	2.55070654270869	0.22225260746463	-0.152429388770122	2.96934607661223	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.195860279027552	NonfatLattecup
-1.27243335244558	-0.468471309359618	0.0665214062612906	-0.501579300150727	0.2176424028788	2.20327432437155	0.124181534947643	-0.152429388770122	3.32620083352907	0.0157767955644807	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.326298875976981	NonfatLattecup
-1.27243335244558	-0.498008577215948	0.108299173546741	-0.501579300150727	0.388119233311324	2.55070654270869	0.289676469820059	-0.152429388770122	3.46002136737289	-0.056216224541946	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.10618374362482	NonfatLattecup
-1.27243335244558	-0.562990566499874	-0.259345178565225	-0.501579300150727	1.17988940132015	0.00287027490301374	-0.122957567795165	-0.152429388770122	0.614104680961073	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.02374060244961	NonfatCaramelCappuccinocup
-1.27243335244558	-0.617712241686338	-0.266601317093751	-0.501579300150727	1.21059516960859	-0.0641780479339777	-0.112737529711816	-0.152429388770122	0.593444668718518	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.955775228249642	NonfatCaramelCappuccinocup
-1.27243335244558	-0.653400290720988	-0.271333581351485	-0.501579300150727	1.176265739224	-0.107905215001581	-0.148285488262596	-0.152429388770122	0.323966248163466	-0.43496211292793	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.911449984206186	NonfatCaramelCappuccinocup
-1.27243335244558	-0.593570326162898	-0.202576565371466	-0.501579300150727	1.16027899468216	0.302615718174269	-0.088690381280406	-0.152429388770122	0.775738894388113	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.890808326440851	NonfatCaramelcup
-1.27243335244558	-0.645694916497597	-0.24681184837959	-0.501579300150727	1.07002655504142	0.292397123517295	-0.0964783782155785	-0.152429388770122	0.649790156652757	-0.41618132507408	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.774276785783825	NonfatCaramelcup
-1.27243335244558	-0.672960086826518	-0.227529801940151	-0.501579300150727	1.06128415348077	0.198857680118835	-0.130426057163766	-0.152429388770122	0.629202382215247	-0.482636420556935	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.762988830278586	NonfatCaramelcup
-1.27243335244558	-0.562990566499874	-0.489122898635204	-0.501579300150727	1.34657785774307	0.00287027490301374	-0.0582306599339535	-0.152429388770122	0.614104680961073	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.13135244493289	NonfatHazelnutCappuccinocup
-1.27243335244558	-0.617712241686338	-0.484285472949521	-0.501579300150727	1.34219131941615	-0.0641780479339777	-0.0616373392950699	-0.152429388770122	0.593444668718518	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.12568866374956	NonfatHazelnutCappuccinocup
-1.27243335244558	-0.653400290720988	-0.511101637076681	-0.501579300150727	1.28497560210851	-0.107905215001581	-0.106072287483545	-0.152429388770122	0.323966248163466	-0.43496211292793	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.05181325701046	NonfatHazelnutCappuccinocup
-1.27243335244558	-0.606311892689158	-0.446996983289041	-0.501579300150727	1.08265446840679	0.21518996388682	-0.0474428419570849	-0.152429388770122	0.679528053062494	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.790581610402503	NonfatHazelnutcup
-1.27243335244558	-0.645694916497597	-0.450478463896162	-0.501579300150727	1.12685216518559	0.292397123517295	0.0138515783660321	-0.152429388770122	0.649790156652757	-0.41618132507408	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.847648496567878	NonfatHazelnutcup
-1.27243335244558	-0.672960086826518	-0.452888719701092	-0.501579300150727	1.15745057064784	0.198857680118835	-0.0370699400562497	-0.152429388770122	0.629202382215247	-0.482636420556935	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.887156340836215	NonfatHazelnutcup
-1.27243335244558	-0.562990566499874	-0.489122898635204	-0.501579300150727	1.34657785774307	0.00287027490301374	-0.122957567795165	-0.152429388770122	0.614104680961073	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.13135244493289	NonfatVanillaCappuccinocup
-1.27243335244558	-0.617712241686338	-0.484285472949521	-0.501579300150727	1.27639324451237	-0.0641780479339777	-0.112737529711816	-0.152429388770122	0.593444668718518	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.0407319459996	NonfatVanillaCappuccinocup
-1.27243335244558	-0.653400290720988	-0.511101637076681	-0.501579300150727	1.28497560210851	-0.107905215001581	-0.148285488262596	-0.152429388770122	0.323966248163466	-0.43496211292793	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.05181325701046	NonfatVanillaCappuccinocup
-1.27243335244558	-0.606311892689158	-0.446996983289041	-0.501579300150727	1.08265446840679	0.21518996388682	-0.101381931841428	-0.152429388770122	0.679528053062494	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.790581610402503	NonfatVanillacup
-1.27243335244558	-0.645694916497597	-0.450478463896162	-0.501579300150727	1.12685216518559	0.292397123517295	-0.0964783782155785	-0.152429388770122	0.649790156652757	-0.41618132507408	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.847648496567878	NonfatVanillacup
-1.27243335244558	-0.672960086826518	-0.452888719701092	-0.501579300150727	1.15745057064784	0.198857680118835	-0.130426057163766	-0.152429388770122	0.629202382215247	-0.482636420556935	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.887156340836215	NonfatVanillacup
-1.27243335244558	-0.0431346522284659	0.5678546136867	-0.501579300150727	0.513135575628507	2.55070654270869	0.265403879372104	-0.152429388770122	3.75442654182928	1.05247628509703	-1.25747173245779	-1.14360409705221	-0.429862877239568	2.31508271224895	NonfatCappuccinowithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.265930044059069	0.469378447942423	-0.501579300150727	0.298821845941907	2.55070654270869	0.237663776003014	-0.152429388770122	3.24973195704689	0.509443219151407	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.85388910160633	NonfatCappuccinowithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.335553604006133	0.481687968660457	-0.501579300150727	0.231848805414844	2.55070654270869	0.168313517580287	-0.152429388770122	2.7240084312319	0.339745386043401	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.91153830293666	NonfatCappuccinowithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.335553604006133	0.309354678607973	-0.501579300150727	0.231848805414844	2.07298724249512	0.168313517580287	-0.152429388770122	2.7240084312319	0.339745386043401	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.10444948431207	NonfatLattewithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.389705261742738	0.41466946697338	-0.501579300150727	0.318665709801777	2.55070654270869	0.22225260746463	-0.152429388770122	3.62357979762644	0.207758182514952	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.41831735822163	NonfatLattewithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.468471309359618	0.379854660902171	-0.501579300150727	0.2176424028788	2.55070654270869	0.344841448110864	-0.152429388770122	3.32620083352907	0.0157767955644807	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.43462218284031	NonfatLattewithSugarFreeVanillaSyrupcup
-0.387360990641194	-0.660463550425763	-0.437422911619459	-0.501579300150727	0.283938948047004	-0.156369491834841	-0.155321021725771	-0.152429388770122	0.270631977428612	-0.056216224541946	-0.381720116463214	-0.0698287015740048	-0.429862877239568	0.230103264135426	MochawithNonfatMilkcup
-0.362073208875354	-0.544424283847323	-0.416907043756068	-0.501579300150727	0.388119233311324	-0.179118029940249	-0.143762645321983	-0.152429388770122	0.0953908021569486	-0.169348113280617	-0.423422574367718	-0.0698287015740048	-0.429862877239568	0.355009867017804	MochawithNonfatMilkcup
-0.500006563961752	-0.586620380784938	-0.413922917521393	-0.501579300150727	0.407061103359382	-0.112940464542699	-0.170031682603319	-0.152429388770122	0.114508021277494	0.0157767955644807	-0.549793658926819	-0.232521943313127	-0.429862877239568	0.309589284151485	MochawithNonfatMilkcup
-0.422763885113369	-0.511004975072733	-0.42478513701561	-0.501579300150727	0.363115964847887	-0.0480864504530997	-0.122957567795165	-0.152429388770122	0.457088587917662	-0.0878931533887738	-0.416750181102997	-0.112779717393133	-0.429862877239568	0.24893533657	HotChocolatewithNonfatMilkcup
-0.450172577607956	-0.571375339310703	-0.388317189185149	-0.501579300150727	0.408283159491514	0.0850585416064225	-0.0822422547856933	-0.152429388770122	0.563454328366424	-0.235037597064361	-0.504137009021595	-0.173742449523509	-0.429862877239568	0.336413350459633	HotChocolatewithNonfatMilkcup
-0.618841454497725	-0.622973941223498	-0.368931475829369	-0.501579300150727	0.404146969505834	0.296851382726745	-0.0681886457587553	-0.152429388770122	0.855667901027858	-0.360802078838367	-0.658667208700814	-0.372688428503755	-0.429862877239568	0.287013373141006	HotChocolatewithNonfatMilkcup
-1.27243335244558	-0.0431346522284659	0.154254717560737	-0.501579300150727	0.26310289099414	2.55070654270869	0.265403879372104	-0.152429388770122	2.5768058440037	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.267601507349737	IcedNonfatLattecup
-1.27243335244558	-0.173098630796318	0.223188033581731	-0.501579300150727	0.388119233311324	2.55070654270869	0.330130787233316	-0.152429388770122	2.96934607661223	0.735706996628748	-1.25747173245779	-1.14360409705221	-0.429862877239568	-0.10618374362482	IcedNonfatLattecup
-1.27243335244558	-0.265930044059069	0.223188033581731	-0.501579300150727	0.477416620680741	2.55070654270869	0.237663776003014	-0.152429388770122	3.24973195704689	0.509443219151407	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.00911465903583612	IcedNonfatLattecup
-1.27243335244558	-0.822918523635577	-0.293811836575722	-0.501579300150727	1.19179571963608	-0.452100487205143	-0.178437774533346	-0.152429388770122	-0.114898608169048	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.931501880321082	IcedNonfatCaramelLattecup
-1.27243335244558	-0.562990566499874	-0.259345178565225	-0.501579300150727	1.17988940132015	0.00287027490301374	-0.122957567795165	-0.152429388770122	0.221564448352546	-0.214600868776085	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.916128759966329	IcedNonfatCaramelLattecup
-1.27243335244558	-0.617712241686338	-0.266601317093751	-0.501579300150727	1.1447970947048	-0.0641780479339777	-0.163837720128562	-0.152429388770122	0.283544485080208	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.870818510499685	IcedNonfatCaramelLattecup
-1.27243335244558	-0.822918523635577	-0.564621292372483	-0.501579300150727	1.37039049437491	-0.452100487205143	-0.10908751611062	-0.152429388770122	-0.114898608169048	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.16209868564239	IcedNonfatHazelnutLattecup
-1.27243335244558	-0.562990566499874	-0.489122898635204	-0.501579300150727	1.26323362953161	0.00287027490301374	-0.0582306599339535	-0.152429388770122	0.221564448352546	-0.214600868776085	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.02374060244961	IcedNonfatHazelnutLattecup
-1.27243335244558	-0.617712241686338	-0.520566165592149	-0.501579300150727	1.27639324451237	-0.0641780479339777	-0.0616373392950699	-0.152429388770122	0.283544485080208	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.0407319459996	IcedNonfatHazelnutLattecup
-1.27243335244558	-0.822918523635577	-0.564621292372483	-0.501579300150727	1.28109310700549	-0.452100487205143	-0.178437774533346	-0.152429388770122	-0.114898608169048	-0.84813944571264	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.04680028298174	IcedNonfatVanillaLattecup
-1.27243335244558	-0.562990566499874	-0.489122898635204	-0.501579300150727	1.26323362953161	0.00287027490301374	-0.122957567795165	-0.152429388770122	0.221564448352546	-0.214600868776085	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.02374060244961	IcedNonfatVanillaLattecup
-1.27243335244558	-0.617712241686338	-0.502425819270835	-0.501579300150727	1.21059516960859	-0.0641780479339777	-0.163837720128562	-0.152429388770122	0.283544485080208	-0.347977411289044	-1.25747173245779	-1.14360409705221	-0.429862877239568	0.955775228249642	IcedNonfatVanillaLattecup
-1.27243335244558	-0.822918523635577	0.654021258712942	-0.501579300150727	0.0755783775183644	2.55070654270869	0.168313517580287	-0.152429388770122	3.46002136737289	1.52763021779944	-1.25747173245779	-1.14360409705221	-0.429862877239568	2.71862712156125	IcedNonfatLattewithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.0431346522284659	0.5678546136867	-0.501579300150727	0.0130702063597725	2.55070654270869	0.265403879372104	-0.152429388770122	2.5768058440037	1.05247628509703	-1.25747173245779	-1.14360409705221	-0.429862877239568	1.99224718479912	IcedNonfatLattewithSugarFreeVanillaSyrupcup
-1.27243335244558	-0.173098630796318	0.682743473721689	-0.501579300150727	0.179758662782684	2.55070654270869	0.168313517580287	-0.152429388770122	2.96934607661223	0.735706996628748	-1.25747173245779	-1.14360409705221	-0.429862877239568	2.58411231845715	IcedNonfatLattewithSugarFreeVanillaSyrupcup
-0.0136637712126761	-0.534109682373684	-0.45337969773543	-0.501579300150727	0.13345631377632	-0.280222643742061	-0.137341325097657	-0.152429388770122	0.134333285550652	-0.144207693560912	-0.0465559177492425	0.288096430252063	-0.429862877239568	0.0432771487130678	IcedMochawithNonfatMilkcup
-0.272822214407685	-0.593570326162898	-0.445870621916149	-0.501579300150727	0.277810695972632	-0.371811529186056	-0.174358347567304	-0.152429388770122	-0.0901586775424598	-0.00963250564955228	-0.295862114895119	0.119661074098619	-0.429862877239568	0.226146946397071	IcedMochawithNonfatMilkcup
0.0205419239295222	-0.483882057806399	-0.466145126628206	-0.501579300150727	0.0891671103789277	-0.274068449858473	-0.148285488262596	-0.152429388770122	0.0679617486361664	-0.0217847801432202	-0.0390347015088168	0.53708782630498	-0.429862877239568	-0.0710929254237501	IcedMochawithNonfatMilkcup
-0.422763885113369	-0.562990566499874	-0.282322950572223	-0.501579300150727	0.388119233311324	0.130262088293297	-0.0744123868992564	-0.142032155343128	0.221564448352546	-0.531370157244363	-0.32333667539691	0.00175632479120893	-0.429862877239568	0.109039941341738	IcedNonfatCaramelMochacup
-0.210346518280317	-0.498008577215948	-0.265089621566975	-0.501579300150727	0.283938948047004	0.162110041640868	-0.114866704312514	-0.13943284698638	0.270631977428612	-0.452177835127293	-0.0898029111316904	0.288096430252063	-0.429862877239568	-0.0389263420727702	IcedNonfatCaramelMochacup
0.00207084855273501	-0.433026587932022	-0.328278494586219	-0.501579300150727	0.138086548676956	-0.12452153848727	-0.122957567795165	-0.136833538629632	-0.0728407261038484	-0.372985513010224	-0.0898029111316904	0.574436535712918	-0.429862877239568	-0.186892625487279	IcedNonfatCaramelMochacup
-0.665526590065428	-0.544424283847323	-0.170716629395376	-0.501579300150727	0.566714008050157	0.366846884589539	-0.0570748222935748	-0.130149602855136	0.515969622808941	-0.508743779496629	-0.673637321794738	-0.376621671710635	-0.429862877239568	0.297360665687476	NonfatCaramelcup
-0.56437546300207	-0.660463550425763	-0.236367406558227	-0.501579300150727	0.492299518575643	0.162110041640868	-0.114866704312514	-0.13943284698638	0.270631977428612	-0.452177835127293	-0.57633158668423	-0.248791267487039	-0.429862877239568	0.230103264135426	NonfatCaramelMochacup
-0.422763885113369	-0.6279725557838	-0.224878520554728	-0.501579300150727	0.450627404469916	0.257653901683581	-0.0744123868992564	-0.136833538629632	0.221564448352546	-0.372985513010224	-0.440103557529519	-0.0698287015740048	-0.429862877239568	0.216651783825017	NonfatCaramelcup
1.2057692606067	0.476721262042942	-0.322534051584469	-0.501579300150727	-0.549503334067554	0.639829341854432	-0.155321021725771	-0.152429388770122	1.49732020433026	-0.84813944571264	1.07786591019441	1.71979695755634	-0.429862877239568	-1.31681697156171	Cappuccinocup
1.15519369707502	0.569552675305693	-0.293811836575722	-0.501579300150727	-0.504854640382846	0.912811799119326	-0.178437774533346	-0.152429388770122	1.14683785378693	-0.169348113280617	1.07786591019441	1.61753263417746	-0.429862877239568	-1.25916777023138	Cappuccinocup
1.08775961236611	0.476721262042942	-0.312959979914887	-0.501579300150727	-0.584230095822328	0.639829341854432	-0.155321021725771	-0.152429388770122	1.3337617740767	-0.320190631598844	1.07786591019441	1.71979695755634	-0.429862877239568	-1.36165523926307	Cappuccinocup
0.993351893773645	0.476721262042942	-0.328278494586219	-0.501579300150727	-0.570339391120418	0.767221155244716	-0.122957567795165	-0.152429388770122	1.39918514617812	-0.84813944571264	0.922176734017593	1.43345685209548	-0.429862877239568	-1.34371993218253	cup
1.08775961236611	0.476721262042942	-0.312959979914887	-0.501579300150727	-0.584230095822328	0.852149030838238	-0.155321021725771	-0.152429388770122	1.3337617740767	-0.320190631598844	1.07786591019441	1.71979695755634	-0.429862877239568	-1.36165523926307	cup
0.952891442948301	0.476721262042942	-0.318430878011791	-0.501579300150727	-0.534620436172651	0.730823494276064	-0.132204268918195	-0.152429388770122	1.28703079400426	-0.395611890757958	0.966659355782396	1.71979695755634	-0.429862877239568	-1.29760057111826	cup
-0.210346518280317	-0.238080620080244	-0.379978481601964	-0.501579300150727	0.513135575628507	-0.315609258572696	-0.220047929586982	-0.152429388770122	0.221564448352546	-0.84813944571264	-0.2065697932643	0.144926377521636	-0.429862877239568	0.0552340201000986	CaramelCappuccinocup
-0.210346518280317	-0.173098630796318	-0.379978481601964	-0.501579300150727	0.596479803839963	-0.315609258572696	-0.236229656552285	-0.152429388770122	0.025294332048283	-0.452177835127293	-0.284414381352706	0.109133864339029	-0.429862877239568	0.230103264135426	CaramelCappuccinocup
-0.100475466470118	-0.150691048284619	-0.359179636250802	-0.501579300150727	0.625219192878396	-0.216770782666441	-0.250179421177546	-0.152429388770122	0.0591340072731562	-0.520447078331663	-0.130067353246383	0.189358462851769	-0.429862877239568	0.199953394474163	CaramelCappuccinocup
0.0205419239295222	-0.14484559197722	-0.391217609214083	-0.501579300150727	0.415296699032451	-0.107905215001581	-0.232711889820698	-0.152429388770122	0.323966248163466	-0.84813944571264	-0.0390347015088168	0.350344279265292	-0.429862877239568	-0.0710929254237501	CaramelLattecup
-0.0586198276852798	-0.126682924164942	-0.392288002319999	-0.501579300150727	0.432767926996032	-0.179118029940249	-0.247788032956073	-0.152429388770122	0.305680212482945	-0.508743779496629	-0.0898029111316904	0.236964268562625	-0.429862877239568	-0.0485345422944916	CaramelLattecup
-0.113793169719839	-0.114024095083658	-0.372145150235942	-0.501579300150727	0.444944843455498	-0.228751203988411	-0.228874326113511	-0.152429388770122	0.292935399735915	-0.560167365286933	-0.125186814808239	0.157941836860766	-0.429862877239568	0.0161024410152697	CaramelLattecup
-0.210346518280317	-0.238080620080244	-0.569545100659697	-0.501579300150727	0.638151917945691	-0.315609258572696	-0.171502748691074	-0.152429388770122	0.221564448352546	-0.84813944571264	-0.2065697932643	0.144926377521636	-0.429862877239568	0.216651783825017	HazelnutCappuccinocup
-0.210346518280317	-0.173098630796318	-0.566672879158822	-0.501579300150727	0.700660089104283	-0.315609258572696	-0.195775339139028	-0.152429388770122	0.025294332048283	-0.452177835127293	-0.284414381352706	0.109133864339029	-0.429862877239568	0.297360665687476	HazelnutCappuccinocup
-0.100475466470118	-0.150691048284619	-0.561225562519232	-0.501579300150727	0.711437359993695	-0.348555417208114	-0.183220550976293	-0.152429388770122	0.0591340072731562	-0.520447078331663	-0.130067353246383	0.189358462851769	-0.429862877239568	0.31127599014652	HazelnutCappuccinocup
0.0205419239295222	-0.14484559197722	-0.54107264404233	-0.501579300150727	0.469651630474705	-0.107905215001581	-0.190498689041647	-0.152429388770122	0.323966248163466	-0.84813944571264	-0.0390347015088168	0.350344279265292	-0.429862877239568	-0.000911289021611763	HazelnutLattecup
-0.0586198276852798	-0.126682924164942	-0.540002250936414	-0.501579300150727	0.522065314365449	-0.179118029940249	-0.178437774533346	-0.152429388770122	0.305680212482945	-0.508743779496629	-0.0898029111316904	0.236964268562625	-0.429862877239568	0.0667638603661644	HazelnutLattecup
-0.113793169719839	-0.114024095083658	-0.539256219377745	-0.501579300150727	0.520712323647731	-0.228751203988411	-0.170031682603319	-0.152429388770122	0.114508021277494	-0.560167365286933	-0.125186814808239	0.157941836860766	-0.429862877239568	0.065016914871306	HazelnutLattecup
-0.210346518280317	-0.238080620080244	-0.569545100659697	-0.501579300150727	0.638151917945691	-0.315609258572696	-0.220047929586982	-0.152429388770122	0.221564448352546	-0.84813944571264	-0.2065697932643	0.144926377521636	-0.429862877239568	0.216651783825017	VanillaCappuccinocup
-0.210346518280317	-0.173098630796318	-0.566672879158822	-0.501579300150727	0.700660089104283	-0.315609258572696	-0.236229656552285	-0.152429388770122	0.025294332048283	-0.452177835127293	-0.284414381352706	0.109133864339029	-0.429862877239568	0.297360665687476	VanillaCappuccinocup
-0.100475466470118	-0.150691048284619	-0.561225562519232	-0.501579300150727	0.711437359993695	-0.348555417208114	-0.250179421177546	-0.152429388770122	0.0591340072731562	-0.520447078331663	-0.130067353246383	0.189358462851769	-0.429862877239568	0.31127599014652	VanillaCappuccinocup
0.0205419239295222	-0.14484559197722	-0.54107264404233	-0.501579300150727	0.469651630474705	-0.107905215001581	-0.232711889820698	-0.152429388770122	0.323966248163466	-0.84813944571264	-0.0390347015088168	0.350344279265292	-0.429862877239568	-0.000911289021611763	VanillaLattecup
-0.0586198276852798	-0.126682924164942	-0.540002250936414	-0.501579300150727	0.477416620680741	-0.179118029940249	-0.247788032956073	-0.152429388770122	0.305680212482945	-0.508743779496629	-0.0898029111316904	0.236964268562625	-0.429862877239568	0.00911465903583612	VanillaLattecup
-0.113793169719839	-0.114024095083658	-0.539256219377745	-0.501579300150727	0.520712323647731	-0.228751203988411	-0.228874326113511	-0.152429388770122	0.114508021277494	-0.560167365286933	-0.125186814808239	0.157941836860766	-0.429862877239568	0.065016914871306	VanillaLattecup
0.851740315884943	0.34675728347509	-0.0870118885127409	-0.501579300150727	-0.612011505226146	0.639829341854432	-0.122957567795165	-0.152429388770122	1.39918514617812	0.102168419692193	1.07786591019441	1.43345685209548	-0.429862877239568	-0.10618374362482	CappuccinowithSugarFreeVanillaSyrupcup
0.851740315884943	0.476721262042942	-0.064034116505743	-0.501579300150727	-0.549503334067554	0.639829341854432	-0.155321021725771	-0.152429388770122	1.0066449135696	-0.056216224541946	1.07786591019441	1.36187182573027	-0.429862877239568	-0.10618374362482	CappuccinowithSugarFreeVanillaSyrupcup
0.993351893773645	0.476721262042942	-0.0755230025092419	-0.501579300150727	-0.570339391120418	0.767221155244716	-0.187684475656377	-0.152429388770122	1.0066449135696	-0.214600868776085	0.922176734017593	1.43345685209548	-0.429862877239568	-0.159989664866459	CappuccinowithSugarFreeVanillaSyrupcup
1.01513829037191	0.376748970836902	-0.147991360377466	-0.501579300150727	-0.525461729775788	0.786819895766298	-0.167768504006773	-0.152429388770122	1.30859893865308	-0.11713339540123	0.898224553067314	1.49953533797106	-0.429862877239568	-0.416602520018893	LattewithSugarFreeVanillacup
0.851740315884943	0.395493775438034	-0.164561869036359	-0.501579300150727	-0.627638548015794	0.639829341854432	-0.135093863019142	-0.152429388770122	1.25198255894993	-0.25419702983462	0.785948704862881	1.5408343916433	-0.429862877239568	-0.408842050609041	LattewithSugarFreeVanillacup
1.08775961236611	0.476721262042942	-0.121478546523238	-0.501579300150727	-0.584230095822328	0.852149030838238	-0.155321021725771	-0.152429388770122	1.3337617740767	-0.320190631598844	1.07786591019441	1.71979695755634	-0.429862877239568	-0.285536814430284	LattewithSugarFreeVanillacup
0.396560244099831	-0.265930044059069	-0.50307368878231	-0.501579300150727	-0.0137190098510527	-0.452100487205143	-0.247788032956073	-0.152429388770122	-0.114898608169048	-0.169348113280617	0.410626583722351	0.69715372376757	-0.429862877239568	-0.221482146285476	cup
0.272420224522074	-0.232173166508978	-0.497478452092294	-0.501579300150727	0.0661074424943352	-0.460372682879836	-0.228874326113511	-0.152429388770122	-0.0639193571809273	-0.272195284861226	0.299420029310341	0.678560210425956	-0.429862877239568	-0.179555454408873	Mochacup
0.214488215385787	-0.238080620080244	-0.483378455633455	-0.501579300150727	0.0443242919390684	-0.315609258572696	-0.244320520034937	-0.152429388770122	-0.0728407261038484	-0.135408546659015	0.260497735266138	0.574436535712918	1.13802059916347	-0.186892625487279	cup
0.426905582218839	-0.173098630796318	-0.500611784638703	-0.501579300150727	-0.0286019077459555	-0.251913351877554	-0.220047929586982	-0.152429388770122	0.025294332048283	-0.214600868776085	0.455109205487154	0.860776641173772	-0.429862877239568	-0.321407428591377	HotChocolatecup
0.404545859394307	-0.207299677787858	-0.502425819270835	-0.501579300150727	-0.0066692161113619	-0.265323016444952	-0.214937910545308	-0.152429388770122	0.128594393261053	-0.347977411289044	0.340390865146345	0.890917704906494	1.22054078213205	-0.276097179124734	HotChocolatecup
0.389963431465265	-0.14484559197722	-0.481130630111031	-0.501579300150727	-0.0195427525055797	-0.190986832430027	-0.232711889820698	-0.152429388770122	0.195963998399816	-0.43496211292793	0.367110975474173	0.723831373344668	0.933514058763071	-0.316728652831235	HotChocolatecup
1.11726202442626	0.639176235252757	-0.250728514062601	-0.501579300150727	-0.549503334067554	0.639829341854432	-0.195775339139028	-0.152429388770122	1.25198255894993	-0.84813944571264	1.07786591019441	1.5408343916433	-0.429862877239568	-1.31681697156171	IcedLattecup
1.27657504955105	0.34675728347509	-0.259345178565225	-0.501579300150727	-0.486995162908962	1.02200478202528	-0.122957567795165	-0.152429388770122	1.39918514617812	0.102168419692193	1.07786591019441	1.86296701028676	-0.429862877239568	-1.23610808969925	IcedLattecup
1.15519369707502	0.569552675305693	-0.293811836575722	-0.501579300150727	-0.594152027752263	0.639829341854432	-0.178437774533346	-0.152429388770122	1.14683785378693	-0.169348113280617	1.07786591019441	1.61753263417746	-0.429862877239568	-1.37446617289203	IcedLattecup
-0.475868226821632	-0.335553604006133	-0.379978481601964	-0.501579300150727	0.778795303052523	-0.554468908679478	-0.256456815258914	-0.152429388770122	-0.220043313332046	-0.84813944571264	-0.527678719128976	-0.338272550443556	-0.429862877239568	0.39824676801555	IcedCaramelcup
-0.210346518280317	-0.173098630796318	-0.351256266593217	-0.501579300150727	0.66593332734951	-0.421769103064599	-0.263199201494457	-0.152429388770122	0.025294332048283	-0.320190631598844	-0.219543891279034	0.0494796757013512	-0.429862877239568	0.252522397986109	IcedCaramelcup
-0.164168829838349	-0.314363824891809	-0.361246602248433	-0.501579300150727	0.687071356243719	-0.274068449858473	-0.232711889820698	-0.152429388770122	0.0679617486361664	-0.43496211292793	-0.242107540000312	0.163600732225605	-0.429862877239568	0.279815256586941	IcedCaramelcup
-0.475868226821632	-0.335553604006133	-0.61693675542413	-0.501579300150727	0.935065730949002	-0.554468908679478	-0.195775339139028	-0.152429388770122	-0.220043313332046	-0.84813944571264	-0.527678719128976	-0.338272550443556	-0.429862877239568	0.600018972671697	IcedHazelnutcup
-0.210346518280317	-0.173098630796318	-0.561885843324031	-0.501579300150727	0.804840374368603	-0.421769103064599	-0.155321021725771	-0.152429388770122	0.025294332048283	-0.320190631598844	-0.219543891279034	0.0494796757013512	-0.429862877239568	0.431875468791574	IcedHazelnutcup
-0.164168829838349	-0.314363824891809	-0.556058147525155	-0.501579300150727	0.741426287685973	-0.274068449858473	-0.190498689041647	-0.152429388770122	0.0679617486361664	-0.43496211292793	-0.242107540000312	0.163600732225605	-0.429862877239568	0.349996892989079	IcedHazelnutcup
-0.475868226821632	-0.335553604006133	-0.61693675542413	-0.501579300150727	0.935065730949002	-0.554468908679478	-0.256456815258914	-0.152429388770122	-0.220043313332046	-0.84813944571264	-0.527678719128976	-0.338272550443556	-0.429862877239568	0.600018972671697	IcedVanillaLattecup
-0.266245825341646	-0.207299677787858	-0.556846858234777	-0.501579300150727	0.684210570378338	-0.265323016444952	-0.266038100962054	-0.152429388770122	-0.0263556985581019	-0.347977411289044	-0.274171672393706	-0.0133142070751521	-0.429862877239568	0.276121486249987	IcedVanillaLattecup
-0.164168829838349	-0.314363824891809	-0.556058147525155	-0.501579300150727	0.741426287685973	-0.274068449858473	-0.232711889820698	-0.152429388770122	0.0679617486361664	-0.43496211292793	-0.242107540000312	0.163600732225605	-0.429862877239568	0.349996892989079	IcedVanillaLattecup
0.851740315884943	0.476721262042942	0.108299173546741	-0.501579300150727	-0.653683619331874	0.639829341854432	-0.155321021725771	-0.152429388770122	1.0066449135696	0.735706996628748	1.07786591019441	1.71979695755634	-0.429862877239568	0.700905074999771	IcedLattewithSugarFreeVanillaSyrupcup
1.08775961236611	0.476721262042942	-0.00658968648824816	-0.501579300150727	-0.653683619331874	0.852149030838238	-0.209260111610114	-0.152429388770122	1.0066449135696	0.207758182514952	0.818383949899717	1.71979695755634	-0.429862877239568	-0.0165072082220873	IcedLattewithSugarFreeVanillaSyrupcup
1.0448470130059	0.240423119192302	0.00385475533311453	-0.501579300150727	-0.577916139139641	0.813545451023001	-0.140610360848223	-0.152429388770122	1.18507229202802	0.0157767955644807	0.865562488135115	1.58964236416504	-0.429862877239568	0.260674810295449	IcedLattewithSugarFreeVanillaSyrupcup
0.509131659702601	-0.194060562823391	-0.499499956960945	-0.501579300150727	-0.0756510688330677	-0.531353458669144	-0.19186040519581	-0.152429388770122	-0.196300960553304	-0.235037597064361	0.550531603789072	1.07322252587054	-0.429862877239568	-0.340499852257765	IcedMochacup
0.379701722922605	-0.0647953153231078	-0.389552553271547	-0.501579300150727	0.110305139273137	-0.209449414080793	-0.182290566667942	-0.152429388770122	0.188852762301836	-0.320190631598844	0.429161009457685	0.765329939353487	1.31222987431936	-0.420051617534382	CaramelMochacup
0.485503476517612	-0.150691048284619	-0.382949745223559	-0.501579300150727	0.151019273744251	-0.216770782666441	-0.149741115875666	-0.152429388770122	0.262172058622394	-0.520447078331663	0.353105952129932	0.929893218353978	-0.429862877239568	-0.356659583887624	CaramelMochacup
0.59683947568528	-0.0431346522284659	-0.397211810607213	-0.501579300150727	0.063076743286646	-0.20095662652144	-0.161793712511892	-0.152429388770122	0.221564448352546	-0.468016299550707	0.423971370251792	0.918044662265943	-0.429862877239568	-0.396735718329672	CaramelMochacup
0.516344473516966	-0.104696536813238	-0.429864433985578	-0.501579300150727	0.0262298213405286	-0.265323016444952	-0.189387815336935	-0.152429388770122	0.128594393261053	-0.598058428500842	0.463303372654355	0.890917704906494	1.22054078213205	-0.488488973499626	IcedCaramelcup
0.710128737996242	-0.0431346522284659	-0.443167354621208	-0.501579300150727	-0.111946135957411	-0.251913351877554	-0.155321021725771	-0.152429388770122	0.025294332048283	-0.531370157244363	0.610798381663967	1.14711674663463	-0.429862877239568	-0.590437034799574	IcedCaramelMochacup
0.851740315884943	-0.0106436575865029	-0.437422911619459	-0.501579300150727	-0.132782193010275	-0.315609258572696	-0.155321021725771	-0.152429388770122	0.025294332048283	-0.452177835127293	0.688642969752374	1.36187182573027	-0.429862877239568	-0.576985554489164	IcedCaramelcup
0.252614409432745	-0.323057067605378	-0.492657940482435	-0.501579300150727	0.0515367732265983	-0.58509194074445	-0.217558433130782	-0.152429388770122	-0.201171186764328	-0.11713339540123	0.299420029310341	0.838750479215245	1.17822273958406	-0.168267498903634	IcedMochacup
0.68834234139798	-0.223084776399338	-0.492657940482435	-0.501579300150727	-0.14079606110753	-0.536095089440494	-0.20511095084978	-0.152429388770122	-0.0501941742225873	-0.11713339540123	0.718583195940222	1.16914290859315	-0.429862877239568	-0.416602520018893	IcedMochacup
0.615721019403774	0.13015065252867	-0.604011758670194	-0.501579300150727	0.0964144345712285	-0.761480605438689	-0.155321021725771	-0.152429388770122	-0.432669272661664	-0.636959920067122	0.610798381663967	1.3380101502752	2.35748552525472	-0.339342735671923	FrappeCaramel(Small)cup
0.581390939915604	0.16953367633711	-0.610278423763011	-0.501579300150727	0.126721426648121	-0.715156309660404	-0.184742343480867	-0.152429388770122	-0.420774114097769	-0.675356197457216	0.610798381663967	1.19917858399115	1.85069490661939	-0.296950191663359	FrappeCaramel(Medium)cup
0.539361835248102	0.151811315623312	-0.608066659612605	-0.501579300150727	0.13073264618771	-0.709025152866219	-0.174358347567304	-0.152429388770122	-0.349927949121632	-0.708388289035459	0.528374700158596	1.13027321101928	2.33699031641285	-0.2960869950659	FrappeCaramel(Large)cup
0.615721019403774	0.13015065252867	-0.61167101600586	-0.15738452921991	0.0686330251674097	-0.676552729845166	-0.155321021725771	-0.152429388770122	-0.432669272661664	-0.425780394421603	0.610798381663967	1.3380101502752	2.35748552525472	-0.30347212151083	FrappeMocha(Small)cup
0.548286934694869	0.0821877556762485	-0.613859375244622	-0.224994216367035	0.0755783775183644	-0.725082944470036	-0.187106556836187	-0.152429388770122	-0.430332723658042	-0.508743779496629	0.494031499531357	1.15734317897251	1.80997066047905	-0.279131347615803	FrappeMocha(Medium)cup
0.476886139120733	0.0944742662551419	-0.608066659612605	-0.273803348799451	0.112347889964595	-0.709025152866219	-0.174358347567304	-0.152429388770122	-0.349927949121632	-0.568637132358278	0.459688298904119	1.13027321101928	1.41470591852871	-0.24861118220563	FrappeMocha(Large)cup
-1.09036132373153	-0.711520827720276	-0.682792691265615	0.826029102010996	1.26323362953161	-0.834275927375994	0.653765326539374	0.0258088985497633	-0.619593192951438	-0.576622912739831	-1.05729993451617	-0.898169720942905	-0.429862877239568	1.06985996351387	MangoPineappleSmoothiecup
-1.03641405596441	-0.678514103004631	-0.683157417805409	0.645736602951996	1.29101503893543	-0.846408481032211	0.76164350630806	0.04973903897697	-0.607131598265453	-0.496173569636776	-1.08448375892799	-0.825448424317926	-0.429862877239568	1.11939557354585	MangoPineappleSmoothiecup
-1.07932665532462	-0.645694916497597	-0.685478404876823	0.906490217293524	1.29732899561811	-0.749899531494117	0.675831317855696	0.024796181008173	-0.527830541172822	-0.41618132507408	-1.0451683103985	-0.753140316878317	-0.429862877239568	1.06776362892004	MangoPineappleSmoothiecup
-1.14369555436494	-0.704769452210257	-0.695922846698185	1.37584672310827	1.16473590528171	-0.923615640662686	-0.287716969623704	0.367432282579543	-0.59920149255619	0.591720956415895	-1.11593611775159	-1.01344950366091	-0.429862877239568	1.23896428741616	StrawberryBananaSmoothie(Large)cup
-1.10903537795861	-0.672960086826518	-0.704760451316262	1.28558585660544	1.10936736206431	-0.977066751176092	-0.279795844535793	0.387426962246838	-0.593711419372854	0.61387265491018	-1.16765105389424	-1.14360409705221	-0.429862877239568	1.19757511723029	StrawberryBananaSmoothie(Medium)cup
-1.17128222538222	-0.637255697110075	-0.695922846698185	0.973541146695631	1.13226412805646	-0.907071249313299	-0.270904785763649	0.367432282579543	-0.507438840777574	0.509443219151407	-1.14626517804578	-1.14360409705221	-0.429862877239568	1.23896428741616	StrawberryBananaSmoothie(Small)cup
-1.13967249817492	-0.701077293728216	-0.713874231078653	1.43451628633512	1.20853897976784	-0.912758383839651	-0.256456815258914	0.432414991498251	-0.588049781402539	0.636716593982411	-1.11151312979202	-1.00938217261743	-0.429862877239568	1.25577863780418	WildBerrySmoothie(Large)cup
-1.10903537795861	-0.672960086826518	-0.718016858243376	1.88130757552416	1.15745057064784	-0.830076197264226	-0.279795844535793	0.447411001248722	-0.50312521184781	0.61387265491018	-1.16765105389424	-1.14360409705221	-0.429862877239568	1.19757511723029	WildBerrySmoothie(Medium)cup


================================================
FILE: plots.R
================================================
library(ggplot2)
library(reshape)

# Some of the plots used in the blog post.

#################
# POLYA URN MODEL
#################

polya_urn_model_plots = function(num_balls, alpha) {
  # Lazy man's repetition...
  x1 = polya_urn_model(function() rnorm(1), num_balls, alpha)
  x2 = polya_urn_model(function() rnorm(1), num_balls, alpha)
  x3 = polya_urn_model(function() rnorm(1), num_balls, alpha)
  x4 = polya_urn_model(function() rnorm(1), num_balls, alpha)
  x5 = polya_urn_model(function() rnorm(1), num_balls, alpha)
  
  d1 = data.frame(x = x1, type = "run #1")
  d2 = data.frame(x = x2, type = "run #2")
  d3 = data.frame(x = x3, type = "run #3")
  d4 = data.frame(x = x4, type = "run #4")
  d5 = data.frame(x = x5, type = "run #5")
  d = rbind(d1, d2, d3, d4, d5)
  
  qplot(x = x, data = d, geom = "density", fill = 1, alpha = I(0.85), xlab = "Color of ball in urn", ylab = "Density", main = paste("Polya Urn Model with Gaussian colors and alpha =", alpha)) + facet_grid( . ~ type )
}

polya_urn_model_plots(10, 1)

########################
# STICK-BREAKING PROCESS
########################

stick_breaking_process_plots = function(num_weights, alpha) {
  x1 = stick_breaking_process(num_weights, alpha)
  x2 = stick_breaking_process(num_weights, alpha)
  x3 = stick_breaking_process(num_weights, alpha)
  x4 = stick_breaking_process(num_weights, alpha)
  x5 = stick_breaking_process(num_weights, alpha)
  
  d1 = data.frame(x = 1:num_weights, weight = x1, type = "run #1")
  d2 = data.frame(x = 1:num_weights, weight = x2, type = "run #2")
  d3 = data.frame(x = 1:num_weights, weight = x3, type = "run #3")
  d4 = data.frame(x = 1:num_weights, weight = x4, type = "run #4")
  d5 = data.frame(x = 1:num_weights, weight = x5, type = "run #5")        
  d = rbind(d1, d2, d3, d4, d5)
  
  qplot(x = x, weight = weight ,data = d, geom = "bar", xlab = "Stick", ylab = "Weight", main = paste("Stick-Breaking Process with alpha =", alpha), ylim = c(0, 1)) + scale_x_continuous(breaks = 1:num_weights) + facet_grid( . ~ type )
}

stick_breaking_process_plots(10, 5)

##############
# ALL CLUSTERS
##############

x = read.table("mcdonalds-data-with-clusters.tsv", header = T, sep = " ", comment.char = "", quote = "")

# Ignore duplicate food items.
x = ddply(x, .(name), function(df) head(df, 1))

# For each cluster, take at most 5 items (to avoid the plot being dominated by large clusters).
x = ddply(x, .(cluster), function(df) head(df, 5))

# Reorder names by cluster (so we can get a plot where all points in a cluster are together).
x$name = factor(x$name, levels = x$name[order(x$cluster)], ordered = T)

# Turn this into a tall-thin matrix.
m = melt(x, id = c("name", "cluster"))

qplot(variable, weight = value, data = m, fill = cluster, geom = "bar", xlab = "Nutritional variable", ylab = "z-scaled value", main = "McDonald's Food Clusters") + facet_wrap(~ name, ncol = 5) + coord_flip() + opts(axis.text.y = theme_text(size = 5), axis.text.x = theme_text(size = 5))

================================================
FILE: polya_urn_model.R
================================================
# Return a vector of `num_balls` ball colors according to a Polya Urn Model
# with dispersion `alpha`, sampling from a specified base color distribution.
#
# Examples
#
#   polya_urn_model(function() rnorm(1), 5, 1)
#     => c(-0.2210029, -0.3013638, 0.8149611, 1.6879720, -0.7803525)
#
polya_urn_model = function(base_color_distribution, num_balls, alpha) {
  balls = c()

  for (i in 1:num_balls) {
    if (runif(1) < alpha / (alpha + length(balls))) {
      # Add a new ball color.
      new_color = base_color_distribution()
      balls = c(balls, new_color)
    } else {
      # Pick out a ball from the urn, and add back a
      # ball of the same color.
      ball = balls[sample(1:length(balls), 1)]
      balls = c(balls, ball)
    }
  }

  balls
}

# Sample run, using the unit Gaussian as the base color distribution.
polya_urn_model(function() rnorm(1), 100, 1)

================================================
FILE: polya_urn_model.rb
================================================
# Draw `num_balls` colored balls according to a Polya Urn Model
# with a specified base color distribution and dispersion parameter
# `alpha`.
#
# Returns an array of ball colors.
#
# Examples
#
#   polya_urn_model(lambda { rand }, num_balls = 10, alpha = 1)
#     => [0.55, 0.55, 0.55, 0.55, 0.12, 0.12, 0.46, 0.46, 0.55, 0.55]
#
def polya_urn_model(base_color_distribution, num_balls, alpha)
  return [] if num_balls <= 0

  balls_in_urn = []
  0.upto(num_balls - 1) do |i|
    if rand < alpha.to_f / (alpha + balls_in_urn.size)
      # Draw a new color, put a ball of this color in the urn.
      new_color = base_color_distribution.call      
      balls_in_urn << new_color
    else
      # Draw a ball from the urn, add another ball of the same color.
      ball = balls_in_urn[rand(balls_in_urn.size)]
      balls_in_urn << ball
    end
  end

  balls_in_urn
end

# Run a Polya Urn Model where the base color distribution is
# a uniform distribution over the unit interval.
unit_uniform = lambda { (rand * 100).to_i / 100.0 }
puts polya_urn_model(unit_uniform, num_balls = 10, alpha = 1).join(", ")

================================================
FILE: stick_breaking_process.R
================================================
# Return a vector of weights drawn from a stick-breaking process
# with dispersion `alpha`.
#
# Recall that the kth weight is
#   \beta_k = (1 - \beta_1) * (1 - \beta_2) * ... * (1 - \beta_{k-1}) * beta_k
# where each $\beta_i$ is drawn from a Beta distribution
#   \beta_i ~ Beta(1, \alpha)
#
# Examples
#
#   stick_breaking_process(num_weight = 5, alpha = 1)
#     => c(0.712148550, 0.169208000, 0.101483441, 0.014156001, 0.001498306)
#
stick_breaking_process = function(num_weights, alpha) {
  betas = rbeta(num_weights, 1, alpha)
  remaining_stick_lengths = c(1, cumprod(1 - betas))[1:num_weights]
  weights = remaining_stick_lengths * betas
  weights
}
Download .txt
gitextract_tvfncltk/

├── README.md
├── chinese_restaurant_process.rb
├── dpgmm.py
├── mcdonalds-normalized-data.tsv
├── plots.R
├── polya_urn_model.R
├── polya_urn_model.rb
└── stick_breaking_process.R
Download .txt
SYMBOL INDEX (2 symbols across 2 files)

FILE: chinese_restaurant_process.rb
  function chinese_restaurant_process (line 14) | def chinese_restaurant_process(num_customers, alpha)

FILE: polya_urn_model.rb
  function polya_urn_model (line 12) | def polya_urn_model(base_color_distribution, num_balls, alpha)
Condensed preview — 8 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (137K chars).
[
  {
    "path": "README.md",
    "chars": 31349,
    "preview": "Imagine you're a budding chef. A data-curious one, of course, so you start by taking a set of foods (pizza, salad, spagh"
  },
  {
    "path": "chinese_restaurant_process.rb",
    "chars": 1238,
    "preview": "# Generate table assignments for `num_customers` customers, according to\n# a Chinese Restaurant Process with dispersion "
  },
  {
    "path": "dpgmm.py",
    "chars": 516,
    "preview": "'''\nCode to calculate clusters using a Dirichlet Process\nGaussian mixture model. \n\nRequires scikit-learn:\n  http://sciki"
  },
  {
    "path": "mcdonalds-normalized-data.tsv",
    "chars": 91598,
    "preview": "total_fat\tcholesterol\tsodium\tdietary_fiber\tsugars\tprotein\tvitamin_a_dv\tvitamin_c_dv\tcalcium_dv\tiron_dv\tcalories_from_fat"
  },
  {
    "path": "plots.R",
    "chars": 2984,
    "preview": "library(ggplot2)\nlibrary(reshape)\n\n# Some of the plots used in the blog post.\n\n#################\n# POLYA URN MODEL\n#####"
  },
  {
    "path": "polya_urn_model.R",
    "chars": 873,
    "preview": "# Return a vector of `num_balls` ball colors according to a Polya Urn Model\n# with dispersion `alpha`, sampling from a s"
  },
  {
    "path": "polya_urn_model.rb",
    "chars": 1105,
    "preview": "# Draw `num_balls` colored balls according to a Polya Urn Model\n# with a specified base color distribution and dispersio"
  },
  {
    "path": "stick_breaking_process.R",
    "chars": 657,
    "preview": "# Return a vector of weights drawn from a stick-breaking process\n# with dispersion `alpha`.\n#\n# Recall that the kth weig"
  }
]

About this extraction

This page contains the full source code of the echen/dirichlet-process GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 8 files (127.3 KB), approximately 53.3k tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!