我正在使用自定义内核 SVR 构建模型,该模型查看我的数据框的一些功能并检查每对数据点之间的接近度/距离。对特征进行加权,并使用交叉验证计算权重。
最初我的数据框没有标准化,模型的结果不是很好(RMSE 高于目标范围的 25%)。因为我读过 SVR 对扩展是明智的,所以我决定尝试对数据进行标准化,这导致了更糟糕的“预测”。
均方根误差的原始结果如下:
RMSE (test_set): 6.59
RMSE (training_set): 6.56
RMSE (validation_set): 5.90
具有标准化数据的新结果如下:
RMSE (test_set): 2404.68
RMSE (training_set): 148.06
RMSE (validation_set): 2546.44
这些值远远超出了我的结果变量的正常范围。这让我怀疑我做错了什么。
笔记:
- 我在标准化后重新计算了内核的权重。
- 在将数据拆分为训练/测试/验证后,我对其进行了标准化。
- 我没有标准化 y(结果变量)向量。
为了规范化数据,我使用了以下代码:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
def normalize(df):
x = df.values
df_scaled = sc.fit_transform(x)
return pd.DataFrame(df_scaled, columns=df.columns)
X_train = normalize(X_train)
X_test = normalize(X_test)
X_validation = normalize(X_validation)
然后我使用这 3 个变量来训练和测试模型。
regressor = SVR(kernel=my_kernel)
regressor.fit(X_train, y_train)
关于我做错了什么的任何提示?谢谢。