Scikit - Формат вывода полиномиальной регрессии

Я делаю полиномиальную регрессию с помощью scikit learn и пытаюсь интерпретировать коэффициенты. Но почему-то scikit не форматирует вывод. Вот так это выглядит:

[ 0.,0.95545289,0.,0.20682341,-0.,0.,-0.,-0.,0.,0.,0.,-0.,0.,-0.,-0.,]

Как я могу сопоставить коэффициенты с объектами, которые были созданы? Код, который у меня есть:

poly = PolynomialFeatures(interaction_only=True)
X_ = poly.fit_transform(X_train_minmax)
X_test1 = poly.fit_transform(X_test_minmax)

lasso_model = linear_model.LassoCV(cv = 10, copy_X = True, normalize = False)
lasso_fit = lasso_model.fit(X_, y_train)
lasso_path = lasso_model.score(X_, y_train)
y_pred= lasso_model.predict(X_test1)
lasso_model.coef_

Спасибо!


person Alanovic    schedule 12.03.2016    source источник
comment
Вы пробовали zip(X_.columns, lasso_model.coef_)?   -  person solomkinmv    schedule 12.03.2016
comment
Эй, спасибо за твой ответ. к сожалению, X_ - это не DataFrame, а матрица в представлении массива. Итак .columns здесь не работает   -  person Alanovic    schedule 12.03.2016


Ответы (2)


Согласно документам в PolynomialFeatures:

powers_[i, j] - показатель степени j-го входа в i-м выходе.

Так должно работать примерно так:

columns = ['_'.join(['x{var}^{exp}'.format(var=var, exp=exp) for var, exp in enumerate(a[i, :])]) for i in range(a.shape[0])
zip(columns, lasso_model.coef_)

Важная линия - первая. :)

person dukebody    schedule 12.03.2016

Предположим, вы используете полиномиальную регрессию 2-й степени. Так,

poly = PolynomialFeature(degree =2)  #generate a polynomial object
X_ = poly.fit_transform(input_data)  #ndarray to be used for regression.

где input_data = [X1,X2,X3,...] #actually ndarray represented as a List for simplicity

Чтобы найти индекс в списке Lasso.coef_, где (скажем) присутствуют факторы X1, то есть X1, X1 ** 2, X1 * X2, X1 * X3, ... X1 * Xn, используйте следующие

list_of_index = []

for j in range(len(input_data)):#iterate over each input, X1, X2, etc temp =[] for i in X_.shape[1]:#iterate over the polynomial ndarray object columnwise if poly.powers_[i,j] != 0: temp.append(i) list_of_index.append(temp) list_of_index будет списком списков, содержащих индекс позиций, которые имеют факторы X1, X2 и т. Д.

Пример:

Для регрессии 2-й степени с использованием только X1 и X2 сгенерированный ndarray будет [1 , X1, X2, X1**2, X1*X2, X2**2]

list_of_lists будет [[1,3,4], [2,4,5]]

Вы можете использовать это для доступа к lasso_model.coef_

person Harshavardhan Ramanna    schedule 30.08.2016