sklearn: как получить коэффициенты полинома функции

Я знаю, что можно получить полиномиальные функции в виде чисел, используя:polynomial_features.transform(X). Согласно руководство, для степени двух функций:[1, a, b, a^2, ab, b^2]. Но как получить описание функций для высших порядков ? .get_params() не отображает список функций.

2 ответов


кстати, теперь есть более подходящая функция: 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)

это выведет следующим образом:

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

N. B. По какой-то причине вы должны соответствовать объекту PolynomialFeatures, прежде чем сможете использовать get_feature_names().

если вы панды-любовник (как я), вы можете легко сформировать фрейм данных со всеми новыми функциями, как это:

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

результат будет выглядеть это:

     1    x    y   x^2  x y  y^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_

этот код будет печатать:

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

Итак, если i-я ячейка (x,y), что значит Y[i]=(a**x)*(b**y). Например, в примере кода [2 1] равна (2**2)*(3**1)=12.