I have a feature set
[x1,x2....xm]
Now I want to create polynomial feature set
What that means is that if degree is two, then I have the feature set
[x1.... xm,x1^2,x2^2...xm^2, x1x2, x1x3....x1,xm......xm-1x1....xm-1xm]
So it contains terms of only of order 2..
same is if order is three.. then you will have cubic terms as well..
How to do this?
Edit 1: I am working on a machine learning project where I have close to 7 features… and a non-linear regression on this linear features are giving ok result…Hence I thought that to get more number in features I can map these features to a higher dimension..
So one way is to consider polynomial order of the feature vector…
Also generating x1*x1 is easy.. 🙂 but getting the rest of the combinations are a bit tricky..
Can combinations give me x1x2x3 result if the order is 3?
Use
where
listis the feature set, and r is the order of desired polynomial features. Then multiply elements of the sublists given by the above. That should give you{x1*x2, x1*x3, ...}. You’ll need to construct other ones, then union all parts.[Edit]
Better:
itertools.combinations_with_replacement(list, r)will nicely give sorted length-r tuples with repeated elements allowed.