[선형회귀] 고객별 연간 지출액 예측하기 - 1

2021. 9. 28.·🤓 기술 학습 & 공부 기록/Python

▶ 강의명

▷ [패스트캠퍼스] 파이썬을 활용한 이커머스 데이터 분석

 

▶ 주제

▷ ch2. 고객별 연간 지출액 예측 (Linear Regression)

 

-- 강의 내용 --

 

01. 분석의 목적

 

선형회귀분석을 통해 고객체류시간 등과 같은 독립변수로 고객별 연간 지출액을 예측하는 모델을 개발한다.

 

02. 모듈 및 데이터 로딩

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

 

>> 선형회귀, 그래프에 라인 그리기, 로데이터 읽어오기 등을 위한 모듈을 불러온다.

pd, np 등과 같은 약어는 일반적으로 자주 쓰는 약어이기 때문에 잘 알아두자

 

data = pd.read_csv('eCommerce.csv')

 

>> pandas 모듈의 read_csv 함수를 통해 이커머스 로데이터를 불러오고 data로 저장한다.

(read_ 까지 입력하고 탭 누르면 csv 읽어오기 이외 다양한 기능 나옴)

 

data

>> data를 보면, 고객별 다양한 지표인 것을 확인할 수 있다. 평균세션시간, 앱체류시간 등의 독립변수를 바탕으로 연간지출액 종속변수를 예측할 것이다.

 

03. 데이터 특성 확인하기

 

data.head()

>> 맨 위 5행 불러옴 (괄호 안에 숫자 넣으면 그 행만큼 불러옴)
data.tail()

>> 맨 아래 5행 불러옴 (괄호 안에 숫자 넣으면 그 행만큼 불러옴)

 

info 함수

 

>> info 함수를 통해 데이터에 관한 정보를 확인할 수 있다. 데이터타입, row와 column 수, null값 수 등이 나타난다.

또한 모든 컬럼이 non-null이므로 missing value는 없음을 알 수 있다.

 

describe 함수

 

>> describe 함수를 통해 데이터의 기술통계량도 확인할 수 있다.

 

04. 불필요한 변수 버리기

 

본격적인 분석을 위해 데이터를 정제해야 한다. 우선 텍스트 데이터는 전부 제거한다

 

data

email, address, avatar 컬럼을 제거해본다.

 

나머지 컬럼명을 기재해서 data를 다시 저장해주는 방법도 있고,

 

data = data[['Avg. Session Length', 'Time on App', 'Time on Website', 'Length of Membership', 'Yearly Amount Spent']]

 

drop 함수를 사용하는 방법도 있다.

 

data.drop(['Email','Address','Avatar'], axis =1, inplace =True)

 

>> 내부 파라미터인 axis는 제거할 데이터를 지정해준다 (0이면 로우, 1이면 컬럼, 미기재시 로우)

>> inplace=True는 가공된 데이터를 그대로 저장하게 해준다. (False이거나 미기재시 저장하지 않음)

** 간단히 data.drop(3) 실행시 위에서 3번째 행(2행)만 날린다

 

05. Train, Test Set 나누기

 

70%~80%의 train data로 모델을 만들고, 20~30%의 test data로 만들어진 모델을 검증하는 것이 일반적이다

from sklearn.model_selection import train_test_split


>> 머신러닝을 지원하는 사이킷런(scikit learn) 모듈은 pandas나 numpy와 다르게 트리구조로 되어 있어서 from을 쓴다

tran_test_split 함수를 통해 훈련용 데이터와 검증용 데이터를 나눌 것이다

 

X : 독립변수, y : 종속변수 (대소문자는 이렇게 쓰는 것이 일반적이라고 함)

이제 데이터를 입력한다 (평균세션시간, 앱사용시간, 웹사용시간, 가입기간을 X로 하여 연간지출액 y를 구하고 있다)

 

X = data[['Avg. Session Length', 'Time on App', 'Time on Website', 'Length of Membership']]
#또는
X = data.drop('Yearly Amount Spent', axis=1)
y = data['Yearly Amount Spent']

 

입력된 데이터를 train_test_split 함수로 나눈다,

 

X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2, random_state = 100)

 

>> test_size 파라미터를 통해 test data는 전체의 20%로 지정했다 (미기재시 0.25)

>> random_state 파라미터를 같은 수로 설정하면 데이터를 나눌때마다 랜덤샘플링이 되는 가운데에서도 같은 조건으로 실험 가능 (매번 미세한 차이 나기 때문에 다른 팀원과 싱크맞출때 사용)

 

데이터가 잘 나눠졌는지 보기 위해 X_test 데이터를 확인해보면

 

X_test

>> 500 row의 20%인 100 row가 잘 할당되었다.

 

-- 끝 --

'🤓 기술 학습 & 공부 기록/Python' 카테고리의 다른 글
  • [선형회귀] 고객별 연간 지출액 예측하기 - 3
  • [선형회귀] 고객별 연간 지출액 예측하기 - 2
  • [패스트캠퍼스] Python을 활용한 이커머스 데이터 분석 - Intro
  • [데이콘 1-3] 따릉이 데이터를 활용한 데이터 분석 입문 (모델링)
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
[선형회귀] 고객별 연간 지출액 예측하기 - 1
상단으로

티스토리툴바