본문 바로가기

카테고리 없음

Sklearn-LinearRegression 간단한 예제로 알아보기(자주사용하는 함수들)

Sklearn-LinearRegression

Sklearn-LinearRegression이란 Ordinary least squares Linear Regression.

즉 선형회귀 제곱 식에 의한 선형회귀 모델 중 하나 이다.

이 글은 Sklearn LinearRegression에 대한 설명과 자주 사용 하는 함수들을 설명 하고자 만든 글이다.

 

Top 1000 Youtubers statistics (kaggle.com)

유튜버 top 1000명에 대한 구독, 좋아요, 알람, 댓글 수의 데이터를 가지고 있을때 이들의 상관 관계는 위 그림과 같이 나타 났고, 그중 Likes, Visits 가 강한 상관 관계가 있어 선형 회귀 모델을 만들어 이들을 예측 해보고자 하였다.

train, test = train_test_split(df,train_size=0.7,test_size=0.3, random_state=231010)

우선 Sklearn 에서 제공하는 train_test_split 을 통하여 학습 데이터와 실험 데이터를 각각 나누었다.

 

train_test_split 인자 값으로는 arrays, test_size=None, train_size=None, random_state=None

arrys = 나누고자 하는 data의 원본

train_size = 원하는 train_size의 비율

test_size = 원하는 test_size의 비율

random_state = 임의 표본 추출 방식으로 data split시 데이터가 동일하여도 그때마다 train, test에 할당되는 data가 다르기에 random_state에 값을 입력하여 동일한 data가 입력 되면 동일한 값을 주기위해 설정 한다. 값은 int 형식으로 사용자 마음대로 지정 하면 된다.

my_model 이라는 변수에 LinearRegression를 호출하여 fit 함수에 독립변수 Visits, 종속변수 Likes를 넣었다.

그 후 my_model을 통하여 test data 의 Visits을 넣어 test 의 Likes를 예측한 값을 pred_model에 넣었다고 볼 수 있다.

 

 

코드 해석

코딩을 모르는 사람들은 이게 뭐야? 라고 할법하고 처음 봤을때는 이해가 어려울수 있어 쉽게 설명하자고 한다면

LinearRegression() 은 통계학에서 나는 선형회귀모델 중 최소제곱으로 선형회귀선을 만들거야!

라고 선언을 했다고 할 수 있다.

이후 LinearRegression().fit() 은 말 그대로 fit 한다, 즉 학습할 것이다!

무엇을? (X = 독립변수, y = 종속 변수)

우리가 통계학에서도 선형회귀선을 만들때 특정 data를 가지고 선형 회귀식을 하나 만들었는데 특정 data로 학습을 하여 식을 만들 겠다와 같고 이 식을 나는 my_model 이란 변수에 저장 하였다고 볼 수 있다.

그럼 이제 우리가 만든 회귀식으로 원하는 값을 구하는 과정이 my_model.predict 라고 할 수 있다.

predict 예측하다, predict(X=독릭변수)를 하게 되면 회귀식을 통하여 종속 변수 y를 가지게 되고 그 값을 pred_model에 저장을 한것이다.

위 결과 test data 실제 값과 예상한 값이 엄청 큰 차이가 나고 likes 는 실제로 음수가 나올수 없기 때문에 음수를 나오지 않게 하기 위한 설정 들이 필요하다는것을 알게 되었다.

그래서 절편이 문제인지, 기울기가 문제인지 확인을 위해 절편과 기울기값을 호출 하였는데 위 그림과 같이 나오게 되었다.

절편의 음수값이 너무 커서 likes가 음수가 되었다는 것을 알게 되었고 절편을 빼고 학습을 한 값은 아래와 같다.

 

Sklearn-LinearRegression 주요 옵션