다음처럼 카테고리가 레이블링 되어 있는 데이터가 존재합니다.

새로운 데이터가 생겼을 때 내 주위에 몇개의 이웃을 확인해 볼 것인가를 결정한다. => K

새로운 데이터가 발생 시, Euclidean distance에 의해서, 가장 가까운 k개의 이웃을 택한다.

k 개의 이웃의 카테고리를 확인한다.

카테고리의 숫자가 많은 쪽으로, 새로운 데이터의 카테고리를 정한다.

라이브러리와 데이터를 불러오고, X와 y에 알맞게 대입한다.

데이터의 범위를 스케일러에 대입한 후 훈련 셋과 테스트 셋을 분리 후 모델링하고 검증한다.

당뇨병을 분류하는 모델을 만들거다.

컬럼 정보 :

Preg=no. of pregnancy

Plas=Plasma

Pres=blood pressure

skin=skin thickness

test=insulin test

mass=body mass

pedi=diabetes pedigree function

age=age

class=target(diabetes of not, 1:diabetic, 0:not diabetic)

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

그런데 몇몇 column에 0이 들어가는 것은 이상하다. 아마 nan값을 0으로 넣은 것 같다. 0을 replace함수로 nan값으로 바꾸고 처리하겠다.

NaN을 없애는 전략은 dropna함수로 Nan을 다른 값으로 채우는 전략은 fillna함수를 이용한다. 이예제에서는 평균값으로 채우겠다.

y를 설정하고, 스케일러에 대입후 데이터 분리하고 모델링 후 예측한다.

나이대별로 이메일을 클릭해서 열지 말지를 분류해 보자.

리니어 리그레션 식을, y 값을 시그모이드에 대입해서, 일차방정식으로 만들면 다음과 같아진다.

이제 우리는, 이를 가지고 두개의 클래스로 분류할 수 있다. ( 클릭을 한다, 안한다 두개로.)

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

나이와 연봉으로 분석해서, 물건을 구매할지 안할지를 분류하자!!

그 다음 피쳐스케일링을 하고 학습용과 테스트 용으로 데이터를 나눈다.

분류의 문제이므로 로지스틱 리그레션으로 모델링하고 성능평가 한다.

Confusion Matrix를 통해 결과 분석을 해보자.

accuracy_score(y_test, y_pred)로 정확도를 구하고 classification_report(y_test, y_pred)로 위의 표처럼 출력한다.

경력과 연봉의 관계를 분석하여, 경력이 주어졌을때 연봉을 예측하려 한다. 데이터를 살펴보니 아래와 같은 그래프로 나왔다고 가정했을 때,

아래 그림처럼, 해당 분포를 만족하는 직선을 찾으려 하는 것이 목표다

즉 b0,b1의 값을 찾아 가는 과정을 학습이라고 부른다!

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

X와 y를 설정하고 카테고리컬 문자열 데이터 fit_transform을 통해 원핫인코딩을 해준다.

 X, y 준비 끝났으니 학습용과 테스트용으로 데이터 분리하고 모델링한후 mse를 구한다.

아래는 신규데이터 예측 방법이다. np.array를 reshape 하고 인코더의 transform을 통해 데이터 전처리를 하고 예측한다.

import the dataset

데이터

Age 는 27 ~ 50 Salary 는 40k ~ 90k

Feature Scaling 2가지 방법

  • 표준화 : 평균을 기준으로 얼마나 떨어져 있느냐? 같은 기준으로 만드는 방법, 음수도 존재, 데이터의 최대최소값 모를때 사용.
  • 정규화 : 0 ~ 1 사이로 맞추는 것. 데이터의 위치 비교가 가능, 데이터의 최대최소값 알떄 사용

표준화, 정규화

standardScaler() ,MinMaxScaler() 의 객체를 생성한 후 fit_transform()에 원하는 데이터를 넣으면 된다.

 

데이터를 확인해 보니, 컴퓨터가 이해할 수 있도록 바꿔야 한다.

컴퓨터는 숫자로 처리한다.

숫자가 아닌 데이터 중에서, 카테고리로 판단되는 데이터는, 숫자로 바꿔줄 수 있다.

encoding

import the dataset

데이터

NaN 처리

NaN

X, Y 데이터 분리 : 즉 학습할 변수와 레이블링 변수로 분리

X, y

데이터를 확인해 보니, 컴퓨터가 이해할 수 있도록 바꿔야 한다.

컴퓨터는 숫자로 처리한다. 숫자가 아닌 데이터 중에서, 카테고리로 판단되는 데이터는, 숫자로 바꿔줄 수 있다.

encoding

카테고리컬 데이터란 데이터가 몇가지 범주에 속해있다는 데이터다. 먼저 데이터의 개수를 DataFrame.isna().sum()이나

DataFrame.nunique()를 통해 데이터 개수를 파악하고, DataFrame.unique()를 통해 데이터의 범주를 파악한다.

예를 들면 요일은 7개의 범주로 이루어진 데이터이다.

+ Recent posts