主要工作:利用SVR模型训练出一个预测白菜价格(利用每周历史数据预测下一天价格)的模型,数据集是2008年到2018年白菜的历史价格;数据集划分比例:7成训练,3成验证模型精确度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| from sklearn.svm import SVR
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def load_data(filepath=r"data.csv", isTraining=True, days=7):
data = np.array(pd.read_csv(filepath,encoding="utf-8"))[:,1]
if isTraining:
data = data[:int(data.shape[0]*0.7)]
else:
data = data[int(data.shape[0]*0.7):]
x_data, y_data = [], []
for index in range(data.shape[0]-days):
x_data.append(data[index:(index+days)])
y_data.append(data[index+days])
x_data = np.array(x_data).astype(float)
y_data = np.array(y_data).astype(float)
return x_data, y_data
|
1
2
3
4
| def train(x_data, y_data):
clf = SVR(kernel='linear', C=1.0, epsilon=0.2)
model = clf.fit(x_data, y_data)
return model
|
1
2
| def test(x_data, model):
return model.predict(x_data)
|
1
2
3
4
5
| def plot_graph(y_test, y_pred):
plt.plot(y_pred, color='r', label=r"y_pred")
plt.plot(y_test, color='c', label=r"y_true")
plt.legend(loc='upper left')
plt.show()
|
1
2
3
4
5
6
7
8
9
| def losses(y_pred, y_true):
RMSE = np.sqrt(np.mean((y_true-y_pred)**2))
MAE = np.mean(np.abs(y_true-y_pred))
MAPE = np.mean(np.abs(y_pred-y_true)/y_true)*100
print(
"RMSE:{}\n".format(RMSE),
"MAE:{}\n".format(MAE),
"MAPE:{}".format(MAPE)
)
|