In [1]:
import keras
import numpy as np
import pandas as pd
from keras.layers import Input, Dense
from keras.models import Model, Sequential
from sklearn.preprocessing import StandardScaler, MinMaxScaler, Normalizer
In [2]:
df = pd.read_csv("../housing-conditions-in-copenhagen/data.csv",sep="\s+")
In [3]:
df.head()
Out[3]:
In [4]:
df.describe()
Out[4]:
In [5]:
df_new = pd.concat([df,pd.get_dummies(df["housing"],prefix="housing")],axis=1).drop(["housing"],axis=1)
df_new = pd.concat([df_new,pd.get_dummies(df["influence"],prefix="influence")],axis=1).drop(["influence"],axis=1)
df_new = pd.concat([df_new,pd.get_dummies(df["satisfaction"],prefix="satisfaction")],axis=1).drop(["satisfaction"],axis=1)
In [6]:
df_new["contact_with_neighbours"] = df_new["contact_with_neighbours"].map(lambda v: 0 if v == 1 else 1)
df_new = df_new.drop(["n"])
In [7]:
df_new.head()
Out[7]:
In [89]:
y = df_new["contact_with_neighbours"].values.reshape(-1,1)
X = df_new.drop(["contact_with_neighbours"], axis=1).values
In [90]:
# sc = StandardScaler()
# X = sc.fit_transform(X)
In [91]:
y.shape, X.shape
Out[91]:
In [92]:
indices = np.arange(72)
np.random.shuffle(indices)
num_validation_samples = int(0.2*72)
y = y[indices]
X = X[indices]
X_train = X[:-num_validation_samples]
y_train = y[:-num_validation_samples]
X_val = X[-num_validation_samples:]
y_val = y[-num_validation_samples:]
In [93]:
X_train.shape,y_train.shape,X_val.shape, y_val.shape
Out[93]:
In [99]:
from keras.regularizers import l1_l2
reg = l1_l2(l1=0.01, l2=0.01)
model = Sequential()
model.add(Dense(1,
init='glorot_uniform',
activation='sigmoid',
input_dim=X.shape[1]))
rmsprop = keras.optimizers.RMSprop(lr=0.01)# y = sc.fit_transform(y)
sgd = keras.optimizers.SGD(lr=0.1)
model.compile(optimizer=rmsprop, loss='binary_crossentropy')
early_stopping = keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=5, verbose=0, mode='auto')
model.fit(X_train,
y_train,
epochs=30,
validation_data=(X_val, y_val),
callbacks=[early_stopping])
Out[99]:
In [ ]: