빅데이터 전문가 되기

머신러닝 입문 본문

머신러닝

머신러닝 입문

지야소이 2023. 4. 19. 12:16

👀 머신러닝

- 새로운 데이터로 모델이 파악한 관계식을 적용하여 결과 예측

- 컴퓨터가 스스로 데이터 학습하며 문제를 해결하는 과정

- 머신러닝 프로세스

 : 문제 파악 -> 데이터 탐색 -> 데이터 전처리 -> 모델학습 -> 예측

 

- 지도 학습

  •  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