Polynomial regression is a technique based on a trick that allows the use of linear models even when the dataset has strong non-linearities. The idea is to add some extra variables computed from the existing ones and using (in this case) only polynomial combinations:
![](https://static.packt-cdn.com/products/9781789347999/graphics/assets/54726730-7b18-42da-b819-cd3d66f49577.png)
In the previous expression, every fPj(•) is a polynomial function of a single feature. For example, with two variables, it's possible to extend to a second-degree problem by transforming the initial vector (whose dimension is equal to m) into another one with higher dimensionality (whose dimension is k > m):
![](https://static.packt-cdn.com/products/9781789347999/graphics/assets/47d384b5-cba0-4a45-82d3-9ff9692a0336.png)
In this case, the model remains externally linear, but it can capture internal non-linearities. To show how scikit-learn implements this technique, let's consider the dataset shown in the following graph:
![](https://static.packt-cdn.com/products/9781789347999/graphics/assets/ae4b1333-d1a4-4e48-8a5c-a402fb43f679.png)