μ λ² ν¬μ€νΈμμλ μ ν νκ·μμ μ£Όλ‘ μ¬μ©λλ ν¨ν€μ§λ€μ λν΄μ κ°λ΅νκ² μμ보μμ΅λλ€.
μ΄λ² ν¬μ€νΈμμλ μ°μ κ°λ¨ν λ¨μ μ ν νκ· λͺ¨λΈμ λμμΈ ν΄ λ³΄λλ‘ νκ² μ΅λλ€.
μ°μ , μ΄λ² ν¬μ€νΈμμ νμν ν¨ν€μ§λ€μ import νκ² μ΅λλ€.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
pandas, numpy, matplotlibμ λ§€μ° ννκ² μ¬μ©λκ³ , numpysλ μ΄λ² ν¬μ€νΈμμ νμκ° μμ μλ μμ§λ§ μ°μ μΆκ°ν΄λκ² μ΅λλ€.
κ·Έλ¦¬κ³ νκ· λͺ¨λΈμ μ€νν λ μ¬μ©ν statsmodels.api λΌμ΄λΈλ¬λ¦¬λ μΆκ°νκ² μ΅λλ€.
κ·Έλ¦¬κ³ , λΆμ λ°μ΄ν°λ‘ νμ©ν csv νμΌμ λλ€.
μ΄ λ°μ΄ν°λ λ―Έκ΅μ μλ₯ SATμ μ±μ κ³Ό, λνκ΅ μ‘Έμ μμ νμ GPA μ 보λ₯Ό λ΄κ³ μμ΅λλ€.
μ νμΌμ python λλ ipynb νμΌκ³Ό λμΌν ν΄λμ μμΉν΄μ£Όμκ³ ,
pandasλ₯Ό νμ©νμ¬ λ€μκ³Ό κ°μ μ½λλ‘ μ½μ΄μ€λλ€.
data = pd.read_csv('Simple_Linear_Regression.csv')
pd.read_csv([file name])μΌλ‘ csv νμΌμ μ½μΌλ©΄,
pandasλ μλμΌλ‘ μ΄λ₯Ό λ€λ£¨κΈ° μ¬μ΄ ννλ‘ formatting ν΄μ€λλ€.
μΆλ ₯ν΄μ νμΈν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΄ 보μ λλ€.
νλ² μ΄ λ°μ΄ν°μ λν μ 보λ₯Ό μμλ³ΌκΉμ?
data.describe()
μ°λ¦¬κ° pandasλ‘ ν¬λ©§ν ν dataμ describe λ©μλλ₯Ό νμ©νλ©΄,
λ°μ΄ν°μ μ, νκ· , νμ€νΈμ°¨, μ΅μκ°, Q1, Q2 (median), Q3, μ΅λκ°μ μ°¨λ‘λ‘ λ³΄μ¬μ€λλ€.
μ²μ λ°μ΄ν°λ₯Ό μ΄ν΄ν λ λμμ΄ λκ² λ€μ
μ΄ 84κ°μ μ μκ° μ‘΄μ¬νκ³ , νκ· μ λΉλ‘―ν μ¬λ¬ μν λ°μ΄ν°μ κ°λ€μ μ μ μμ΅λλ€.
μ΄μ μ°λ¦¬λ μ λ°μ΄ν°λ₯Ό νμ©ν΄μ μ°λ¦¬μ 첫 νκ· λͺ¨λΈμ λμμΈν κ² μ λλ€.
μ°λ¦¬μ λͺ¨λΈμμλ μλ₯ μ±μ , SAT Scoreλ₯Ό κΈ°λ°μΌλ‘ λνκ΅ μ‘Έμ μμ νμ , GPAλ₯Ό μμΈ‘ν κ² μ λλ€.
μλ₯ μ±μ κ³Ό GPAμλ μΈκ³Όκ΄κ³κ° μ‘΄μ¬ν νλ₯ μ΄ λκ² μ£ ?
μ΄λ¬ν λΆλΆ μμ νκ· λͺ¨λΈμ λμμΈν λ λ§€μ° μ€μν©λλ€.
λΉμ°νμ§λ§, λ§μ΄ λμ§ μλ νκ· λͺ¨λΈμ μλ―Έκ° μμ΅λλ€.
μ΄λ±νκ΅ 1νλ λ λ°μμ°κΈ° μ μλ‘ λνκ΅ μ‘Έμ μμ νμ μ μμΈ‘νλ κ²μ μ‘°κΈ λ§μ΄ λμ§ μμ νλ₯ μ΄ λμ΅λλ€.
νμ§λ§, μλ₯ μ±μ κ³Ό λν μ±μ μ¬μ΄μλ μΈκ³Όκ΄κ³κ° μλκ² μ’ λ λ§μ΄ λκ² μ£ ?
μ΄λ¬ν μ μ μ κ³ λ €ν΄μ λͺ¨λΈμ λμμΈνλλ‘ ν΄λ΄ μλ€.
κΈ°μ‘΄μ ν¬μ€νΈμμ μ€λͺ νλ―, λ¨μ μ ν νκ·μ 곡μμ λ€μκ³Ό κ°μ΅λλ€.
yΜ = b0 + b1*x1
μ°λ¦¬μ λͺ¨λΈμμλ SATλ‘ GPAλ₯Ό μμΈ‘νλ―λ‘, μ°μ μμΈ‘κ° yμ λ 립 λ³μ xμ λν λ³μλ€μ μ μΈνκ² μ΅λλ€.
y = data['GPA']
x1 = data['SAT']
μ΄λ‘μ¨ μ°λ¦¬λ dataμμ 'GPA'λ₯Ό μ΄λ‘ κ°μ§λ κ°λ€μ yμ, 'SAT'λ₯Ό μ΄λ‘ κ°μ§λ κ°λ€μ xμ μ μ₯νμ΅λλ€.
μ΄λ₯Ό matplotlibμΌλ‘ νλ² νλ² νμΈν΄λ³ΌκΉμ?
plt.scatter(x1, y)
plt.xlabel("SAT", fontsize=20)
plt.ylabel("GPA", fontsize=20)
plt.show()
x μΆμ SAT, y μΆμ GPAλ₯Ό λνλ΄μ΄ κ° λ°μ΄ν°λ€μ΄ μμ£Ό μ scatter plotμΌλ‘ μκ°ν λμμ΅λλ€.
μ°λ¦¬λ μΌμΆ μ΄ κ°λ€μ΄ μ°μν₯νλ μ§μ μ κ²½ν₯μ±μ 보μΈλ€λ μ μ μΈμ§ν μ μμ΅λλ€.
κ·Έλ λ€λ©΄, ν΄λΉ κ·Έλνμ μμ μμ, b0 κ°μ 무μμΌκΉμ?
x = sm.add_constant(x1)
results = sm.OLS(y, x).fit()
results.summary()
statsmodels ν¨ν€μ§μμλ add_constant() ν¨μλ₯Ό ν΅ν΄μ μμ b0μ κ°μ κ·Όμ¬ν©λλ€.
sm.OLS(y, x)λ₯Ό ν΅ν΄μ, μ°λ¦¬λ resultsμ Orindary Least Squares Regression, μ¦ μ΅μ μ κ³±λ² νκ·μ κ²°κ³Όλ₯Ό μ μ₯ν©λλ€.
ν΄λΉ κ°μ .fit() λ©μλλ₯Ό μ μ©νλ©΄ νΉμ ν κ·Όμ¬ ν ν¬λ (μ°λ¦¬μ κ²½μ° OLS)μ νμ©νμ¬ μ°λ¦¬μ λ°μ΄ν°μ λ§λ λͺ¨λΈμ μ»μ΅λλ€.
μ΅μ μ κ³±λ²μ λν΄μλ λμ€μ λ μμΈν μ΄νΌκΈ°λ‘ νκ³ , μ°μ κ·Έλ°κ² μꡬλ λΌκ³ λ§ μ΄ν΄νλ©΄ μ’κ² μ΅λλ€.
μ΄μ΄μ results.summary()λ κ²°κ³Όλ₯Ό μμ½νλ 3κ°μ νλ₯Ό μΆλ ₯ν©λλ€.
μμΈν건 λμ€μ λ μμ보λλ‘ νκ³ , μ΄λ²μλ const, SATμ coef μ΄ λ§λλ μ§μ μ κ°λ§ μμλ³΄κ² μ΅λλ€.
μ°λ¦¬κ° μ°Ύλ μμ b0μ constμ coefμ΄ λ§λλ μ§μ μ κ°μΈ 0.2750μ΄ λκ² κ³ ,
x1μ κ³±ν΄μ§λ κ³μμΈ b1μ κ·Έ λ°μ 0.0017μ΄ λκ² μ΅λλ€.
κ·Έλ λ€λ©΄ μμ΄ λμΆ© yΜ = 0.275 + 0.0017x1 μ΄ λκ² λ€μ.
νλ² matplotlibμΌλ‘ νμΈν΄λ³ΌκΉμ?
plt.scatter(x1, y)
yhat = 0.0017*x1 + 0.275
fig = plt.plot(x1, yhat, lw=2, c='orange', label='regression line')
plt.xlabel('SAT', fontsize=20)
plt.ylabel('GPA', fontsize=20)
plt.show()
μ΄λ€κ°μ?
μ°λ¦¬μ 첫 μ ν νκ· λͺ¨λΈμ μ£Όμ΄μ§ μν λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λλ¦ μ ννκ² SAT μ±μ λλΉ GPA μ±μ μ μμΈ‘νλ κ² κ°μ΅λλ€.
κ·Έλνμμμ λ Έλ μ , νκ·μ μ κ° λ°μ΄ν°μ λν΄μ νκ· μ μΈ κ±°λ¦¬κ° κ°μ₯ 짧μ μ§μ μ λλ€.
λ€μ λ§νμλ©΄, λͺ¨λ κ΄μΈ‘λ κ°λ€μ λν΄μ κ°μ₯ 짧μ 거리λ₯Ό κ°μ§λ μ μ λλ€.
λ€μ ν¬μ€νΈμμλ sm.OLS().fit()μΌλ‘ νΌν λ λͺ¨λΈμ λν΄μ
results.summary()λ₯Ό μ¬μ©νμ λ λμ€λ 3κ°μ νμ λν΄μ λ μμΈν μμλ³΄κ² μ΅λλ€.
'Data Science > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Linear Regression (μ ν νκ·) -3 | Coefficients Table (1) | 2024.06.03 |
---|---|
Linear Regression (μ ν νκ·) - 1 | ν¨ν€μ§ μμ보기 (0) | 2024.06.02 |