오늘보다 더 나은 내일의 나에게_

비전공자의 IoT 국비 교육 수강일지 Day_80 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_80

chan_96 2022. 4. 12. 18:04
728x90

머신러닝

다양한 평가지표

precision(정밀도) : 모델이 해당 클래스로 예측한것에 대한 정확도

recall(재현율) : 실제 해당 클래스에대해서 맞출 비율

f1-score

ROC

 

정밀도, 재현율, f1-score

sklearn.metrics import classification_report

print(classification_report(y_test,pre2))

머신러닝(Machine Learning) 종류

- 지도학습(Supervised Learning)

- 비지도학습(Unsupervised Learning)

- 강화학습(Reinforcement Learning)

 

지도학습

- 데이터에 대한 Label(명시적인 답)이 주어진 상태에서 컴퓨터를 학습시키는 방법

- 분류(Classification)와 회귀(Regression)로 나뉘어진다.

분류(Classification)

- 미리 정의된 여러 클래스 레이블 중 하나를 예측하는 것

- 속성 값을 입력, 클래스 값을 출력으로 하는 모델

- 붓꽃(iris)의 세 품종 중 하나로 분류, 암 분류 등.

- 이진분류, 다중 분류 등이 있다.

 

 

회귀(Resgression)

- 연속적인 숫자를 예측하는 것

- 속성 값을 입력, 연속적인 실수 값을 출력으로 하는 모델

- 어떤 사람의 교육수준, 나이, 주거지를 바탕으로 연간 소득 예측

예측 값의 미묘한 차이가 크게 중요하지 않다.

 

비지도 학습(Unsupervised Learning)

- 데이터에 대한 Label(명시적인 답)이 없는 상태에서 컴퓨터를 학습시키는 방법

- 데이터의 숨겨진 특징, 구조, 패턴을 파악하는데 사용

- 데이터를 비슷한 특성끼리 묶는 클러스트링(Clustering)과 차원축소(Dimensionality Reduction)등이 있다.

 

강화 학습(Reinforcement Learning)

- 지도학습과 비슷하지만 완전한 답을 제공하지 않는 특징

- 기계는 더 많은 보상을 얻을 수 있는 방향으로 행동을 학습

- 주로 게임이나 로봇을 학습시키는데 많이 사용

 

 

머신러닝이 유용한 분야

- 기존 솔루션으로 많은 수동 조정과 규칙이 필요한 문제

- 전통적인 방식으로는 전혀 해결 방법이 없는 복잡한 문제

- 새로운 데이터에 적응해야하는 유동적인 환경

- 대량의 데이터에서 통찰을 얻어야 하는 문제

주택가격 데이터 예측하기

1. 모델 정의

# 회귀모델
from sklearn.linear_model import LinearRegression

house_model = LinearRegression()


Linear Model(선형 모델)

- 입력 특성에 대한 선형 함수를 만들어 예측을 수행
- 다양한 선형 모델이 존재
- 분류와 회구에 모두 사용 가능

2. 모델학습

1. 데이터 로딩
# data폴더로 이동하고 melb_data.csv 파일을 pandas로 열어 상위 5개를 살펴보자.
import pandas as pd

# 작업 경로 변경
%cd ./drive/MyDrive/Colab\ Notebooks/22.04.11\ 머신러닝(교육실D)

# melb_data.csv 불러오기
house_data = pd.read_csv('./data/melb_data.csv')
house_data.head()​
컬럼 정보


데이터프레임 요약해서 출력
house_data.info() # 데이터 갯수, 결측치 유무, 컬럼이름, 데이터 타입

결측치가 없고, 숫자로 구성된 데이터중에 일부를 선택해서 사용
X = house_data[['Rooms','Distance','Bathroom','Landsize','Lattitude','Longtitude']]
y = house_data['Price']

X.shape, y.shape
# => ((13580, 6), (13580,))

훈련용과 평가용으로 데이터를 분리해보자. 비율은 8:2, random_state=412
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=412)
X_train.head()

X_train.shape, y_train.shape
# => ((10864, 6), (10864,))
X_test.shape,y_test.shape
# => ((2716, 6), (2716,))

지도학습
house_model.fit(X_train,y_train) # 지도학습

# 선형모델이 입력특성에 대해서 학습한 가중치
house_model.coef_
#array([ 3.19904084e+05, -4.24902739e+04,  1.86938191e+05,  4.04283314e+00,
#       -1.63108473e+06,  8.87040171e+05])

선형모델이 입력특성에 대해서 학습한 가중치
#가중치
house_model.coef_
#array([ 3.19904084e+05, -4.24902739e+04,  1.86938191e+05,  4.04283314e+00,
#       -1.63108473e+06,  8.87040171e+05])

#절편
house_model.intercept_
#-190009122.20245534

3. 모델예측

pre = house_data.predict(X_test)​


4. 모델평가

  • 집 가격은 데이터의 형태가 수치형이기 때문에 정답인지 아닌지 명확하지않다.(개인 기준에따라서 달라질 수 있음)
  • 수치형 데이터는 예측값과 실제값의 차이인 오차를 이용해서 모델을 평가
평균 절대값 오차
from sklearn.metrics import mean_absolute_error
house_mae = mean_absolute_error(y_test,pre) # 실제값, 예측값
house_mae
#=> 321470.49957908835

안드로이드

ConstraintLayout

배치 결과

마법봉(Inter Constraints)
마법봉 클릭후 모습


여백 조정 가능

상단 여백 준 후 모습

요소 위치 조정 가능
=> 막대 이동 후 더블클릭시 처음상태로 돌아감



 

실습

실습

마우스 오른쪽 클릭 -> Chains -> Create Horizontal Chain

클릭 후 모습
상하 위치 정렬

spread inside 설정

설정 후 모습
상하 위치 정렬


Horizontal Chain 설정 후 packed 설정

설정 후 상하 정렬


chain weighted 설정


Vertical Chain 설정

설정 후 모습
완성 모습

 

가이드라인

버튼 배경색

버튼 모서리 둥글게

버튼 내부 영역 지정

 

실습




상단 바 없애기
values폴더 -> themes -> themes.xml
=> windowNoTitle _ true 설정

상단 상태표시줄 색상변경 => colorPrimaryVariant 색 변경
728x90
Comments