Kaggle의 House Prices 데이터를 가지고 theta를 구했다.
features는 LotArea(크기), BearoomAbvGr(침실개수), YearBuilt(지어진 년도)이다. 년도를 가지고 건물이 나이를 계산했다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
train = pd.DataFrame(pd.read_csv(
"ML-Study/LinearRegression/HousePrices/train.csv"), columns=["x0", "LotArea", "BedroomAbvGr", "YearBuilt", "SalePrice"])
train["YearBuilt"] = 2021-train["YearBuilt"]
train["x0"] = 1
# x0 LotArea BedroomAbvGr YearBuilt SalePrice
# 0 1 8450 3 18 208500
# 1 1 9600 3 45 181500
# 2 1 11250 3 20 223500
# 3 1 9550 3 106 140000
# 4 1 14260 4 21 250000
# ... .. ... ... ... ...
# 1455 1 7917 3 22 175000
# 1456 1 13175 3 43 210000
# 1457 1 9042 4 80 266500
# 1458 1 9717 2 71 142125
# 1459 1 9937 3 56 147500
X = train[["x0", "LotArea", "BedroomAbvGr", "YearBuilt"]].values
# [[ 1 8450 3 18]
# [ 1 9600 3 45]
# [ 1 11250 3 20]
# ...
# [ 1 9042 4 80]
# [ 1 9717 2 71]
# [ 1 9937 3 56]]
Y = train[["SalePrice"]].values
# [[208500]
# [181500]
# [223500]
# ...
# [266500]
# [142125]
# [147500]]
theta = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X)), X.T), Y)
print(theta)
# [[ 1.81257459e+05]
# [ 1.87045321e+00]
# [ 1.73028518e+04]
# [-1.39959760e+03]]
numpy 행렬의 곱셈을 '*'로 하면 제대로 안되는 것인가... 분명 사이즈도 맞아서 되겠거니 했는데 에러가 나서 dot 함수를 이용해서 해결을 했다. theta값으로 집 값을 예측해서 정확도까지 계산해보고 싶었는데 정확도 계산을 어떻게 해야 하는지 몰라서 다음에 그 내용에 대해서 공부하면 정확도 계산까지 코딩을 해보고 싶다.🤓