일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 스포티파이
- modern c++
- SECS/GEM
- CS
- python
- SECS
- spotify
- Computer Science
- C++
- 회귀
- 자바
- spring boot
- Spring
- MYSQL
- 파이썬
- Gem
- SW Expert Academy
- 백준
- c
- Baekjoon
- 회원가입
- programmers
- Spring JPA
- SECS-II
- 프로그래머스
- regression
- java
- SWEA
- Spotify Api
- 비트겟
Archives
- Today
- Total
비버놀로지
[회귀분석] 다중 회귀 분석 본문
728x90
다중 회귀 분석
다중 회귀 분석(Multiple Linear Regression)은 데이터의 여러 변수(features) XX를 이용해 결과 YY를 예측하는 모델입니다.
다음 모델을 직접 구현해보겠습니다.
여기서 X1 은 페이스북, X2 는 TV, X3 은 신문 광고를 의미합니다.
실습
- ./data/Advertising.csv 에 위치한 파일로부터 데이터를 읽어 X와 Y를 만듭니다.
- X는 (200, 3) shape을 가진 2차원 np.array로 , TV, Newspaper Column에 해당하는 데이터를 저장합니다. Y는 (200,) 의 shape을 가진 1차원 np.array로 Sales Column에 해당하는 데이터를 저장합니다.
X = [[ 230.1 37.8 69.2]
[ 44.5 39.3 45.1]
[ 17.2 45.9 69.3]
[ 151.5 41.3 58.5]
...
Y = [ 22.1 10.4 9.3 18.5 ...
3. Scikit-learn 라이브러리를 이용해 다중 선형 회귀 분석을 진행하세요.
4. 학습된 모델을 이용해 FB, TV, Newspaper의 값에 따라 예상되는 Sales 값을 expected_sales 에 작성하세요.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
'''
./data/Advertising.csv 에서 데이터를 읽어, X와 Y를 만듭니다.
X는 (200, 3) 의 shape을 가진 2차원 np.array,
Y는 (200,) 의 shape을 가진 1차원 np.array여야 합니다.
X는 FB, TV, Newspaper column 에 해당하는 데이터를 저장해야 합니다.
Y는 Sales column 에 해당하는 데이터를 저장해야 합니다.
'''
import csv
csvreader = csv.reader(open("data/Advertising.csv"))
x = []
y = []
next(csvreader)
for line in csvreader :
x_i = [ float(line[1]), float(line[2]), float(line[3]) ]
y_i = float(line[4])
x.append(x_i)
y.append(y_i)
X = np.array(x)
Y = np.array(y)
lrmodel = LinearRegression()
lrmodel.fit(X, Y)
beta_0 = lrmodel.coef_[0] # 0번째 변수에 대한 계수 (페이스북)
beta_1 = lrmodel.coef_[1] # 1번째 변수에 대한 계수 (TV)
beta_2 = lrmodel.coef_[2] # 2번째 변수에 대한 계수 (신문)
beta_3 = lrmodel.intercept_ # y절편 (기본 판매량)
print("beta_0: %f" % beta_0)
print("beta_1: %f" % beta_1)
print("beta_2: %f" % beta_2)
print("beta_3: %f" % beta_3)
def expected_sales(fb, tv, newspaper, beta_0, beta_1, beta_2, beta_3):
'''
FB에 fb만큼, TV에 tv만큼, Newspaper에 newspaper 만큼의 광고비를 사용했고,
트레이닝된 모델의 weight 들이 beta_0, beta_1, beta_2, beta_3 일 때
예상되는 Sales 의 양을 출력합니다.
'''
sales = beta_0 * fb + beta_1 * tv + beta_2 * newspaper + beta_3
return sales
print("예상 판매량: %f" % expected_sales(10, 12, 3, beta_0, beta_1, beta_2, beta_3))
728x90
'인공지능 머신러닝' 카테고리의 다른 글
[회귀분석] 영어 단어 코퍼스 분석하기 (0) | 2022.11.03 |
---|---|
[회귀분석] 다항식 회귀 분석 (0) | 2022.11.03 |
[회귀분석] Scikit-learn을 이용한 회귀분석 (0) | 2022.11.03 |
[회귀분석] Loss Function (0) | 2022.11.03 |
[회귀분석] 기울기와 절편 (0) | 2022.11.03 |
Comments