사이킷런(Scikit-learn) 라이브러리를 이용하여 간단한 선형모델을 만들어 볼 수 있는데요, 아래 코드를 보면서 차근차근 살펴보도록 하겠습니다.
1. 필요한 라이브러리 설치
먼저, 선형모델을 만들기 위한 라이브러리와 데이터에 사용할 난수를 발생시킬 라이브러리를 설치해줍니다.
import mglearn
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
2. 학습시킬 sample data 만들기
그다음, 학습시킬 sample data를 만들어주어야 하는데요, 위에서 import 한 mglearn 라이브러리를 이용하여 sample data를 만들어주겠습니다.
X, y = mglearn.datasets.make_wave(n_samples=60)
위 코드처럼 mglearn.datasets.make_wave(n_samples=데이터개수) 를 입력하고, 변수 X, y에 받으면 각각 60개의 난수(-2~+2) 가 입력되는데요, 이때 X는 입력값, y는 결과값을 의미합니다.
3. train data와 test data로 나누기
이제 위에서 만든 데이터 X와 y를 각각 train data, test data로 나눠야 하는데요, train_test_split() 함수를 이용하여 나누어줄 수 있습니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
위와 같이 코드를 입력하면, train data와 test data의 비율이 75 : 25 로 나누어지고, 각각 X_train, X_test, y_train, y_test 로 나누어져 입력된답니다.
4. 선형 모델 만들기
train data 와 test data가 만들어졌다면, 선형모델을 만들어줘야 하는데요, 위에서 import 한 LinearRegression 라이브러리를 사용해서 만들 수 있습니다. LinearRegression() 으로 선형모델을 만들어주는 코드는 다음과 같습니다.
lr = LinearRegression().fit(X_train, y_train)
LinearRegression() 함수 뒤에 .fit(X_train, y_train) 을 입력해줌으로써, 해당 선형 모델이 train data(입력값, 결과값)로 학습을 하도록 입력해주었습니다. 이렇게 입력한 뒤 실행하면, 사실상 학습이 자동으로 이루어지게 됩니다.
5. 가중치 & 절편 구하기
선형 모델이 학습되었는지를 확인하기 위해 가중치(기울기)와 절편을 구해볼텐데요, 아래와 같이 입력해줌으로써 가중치와 절편 값을 구할 수 있습니다.
print("lr.coef_: {}".format(lr.coef_)) #coef_=가중치=계수=기울기
print("lr.intercept_: {}".format(lr.intercept_)) #intercept_=절편
# output :
lr.coef_: [0.44153666]
lr.intercept_: -0.01711124414733381
코드 실행 결과, 가중치와 절편 값이 구해진 것을 확인할 수 있습니다.
이렇게 간단하게 선형 모델을 만들고 가중치와 절편 값을 구해보았는데요,
각자 학습할 데이터를 입력하여 선형 모델을 만들어보시기 바랍니다!
<전체코드 참고>
import mglearn
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X, y = mglearn.datasets.make_wave(n_samples=60)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
lr = LinearRegression().fit(X_train, y_train)
print("lr.coef_: {}".format(lr.coef_)) #coef_=가중치=계수=기울기
print("lr.intercept_: {}".format(lr.intercept_)) #intercept_=절편
'BLOG > 머신러닝' 카테고리의 다른 글
[머신러닝] 사이킷런(Scikit-learn) 데이터로 라쏘 회귀 모델 만들기 - Lasso() (0) | 2021.03.22 |
---|---|
[머신러닝] 사이킷런(Scikit-learn) 데이터로 릿지 회귀 모델 만들기 - Ridge() (0) | 2021.03.22 |
[머신러닝] 사이킷런(Scikit-learn) 데이터의 특성 / 클래스 별 데이터 개수 / 크기 확인하기 (0) | 2021.03.22 |
[머신러닝] train_test_split : 비율 설정 방법 - test_size (0) | 2021.03.22 |
[머신러닝] train_test_split : 순차적으로/무작위로 데이터 나누는 방법 (0) | 2021.03.22 |