缩放后如何处理逻辑回归系数?

时间:2020-02-19 17:34:05

标签: python logistic-regression feature-selection coefficients

我有一个相对较大的数据集(600万行,72列),需要使用逻辑回归进行建模。

首先,我使用Python的FeatureAgglomeration减少功能数量。为此,数据需要标准化。代码类似于以下内容:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.15, random_state=1)

#Standardize features
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train_std=pd.DataFrame(sc.fit_transform(X_train), columns=X.columns)
X_test_std=pd.DataFrame(sc.transform(X_test), columns=X.columns)

#cluster variables to reduce dimensionality
from sklearn.cluster import FeatureAgglomeration
agglo=FeatureAgglomeration(n_clusters=23).fit(X_train_std)

sorted(zip(X_train_std,agglo.labels_),key=lambda t: t[1])

然后我从每个结果簇中获取一个变量,并创建一个变量列表。

cols = ['COLUMN1', 'COLUMN2', 'COLUMN3' ... 'COLUMN23']

最后,我在回归中使用了新的变量集:

from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression(solver='lbfgs')
logmodel.fit(X_train[cols],y_train)
predictions = logmodel.predict(X_test[cols])

但是,我需要能够解释模型,尤其是系数。不过,现在对系数进行了缩放。

我在线找到了一些代码,试图将其系数恢复为“正常”:

coefficients = np.true_divide(logmodel.coeff_,  sc.scale_)

但是,这里有两种大小:对数模型基于我的变量选择具有23个系数,但是sc.scale_具有72个变量是基于以下事实:我在特征缩减之前首先将整个数据集进行了缩放。

有没有一种方法可以对相关的23个系数进行“反”标度?

另外,我是否会以正确的方式解决这个问题?是否会有更好或更有效的方法来解决呢?

谢谢!

0 个答案:

没有答案