Numpy를 사용한 선형 회귀 방법
소개
이 기사는 필자가 htps //w w. 우데 my. 이 m/샤레/1013lqB0 굳게 dF개R34=/
배운 것의 복습을 목적으로
쓰기
최소 제곱법의 도출
특정 데이터 세트 [x, y]가 주어진다고 가정합니다.
x는 설명 변수이고 y는 목적 변수. 예를 들어, 신장이 증가하면 체중이 증가하므로 이 경우 x=신장, y=체중이 된다.
그리고 주어진 데이터 x에서 y를 예측하고 싶습니다. 그 때의 예측값을 $\hat{y}$로 하고, 다음과 같은 관계식이라고 가정한다.
\hat{y} = ax + b
여기서 $\hat{y}$를 정답값 $y$에 한없이 접근하는 것이 목표가 된다. 따라서
Error = y - \hat{y} = y - ax + b =0
되는 a, b를 찾는 것이 중요하다.
이후의 설명은 아래 링크를 참조하십시오.
h tp://아r즈이노피d. 웨 b. FC2. 작은 m/P7. html
numpy를 이용한 선형 회귀
먼저 모듈 가져오기
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
나중에 이번에 사용할 데이터 세트를 다운로드하십시오.
from sklearn.datasets import load_boston
boston = load_boston()
이번에는 이 데이터 프레임 내의 RM(average number of rooms per dwelling)과 target(Price)를 사용합니다. 본래는 sns.pairplot나 sns.jointplot등을 이용해 선형 회귀(비례)의 관계가 있을 것 같은 변수를 찾습니다만, 이번은 미리 이 2개의 변수에는 비례 관계가 있다고 합니다.
boston_df = DataFrame(boston.data)
#列名をつける
boston_df.columns = boston.feature_names
#targetじゃわかりづらいので新たに列をコピー
boston_df['Price'] = boston.target
#散布図と回帰直線の表示
sns.lmplot('RM', 'Price', data=boston_df)
이 회귀 직선을 계산으로 내자.
사용하는 것은 np.linalg.lstsq(X, Y).
다만, 이 X에는 특정의 형태를 가진 어레이가 필요하므로 그 때문에 성형한다.
X = boston_df.RM
Y = boston_df.Price
#[x,1]の形にする
X = np.array([ [value[0], 1] for value in X])
#浮動小数点の型に変換
X = X.astype(np.float64)
#a, bにそれぞれの予測値が格納される
a, b = np.linalg.lstsq(X, Y)[0]
이것으로 계산은 끝. 결과를 보자.
plt.plot(boston_df.RM, boston_df.Price, 'o')
x = boston_df.RM
plt.plot(x, a*x+b, 'r')
np.linalg.lstsq에 대한 보충
공식 문서는 이쪽
htps : //없는 mpy. 오 rg/도 c/s타 bぇ/레후 렌세/게네라테 d/누 mpy. ㄱ lg. lstsq. html # 없는 mpy. ㄱ lg. lstsq
numpy.linalg.lstsq(a, b, rcond='warn')
\hat{y} = ax + b
Error = y - \hat{y} = y - ax + b =0
먼저 모듈 가져오기
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
나중에 이번에 사용할 데이터 세트를 다운로드하십시오.
from sklearn.datasets import load_boston
boston = load_boston()
이번에는 이 데이터 프레임 내의 RM(average number of rooms per dwelling)과 target(Price)를 사용합니다. 본래는 sns.pairplot나 sns.jointplot등을 이용해 선형 회귀(비례)의 관계가 있을 것 같은 변수를 찾습니다만, 이번은 미리 이 2개의 변수에는 비례 관계가 있다고 합니다.
boston_df = DataFrame(boston.data)
#列名をつける
boston_df.columns = boston.feature_names
#targetじゃわかりづらいので新たに列をコピー
boston_df['Price'] = boston.target
#散布図と回帰直線の表示
sns.lmplot('RM', 'Price', data=boston_df)
이 회귀 직선을 계산으로 내자.
사용하는 것은 np.linalg.lstsq(X, Y).
다만, 이 X에는 특정의 형태를 가진 어레이가 필요하므로 그 때문에 성형한다.
X = boston_df.RM
Y = boston_df.Price
#[x,1]の形にする
X = np.array([ [value[0], 1] for value in X])
#浮動小数点の型に変換
X = X.astype(np.float64)
#a, bにそれぞれの予測値が格納される
a, b = np.linalg.lstsq(X, Y)[0]
이것으로 계산은 끝. 결과를 보자.
plt.plot(boston_df.RM, boston_df.Price, 'o')
x = boston_df.RM
plt.plot(x, a*x+b, 'r')
np.linalg.lstsq에 대한 보충
공식 문서는 이쪽
htps : //없는 mpy. 오 rg/도 c/s타 bぇ/레후 렌세/게네라테 d/누 mpy. ㄱ lg. lstsq. html # 없는 mpy. ㄱ lg. lstsq
numpy.linalg.lstsq(a, b, rcond='warn')
- 계수 행렬 a (M, N), 독립 변수 b (M,) or (M, K), rcond
- 최소 제곱 해 p, 잔차의 총 residues, 계수 행렬 a의 순위 순위, a의 singular value
np.linalg.lstsq(X, Y)[1]로 하면 잔차의 합계도 꺼낼 수 있다
Reference
이 문제에 관하여(Numpy를 사용한 선형 회귀 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suchmos7/items/9fa9d72cd78d79bcc0ee텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)