Вывод из метода .fit_transform - PullRequest
0 голосов
/ 08 июня 2018

Мне бы хотелось глубже понять, что выводится методом .fit_transform () в классе PolynomialFeatures в scikit learn.

Я понимаю, что метод выполняет две вещи: 1)создание модели для данных путем подгонки ее к алгоритму регрессии и 2) создание новых данных на основе модели, найденной в 1.

Но что я не понимаю, так это результат.Вот мой код:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split


np.random.seed(0)
n = 15
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10


X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)
X_train1 = X_train.reshape(11,1)
y_train1 = y_train.reshape(11,1)

def answer_one():
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures

    poly1 = PolynomialFeatures(degree=1)

    X_poly1 = poly1.fit_transform(X_train1)

    return X_poly1

answer_one()

Вывод, который я получаю:

array([[  1.        ,  10.08877265],
       [  1.        ,   3.23065446],
       [  1.        ,   1.62431903],
       [  1.        ,   9.31004929],
       [  1.        ,   7.17166586],
       [  1.        ,   4.96972856],
       [  1.        ,   8.14799756],
       [  1.        ,   2.59103578],
       [  1.        ,   0.35281047],
       [  1.        ,   3.375973  ],
       [  1.        ,   8.72363612]])

Я предполагаю, что каждое второе число в каждом мини-массиве является значением, рассчитанным моделью, но я нене понимаю, что такое каждый 1?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы немного неправильно поняли, что происходит с PolynomialFeatures.Идея не в том, чтобы соответствовать модели, а просто в создании новых функций путем умножения существующих функций.Пример в документах весьма полезен для объяснения: если входная выборка является двухмерной и имеет форму [a, b], полиномиальные элементы степени 2 имеют вид [1, a, b, a^2, ab, b^2].

Так что вы видите вВаш пример - это просто предвзятость и ваш вклад.Если в вашей модели задано `include_bias = False ', то все пойдет.

0 голосов
/ 08 июня 2018

Из PolynomialFeatures документации:

Создание новой матрицы объектов, состоящей из всех полиномиальных комбинаций объектов со степенью, меньшей или равной указанной степени.Например, если входная выборка является двухмерной и имеет форму [a, b], полиномиальные признаки степени 2 имеют вид [1, a, b, a ^ 2, ab, b ^ 2].

В вашем случае выводятся все комбинации столбца x со степенью, меньшей или равной 1: [1, x].В первом столбце у вас есть x**0, а во втором x**1

...