0

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_

どうも!

4

2 に答える 2

0

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 などの要素を持つ位置のインデックスを含むリストのリストになります。

例:

X1 と X2 のみを使用する 2 次回帰の場合、生成される ndarray は次のようになります。[1 , X1, X2, X1**2, X1*X2, X2**2]

list_of_lists は [[1,3,4],[2,4,5]] になります

これを使用してアクセスできますlasso_model.coef_

于 2016-08-30T07:46:43.277 に答える
0

のドキュメントによるとPolynomialFeatures

powers_[i, j]i 番目の出力における j 番目の入力の指数です。

したがって、次のようなものが機能するはずです。

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_)

重要な行は最初の行です。:)

于 2016-03-12T16:41:05.977 に答える