Is this a data issue, or a model issue? A Keras binary classification model I've been trying to create a binary classification model that predicts wether there will be a train delay based on the train and time. Here is a link to the data

The issue I'm having is that my accuracy goes to 94.07 in the first 5 epochs. Meanwhile, my class prediction will always be 0 and never 1. 

From what I understand, this is "Accuracy Paradox". A symptom of Class Imbalance. To combat this, I implemented Kfold.

kfold = StratifiedKFold(n_splits=10,shuffle=True)
cvs_scores = []

for train,test in kfold.split(X,Y):

  history = model.fit(X[train],Y[train],epochs=50,batch_size=15, shuffle = False, verbose = 1)
  scores = model.evaluate(X[test],Y[test],verbose=0)

  print("%s: %.2f%%" % (model.metrics_names[1],scores[1]*100))
  cvs_scores.append(scores[1] * 100)

print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvs_scores),numpy.std(cvs_scores)))


No luck. Still had the same issue as before.

Here is how I import my data:

raw_data = pd.read_csv('MTA_DELAY_DATA_DUMP - Sheet1.csv')

X = raw_data.iloc[1:-2,0:2].dropna().values
Y = raw_data.iloc[1:-2,2:3].dropna().astype(int).values


My Model:

model = Sequential()
model.add(Dense(32, kernel_initializer='uniform', activation='relu',input_dim =2))
model.add(Dense(16, kernel_initializer='uniform', activation='relu'))
model.add(Dense(8,  kernel_initializer='uniform', activation='relu'))
model.add(Dense(1,  kernel_initializer='uniform', activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001),metrics=['accuracy'])  
history = model.fit(X,Y,epochs=150,batch_size=15, shuffle = False, verbose = 1)


I tried assigning class weights to balance the data out. Even manually deleting 0's in the data, but nothing seems to result in accurate predictions. Am I doing something wrong in the model, or is this simply data that cannot be utilized by machine learning?
Possible problems: 


You have classes 0 and 0.1. You want to make them 0 and 1 since the formula for the loss function 
$$-{(y\log(p) + (1 - y)\log(1 - p))}$$
expects $y$ to be 0 or 1.
shuffle = False why would you want to turn shuffling off? 
The classes are unbalanced. You have ~100 examples of class 1  and ~20000 total examples. So if you just predict class of everything to be 0 you will be right (20000-100)/20000 = 99.5% times. You can try these tricks and see if they help.