ki-dhbw/tasks/01-melbourne.py

40 lines
1.4 KiB
Python

from telnetlib import BM
# %% Imports
# imports überall im Code möglich, aber die Konvention ist alle benötigten import statements
# gleich zu Beginn einer Datei zu machen
# numpy ist ein Python-Modul für Numerik, das sowohl Funktionalität als auch Effizienz bietet
import numpy as np
# pandas ist sehr gut zum Arbeiten mit tabellarischen Daten, egal ob csv, xls oder xlsx
import pandas as pd
# plotting settings
pd.plotting.register_matplotlib_converters()
# matplotlib ist ein sehr umfangreiches Modul zum Erstellen von Visualisierungen/Plots
import matplotlib.pyplot as plt
%matplotlib inline
# seaborn erleichtert das Erstellen von oft verwendeten Plot-Typen;
# es basiert selbst auf matplotlib und man kann beides kombinieren
# eine schöne Einführung in Seaborn: https://www.kaggle.com/learn/data-visualization
import seaborn as sns
# %% Data
data = pd.read_csv("../data/melb_data.csv").dropna()
data = data[(data["BuildingArea"] < 1000) ]
ax = sns.scatterplot(x=data['BuildingArea'], y=data['Price'])
# ax.set(xlim=(0, 1000)) # brauch ich nicht mehr wenn ich die outlier aus den daten rausschmeiße
# %% linear regression
X = []
Y = []
for _, row in data.iterrows():
X.append([1]+ [row['BuildingArea']])
Y.append(row['Price'])
X = np.array(X)
Y = np.array(Y)
# aber das ist noch nicht die fertige eingabe, da fehlt die konstante 1!
# und mit Y ist auch irgendwas :(
w_ana = np.linalg.solve(X.T @ X , X.T @ Y)
w_ana