我是数据科学的新手,我能够建立一个模型,并与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.
答案 0 :(得分:1)
在将数据提供给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()时,此方法才有效。
答案 1 :(得分:0)
TL; DR
x
。predict
的任何参数。长版
取决于您“建立模型”的含义,是否在此实际完成操作值得怀疑。
在数据科学中,您应该做的第一件事就是了解您要解决的问题。之后,您需要收集一个数据集,对其进行分析,然后确定它是否可以合理地解决您的问题。最后,您可以构建一个模型,并使用数据集来训练该模型(即调整模型的参数),然后才能进行任何类型的预测。
我建议您在尝试进行实践之前,深入研究并尝试理解一些机器学习的基础理论,以及构建模型的实际含义。