[英]ML Pipeline OneHotEncoder is not fit
我是数据科学的新手,我能够构建一个模型并将管道与 onehotencoder 一起放置。 但是,当我调用我构建的函数时,它会出错。 请看下文并请指教。 提前致谢!
clf = Pipeline(steps=[('ohe', OneHotEncoder()),
('rfc', RandomForestClassifier(n_estimators=1000,criterion="entropy",max_features=None))])
pickle.dump(clf,open('model.pkl','wb'))
# load model
model = pickle.load(open('model.pkl','rb'))
def predict(A,B,C,D,E,F,G):
result = model.predict(x)
# send back to browser
output = {'results': int(result[0])}
# return data
return jsonify(results=output)
调用函数:
predict('A','B','C','D','E','F','G')
错误:
NotFittedError: This OneHotEncoder instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.
在将数据提供给 RandomForestClassifier 之前,使用它来转换您的数据:
def trainPipeline(pipeline, X, y):
X_transformed = X
for name, step in pipeline.steps[:-1]:
X_transformed = step.fit_transform(X_transformed, y)
pipeline.steps[-1][1].fit(X_transformed, y)
注意:这仅在您的管道有两个步骤并且第一个是 OneHotEncoder() 时才有效。
TL; 博士
x
。predict
的参数。长版
根据您所说的“构建模型”的含义,您是否真的在这里完成了这一点值得怀疑。
在数据科学中,您应该做的第一件事是了解您要解决的问题。 之后,您需要收集一个数据集,对其进行分析并确定它是否可以合理地回答您的问题。 最后,您可以构建一个模型并使用您的数据集来训练该模型(即调整模型的参数),只有在此之后您才能进行任何类型的预测。
我建议您在尝试实践之前深入研究并尝试理解机器学习的一些基本理论,以及构建模型的实际含义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.