In [28]:
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
In [2]:
data = pd.read_csv('train.csv')
In [3]:
data.head()
Out[3]:
Activity D1 D2 D3 D4 D5 D6 D7 D8 D9 ... D1767 D1768 D1769 D1770 D1771 D1772 D1773 D1774 D1775 D1776
0 1 0.000000 0.497009 0.10 0.0 0.132956 0.678031 0.273166 0.585445 0.743663 ... 0 0 0 0 0 0 0 0 0 0
1 1 0.366667 0.606291 0.05 0.0 0.111209 0.803455 0.106105 0.411754 0.836582 ... 1 1 1 1 0 1 0 0 1 0
2 1 0.033300 0.480124 0.00 0.0 0.209791 0.610350 0.356453 0.517720 0.679051 ... 0 0 0 0 0 0 0 0 0 0
3 1 0.000000 0.538825 0.00 0.5 0.196344 0.724230 0.235606 0.288764 0.805110 ... 0 0 0 0 0 0 0 0 0 0
4 0 0.100000 0.517794 0.00 0.0 0.494734 0.781422 0.154361 0.303809 0.812646 ... 0 0 0 0 0 0 0 0 0 0

5 rows × 1777 columns

In [39]:
data.shape
Out[39]:
(3751, 1777)
In [4]:
X = data.iloc[:, 1:].values.astype('float')
y = data.iloc[:, 0].values.astype('uint')
In [25]:
tsne = TSNE()
tsne_transformed = tsne.fit_transform(X)

plt.scatter(tsne_transformed[:, 0], tsne_transformed[:, 1], c=y)
Out[25]:
<matplotlib.collections.PathCollection at 0x13f636c70>
In [31]:
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)
Out[31]:
<matplotlib.collections.PathCollection at 0x14373ff40>
In [32]:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
In [37]:
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)
Out[37]:
<matplotlib.collections.PathCollection at 0x143897880>
In [53]:
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'))
In [59]:
model.compile(optimizer='adam', metrics=['accuracy'], loss='binary_crossentropy')
In [60]:
model.fit(lda_X_train, y_train, epochs=5, batch_size=1)
Epoch 1/5
3000/3000 [==============================] - 3s 925us/step - loss: 0.2201 - accuracy: 0.9187
Epoch 2/5
3000/3000 [==============================] - 3s 912us/step - loss: 0.2109 - accuracy: 0.9203
Epoch 3/5
3000/3000 [==============================] - 3s 924us/step - loss: 0.2093 - accuracy: 0.9203
Epoch 4/5
3000/3000 [==============================] - 3s 1ms/step - loss: 0.2095 - accuracy: 0.9220
Epoch 5/5
3000/3000 [==============================] - 3s 1ms/step - loss: 0.2089 - accuracy: 0.9217
Out[60]:
<tensorflow.python.keras.callbacks.History at 0x143dd1370>
In [61]:
# lda = lda.transform(X_test)
model.evaluate(lda_X_test, y_test)
24/24 [==============================] - 0s 2ms/step - loss: 0.1896 - accuracy: 0.9281
Out[61]:
[0.18959972262382507, 0.9280958771705627]