我有一个指标 (RevenueSoFar),它可以很好地预测我的目标 FinalRevenue,正如您所期望的那样——这是一个指标,到目前为止,我们在第 1 天往往会获得 90-95% 的收入,然后它可以在接下来的时间里增加6天。因此,我还使用 DaysData (1,...,6) 作为训练集中的一个特征,试图让模型了解当我们接近最后一天时信心和收入如何增长。
在我的预构建分析中,我注意到与其他几个指标的相关性,例如我们网站的访问量、第 1 天的 DOW 等,尽管不如与 RevenueSoFar 的相关性强。因此,我运行了 Lasso Regression 以了解特征的重要性,但是我的模型已将除 RevenueSoFar(甚至 DaysData 特征)之外的每个特征的系数都降低到零。
- 这是否意味着我应该从我的模型中删除所有这些并且只使用 RevenueSoFar 作为预测器?
- 在训练数据集中,到目前为止,有很大比例的产品是零收入和零收入(但其中绝大多数是针对需求低的国家,在训练集中作为一个特征被分离出来)。零点是否会扭曲模型以认为 RevenueSoFar 和 FinalRevenue 大多完美匹配,因此不需要其他功能?
以下是我的代码,以防有人感兴趣。
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Lasso
from sklearn.feature_selection import SelectFromModel
#import data
DF = pd.read_csv("LearningDataSet.csv")
DF_categorical = DF[["DOW","Market",”Country”]]
DF_numerical = DF[["DaysData","D0Visits","D0MobVisits","D0DesVisits","D0Carts","D0MobCarts", "D0DesCarts", "RevenueSoFar"]]
DF_target = DF[["RevenueFinal"]]
#Scale numerical
scaler = StandardScaler()
DF_numerical_scaled = pd.DataFrame(scaler.fit_transform(DF_numerical))
#Dummy Categorical
DF_categorical_dummy = pd.get_dummies(data=DF_categorical, drop_first=True)
#Merge categorical and numerical
DF_final = DF_categorical_dummy.merge(right=DF_numerical_scaled, how='left', left_index=True, right_index=True)
#Split into training and test
X_train, X_test, y_train, y_test = train_test_split(DF_final, DF_target, test_size=0.25, random_state=0)
selection = SelectFromModel(estimator=Lasso()).fit(X_train,y_train)
print(selection.get_support())
selected_feat = X_train.columns[(selection.get_support())]
print(selected_feat)
```