sklearn: cómo obtener coeficientes de características polinomiales

Sé que es posible obtener las características polinomiales como números usando: polynomial_features.transform(X) . Según el manual , para un grado de dos, las características son: [1, a, b, a^2, ab, b^2] . Pero, ¿cómo obtengo una descripción de las características para pedidos superiores? .get_params() no muestra ninguna lista de características.

Por cierto, ahora hay una función más apropiada: PolynomialFeatures.get_feature_names .

 from sklearn.preprocessing import PolynomialFeatures import pandas as pd import numpy as np data = pd.DataFrame.from_dict({ 'x': np.random.randint(low=1, high=10, size=5), 'y': np.random.randint(low=-1, high=1, size=5), }) p = PolynomialFeatures(degree=2).fit(data) print p.get_feature_names(data.columns) 

Esto dará como resultado lo siguiente:

 ['1', 'x', 'y', 'x^2', 'x y', 'y^2'] 

NB: Por alguna razón, debes ajustar tu objeto PolynomialFeatures antes de poder usar get_feature_names ().

Si eres amante de las pandas (como yo lo soy), puedes formar fácilmente DataFrame con todas las nuevas características como esta:

 features = DataFrame(p.transform(data), columns=p.get_feature_names(data.columns)) print features 

El resultado se verá así:

  1 xyx^2 xyy^2 0 1.0 8.0 -1.0 64.0 -8.0 1.0 1 1.0 9.0 -1.0 81.0 -9.0 1.0 2 1.0 1.0 0.0 1.0 0.0 0.0 3 1.0 6.0 0.0 36.0 0.0 0.0 4 1.0 5.0 -1.0 25.0 -5.0 1.0 
 import numpy as np from sklearn.preprocessing import PolynomialFeatures X = np.array([2,3]) poly = PolynomialFeatures(3) Y = poly.fit_transform(X) print Y # prints [[ 1 2 3 4 6 9 8 12 18 27]] print poly.powers_ 

Este código se imprimirá:

 [[0 0] [1 0] [0 1] [2 0] [1 1] [0 2] [3 0] [2 1] [1 2] [0 3]] 

Entonces, si la celda i’th es (x,y) , eso significa que Y[i]=(a**x)*(b**y) . Por ejemplo, en el ejemplo de código [2 1] es igual a (2**2)*(3**1)=12 .