빅데이터 전문가 되기
머신러닝 입문 본문
👀 머신러닝?
- 새로운 데이터로 모델이 파악한 관계식을 적용하여 결과 예측
- 컴퓨터가 스스로 데이터 학습하며 문제를 해결하는 과정
- 머신러닝 프로세스
: 문제 파악 -> 데이터 탐색 -> 데이터 전처리 -> 모델학습 -> 예측
- 지도 학습
- Y=aX+b (x: 설명변수, y: 목표변수, 회귀/분류)
- X와 Y 데이터에 대해 알고 있으며, 관계식을 알아내는 머신러닝 알고리즘
- 비지도 학습
- Y가 주어지지 않고 X 데이터만 제공
- Y를 예측하는 것이 목표가 아니라 X 데이터 사이에 존재하는 패턴, 규칙 찾는 것이 목표
- 군집 분석
😄 일차 함수 관계식 찾기
1. 문제 파악
X = [-3, 31, -11, 4, 0, 22, -2, -5, -25, -14]
Y = [-2, 32, -10, 5, 1, 23, -1, -4, -24, -13]
print(X)
print(Y)
> [-3, 31, -11, 4, 0, 22, -2, -5, -25, -14]
[-2, 32, -10, 5, 1, 23, -1, -4, -24, -13]
2. 데이터 탐색
# X, Y 변수의 관계식 그래프
import matplotlib.pyplot as plt
plt.plot(X,Y)
plt.show()
3. 데이터 전처리
import pandas as pd
df = pd.DataFrame({"X":X, "Y":Y})
print(df.shape) # shape : 10행 2열
print(df.head())
> (10, 2)
X Y
0 -3 -2
1 31 32
2 -11 -10
3 4 5
4 0 1
# train data 준비
train_features = ["X"]
target_cols = ["Y"]
X_train = df.loc[:, train_features]
Y_train = df.loc[:, target_cols]
print(X_train.shape, Y_train.shape)
> (10, 1) (10, 1)
4. 모델 학습
# LinearRegression 함수 : 선형회귀 모델을 구현
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x_train, y_train)
lr.coef_, lr.intercept_
> (array([[1.]]), array([1.]))
# x 변수의 회귀계수 : 1 상수항 : 1
# y = x + 1
print("기울기:", lr.coef_[0][0])
print("y절편:", lr.intercept_[0])
# -> 2차원 구조이므로 lr.coef_[0][0] 처럼 두번 반복하여 추출
> 기울기: 0.9999999999999999
y절편: 0.9999999999999999
5. 예측
import numpy as np
x_new = np.array(11).reshape(1,1) # 숫자 11: 배열로 변환, reshape: 1행 1열
lr.predict(x_new)
> /usr/local/lib/python3.9/dist-packages/sklearn/base.py:439: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names
warnings.warn(
array([[12.]])
x_test = np.arange(11,16,1).reshape(-1,1)
# np.arrange(11,16,1) : 11부터 15까지 정수를 1 간격 두고 1차원 배열
# reshape(-1,1) : 2차원 구조로 변환 (-1: 크기가 정해지지 않았다.)
x_test
# 5개의 원소므로 열은 1개, 행은 5개의 2차원 배열로 결정
> array([[11],
[12],
[13],
[14],
[15]])
# 예측값 확인
y_pred = lr.predict(x_test)
y_pred
> /usr/local/lib/python3.9/dist-packages/sklearn/base.py:439: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names
warnings.warn(
array([[12.],
[13.],
[14.],
[15.],
[16.]])
'머신러닝' 카테고리의 다른 글
회귀분석 (Regression analysis) (0) | 2023.05.25 |
---|---|
머신러닝 - LightGBM (0) | 2023.04.19 |
더미변수 만들기 (0) | 2023.04.19 |
머신러닝 Data Leakage (0) | 2023.04.18 |
인공지능 & 머신러닝 자료 모음 (0) | 2023.04.13 |
Comments