amount of data required for a good ann mdel I am new to deep learning and started with ANN. I have a dataset with 15 parameters and 2100 rows. r2_score with Multi linear regression and random forest models is around 85% but when i try an ANN with this dataset r2_score is very less, around 32% . Is it because the number of rows are less? If so atleast what number of rows are required to go for ANN. I have added the code too for reference

import pandas as pd

dataset = pd.read_csv('chiller-2_runningdata_withcommon_parameters.csv')

dataset = dataset.drop(['DateTime','delta','KWH','RunStatus','OP Hours'], axis=1)

X = dataset.iloc[:,:-1 ].values
y = dataset.iloc[:,15:16].values
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

# Feature Scaling
from sklearn.preprocessing import StandardScaler

sc_X = StandardScaler()

sc_Y = StandardScaler()

X_train = sc_X.fit_transform(X_train)

X_test = sc_X.transform(X_test)

y_train = sc_Y.fit_transform(y_train)

# Importing the Keras libraries and packages
import keras
from keras.models import Sequential
from keras.layers import Dense

# Initialising the ANN
classifier = Sequential()

# Adding the input layer and the first hidden layer
classifier.add(Dense(units = 8, kernel_initializer = 'uniform', activation = 'relu', input_dim = 15))

# Adding the second hidden layer
classifier.add(Dense(units = 8, kernel_initializer = 'uniform', activation = 'relu'))

# Adding the output layer
classifier.add(Dense(units = 1, kernel_initializer = 'uniform'))

# Compiling the ANN
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

# Fitting the ANN to the Training set
classifier.fit(X_train, y_train, batch_size = 32, epochs = 500)

# Predicting the Test set results
y_pred = classifier.predict(X_test)
y_pred = sc_Y.inverse_transform(y_pred)
y_pred_train = classifier.predict(X_train)
y_pred_train = sc_Y.inverse_transform(y_pred_train)
y_train = sc_Y.inverse_transform(y_train)


#calculate r2_score
from sklearn.metrics import r2_score
score_train = r2_score(y_pred_train,y_train)
score_test = r2_score(y_pred,y_test)
You seem to use a loss function for classification problems, binary crossentropy, for a regression problem.

Try to change your compile function to something like

model.compile(optimizer='adam', loss='mse', metrics=['mae'])


Also, you can change your fit function to

model.fit(X_train, y_train, epochs=500, validation_data=(X_test, y_test), verbose=2)


to track your accuracy during training. This might help you detect overfitting and change the amount of epochs accordingly.

Don't worry about your amount of data, try understanding the difference between classification and regression problems instead.