Ejemplo n.º 1
0
# https://machinelearningmastery.com/time-series-data-stationary-python/
from matplotlib import pyplot
from pandas import read_csv
from Util import data_misc
from Util import misc
from Util import data_misc
import pandas as pd

series = read_csv('../Thesis/Bitcoin_historical_data_processed_1f.csv',
                  header=0,
                  sep='\t')
# transform data to be stationary
raw_values = series['Avg'].values
date = series['Date'].values
diff = data_misc.difference(raw_values, 1)

rolmean = pd.rolling_mean(raw_values, window=15)
rolstd = pd.rolling_std(raw_values, window=15)

titles = ['Raw Data', 'Rolling Mean', 'Standard Mean']
data = [raw_values, rolmean, rolstd]
misc.plot_lines_graph('Data ', date, titles, data)
misc.plot_data_graph2('Stationary ', date, diff)
Ejemplo n.º 2
0
# KNN5
y_hat_predicted = algorithm.knn_regressor(x_train, y_train, x_test, 5)
rmse, y_predicted_knn5 = compare_test(test, y_hat_predicted)
print('RMSE KNN(5)  %.3f' % (rmse))

# KNN10
y_hat_predicted = algorithm.knn_regressor(x_train, y_train, x_test, 10)
rmse, y_predicted_knn10 = compare_test(test, y_hat_predicted)
print('RMSE KNN(10) %.3f' % (rmse))

# SGD
y_hat_predicted = algorithm.sgd_regressor(x_train, y_train, x_test)
rmse, y_predicted_sgd = compare_test(test, y_hat_predicted)
print('RMSE SGD     %.3f' % (rmse))

# LSTM
y_hat_predicted = algorithm.lstm(x_train,
                                 y_train,
                                 x_test,
                                 batch_size=1,
                                 nb_epoch=3,
                                 neurons=1)
rmse, y_predicted_lstm = compare_test(test, y_hat_predicted)
print('RMSE LSTM   %.3f' % (rmse))

titles = ['X', 'Y', 'ElasticNet', 'KNN5', 'KNN10']
data = [x_test, y_test, y_predicted_en, y_predicted_knn5, y_predicted_knn10]
misc.plot_lines_graph('Raw Data, Test Data ', date[split:], titles, data)
misc.plot_data_graph2('Realvalue', date, raw_values)
Ejemplo n.º 3
0
predictions = list()

y_predicted = neigh.predict(X_test)
print(neigh.score(X_test, y_test))

# raw_values[-365:]

for i in range(len(y_predicted)):
    X, y = test_scaled[i, 0:-1], test_scaled[i, -1]
    yhat = y_predicted[i]
    print("Scaled: Y_test: " + str(y) + " Yhat: " + str(yhat))

    yhat = data_misc.invert_scale(scaler, X, yhat)
    print("yhat no scaled:" + str(yhat))

    yhat = data_misc.inverse_difference(raw_values, yhat,
                                        len(test_scaled) + 0 - i)
    print("yhat no difference:" + str(yhat))
    predictions.append(yhat)

rmse = sqrt(mean_squared_error(raw_values[-365:], predictions))
print('Test RMSE: %.7f' % (rmse))

y = raw_values[-365:]

# plot
misc.plot_line_graph2('KNN(' + str(n_neighbors) + ')', date[-365:],
                      raw_values[-365:], predictions)
misc.plot_data_graph2('Data', date, raw_values)
Ejemplo n.º 4
0
X = X.values
size = int(len(X) * 0.80)
train, test = X[0:size], X[size:len(X)]
history = [x for x in train]
predictions = list()

# p is the number of autoregressive terms,
# d is the number of nonseasonal differences needed for stationarity, and
# q is the number of lagged forecast errors in the prediction equation.

p = 1
d = 1
q = 0
print('P: %.2f, D: %.2f, Q: %.2f' % (p, d, q))

for t in range(len(test)):
    model = ARIMA(history, order=(p, d, q))
    model_fit = model.fit(disp=0)
    output = model_fit.forecast()
    yhat = output[0]
    predictions.append(yhat)
    obs = test[t]
    history.append(obs)
    print('predicted=%f, expected=%f' % (yhat, obs))
error = mean_squared_error(test, predictions)
print('Test MSE: %.3f' % error)
# plot
misc.plot_line_graph2('Arima', date[-365:], X[-365:], predictions)
misc.plot_data_graph2('Data', date, X)