# Multivariate Polynomial Feature generation

I don't quite seem to understand the rules used to create the polynomial features when trying to find a polynomial model with Linear Regression in the multivariate setting.

Let's say I have a two predictor variables a and b. When generating polynomial features (for example using sklearn) I get 6 features for degree 2: y = bias + a + b + a * b + a^2 + b^2

This much I understand. When I set the degree to 3 I get 10 features instead of my expected 8. I expected it to be this: y = bias + a + b + a * b + a^2 + b^2 + a^3 + b^3

What is the general formula of generating multivariate features? How does this look like in the 3rd degree?

General Formula is as follow: $$$$N(n,d)=C(n+d,d)$$$$ where n is the number of the features, $$d$$ is the degree of the polynomial, $$C$$ is binomial coefficient(combination).

Example with vector (2,3) to 3rd degree :

x = np.array[[2,3]]
pf = PolynomialFeatures(degree=3, include_bias=True)
pf.fit_transform(x)


returns :

array([[ 1.,  2.,  3.,  4.,  6.,  9.,  8., 12., 18., 27.]])


wich is : [1, $$\:$$ $$x_1$$, $$\:$$ $$x_2$$, $$\:$$ $$x_1^2$$,$$\:$$ $$x_1x_2$$, $$\:$$ $$x_2^2$$, $$\:$$ $$x_1^3$$, $$\:$$ $$x_2x_1^2$$, $$\:$$ $$x_2^2 x_1$$, $$\:$$ $$x_2^3$$]

You can see this as expanding this equation and throwing out the coefficients :

$$$$1 + (x_1 + x_2) + (x_1 + x_2)^2 + (x_1 + x_2)^3$$$$