In [1]:
from __future__ import division
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import pysal as ps
import geopandas as gpd
from geopandas import GeoSeries, GeoDataFrame
from shapely.geometry import Point
from sklearn import neighbors
sns.set(style="white")
sns.set_context({"figure.figsize": (24, 10)})
pd.options.display.float_format = '{:.2f}'.format
abb_link = './tfg/dbases/development3.csv'
zc_link = './tfg/mapas/barrios_area.shp'
muestra = pd.read_csv(abb_link)
barrios = gpd.read_file(zc_link)
geometry = [Point(xy) for xy in zip(muestra['lon'], muestra['lat'])]
crs = {'init': 'epsg:4326'}
geo_df = GeoDataFrame(muestra, crs=crs, geometry=geometry)
db = gpd.sjoin(geo_df, barrios, how="inner", op='intersects')
metro = pd.read_csv('./tfg/dbases/distance_matrix_metro.csv')
db = db.join(metro.set_index('InputID'),
on='id', how='left')
db = db.rename(index=str, columns={"DESBDT": "subdistrict_f", "Distance": "metro_distance", "NUMPOINTS": "metro_number"})
db = pd.DataFrame(db)
db['floor']=db['floor'].replace(['Ground floor', 'Mezzanine', 'Semi-basement', 'Basement', 'ground', 'Floor -2', 'Floor -1'], 0,regex=True)
#db.replace(u'\xe', 'A')
db['floor'] = pd.to_numeric(db['floor'])
In [68]:
inputs = []
for index, row in db.iterrows():
inputs.append([ row["pricems"],
row["rooms"],
row["floor"],
row["air_conditioning"],
row["wardrobes"],
row["lift"],
row["exterior"],
row["garden"],
row["terrace"],
row["storeroom"],
row["garage"],
row["cl"],
row["metro_number"]])
outputs = []
for index, row in db.iterrows():
outputs.append(row["new_dev"])
In [ ]:
In [69]:
X = inputs
y = outputs
In [70]:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)
In [71]:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
Out[71]:
In [72]:
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
In [73]:
from sklearn.neural_network import MLPClassifier
In [93]:
mlp = MLPClassifier(hidden_layer_sizes=(13,13,13))
In [94]:
mlp.fit(X_train,y_train)
Out[94]:
In [95]:
predictions = mlp.predict(X_test)
In [96]:
from sklearn.metrics import classification_report,confusion_matrix
print(confusion_matrix(y_test,predictions))
In [97]:
print(classification_report(y_test,predictions))
In [78]:
print(classification_report(y_test,predictions))
In [82]:
print(classification_report(y_test,predictions))
In [87]:
print(classification_report(y_test,predictions))
In [ ]: