한걸음 한걸음 머신러닝~scikit-learn 보스턴 주택가격편~②

저번까지.


저번 보도scikit-learn 라이브러리에서 제공
나는 보스턴의 집값과 주택 환경 데이터를 도입하여 관련성을 보았다.
이번에는 각자의 《주택의 환경 데이터》인데, 예를 들어 범죄율이 《주택 가격》에 어떤 영향을 미치는가
구체적인 계산을 통해 이를 수치화하여'주택의 환경 데이터'로만'주택 가격'을 예측할 수 있는 계산 공식을 구한다.
여기부터'주택 가격'과'주택의 환경 데이터'는 각각 다음과 같이 기재된다
집값
주택 환경 데이터 = 변수 설명

계산하다


이번 상황에서 목적 변수에 대해 설명하는 변수는 다음과 같은 13가지가 있다
CRIM
ZN
INDUS
CHAS
NOX
RM
AGE
DIS
RAD
TAX
PTRATIO
B
LSTAT
그래서 이번 경우'재회귀 분석'을 진행한다.
scikit-learn으로 재회귀 분석을 할 때 가장 간단한 것은 아마도
LinearRegression 클래스 사용 방법
지난번 중복이지만 우선 각종 라이브러리와 데이터 집합을 가져와야 합니다.
boston.py
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd

boston = load_boston()
env_data = pd.DataFrame(boston.data,columns = boston.feature_names)
price_data = boston.target
그리고 다음 계산의 실례를 만듭니다.
lr = LinearRegression(fit_intercept = True)
매개변수 fit_intercept 는 기본적으로 참이므로 지정할 필요가 없습니다.
또한 다음과 같은 매개 변수가 있다
매개변수 이름
데이터 유형
기본값
컨텐트
fit_intercept
bool
True
오프셋 계산 여부 (실제 값으로 계산)
normalize
bool
False
자동 사양명세 설명 변수(비표준화)
copy_X
bool
True
매개변수에 대한 설명 변수를 덮어쓸지 여부(False인 경우 덮어쓰기)
n_jobs
int or NONE
NONE
계산에 사용할 CPU 코어 수를 지정합니다.NONE 1개, -1 전체 코어 지정
그리고 너는 실례lr에 목적 변수와 설명 변수만 주면 된다
※ 변수의 표준화는 다음 이후에
boston.py
lr.fit(env_data,price_data)
현재, lr 에서 설명 변수에서 목표 변수를 내보내는 계수를 계산하고 유지한다.
즉, lr에 설명 변수를 넣은 후 이 설명 변수의 값에 따라 해당하는 목적 변수(물건 가격)를 출력한다.
한 마디로 하면 목적을 위한 계산 공식(모델)을 만들 수 있다.env_data을 이 계산 공식에 넣고 결과를 봅시다
※ 모델의 정밀도 검증이 아니므로 동일한 데이터 집합을 사용합니다.
boston.py
forecast = lr.predict(env_data)
print(forecast[:10])
"""
予想結果10個分
30.00821269 
25.0298606  
30.5702317  
28.60814055 
27.94288232 
25.25940048
 23.00433994 
19.5347558  
11.51696539 
18.91981483...
"""
숫자만 봐도 알 수 없으니 실제 답안price_data과의 차이를 보자.
ERROR = (forecast - price_data) / price_data

#実際の価格に対して、平均誤差
print(np.mean(np.abs(ERROR))*100)
#16.431734487377376(%)

#最大の誤差
print(np.max(np.abs(ERROR))*100)
#161.18584774173794(%)
직사각형으로 하면 다음과 같은 느낌이다.

도대체 이것이 정밀도가 좋은 모델인지 의문이다
이상의 절차를 통해 scikit-learn을 사용하면 간단하게 재회귀 분석을 할 수 있다.

모형 내용 좀 봐.


Linear Regression 클래스의 실례에 목표 변수와 설명 변수를 제공하여 다시 계산하는 경우
계산 결과는 구성원 변수coef_intercept_에 저장됩니다.
변수 이름
컨텐트
coef_
회귀 계수
intercept_
오프셋 (슬라이스)
저희가 일단 실제 값을 볼게요.
print(lr.coef_)
"""
[-1.07170557e-01  4.63952195e-02  2.08602395e-02  2.68856140e+00
 -1.77957587e+01  3.80475246e+00  7.51061703e-04 -1.47575880e+00
  3.05655038e-01 -1.23293463e-02 -9.53463555e-01  9.39251272e-03
 -5.25466633e-01]
"""
print(lr.intercept_)
#36.49110328036137

이 값coef_은 각 설명 변수에 해당합니다.
CRIM
ZN
INDUS
CHAS
NOX
RM
AGE
DIS
RAD
TAX
PTRATIO
B
LSTAT
-1.07e-01
4.64e-02
2.09e-02
2.69e+00
-1.78e+01
3.80e+00
7.51e-04
-1.48e+00
3.06e-01
-1.23e-02
-9.53e-01
9.39e-03
-5.25e-01
여기서 작은 숫자를 한쪽에 놓고 기호에만 주목하다
기호가 양인 설명 변수
ZN
25000평방피트 이상의 주택 구획이 차지하는 비례
INDUS
소매업 이외의 상업이 차지하는 면적의 비율
CHAS
찰스 강의 위조 변수(1: 강 주변, 0: 그 외)
RM
거주 평균 방수
AGE
1940년 이전에 지은 집의 비율
RAD
환상 고속 도로의 교통 편의성
B
도시마다 흑인(Bk)의 비율을 하식으로 표시한다.1000(Bk – 0.63)^2
기호가 음인 설명 변수
CRIM
1인당 범죄 발생수
NOX
NOx 농도(질소산화물)
DIS
보스턴 5개 취업시설과의 거리(가권)
TAX
10000달러당 부동산 세율 총계
PTRATIO
도시마다 어린이와 교사의 비율
LSTAT
저임금 직업에 종사하는 인구 비율(%)
기호가 양인 변수는 입력과 출력(물건 가격)에 정작용을 한다
기호가 음인 변수는 반대로 출력에 마이너스 작용을 한다.
강 부근에서는 고속도로의 교통이 비교적 좋고 집이 비교적 비싸다
범죄율이 높고 공기가 좋지 않은 곳이 싸니 피부가 받아들일 수 있는 부분도 있을 것 같아요.

다음


다음 번 이후 도전은 이 모델의 정밀도를 더욱 높일 수 있을까
Linear Regression 이외의 클래스를 사용하여 이 데이터 집합을 다시 한 번 보십시오.

제발


기계학습을 독학하면서 메모와 이해를 확인하기 위해 Qiita에 투고했다.
나는 잘못된 해석과 설명이 매우 많다고 생각한다.
주의한 사람은 부드럽게 지적해 주십시오

좋은 웹페이지 즐겨찾기