Fac*_*pai 3 python machine-learning scikit-learn
假设我有一个shape的10特征数据集和一个Xshape[100, 10]的y目标数据集[100, 1]。例如,将两者分开后,sklearn.model_selection.train_test_split我得到:
X_train: [70, 10]X_test: [30, 10]y_train: [70, 1]y_test: [30, 1]应用标准化的正确方法是什么?
我试过:
from sklearn import preprocessing
scaler = preprocessing.StandardScaler()
scaler.fit(X_train)
X_train_std = scaler.transform(X_train)
X_test_std = scaler.transform(X_test)
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用模型进行预测,当我尝试反转缩放以查看 MAE 时,我会出错
from sklearn import linear_model
lr = linear_model.LinearRegression()
lr.fit(X_train_std, y_train)
y_pred_std = lr.predict(X_test_std)
y_pred = scaler.inverse_transform(y_pred_std) # error here
Run Code Online (Sandbox Code Playgroud)
我还有一个问题。由于我有目标值,我应该使用
scaler = preprocessing.StandardScaler()
X_train_std = scaler.fit_transform(X_train, y_train)
X_test_std = scaler.transform(X_test)
Run Code Online (Sandbox Code Playgroud)
而不是第一个代码块?
我是否也必须将转换应用于y_train和y_test数据集?我有点困惑
StandardScaler 应该仅用于特征矩阵 X。
所以所有的fit,transform和inverse_transform方法只需要你的X。
请注意,拟合模型后,您可以访问以下属性:
mean_: 中每个特征的平均值 X_trainscale_: 中每个特征的标准偏差 X_train该transform方法(X[i, col] - mean_[col] / scale_[col])适用于每个样本i。而每个样品的inverse_transform方法。(X[i, col] * scale_[col] + mean_[col])i
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |