我有一个 Random Forest 模型,模型保存在 .pkl 文件中。我已经加载了 .pkl 模型,但现在我必须 input test data 并预测准确性。如何将input文件转为.pkl模型?
import pickle
def read_from_pickle(RF):
with open(RF, 'rb') as file:
try:
while True:
yield pickle.load(file)
except EOFError:
pass
这是我用来加载模型的代码 Next..how to input?
回答1
这个解决方案是随机森林回归我的模型有动态价格预测
import pandas as pd import numpy as np from sklearn import pipeline, preprocessing,metrics,model_selection,ensemble,linear_model 来自 sklearn_pandas import DataFrameMapper from sklearn.metrics import mean_squared_error
// 首先我们加载了这个库,然后我们加载了数据集和我们之后做的所有清理工作
data.to_csv("Pune_hpp.csv",index=False)
mapper = DataFrameMapper([ (['area_type','size','new_total_sqft','bath','balcony',], preprocessing.StandardScaler()), # (['area_type','size'],预处理。 OneHotEncoder())
],df_out=True)
// 听说我们为它创建了两个 pipeline 因为我们已经用 mse 和 rsme 方法比较了两个算法并加载了下面的算法
pipeline_obj_LR=pipeline.Pipeline([ ('mapper',mapper), ("model",linear_model.LinearRegression()) ])
pipeline_obj=pipeline.Pipeline([ ('mapper',mapper), ("model",ensemble.RandomForestRegressor()) ])
X=['area_type','size','new_total_sqft','bath','balcony'] // X with INPUT
Y=['价格'] // Y 作为输出
// 听到比较过程开始
pipeline_obj_LR.fit(data[X],data[Y]) // 这个逻辑回归
pipeline_obj.fit(data[X],data[Y]) // random forest
pipeline_obj.predict(data[X]) // 我们已经完成的一些预测
预测=pipeline_obj_LR.预测(数据[X])
//下面是比较的实际方法和最适合的算法
预测=pipeline_obj_LR.预测(数据[X])
火车和 test data 上的均方根误差
print('使用线性回归的 MSE: ', mean_squared_error(data[Y], predict)) print('使用 linear_regression 的 RMSE: ', mean_squared_error(data[Y], predict)**(0.5))
// 以上是lr
预测=pipeline_obj.predict(数据[X])
火车和 test data 上的均方根误差
print('使用随机森林回归的 MSE: ', mean_squared_error(data[Y], predict)) print('使用 randomforestregression 的 RMSE: ', mean_squared_error(data[Y], predict)**(0.5))
// 以上是针对 RFR 的,在我的文章中,我已经完成了与 joblib 相关的 random forest 原因,因为我拥有庞大的数据集,而且它很容易实现,而且它的代码行也非常少,你已经看到了,我还没有使用 pipeline_obj_LR 这就是我们在 pkl 文件中输入 value 的方式
导入作业库
joblib.dump(pipeline_obj,'dynamic_price_pred.pkl')
modelReload=joblib.load('dynamic_price_pred.pkl')