41 lines
1.4 KiB
Python
41 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()
|
|
# Ein Outlier, blöder Arsch
|
|
# TODO: remove outlier from actual data, not just diagram
|
|
ax = sns.scatterplot(x=data['BuildingArea'], y=data['Price'])
|
|
ax.set(xlim=(0, 1000))
|
|
|
|
|
|
# %% 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
|