In [1]:
import pandas as pd
import numpy as np
import util
import scipy.stats as scs
%matplotlib inline
In [2]:
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data'
cols =["CRIM","ZN","INDUS","CHAS","NOX","RM","AGE","DIS","RAD","TAX","PTRATIO","B","LSTAT","TGT"]
boston = pd.read_csv(url, sep=" ", skipinitialspace=True, header=None, names=cols, index_col=False) # Dataframe
dateDownloaded = !date
dateDownloaded
Out[2]:
In [3]:
np.shape(boston)
Out[3]:
In [4]:
aligned_data = util.align(boston)
In [5]:
aligned_data.head()
Out[5]:
In [ ]:
In [6]:
Qi, Ai, Sigma = util.pca(boston)
Eigenwerte der Kovarianzmatrix Quadrieren -> somit Varianzen der Hauptkomponenten
In [7]:
Var = Sigma**2
In [8]:
Var_prop = 1/sum(Var) * Var * 100
In [9]:
Var_cum = Var_prop.cumsum()
In [10]:
Var_error = 100 - Var_cum
In [11]:
Var_dict = {"Varianz" : Var, "erklärte Varianz" : Var_prop, "kumulierte erklärte Varianz" : Var_cum, "Fehler" : Var_error}
pd.DataFrame(data=Var_dict, index=["a{}".format(s) for s in range(0,14)])
Out[11]:
Für einen 25 Prozentigen Fehler kann die erste Hauptkomponente verwendet werden. Für 10% und 5% Fehler können die ersten beiden Hauptkomponenten genommen werden.
Korrelationskoeffizienten der Hauptkomponenten mit den ursprünglichen Daten
In [12]:
util.pca_correlation(boston, Ai, 3).T
Out[12]:
In [31]:
# median des Hauspreises
median_tgt = np.median(boston['TGT'])
# Maskierung mit Daten die unter dem median liegen in der Spalte TGT
smaller_tgt = boston['TGT'] < median_tgt
# ersten beiden Hauptkomponenten nicht zentriert
plot = pd.DataFrame(np.dot(boston, Qi))[[0,1]] # projezierte date
plot_smaller = plot[smaller_tgt]
plot_greater = plot[~smaller_tgt]
In [36]:
# ploten zweier datensätze.
#siehe: http://stackoverflow.com/questions/13872533/plot-different-dataframes-in-the-same-figure
ax = plot_smaller.plot(x=0, y=1, kind='scatter', color='blue', label='TGT < median')
plot_greater.plot(x=0, y=1, kind='scatter', color='yellow', label='TGT > median', ax=ax)
Out[36]:
An den ersten beiden Hauptkomponenten kann die höhe des Hauspreises nicht vorhergesagt werden.
In [ ]: