May-23-2020, 12:26 PM
Hi guys,
I am trying to predict the target variable "Exchange Rate EURUSD" using a data set that I created by myself. I included a lot of economic indicators and the monthly EURUSD closing price from 01/01/2000 to 01/12/2020, which gives me 240 columns ( 20 years * 12 months ) and 34 features ( 33 indicators and 1 EURUSD exchange rate)
Here is one sample of the data set :
https://imgur.com/a/iJuGtXw
I kept the date as an index and also replaced all "," with "." in python. All in all the code looks like this :
Moreover, I know you should not predict on training set, but on test set. But I get an error even with that code :
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
If i do that, I get the new error :
ValueError: Number of features of the model must match the input. Model n_features is 33 and input n_features is 1
I kind of understand what the problem is, but I have no idea how to fix it. I would appreciate any help a lot !
I am trying to predict the target variable "Exchange Rate EURUSD" using a data set that I created by myself. I included a lot of economic indicators and the monthly EURUSD closing price from 01/01/2000 to 01/12/2020, which gives me 240 columns ( 20 years * 12 months ) and 34 features ( 33 indicators and 1 EURUSD exchange rate)
Here is one sample of the data set :
https://imgur.com/a/iJuGtXw
I kept the date as an index and also replaced all "," with "." in python. All in all the code looks like this :
# Load Data Set
df = pd.read_csv("C:/merged.csv")
df = df.set_index('Date')
df["EURUSD Closing Price"] = df["EURUSD Closing Price"].replace(',', '.', regex=True).astype(float)
# Define variables
X = df.drop(["EURUSD Closing Price"], axis=1).values
y = df["EURUSD Closing Price"].values
# Split data into 75 train / 25 test
X_train, X_test, y_train, y_test = train_test_split(X, y)
X_train = X[:int(X.shape[0]*0.75)]
X_test = X[int(X.shape[0]*0.75):]
y_train = y[:int(X.shape[0]*0.75)]
y_test = y[int(X.shape[0]*0.75):]
# RF Train and predict
# RF
rf = RandomForestRegressor(n_estimators = 1000, random_state = 42)
rf.fit(X_train, y_train)
rf.predict(y_train)First of all, I have to keep the time series nature in the data, thats why the data can'T be split randomly into a train and test set.Moreover, I know you should not predict on training set, but on test set. But I get an error even with that code :
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
If i do that, I get the new error :
ValueError: Number of features of the model must match the input. Model n_features is 33 and input n_features is 1
I kind of understand what the problem is, but I have no idea how to fix it. I would appreciate any help a lot !
