자, 처음에 배워야할 개념은 바로 선형 회귀 모델입니다.
선형 회귀 모델이란, 머닝 러신에서 가장 기본적인 알고리즘이며, 유저가 입력 값(독립 변수)와, 그 후에 출력되는 출력값(종족 변수)의 간의 선형적인 관계를 찾는것을, 선형 회귀 모델이라고 생각합니다.
잠깐! 알아야할 개념이 좀 있습니다.
1. 선형적인 관계: 주로 데이터를 분석할 때 쓰이는 개념으로, 두 변수 사이의 관계가 직선으로 표현될 수 있다는 것을 의미합니다. 쉽게 말해서, 한 변수가 증가할 때 다른 변수도 일정 비율로 증가하거나 감소한다면 이 두 변수 사이에 선형적인 관계가 있다고 말할 수 있다. 수학에서 Y=aX+b로 대표적으로 식을 표현할 수 있습니다. |
2. 알고리즘: 여기서 말하는 알고리즘은 X튜브에서의 알고리즘이 아닙니다. 여기서 말하는 알고리즘이란, 주어진 문제를 해결하기 위해 코드 안에, 혹은 주어진 식에서 정해진 단계와 규칙에 따라 실행되는 일련의 절차나 방법을 말합니다. 위에 선형적인 관계의 식으로 설명을 하자면, X가 1 증가하면, Y는 2, X가 2일때, Y는 4라고 표현을 하면, 알고리즘은 Y=aX+b의 식을 사용해a와 b의 값을 찾아, 특정한 값이 X에 할당되었을 때, Y의 값을 자동으로 찾아주는 개념이라 생각하면 됩니다. |
자, 이제 러닝 머신을 쓸려면
1. Numpy |
2. Pandas |
3. scikit-learn |
이렇게 3개의 필수 라이브러리가 있습니다. 이 중 가장 중요한것은 바로 scikit-learn입니다.
scikit-learn은 AI가 데이터를 학습하고, 처리하는 알고리즘을 지원합니다.
1. 모델 선택 (Model Selection)
2. 데이터 전처리 (Preprocessing)
3. 학습 및 예측 (Training and Prediction)
4. 성능 평가 (Model Evaluation)
실습
먼저, 여러개의 프로세스를 기준으로 합니다.
1. 데이터 수집
2. 모델 선택
3. 모델 학습
4. 모델 평가
1. 데이터 수집
import pandas as pd
import numpy as np
data = pd.DataFrame({
'운전 시간' : [1,2,3,4,5,6],
'숙련 점수' : [15,30,45,60,75,90]
})
data
이렇게 되면, 먼저 컴퓨터에 데이터 프레임을 넘깁니다. 그러면 이때부터 컴퓨터가 데이터 프레임의 규칙을 읽기 시작합니다.
2. 기초 단계: 데이터 전처리
X = data[['운전 시간']].values
y= data['숙련 점수'].values
이제 이 부분에서 데이터의 결측치, 전처리등의 작업을 할 수 있습니다. 하지만 간단한 코드이기에, NaN이나, Na는 존재하지 않습니다.
하지만 '운전 시간'에 []을 두번 씌우는 이유가 뭘까요? pandas DataFrame에서 특정 열을 선택할 때, 그 열을 DataFrame 형식으로 유지하려는 경우입니다.
[]한번 -> Serise 객체로 반환합니다. DataFrame의 한 열만 가져올 때 이 방식으로 선택하면 1차원 배열처럼 작동하는 pandas의 Series를 얻게 됩니다.
[]두번 -> DataFrame 객체로 반환합니다.
그러면 이제, values가 뭔지 알려드리겠습니다. 여기서 쓰이는 .values는 pandas DataFrame이나 Series 객체를 NumPy 배열로 변환하는 데 사용되는 속성입니다.
3. 선형 회귀 모델 구현: scikit-learn 사용(모델 선택)
from sklearn.linear_model import LinearRegression
# 선형 회귀 모델 생성
model = LinearRegression()
# 모델 학습
model.fit(X, y)
여기서는 sklearn.liner_model이라는 모듈에서 LinearRegression이라는 클래스를 가져옵니다.
그리고 이 LinearRegression은 선형 회귀 알고리즘을 적용할 수 있는 클래스이며, fit() 메서드를 통해 주어진 데이터를 학습시켜요.
fit() -> 입력 값 X와 출력 값 y를 이용해 모델을 학습시킵니다.
4. 모델 예측 및 평가
# 공부 시간이 6일 때 점수 예측
predicted = model.predict([[8]])
print(f'운전 시간 8시간일 때 예측 점수: {predicted[0]}')
이제 여기서 학습 시킨 데이터를 바탕으로 다른 데이터의 값을 출력하도록 할 수 있습니다.
predict(): 학습된 모델을 사용해 새로운 입력 값에 대한 결과를 예측해요.
이렇게 대충 AI가 어떻게 학습하고 일하는지 알아보았습니다.
감사합니다.