[TIL] 2021.02.24

hyelimchoi1223·2021년 2월 24일
1

[TIL] 2021년

목록 보기
19/44
post-thumbnail

✏️ 오늘 공부한 내용

  • Coursera-Machine Learning강의 : Normal Equation
  • MongoDB 설치 및 명령어 정리

Normal Equation

Normal Equation을 이용한 파이썬 코딩

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값으로 집 값을 예측해서 정확도까지 계산해보고 싶었는데 정확도 계산을 어떻게 해야 하는지 몰라서 다음에 그 내용에 대해서 공부하면 정확도 계산까지 코딩을 해보고 싶다.🤓

0개의 댓글