반응형

Day8부터는 파이썬코스 다음인 ML과정으로 진입한다.

Today's Assignment - day 8

오늘도 즐겁게 공부해보자.

Introduction

machine_learning model의 작동 방식과 사용 방법에 대한 개요부터 살펴보자.
이전에 통계 모델링이나 machine_learning을 해본 적이 있다면, 너무 쉽게 느껴질 수도 있다.
하지만, 뒤이어 더 복잡한 모델을 제작 할 것이니 집중하자.

이 코스에서는 다음 시나리오에 따른 모델을 제작한다.

너의 사촌이 부동산 투기로 수백만 달러를 벌었다.
그는 데이터 과학에 대한 너의 관심 때문에 너와 비즈니스 파트너가 되겠다고 제안했다.
그는 돈을 공금할 것이고, 너는 다양한 주택의 가치를 예측하는 모델을 공급할 것이다.

사촌에게 과거에 부동산 가치를 어떻게 예측했는지를 물으면, 사촌은 직감이라고 말한다.
그러나 더 많은 질문을 하면, 사촌은 그가 과거에 본 주택의 가격 패턴을 사용하여 새 주택에 대한 예측을 했다는 사실이 밝혀진다.

machine_learning은 동일한 방식으로 작동한다. 의사결정 나무 라는 모델부터 시작하겠다.
이것보다 더 정확한 예측을 제공하는 모델들도 있지만, 의사결정 나무는 데이터 과학에서 최고의 모델을 구성하기위해서는 기본적으로 알아야 한다.

가장 간단한 의사결정 나무부터 시작하겠다.


집을 두종류로만 나눈다. 
고려대상이 되는 주택의 예상 가격은 동일한 범주에 속하는 주택의 과거 평균 가격이다.

우리는 데이터를 사용하여 집을 두 그룹으로 나눌 방법을 결정하고, 각 그룹의 예상 가격을 결정할 수 있다.
데이터에서 패턴을 캡처하는 이 단계를 모델 fitting 또는 training이라고 한다. 
모델을 fitting시키는 데 사용되는 데이터를 trainig data라고 한다.

모델이 피팅되면 새 데이터에(tset data) 적용하여 추가 주택 가격을 예측할 수 있다.

Improving the Decision Tree

다음 두가지 의사결정 나무 중에 부동산 training 데이터를 피팅한 결과로 나올 가능성이 더 큰것은 무엇인가?

왼쪽에 있는 의사결정 나무가 좀더 합리적일 것이다. 왜냐하면 침실이 더 많은 주택이 침실이 적은 주택보다 더 높은 가격에 판매되는 경향이 있다는 현실을 포착하기 때문이다. 
이 모델의 가장 큰 단점은, 욕실수, 부지 크기, 위치 등과 같이 집 가격에 영향을 미치는 대부분의 요소를 반영하지 못한다는 것이다.

더 많은 요소를 사용할 수 있다.  이것을 deeper trees라고 한다.  
각 주택 부지의 전체 크기도 고려하는 의사결정 나무는 다음과 같다.

의사결정 나무를 추적해서 집의 가격을 예측하고, 해당 집의 특성에 해당하는 경로를 선택한다.
해당 주택의 예상가격은 의사결정 나무 아래에 있다. 
우리가 예측을 하는 아래쪽의 지점을 leaf라고 한다.

leaf의 split 그리고 values는 데이터에 의해 결정 되므로 작업할 데이터를 확인해야 한다.


Using Pandas to Get Familiar With Your Data

machine_learning 프로젝트의 첫 번째 단계는 데이터에 익숙해 지는것이다. 
이를 위해 Pandas 라이브러리를 사용한다.
Pandas는 데이터사이언티스트가 데이터를 탐색하고 조작하는 데 사용하는 기본 도구이다.
대부분의 사람들은 코드에서 Pandas를 pandas as pd 라는 것을 이용하여 pd로 축약한다.

import pandas as pd

Pandas 라이브러리의 가장 중요한 부분은 DataFrame이다. 
DataFrame은 table로 생각할 수 있는 데이터 유형을 보유한다.
이것은 Excel의 sheet또는 SQL 데이터베이스의 table과 유사하다.

Pandas에는 이러한 유형의 데이터로 수행하려는 대부분의 작업에 대한 강력한 기능이 있다.

예를 들어 호주 멜버른의 주택 가격에 대한 데이터를 살펴보겠다.
실습에서는 아이오와에 있는 집값이 있는 새 데이터셋에 동일한 프로세스를 적용한다.

예제(Melbourne)데이터는 파일경로 "../input/melbourne-housing-snapshot/melb_data.csv"에 있다.
다음 명령을 사용하여 데이터를 로드하고 탐색한다.

# save filepath to variable for easier access
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
# read the data and store data in DataFrame titled melbourne_data
melbourne_data = pd.read_csv(melbourne_file_path) 
# print a summary of the data in Melbourne data
melbourne_data.describe()



Interpreting Data Description

결과에는 원래 데이터 집합의 각 열(column)에 대해 8개의 숫자가 표시된다. 
첫번째 숫자인 count는 결측값이 없는 행(row)의 수를 나타낸다.

결측치는 여러가지 이유로 인해 발생한다. 예를들어, 침실이 1개인 집을 조사할 때는 침실2의 크기는 수집되지 않는다. 

두 번째 값은 평균이다. 그아래 std(standard deviation) 는 표준편차이며, 값이 얼마나 퍼져있는지를 나타낸다.

최소값, 25%, 50%, 75% 및 최대값을 해석하려면, 각 열(column)을 가장 낮은 값에서 가장 높은 값으로 정렬한다고 가정해보자. 첫 번째(가장 작은)값은 최소값이다. 해당 데이터는 50%, 75%구간의 rooms갯수가 유사하게 정의되있다.

그러면 이제 실제로 exercise 수행해볼 차례다!

exercise를 정리한 코드를 공유한다!
https://github.com/mgkim-developer/30-Days-of-ML-with-Kaggle/blob/main/30-days-of-ml-day-8.ipynb

 

GitHub - mgkim-developer/30-Days-of-ML-with-Kaggle: 30 Days of ML with Kaggle

30 Days of ML with Kaggle. Contribute to mgkim-developer/30-Days-of-ML-with-Kaggle development by creating an account on GitHub.

github.com

 

반응형