단순 선형 회귀 (Simple Linear Regression Model)

2023. 6. 6. 19:29·🥇 certification logbook
728x90
반응형

 

 
 

Reference
- <파이썬 한권으로 끝내기>, 데싸라면▪빨간색 물고기▪자투리코드, 시대고시기획 시대교육
 

독립 변수가 하나인 경우 데이터의 특징을 가장 잘 설명하는 직선을 학습하는 것

의료비 지출액 = $b_0$+$b_1$*나이

 

DataSet

https://www.kaggle.com/datasets/mirichoi0218/insurance

Medical Cost Personal Datasets

Insurance Forecast by using Linear Regression

www.kaggle.com

 

방법

1. scikit-learn의 LinearRegression
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
2. scikit-learn의 SGDRegressor
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDRegressor.html
 

1. scikit-learn의 LinearRegression

class sklearn.linear_model.LinearRegression(*, fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

 

더보기
  • fit_intercept: 상수항(intercept)을 모델에 포함할지 여부를 지정하는 매개변수입니다. 기본값은 True로, 상수항을 모델에 포함합니다.
  • copy_X: 입력 데이터를 복사할지 여부를 지정하는 매개변수입니다. 기본값은 True로, 입력 데이터를 복사합니다. 이는 입력 데이터를 수정하지 않고 원본 데이터를 보존할 수 있도록 합니다.
  • n_jobs: 모델의 학습을 병렬화하기 위한 작업 수를 지정하는 매개변수입니다. 기본값은 None으로, 단일 작업을 실행합니다. 만약 정수 값을 지정하면 해당 수만큼의 작업을 병렬로 실행합니다.
  • positive: 모델의 예측값을 양수로 제한할지 여부를 지정하는 매개변수입니다. 기본값은 False로, 제약이 없습니다.

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv('./insurance.csv')
x=data['age']
y=data['charges']
x=np.array(data['age'])
y=np.array(data['charges'])
x=x.reshape(1338,1)
y=y.reshape(1338,1)
lr=LinearRegression()
lr.fit(x,y)

 

  • fit(X, y[, sample_weight])

Fit linear model.
모델을 학습
- X :  학습 데이터. 2차원 array
- y : 타깃데이터
- sample_weight : 가중치

 

print("선형 회귀 모델 결과")
print("절편", lr.intercept_, "계수", lr.coef_)
print(lr.score(x,y))

# 선형 회귀 모델 결과
# 절편 [3165.88500606] 계수 [[257.72261867]]
# 0.08940589967885804

 

  • score(X, y[, sample_weight])

Return the coefficient of determination of the prediction.
- X : 테스트 샘플 array로 입력
- y : X의 실제 값
- sample_weight : 가중치
결정계수를 float로 반환.

  • coef_ 

array of shape (n_features, ) or (n_targets, n_features)Estimated coefficients for the linear regression problem. If multiple targets are passed during the fit (y 2D), this is a 2D array of shape (n_targets, n_features), while if only one target is passed, this is a 1D array of length n_features.
선형 회귀 문제에 대한 추정된 계수

  • intercept_

float or array of shape (n_targets,)Independent term in the linear model. Set to 0.0 if fit_intercept = False.
선형 모델의 독립항(절편)

 

x_new=[[19],[64]] # 새로운 데이터 샘플
y_hat=lr.predict(x_new) # 예측 값
print(y_hat)

#[[ 8062.61476073]
# [19660.13260074]]

 

  • predict(X)

Predict using the linear model.
- X : 데이터 샘플
예측값을 array로 반환

 

plt.figure(figsize=(10,5))
plt.plot(x_new, y_hat, "-r")
plt.plot(x,y,"b.")
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

 

 

2. scikit-learn의 SGDRegressor

 

class sklearn.linear_model.SGDRegressor(loss='squared_error', *, penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, random_state=None, learning_rate='invscaling', eta0=0.01, power_t=0.25, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, warm_start=False, average=False)

 

더보기
  • loss: 손실 함수를 지정하는 매개변수입니다. 기본값은 'squared_error'로 최소제곱 오차를 나타냅니다.
  • penalty: 정규화(regularization) 항을 지정하는 매개변수입니다. 기본값은 'l2'로 L2 정규화를 사용합니다.
  • alpha: 정규화 항의 강도를 조절하는 매개변수입니다. 기본값은 0.0001입니다.
  • l1_ratio: Elastic Net 모델에서 L1 정규화 항의 비율을 조절하는 매개변수입니다. 기본값은 0.15입니다.
  • fit_intercept: 상수항(intercept)을 모델에 포함할지 여부를 지정하는 매개변수입니다. 기본값은 True입니다.
  • max_iter: 최대 반복 횟수를 지정하는 매개변수입니다. 기본값은 1000입니다.
  • tol: 반복 알고리즘의 수렴 조건을 지정하는 매개변수입니다. 기본값은 0.001입니다.
  • shuffle: 반복할 때마다 데이터를 섞을지 여부를 지정하는 매개변수입니다. 기본값은 True입니다.
  • verbose: 학습 과정에서 출력 메시지를 제어하는 매개변수입니다. 기본값은 0으로 출력하지 않음을 의미합니다.
  • epsilon: Huber 손실 함수에서 임계값을 지정하는 매개변수입니다. 기본값은 0.1입니다.
  • random_state: 난수 생성기의 시드를 지정하는 매개변수입니다. 기본값은 None으로, 실행할 때마다 다른 결과를 얻습니다.
  • learning_rate: 학습률 스케줄링 방법을 지정하는 매개변수입니다. 기본값은 'invscaling'으로 역 스케일링 학습률을 사용합니다.
  • eta0: 초기 학습률을 지정하는 매개변수입니다. 기본값은 0.01입니다.
  • power_t: 역 스케일링 학습률에 사용되는 지수를 지정하는 매개변수입니다. 기본값은 0.25입니다.
  • early_stopping: 조기 종료를 사용할지 여부를 지정하는 매개변수입니다. 기본값은 False입니다.
  • validation_fraction: 조기 종료에 사용되는 검증 데이터의 비율을 지정하는 매개변수입니다. 기본값은 0.1입니다.
  • n_iter_no_change: 조기 종료를 위한 반복 횟수를 지정하는 매개변수입니다. 기본값은 5입니다.
  • warm_start: 이전 학습 결과를 재사용할지 여부를 지정하는 매개변수입니다. 기본값은 False입니다.
  • average: 평균 SGD를 사용할지 여부를 지정하는 매개변수입니다. 기본값은 False입니다.

 

import numpy as np
import pandas as pd
from sklearn.linear_model import SGDRegressor

data = pd.read_csv('./insurance.csv')
x = np.array(data['age'])
y = np.array(data['charges'])
x=x.reshape(1338,1)
y=y.reshape(1338,1)
sgd_reg = SGDRegressor(max_iter=1000, random_state=34)
sgd_reg.fit(x,y.ravel())

 

  • max_iter

int, default=1000
The maximum number of passes over the training data (aka epochs). It only impacts the behavior in the fit method, and not the partial_fit method.
훈련 데이터에 대한 최대 패스 수

  • random_state

int, RandomState instance, default=None
Used for shuffling the data, when shuffle is set to True. Pass an int for reproducible output across multiple function calls. See Glossary.
shffle이 true로 설정된 경우 데이터 셔플에 사용.
random_state 값은 모델의 결과를 제어하는 데 사용되는 초기화 값
같은 random_state 값을 사용하면 항상 동일한 결과를 얻을 수 있음
 

 

print("SGD 회귀 모델 결과")
print("절편",sgd_reg.intercept_,"계수",sgd_reg.coef_)

# SGD 회귀 모델 결과
# 절편 [9057.21833765] 계수 [484.13243757]
x_new=[[19],[64]]
y_hat=sgd_reg.predict(x_new)
print(y_hat)

# [18255.73465154 40041.69434233]
plt.figure(figsize=(10,5))
plt.plot(x_new, y_hat, "-r")
plt.plot(x,y,"b.")
plt.xlabel('X')
plt.ylabel('Y')
plt.show()​

 

 

728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[ADsP] 비지도학습 - 자기조직화지도(SOM) & 다차원척도법(MDS)  (0) 2023.06.08
앙상블 (Ensemble) - 랜덤 포레스트 분류 (Random Forest Classifier)  (0) 2023.06.07
다중 회귀 (Multiple Regression Model)  (0) 2023.06.07
다항 회귀 (Polynomial Regression Model)  (0) 2023.06.06
분석환경 설정 (Visual Studio Code + 주피터노트북)  (0) 2023.06.05
[ADsP] 비지도학습 - 주성분 분석(PCA)  (1) 2023.06.05
[ADsP] 비지도학습 - 연관 분석  (0) 2023.06.05
[ADsP] 지도학습 - 분류 분석  (0) 2023.06.05
'🥇 certification logbook' 카테고리의 다른 글
  • 다중 회귀 (Multiple Regression Model)
  • 다항 회귀 (Polynomial Regression Model)
  • 분석환경 설정 (Visual Studio Code + 주피터노트북)
  • [ADsP] 비지도학습 - 주성분 분석(PCA)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (217)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (67)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    민법
    법학과
    자격증
    빅데이터분석기사
    IBM
    Python
    deeplearning
    형법
    데이터분석준전문가
    방통대
    인공지능 입문
    온라인 강의 추천
    certificate
    기본권의기초이론
    데이터사이언스 입문
    머신러닝
    Coursera
    근로기준법
    ADsP
    datascience
  • hELLO· Designed By정상우.v4.10.3
이소야
단순 선형 회귀 (Simple Linear Regression Model)
상단으로

티스토리툴바