머신러닝(기계학습)은 컴퓨터가 데이터를 보고 스스로 학습해서 규칙이나 패턴을 찾아내는 기술.
사람이 일일이 규칙을 프로그래밍하지 않아도,
컴퓨터가 데이터를 이용해 스스로 규칙을 찾고, 새로운 데이터를 기반으로 예측하거나 결정을 내릴 수 있음.
데이터분석과의 차이 ?
데이터분석은 과거를 설명, 머신러닝은 미래를 예측
'학습'이란 ,
학습은 컴퓨터가 데이터를 분석해 규칙, 패턴, 또는 모델을 만들어내는 과정을 뜻함.
x와 y간의 규칙찾기 지도학습으로 문제와 답을 모두 가지고 학습함.
답의 종류는 두가지가 있음.
답이 없는 데이터를 가지고 학습함.
분류작업(클러스터링)
답찾기 아니고 데이터정리의 개념.
복잡한 데이터를 차원축소하여 간결하게 표현.
비지도학습의 클러스터링와 지도학습의 분류의 다른점
- 비지도학습 : 답이 없는 데이터 학습
- 지도학습 : 답이 있는 데이터 학습
여러개의 머신러닝 모델을 결합하여 하나의 강력한 모델을 만드는 것
경험을 통해 좋은 결과가 있으면 보상.
더 나은 방법을 찾는 방법
로봇제어나 장기, 바둑
데이터로부터 패턴이나 규칙을 찾아 실무에 적용할 수 있는 insight를 발견하는 방법론.
target(y)와 feature(x)로 나누어서 가공함.
feature selection (필요한 특질만 골라서 선택함)
missing value (결측치 처리)
outlier (이상치 처리)
컴퓨터가 문자를 이해할 수 없기에, 문자는 숫자로 변환
y값 확인(골드멤버 컬럼에 어떤 값이 몇개 있는지 확인)
df['gold_member'].value_count()
df['target'] = df['gold_member'].replace({'vip':1,'normal':2})
#숫자로 변환
x데이터 숫자로 바꿔주기
x = pd.get_dummies(df.drop(columns=['target','gold_member'))
-> one-hot encoding
-> get_dummies로 컬럼을 모두 숫자로 바꿈.
x에 필요없는 y값은 drop
목표변수와 설명변수를 분류 -> 학습할 자료 세팅
y = df['target']
(원래는 스케일링, 매개변수 튜닝등이 들어가야 하지만 일단은 간단하게 진행)
사이킷런 중 train_test_split을 불러옴(데이터 분할)
보통 일반적으로 train(70%) test(30%)로 나눔
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.3, random_state=2020)
이후 데이터의 구조가 일치하는지 꼭 확인할 것
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)
model을 트리알고리즘을 돌리고, 핏을 맞춰서 수식 도출->예측모델을 만듦
model = DecisionTreeClassifier()
model.fit(x_train, y_train)
두 이유로 train데이터와 test데이터 모두 평가를 돌려봐야 함
y_train_pred = model.predict(x_train)
y_test_pred = model.predict(x_test)
print(classrication_report(y_train, y_train_pred)
print(classrication_report(y_test, y_test_pred)
학습데이터가 잘 못 되어있을 경우
알고리즘 선택이 잘 못 되어있었을 경우