如何解决即使我能够读取我的 CSV 文件数据,也无法预测文件数据
我目前正在开发我自己的项目,该项目使用 LSTM 模型来预测时间序列数据。不幸的是,即使我可以上传 csv 文件并加载我的模型,我也无法预测 csv 数据。请帮我看看,也许给我一些提示,我真的很感激和感谢你的帮助。
model.py
import numpy
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
def create_dataset(dataset,look_back=1):
dataX,dataY = [],[]
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back),0]
dataX.append(a)
dataY.append(dataset[i + look_back,0])
return numpy.array(dataX),numpy.array(dataY)
numpy.random.seed(7)
dataframe = read_csv('Sales.csv',usecols=[1],engine='python',skipfooter=3)
dataset = dataframe.values
dataset = dataset.astype('float32')
scaler = MinMaxScaler(feature_range=(0,1))
dataset = scaler.fit_transform(dataset)
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train,test = dataset[0:train_size,:],dataset[train_size:len(dataset),:]
look_back = 1
trainX,trainY = create_dataset(train,look_back)
testX,testY = create_dataset(test,look_back)
trainX = numpy.reshape(trainX,(trainX.shape[0],1,trainX.shape[1]))
testX = numpy.reshape(testX,(testX.shape[0],testX.shape[1]))
model = Sequential()
model.add(LSTM(4,input_shape=(1,look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error',optimizer='adam')
model.fit(trainX,trainY,epochs=100,batch_size=1,verbose=2)
model.save("model.h5")
print("Saved model to disk")
app.py
from flask import Flask,make_response,request,render_template
import io
from io import StringIO
import csv
import pandas as pd
import numpy as np
import pickle
import os
from keras.models import load_model
from sklearn.preprocessing import MinMaxScaler
from statsmodels.tsa.arima_model import ARIMAResults
app = Flask(__name__)
def transform(text_file_contents):
return text_file_contents.replace("=",",")
@app.route('/')
def form():
return """
<html>
<body>
<h1>Let's TRY to Predict..</h1>
</br>
</br>
<p> Insert your CSV file and then download the Result
<form action="/transform" method="post" enctype="multipart/form-data">
<input type="file" name="data_file" class="btn btn-block"/>
</br>
</br>
<button type="submit" class="btn btn-primary btn-block btn-large">Predict</button>
</form>
</body>
</html>
"""
@app.route('/transform',methods=["POST"])
def transform_view():
if request.method == 'POST':
f = request.files['data_file']
if not f:
return "No file"
stream = io.StringIO(f.stream.read().decode("UTF8"),newline=None)
csv_input = csv.reader(stream)
#print("file contents: ",file_contents)
#print(type(file_contents))
print(csv_input)
for row in csv_input:
print(row)
stream.seek(0)
result = stream.read()
df = pd.read_csv(StringIO(result),usecols=[1])
# load the model from disk
model = load_model('model.h5')
dataset = df.values
dataset = dataset.astype('float32')
scaler = MinMaxScaler(feature_range=(-1,1))
dataset = scaler.fit_transform(dataset)
dataset = np.reshape(dataset,(dataset.shape[0],dataset.shape[1]))
dataset = model.predict(dataset)
response = make_response(df.to_csv())
response.headers["Content-Disposition"] = "attachment; filename=result.csv"
return response
if __name__ == "__main__":
app.run(debug=True,port = 9000,host = "localhost")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。