加载和预测新数据 sklearn

Posted

技术标签:

【中文标题】加载和预测新数据 sklearn【英文标题】:Load and predict new data sklearn 【发布时间】:2018-05-05 03:30:16 【问题描述】:

我训练了一个 Logistic 模型,交叉验证并使用 joblib 模块将其保存到文件中。现在我想加载这个模型并用它预测新数据。 这是正确的方法吗?尤其是标准化。我也应该在我的新数据上使用 scaler.fit() 吗?在我遵循的教程中,scaler.fit 仅用于训练集,所以在这里我有点迷失了。

这是我的代码:

#Loading the saved model with joblib
model = joblib.load('model.pkl')

# New data to predict
pr = pd.read_csv('set_to_predict.csv')
pred_cols = list(pr.columns.values)[:-1]

# Standardize new data
scaler = StandardScaler()
X_pred = scaler.fit(pr[pred_cols]).transform(pr[pred_cols])

pred = pd.Series(model.predict(X_pred))
print pred

【问题讨论】:

【参考方案1】:

不,这是不正确的。所有数据准备步骤都应使用训练数据进行拟合。否则,您可能会应用错误的转换,因为StandardScaler 估计的均值和方差在训练数据和测试数据之间可能存在差异。

同时训练、保存、加载和应用所有步骤的最简单方法是使用管道:

训练时

# prepare the pipeline
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.externals import joblib

pipe = make_pipeline(StandardScaler(), LogisticRegression)
pipe.fit(X_train, y_train)
joblib.dump(pipe, 'model.pkl')

预测时

#Loading the saved model with joblib
pipe = joblib.load('model.pkl')

# New data to predict
pr = pd.read_csv('set_to_predict.csv')
pred_cols = list(pr.columns.values)[:-1]

# apply the whole pipeline to data
pred = pd.Series(pipe.predict(pr[pred_cols]))
print pred

【讨论】:

以上是关于加载和预测新数据 sklearn的主要内容,如果未能解决你的问题,请参考以下文章

sklearn如何使用保存的模型来预测新数据

sklearn中score为啥使用测试数据

加载 Keras 模型并使用它进行预测

keras 从txt加载预测数据

使用paddlepaddle来预测房价

使用paddlepaddle来预测房价