【发布时间】:2019-06-13 14:24:27
【问题描述】:
我有 pandas Dataframe,我正在使用它进行一些回归分析。我使用以下方法对数据进行了标准化:
working_df = df.div(np.sqrt(np.sum(np.power(df.values, 2), axis=1)), axis=0)
这个Dataframe包含35列作为特征,所以我选择数据集如下:
X = working_df.iloc[:, 0:35]
y = target_df['target_property']
然后我使用 Sklearn 进行训练 - 测试拆分:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
我的问题是: 我真的需要执行 sc.transform(X_train) 和 sc.transform(X_test),因为我的数据已经在数据帧中标准化了吗?如果是这样,我是否需要在执行 sc.transform(X_train) 之前在 X_train 中执行 sc.fit,如果不是,为什么?通过这样做,我获得了线性回归的 R2 为 0.46,核岭回归的 R2 为 -0.21,学习率为 0.3 的梯度增强回归器的 R2 为 0.62。这些结果似乎有些令人困惑,您能帮我理解一下吗?
【问题讨论】:
标签: machine-learning linear-regression