import pandas as pd
from tensorflow import keras
from sklearn.model_selection import train_test_split
from sklearn.manifold import TSNE
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import matplotlib.pyplot as plt
data = pd.read_csv('train.csv')
data.head()
data.shape
X = data.iloc[:, 1:].values.astype('float')
y = data.iloc[:, 0].values.astype('uint')
tsne = TSNE()
tsne_transformed = tsne.fit_transform(X)
plt.scatter(tsne_transformed[:, 0], tsne_transformed[:, 1], c=y)
lda = LinearDiscriminantAnalysis()
lda_transformed = lda.fit_transform(X, y)
plt.scatter([0 for i in range(lda_transformed.shape[0])], lda_transformed[:, 0], c = y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
lda = LinearDiscriminantAnalysis()
lda_X_train = lda.fit_transform(X_train, y_train)
lda_X_test = lda.transform(X_test)
plt.scatter([0 for i in range(lda_X_train.shape[0])], lda_X_train[:, 0], c = y_train)
model = keras.Sequential()
model.add(keras.layers.Dense(100, activation='relu', input_dim=X_train.shape[1]))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', metrics=['accuracy'], loss='binary_crossentropy')
model.fit(lda_X_train, y_train, epochs=5, batch_size=1)
# lda = lda.transform(X_test)
model.evaluate(lda_X_test, y_test)