How can I make the r2 to be positive when predicting Bitcoin price using SVR?
I try to use SVR to predict Bitcoin price and I include more than 30 variables, but the prediction result is poor. How can I improve it or at least make the R2 to be positive?
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error,r2_score
import numpy as np
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
return np.mean(np.abs((y_true - y_pred) / y_true))
data=pd.read_excel(r'X:final.xlsx')
start_train='2014-01-01'
end_train='2017-12-31'
start_test='2018-01-01'
end_test='2018-12-31'
data=data.set_index('Date')
data_train=data.ix[start_train:end_train]
x_columns=list(data.drop((['next_price']),axis=1).columns)
y_column='next_price'
x_train=data_train[x_columns]
y_train=data_train[y_column]
x_train = preprocessing.scale(x_train)
data_test=data.ix[start_test:end_test]
x_test=data_test[x_columns]
y_test=data_test[y_column]
x_test = preprocessing.scale(x_test)
svr=SVR(kernel='linear')
svr.fit(x_train,y_train)
predictions=svr.predict(x_test)
print('MAPE: {0:.3f}'.format(mean_absolute_percentage_error(y_test,predictions)))
print('RMSE: {0:.3f}'.format((mean_squared_error(y_test,predictions))**0.5))
print('R^2: {0:.3f}'.format(r2_score(y_test,predictions)))
MAPE: 0.889;
RMSE: 7836.500;
R^2: -11.642
dates=data_test.index.values
plot_truth,=plt.plot(dates,y_test,'k')
plot_svr,=plt.plot(dates,predictions,'g')
plt.title('Real price VS Predicted price')
plt.show()
The original data is here[1]: https://drive.google.com/open?id=1Na0WB5zrCbafb4xnBM9ggRsm8p1LsvXi
svm bitcoin
add a comment |
I try to use SVR to predict Bitcoin price and I include more than 30 variables, but the prediction result is poor. How can I improve it or at least make the R2 to be positive?
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error,r2_score
import numpy as np
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
return np.mean(np.abs((y_true - y_pred) / y_true))
data=pd.read_excel(r'X:final.xlsx')
start_train='2014-01-01'
end_train='2017-12-31'
start_test='2018-01-01'
end_test='2018-12-31'
data=data.set_index('Date')
data_train=data.ix[start_train:end_train]
x_columns=list(data.drop((['next_price']),axis=1).columns)
y_column='next_price'
x_train=data_train[x_columns]
y_train=data_train[y_column]
x_train = preprocessing.scale(x_train)
data_test=data.ix[start_test:end_test]
x_test=data_test[x_columns]
y_test=data_test[y_column]
x_test = preprocessing.scale(x_test)
svr=SVR(kernel='linear')
svr.fit(x_train,y_train)
predictions=svr.predict(x_test)
print('MAPE: {0:.3f}'.format(mean_absolute_percentage_error(y_test,predictions)))
print('RMSE: {0:.3f}'.format((mean_squared_error(y_test,predictions))**0.5))
print('R^2: {0:.3f}'.format(r2_score(y_test,predictions)))
MAPE: 0.889;
RMSE: 7836.500;
R^2: -11.642
dates=data_test.index.values
plot_truth,=plt.plot(dates,y_test,'k')
plot_svr,=plt.plot(dates,predictions,'g')
plt.title('Real price VS Predicted price')
plt.show()
The original data is here[1]: https://drive.google.com/open?id=1Na0WB5zrCbafb4xnBM9ggRsm8p1LsvXi
svm bitcoin
add a comment |
I try to use SVR to predict Bitcoin price and I include more than 30 variables, but the prediction result is poor. How can I improve it or at least make the R2 to be positive?
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error,r2_score
import numpy as np
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
return np.mean(np.abs((y_true - y_pred) / y_true))
data=pd.read_excel(r'X:final.xlsx')
start_train='2014-01-01'
end_train='2017-12-31'
start_test='2018-01-01'
end_test='2018-12-31'
data=data.set_index('Date')
data_train=data.ix[start_train:end_train]
x_columns=list(data.drop((['next_price']),axis=1).columns)
y_column='next_price'
x_train=data_train[x_columns]
y_train=data_train[y_column]
x_train = preprocessing.scale(x_train)
data_test=data.ix[start_test:end_test]
x_test=data_test[x_columns]
y_test=data_test[y_column]
x_test = preprocessing.scale(x_test)
svr=SVR(kernel='linear')
svr.fit(x_train,y_train)
predictions=svr.predict(x_test)
print('MAPE: {0:.3f}'.format(mean_absolute_percentage_error(y_test,predictions)))
print('RMSE: {0:.3f}'.format((mean_squared_error(y_test,predictions))**0.5))
print('R^2: {0:.3f}'.format(r2_score(y_test,predictions)))
MAPE: 0.889;
RMSE: 7836.500;
R^2: -11.642
dates=data_test.index.values
plot_truth,=plt.plot(dates,y_test,'k')
plot_svr,=plt.plot(dates,predictions,'g')
plt.title('Real price VS Predicted price')
plt.show()
The original data is here[1]: https://drive.google.com/open?id=1Na0WB5zrCbafb4xnBM9ggRsm8p1LsvXi
svm bitcoin
I try to use SVR to predict Bitcoin price and I include more than 30 variables, but the prediction result is poor. How can I improve it or at least make the R2 to be positive?
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
import pandas as pd
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error,r2_score
import numpy as np
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
return np.mean(np.abs((y_true - y_pred) / y_true))
data=pd.read_excel(r'X:final.xlsx')
start_train='2014-01-01'
end_train='2017-12-31'
start_test='2018-01-01'
end_test='2018-12-31'
data=data.set_index('Date')
data_train=data.ix[start_train:end_train]
x_columns=list(data.drop((['next_price']),axis=1).columns)
y_column='next_price'
x_train=data_train[x_columns]
y_train=data_train[y_column]
x_train = preprocessing.scale(x_train)
data_test=data.ix[start_test:end_test]
x_test=data_test[x_columns]
y_test=data_test[y_column]
x_test = preprocessing.scale(x_test)
svr=SVR(kernel='linear')
svr.fit(x_train,y_train)
predictions=svr.predict(x_test)
print('MAPE: {0:.3f}'.format(mean_absolute_percentage_error(y_test,predictions)))
print('RMSE: {0:.3f}'.format((mean_squared_error(y_test,predictions))**0.5))
print('R^2: {0:.3f}'.format(r2_score(y_test,predictions)))
MAPE: 0.889;
RMSE: 7836.500;
R^2: -11.642
dates=data_test.index.values
plot_truth,=plt.plot(dates,y_test,'k')
plot_svr,=plt.plot(dates,predictions,'g')
plt.title('Real price VS Predicted price')
plt.show()
The original data is here[1]: https://drive.google.com/open?id=1Na0WB5zrCbafb4xnBM9ggRsm8p1LsvXi
svm bitcoin
svm bitcoin
asked Nov 23 '18 at 7:54
wwhywwhy
347
347
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442634%2fhow-can-i-make-the-r2-to-be-positive-when-predicting-bitcoin-price-using-svr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53442634%2fhow-can-i-make-the-r2-to-be-positive-when-predicting-bitcoin-price-using-svr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown