data = dataset.iloc[:,:-1].valueslabel = dataset.iloc[:,-1].valuesfrom sklearn.preprocessing import LabelEncoderlabelencoder = LabelEncoder()for i in range(0,5): data[:,i] = labelencoder.fit_transform(data[:,i]) data1=pd.DataFrame(data[:,:5])for i in range(7,12): data[:,i]=labelencoder.fit_transform(data[:,i])data2=pd.DataFrame(data[:,7:12])from sklearn.preprocessing import Normalizer#----Normalizing Uncategorical Data----#data3=dataset.iloc[:,[5,6,12]]dataset.iloc[:,:5]normalized_data = Normalizer().fit_transform(data3)data3=pd.DataFrame(normalized_data)data_full=pd.concat([data1,data2,data3],axis=1)label=labelencoder.fit_transform(label)label=pd.DataFrame(label)
以上是我的预处理步骤…我想在模型通过Web应用部署后,对新的输入数据执行相同的预处理。我该如何编写一个函数来实现这一点…?我使用Flask来开发API
在app.py的predict函数中应该写什么…?
@app.route('/predict', methods=['POST'])def predict():
回答:
您需要将在数据预处理时使用的所有转换器进行pickle化处理。然后,您需要加载这些相同的转换器,并在预测时使用它们。
创建一个新的转换器并在不同的值上进行拟合会导致奇怪的预测结果。
我为一次Meetup创建了一个Flask演示项目。该项目包含您需要的所有代码。
部署:https://github.com/Ankur-singh/flask_demo/blob/master/final_ml_flask.py
训练:https://github.com/Ankur-singh/flask_demo/blob/master/iris.py