ã¯ããã«
ç§ã¯çŸåšå€§éªåžã«äœãã§ãããäžæšæ¥ã®éœæ§æ³æç¥šã¯ãã¬ãã«ãããã€ããªããèŠãŠããŸããã
çµéãèŠãŠããŠæã£ãã®ããåºããšã®çµæã®å·®ãé¡èã«åºãŠãããåæå¯Ÿè±¡ãšããŠé©ããããŒã¿ãåŸããããã ãšæããããã詳ããåæããŠã¿ãŸããã
â»äžå³ã¯ããããç¶æ°ã®äŒHPæ²èŒã®ãéœæ§æ³ã«ãããæ°æ§åºåã

Qiitaã®ã¬ã€ãã©ã€ã³ã«ããããã«ããããŸã§æè¡èšäºãšããŠã®é åãè¶ ããªããããæ¿æ²»çãªæ·±ãèå¯ã¯é¿ããåŸãããäºå®ã®ã¿ãåæããŠããããšæããŸãã
ãŸããç§ã¯å ææšè«ã®ãããªé«åºŠãªåæã®ã¹ãã«ã¯æã¡åãããŠããªãã®ã§ããããã«æ·±ãç¥èŠãåŸãããã«ã¯ãããããããã
ãšãããããªææ³ã«é¢ããã¢ããã€ã¹ãããããŸããããã³ã¡ã³ãé ãããšå€§å€ãããããã§ãïŒ
çµè«
çµè«ã«è³ããŸã§ã®æé ã¯æ¬¡ç« 以éã§è¿°ã¹ãŸããã以äžã®ãããªçµè«ãåŸãããŸããã
ã30ïœ50代å²åãé«ãåºã»ã©ãè³æçãé«ãã
ãå¹³åäžåž¯äººæ°ãå°ãªã(ãã¡ããªãŒå±€ãå°ãªã)åºã»ã©ãè³æçãé«ãã
ã緯床ãé«ã(ååŽã®)åºã»ã©ãè³æçãé«ãã
ãç·æ§æ¯çãé«ãåºã»ã©ãè³æçãé«ãã
â»åœ±é¿åºŠã®é«ãé ã«äžŠã¹ãŠããŸã
åæã®æé
ããŒã¿åæã®åéã§ã¯ããªãã¿ã®ãTJOæ°ã®ããã°ã«èšèŒãããŠããããã«ã
- ç®çã®æç¢ºåïŒç®ç倿°ã®èšå®ïŒ
- ç¹åŸŽééžæïŒèª¬æå€æ°ã®éžæïŒ
- ããŒã¿ã®åéãšã¯ã¬ã³ãžã³ã°
- åæãšçµæã®å¯èŠå
- èå¯ãšãŸãšã(ä»åã¯æ·±å ¥ãããªã)
ãšããæé ã§é²ããŠãããŸã
1. ç®çã®æç¢ºå
ä»åãç§ãæ°ã«ãªã£ãã®ã¯ãäžèšã®2ç¹ã§ã
â è³æãå€ãåºãšå°ãªãåºã®åã
â¡ååæç¥šãšã®å·®
â ã«é¢ããŠã¯ãäžå³ïŒæ¯æ¥æ°èã®ãµã€ãããåŒçšïŒã®ããã«ãè³æçã«æç¢ºãªå°ççåããèŠãããŸãïŒåžã®äžå€®éšåå¯ãã®è³æçãé«ãïŒïŒ

ãã®åãã®é°ã«ããèŠå ïŒç¹åŸŽéïŒããæ°å€çãªæ ¹æ ããã£ãŠãã¶ãåºããããšæããŸããã
ã§ãã®ã§ã
ç®çïŒè³æçã®é«äœã«å¯Ÿããæ ¹æ ã®ããèŠå åè£ãæœåºãã
ç®ç倿°ïŒè³æç
説æå€æ°ïŒèŠå åè£ãšãªãç¹åŸŽé
ãšããŠåæãé²ããããšæããŸã
â¡ã«é¢ããŠã¯ãååãšæ¯ã¹è³æçã倧ããå€åããåºã®èŠå ãæœåºãããã®ã§ã
ç®ç倿°ïŒä»åã®è³æç
説æå€æ°ïŒååã®è³æç
ãšããŠãå€ãå€ãã°ã«ãŒãã³ã°ããããšæããŸãã
2. ç¹åŸŽééžæïŒèª¬æå€æ°ã®éžæïŒ
åè¿°ã®ããã«ãç®ç倿°ã§ããè³æçã«åœ±é¿ãäžããããªææšããç¹åŸŽéãšããŠæœåºããŠãããŸãã
å¹Žéœ¢æ§æ
äžå³NHKã®éèšã®ããã«ãåºå£èª¿æ»ã§ã¯30ïœ50代ã®åãçãã®è³æçãé«ãã
60代以äžã®é«éœ¢è
ãããã³20代ã®è¥è
ã®è³æçãæ¯èŒçäœãã§ãã

ä»åã¯ã20代ã®ã¿åŸåãé転ããŠããããšãå°ãç¹ç°ã ãšæããã®ã§ããã®åœ±é¿ã®æç¡ãèæ
®ãã
ç¹åŸŽé1ã60æ³ä»¥äžå²åã(20代ã®é転çŸè±¡ãèæ
®ããªã)
ç¹åŸŽé2ã30ïœ50代å²åã(20代ã®é転çŸè±¡ãèæ
®)
ãç¹åŸŽéã«å ããŸã
ç·å¥³æ¯ç
幎霢ã»ã©ã®å·®ã¯ãããŸããããç·å¥³æ¯ã圱é¿ããããããªã®ã§ã

ç¹åŸŽé3ãç·æ§æ¯çã
ãç¹åŸŽéã«å ããŸã
æ°åºåœ¹æïŒæ¬åºèïŒããã®è·é¢
äžå³ã®ããã«ãæ°åºåœ¹æïŒæ¬åºèïŒã¯åžã®äžå¿éšã«éäžããŠçœ®ãããèšç»ãšãªã£ãŠããŸããã

ç§ã¯æ¬åºèã眮ãããåºãšã¯ç°ãªãåºã«äœãã§ããŸããããèªåãäœãã§ããå°åãçºå±ãã眮ããŠããããã®ã§ã¯ïŒããšããäžå®ãå°ãæããã®ã§ããã®æèŠïŒãã¡ã€ã³ç¥èïŒãä¿¡ãã
ç¹åŸŽé4ãæ¬åºèã眮ãããé§
ãããæ§åºäžå¿é§
ãŸã§ã®æèŠæéã
ããç¹åŸŽéãšããŠå ããŸãã
å¹³åäžåž¯äººæ°ãå¹³å幎å
ãããã¯æç¢ºãªæ ¹æ ã¯ãããŸããããäœãšãªãæç¥šè¡åã«åœ±é¿ãäžãããã§ããã€ããŒã¿ãå
¥æããããã®ã§ãç¹åŸŽéã«å ããŸãã
ç¹åŸŽé5ãå¹³åäžåž¯äººæ°ã
ç¹åŸŽé6ãå¹³å1人ããã幎åã
3. ããŒã¿ã®åéãšã¯ã¬ã³ãžã³ã°
ç®ç倿°ãšãªãè³æçã¯ãããããœãŒã¹ãããã®ã§å²æããŸããã
åçš®ç¹åŸŽéã¯äžèšã®å Žæã»ã¯ã¬ã³ãžã³ã°æ¹æ³ã§åéããŸãã
å ·äœçãªç¹åŸŽé
äžèš6ç¹åŸŽéã䜿çšããŸã
ã1.60æ³ä»¥äžå²åãã2.30ïœ50代å²åãã3.ç·æ§æ¯çã
ããŒã¿å
¥ææ¹æ³ïŒäžèšå€§éªåžHPãã2020幎ã®å¹Žéœ¢ã»ç·å¥³å¥æšèšäººå£ãããŠã³ããŒã
https://www.city.osaka.lg.jp/toshikeikaku/page/0000015211.html
ã¯ã¬ã³ãžã³ã°æ¹æ³ïŒå
šäœã«å¯Ÿãã察象幎霢局ã®å²åãç·æ§ã®å²åãåºããšã«ç®åºããã£ãŒã«ãå
ã4.æ¬åºèãŸã§ã®æéã
ããŒã¿å
¥æã»ã¯ã¬ã³ãžã³ã°æ¹æ³ïŒäžèšä¹æãµã€ãã§ãæ§åºäžå¿é§
ïœæ°åºåœ¹ææå¯é§
ãŸã§ã®æèŠæéããåæ8, 12, 15, 18æã§æ±ãå¹³å
https://ekitan.com/
ã5.å¹³åäžåž¯äººæ°ã
ããŒã¿å
¥ææ¹æ³ïŒäžèšå€§éªåžHPãã2020幎ã®1äžåž¯åœãã人å¡ãããŠã³ããŒã
https://www.city.osaka.lg.jp/toshikeikaku/page/0000068035.html
ã¯ã¬ã³ãžã³ã°æ¹æ³ïŒåºããšã«ã«ãã£ãŒã«ãå
ã6.å¹³å1人ãããæåŸã
ããŒã¿å
¥ææ¹æ³ïŒäžèšå€§éªåžHPããäžåž¯å¥åå
¥éå±€ããŒã¿ãããŠã³ããŒã
https://www.city.osaka.lg.jp/shimin/cmsfiles/contents/0000180/180789/20.pdf
ã¯ã¬ã³ãžã³ã°æ¹æ³ïŒéå±€ããšã«å¹³å幎åãšå²åãç©ç®ããŠå¹³åäžåž¯å¹Žåãæ±ãã5.ã§æ±ããå¹³åäžåž¯äººå¡ã§å²ã
åŸãããããŒã¿
äžå³ã®ããã«ããã£ãŒã«ãåãããããŒã¿ãåŸãããŸãããããã§ã¯ã¬ã³ãžã³ã°å®äºã§ã

æ¥æ¬èªã ãšPythonã§æ±ã£ãéã«è¯ããªãäºãè²ã
èµ·ããã®ã§ãè±èªåããŠãããŸã

4. ããŒã¿ã®åæãšå¯èŠå
ä»åã¯ãç®ç倿°ïŒè³æçããã説æå€æ°ïŒåç« ã®6çš®é¡ã®ç¹åŸŽéããšããŠååž°ããããã®ã§ã
äžèšã®æé ã§é²ããŠãããŸã
4-1) ããŒã¿å
šäœã®å¯èŠå
4-2) ç¹åŸŽééžæïŒçžé¢ã®åŒ·ãç¹åŸŽéã®é€å€ïŒ
4-3) ååž°ã¢ãã«ã®äœæ
4-4) æ§èœè©äŸ¡
4-5) ã¢ãã«ã®æ¹å
4-1. ããŒã¿å šäœã®å¯èŠå
éå»ã«äœæãããã¡ãã®ããŒã«ã䜿çšããæ£åžå³ãšçžé¢ä¿æ°ãæ±ããŸãã
#%%èªèŸŒ
import pandas as pd
from custom_pair_plot import CustomPairPlot
#䜿çšãããã£ãŒã«ã
KEY_VALUE = 'ward_before'#ããŒå
OBJECTIVE_VARIALBLE = 'approval_rate'#ç®ç倿°
EXPLANATORY_VALIABLES = ['1_over60','2_between_30to60','3_male_ratio','4_required_time','5_household_member','6_income']#説æå€æ°
#pair_analyzerã§çžé¢ãå¯èŠå
df = pd.read_csv(f'./osaka_metropolis_english.csv')
use_cols = [OBJECTIVE_VARIALBLE] + EXPLANATORY_VALIABLES
gp = CustomPairPlot()
gp.pairanalyzer(df[use_cols])
â»ç¹åŸŽéåãè±èªã«å€ããŠããŸãããçªå·ãã顿šããŠãã ãã

èµ€æ ã§å²ã£ãéšåããç®ç倿°ïŒè³æçïŒãšã®çžé¢ä¿æ°ã«ãªããŸãã
å¯èŠåã«ããåŸãããç¥èŠ
äžèšã®ãããªç¥èŠãåŸããããã§ã
â 20代ã®é転ãèæ
®ããªãç¹åŸŽéã1. 60æ³ä»¥äžå²åãããããèæ
®ããã2. 30ïœ50代æ¯çãã®æ¹ãè³æçãšã®çžé¢ä¿æ°ãé«ãïŒãããã¿éãïŒ
â¡ç·æ§æ¯çã¯è³æçãšã®çžé¢ä¿æ°ãäœãïŒå€ãå€(西æåº)ã®åœ±é¿ãããããã ãâ¥ïŒ
â¢èª¬æå€æ°ã2. 30ïœ50代æ¯çããšã6. å¹³å幎åãã®çžé¢ä¿æ°ã0.89ãšé«ã
4-2. ç¹åŸŽééžæ
倩äžãçã§ãããä»åã¯æè¿ã®ååž°åæã®å®çªææ³ã§ãããåŸé
ããŒã¹ãã£ã³ã°ïŒXGBoostïŒã䜿çšããŸãã
ãã®ææ³ã¯å€éå
±ç·æ§ïŒçžé¢ã®åŒ·ã説æå€æ°ãäž¡æ¹äœ¿çšããéã®äžå
·åïŒã«æ¯èŒç匷ããšèšãããŠããŸãããããã§ããã¡ãã®ãµã€ãã®ããã«çžé¢ã®åŒ·ã倿°ããã®ãŸãŸäœ¿çšãããšãç¡èŠã§ããªã圱é¿ãåºãŠããããã§ã
ããã§ä»åã¯ãä»ã®èª¬æå€æ°ãšçžé¢ä¿æ°ãé«ã説æå€æ°ããåæå¯Ÿè±¡ããé€å€ããŸããã
å€éå
±ç·æ§ã®åºæºãšããŠã¯VIF=10(R=0.95ã«çžåœ)ããããã¯5(R=0.9ã«çžåœ)ããã䜿ãããããã§ããã
ä»åã¯å³ããã«èŠãŠãçžé¢ä¿æ°0.9以äžã®èª¬æå€æ°ãé€å€ããŸãã
å
·äœçã«ã¯
ã»ã1. 60æ³ä»¥äžå²åãã¯é€å€â¥ã2. 30ïœ50代æ¯çããšçžé¢ä¿æ°-0.96ã§ããã€è³æçãšã®çžé¢ã2.ããäœã
ã»ã6. å¹³å1人ããã幎åã¯é€å€ãã2. 30ïœ50代æ¯çããšã®çžé¢ä¿æ°0.89ãšåºæºãããäžåã£ãŠãããããåãçããå€ããšå¹Žåãé«ãããšããæç¢ºãªå æé¢ä¿ãç¹å®ã§ãããããé€å€ãã
ãšããããã§ãä»åŸã®åæã«ã¯äžèšã®4ç¹åŸŽéã䜿çšããããšãšããŸãã
ç¹åŸŽé2ã30ïœ50代å²åã(20代ã®é転çŸè±¡ãèæ
®)
ç¹åŸŽé3ãç·æ§æ¯çã
ç¹åŸŽé4ãæ¬åºèã眮ãããé§
ãããæ§åºäžå¿é§
ãŸã§ã®æèŠæéã
ç¹åŸŽé5ãå¹³åäžåž¯äººæ°ã
ç¹åŸŽéé€å€åŸã®æ£åžå³ã¯äžå³ã®ããã«ãªããŸãã

ãã®èª¬æå€æ°ã䜿çšããååž°åæãé²ããŠãããŸãã
ãŸãã以äžã¯ååž°åæã§ããããšã匷調ããããããç¹åŸŽéãã®çšèªãã説æå€æ°ãã«çµ±äžãããŠé ããŸãã
4-3. ååž°ã¢ãã«ã®äœæ
åè¿°ã®ããã«ãæè¿ã®ååž°åæã®äž»æµã§ããåŸé
ããŒã¹ãã£ã³ã°ïŒXGBoostïŒã䜿çšããŸãã
䟿å©ãªPythonã®ã©ã€ãã©ãªãååšããã®ã§ãã«ã³ã¿ã³ã«äœ¿çšããããšãã§ããŸããã
ãã€ããŒãã©ã¡ãŒã¿ãããã€ãååšããã®ã§ãã°ãªãããµãŒãã«ããæé©åããŸã
ã°ãªãããµãŒãã«ãããã©ã¡ãŒã¿ã®æé©å
ã°ãªãããµãŒããšã¯ãã¹ããªããŒã·ã§ã³ãçµã¿åãããŠãæé©ãªãã€ããŒãã©ã¡ãŒã¿ãæ¢ããŸãã
ã¯ãã¹ããªããŒã·ã§ã³ãšã¯ã端çã«èšããš
ãããŒã¿ãNçåããŠãæ§èœãšéåŠç¿é²æ¢ã®ãã©ã³ã¹ãåãããã©ã¡ãŒã¿èšå®ãæ¢ãã
ãšããæäœã«ãªããŸãïŒããŒã¿ã®çåæ¹æ³ã¯äžå³Wikipediaç»ååç
§ïŒ

ãŸãã°ãªãããµãŒããšã¯ããããããæ±ºãæã¡ãããã©ã¡ãŒã¿ã®çµã¿åãããç·åœããã§æ¢çŽ¢ããæ¹æ³ã§ããæéãæããããšããã¡ãªãããå®è£
ãç°¡åã§ããããšãã¡ãªãããšãªããŸãã
ããããæ€çŽ¢ããXGBoostã§å®éã«ãã䜿ãããŠãããã©ã¡ãŒã¿ã®ç¯å²ãåè£ãšããŠäœ¿çšããŸããã
import xgboost as xgb
from sklearn import metrics as met
import sklearn as skl
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
import numpy as np
import matplotlib.pyplot as plt
import os
from datetime import datetime
import seaborn as sns
#䜿çšãããã£ãŒã«ã
KEY_VALUE = 'ward_before'#ããŒå
OBJECTIVE_VARIALBLE = 'approval_rate'#ç®ç倿°
USE_EXPLANATORY = ['2_between_30to60','3_male_ratio','4_required_time','5_household_member']#䜿çšãã説æå€æ°
#ããŒã¿èªèŸŒ
df = pd.read_csv(f'./osaka_metropolis_english.csv')
#ç®ç倿°ãšèª¬æå€æ°ãååŸïŒpandasã§ã¯ãªãndarrayã«å€æïŒ
y = df[[OBJECTIVE_VARIALBLE]].values
X = df[USE_EXPLANATORY].values
#ã°ãªãããµãŒããšæ§èœè©äŸ¡ã®å
±éãã©ã¡ãŒã¿
num_round=10000#æå€§åŠç¿åæ°
early_stopping_rounds=50#è©äŸ¡ææšããã®åæ°é£ç¶ã§æ¹åããªããªã£ãæç¹ã§åŠç¿ãã¹ããã
seed = 42#ä¹±æ°ã·ãŒã
#ã°ãªãããµãŒãçšãã©ã¡ãŒã¿(詳现ã¯https://qiita.com/R1ck29/items/50ba7fa5afa49e334a8f)
cv_params = {'eval_metric':['rmse'],#ããŒã¿ã®è©äŸ¡ææš
'objective':['reg:squarederror'],#æå°åãããã¹ãæå€±é¢æ°
'random_state':[seed],#ä¹±æ°ã·ãŒã
'booster': ['gbtree'],
'learning_rate':[0.1,0.3,0.5],
'min_child_weight':[1,5,15],
'max_depth':[3,5,7],
'colsample_bytree':[0.5,0.8,1.0],
'subsample':[0.5,0.8,1.0]
}
#XGBoostã®ã€ã³ã¹ã¿ã³ã¹äœæ
cv_model = xgb.XGBRegressor()
#ã°ãªãããµãŒãã®ã€ã³ã¹ã¿ã³ã¹äœæ
# n_jobs=-1ã«ãããšCPU100%ã§å
šã³ã¢äžŠåèšç®ããšãŠãéãã
cv = GridSearchCV(cv_model, cv_params, cv = 5, scoring= 'r2', n_jobs =-1)
#ã°ãªãããµãŒãå®è¡
evallist = [(X, y)]
cv.fit(X,
y,
eval_set=evallist,
early_stopping_rounds=early_stopping_rounds
)
#æé©ãã©ã¡ãŒã¿ã®è¡šç€º
print('æé©ãã©ã¡ãŒã¿ ' + str(cv.best_params_))
print('倿°éèŠåºŠ' + str(cv.best_estimator_.feature_importances_))
ãªããããã§ã°ãªãããµãŒãã«äœ¿çšããããŒã¿ãšãã¹ãããŒã¿ãåããŠããªãäºã«éåæãèŠããããæ¹ããããããããŸããããæ¬ç¯ã§ã¯ãããŸã§ãã©ã¡ãŒã¿ã®æé©åãç®çã§ãæ§èœè©äŸ¡ã¯æ¬¡ç¯ã§å¥éè¡ããããã容赊ããã ããã°ãšæããŸãã
ïŒLeave_One_Outã§1åºããšã«ã°ãªãããµãŒããåããšæèŠæéãâ¥ïŒ
4-4. æ§èœè©äŸ¡
ãã¹ãããŒã¿ãšåŠç¿ããŒã¿ãåããŠæ§èœè©äŸ¡ããŸãã
ææšãšããŠã¯ãäžèšã䜿çšããŸã
RMSEå¹³åïŒå
šäœãšããŠã®äºæž¬èª€å·®ã®å€§ãã(å°ããã»ã©Good)
äºæž¬ãšå®éã®çžé¢ä¿æ°ïŒäºæž¬ãšå®éã®çžé¢ã®å€§ãã(倧ããã»ã©Good)
äºæž¬èª€å·®ã®æå€§å€ïŒäºæž¬èª€å·®ã極端ã«å€§ããåºãååšããªããè©äŸ¡(å°ããã»ã©Good)
ãã¹ãããŒã¿ã®å岿¹æ³
åãæ¹ã«ã¯äœçš®é¡ããããŸãã
ã»ããŒã¿æ°ãå°ãªãã®ã§ãåŠç¿ããŒã¿æ°ã確ä¿ããå¿
èŠããã
ã»1åºããšã«æ§èœææšãç®åºããã¢ãã«ã«é©åããªãåºããã¶ãã ããã
ãšãã芳ç¹ããã
1åãã€ãã¹ãããŒã¿ãåãåºããæ®ããåŠç¿ããŒã¿ãšãããLeave_One_Outãã§æ§èœè©äŸ¡ãè¡ããŸã
ïŒä»ã®åºå
šãŠã®ããŒã¿ã§åŠç¿ããã¢ãã«ã§æ§èœãè©äŸ¡ãããWikipediaã®äžå³åç
§ïŒ

è©äŸ¡ã«äœ¿çšããã³ãŒã
åèšãã©ã¡ãŒã¿æé©åçšã®ã³ãŒãã«ãäžèšã®ã³ãŒãã远èšããŠæ§èœè©äŸ¡ããŸãã
#%%3. æ§èœè©äŸ¡(Leave-One-Out)
#ãã©ã¡ãŒã¿ã«ã°ãªãããµãŒãã§ã®æé©ãã©ã¡ãŒã¿ã䜿çš
params = cv.best_params_
#çµæä¿æçšã®DataFrame
df_result = pd.DataFrame(columns=['test_index','eval_rmse_min','train_rmse_min','num_train'])
#Leave-One-Outã§ããŒã¿åå²ããŠæ§èœè©äŸ¡
loo = LeaveOneOut()
for train_index, test_index in loo.split(X):#å
šããŒã¿ã«å¯ŸããŠåå²ã«ãŒã
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
dtrain = xgb.DMatrix(X_train, label=y_train)#åŠç¿çšããŒã¿
dtest = xgb.DMatrix(X_test, label=y_test)#ãã¹ãããŒã¿
evals = [(dtest, 'eval'),(dtrain, 'train')]#çµæè¡šç€ºçšã®åŠç¿ããŒã¿ãšãã¹ãããŒã¿ãæå®
evals_result = {}#çµæä¿æçš
#åŠç¿å®è¡
model = xgb.train(params,
dtrain,#èšç·ŽããŒã¿
num_boost_round=num_round,
early_stopping_rounds=early_stopping_rounds,
evals=evals,
evals_result=evals_result
)
#ã¢ãã«ã®æ§èœè©äŸ¡
test_pred = model.predict(dtest, ntree_limit=model.best_ntree_limit)
num_train = len(evals_result['eval']['rmse'])
df_result = df_result.append({'test_index': test_index[0],
'key_value': df[[KEY_VALUE]].iloc[test_index[0],0],
'pred_value': test_pred[0],
'real_value': df[[OBJECTIVE_VARIALBLE]].iloc[test_index[0],0],
'eval_rmse_min': evals_result['eval']['rmse'][num_train - 1],
'train_rmse_min': evals_result['train']['rmse'][num_train - 1],
'num_train': num_train},
ignore_index=True)
#æ§èœè©äŸ¡çµæã®è¡šç€º
print('RMSEå¹³å' + str(df_result['eval_rmse_min'].mean()))
print('çžé¢ä¿æ°' + str(df_result[['pred_value','real_value']].corr().iloc[1,0]))
print('äºæž¬èª€å·®ã®æå€§å€' + str(max((df_result['pred_value'] - df_result['real_value']).abs())))
#çµæãåºå
dt_now = datetime.now().strftime('%Y%m%d%H%M%S')
feat_use = 'feat' + '-'.join([ex.split('_')[0] for ex in USE_EXPLANATORY])
#è©äŸ¡çµæ
df_result.to_csv(f"{os.getenv('HOMEDRIVE')}{os.getenv('HOMEPATH')}\Desktop\{feat_use}_{dt_now}_result.csv")
path = f"{os.getenv('HOMEDRIVE')}{os.getenv('HOMEPATH')}\Desktop\{feat_use}_{dt_now}_result.txt"
with open(path, mode='w') as f:
f.write('ç¹åŸŽé' + str(USE_EXPLANATORY))
f.write('\næé©ãã©ã¡ãŒã¿' + str(cv.best_params_))
f.write('\nã°ãªãããµãŒã察象' + str(cv_params))
f.write('\n倿°éèŠåºŠ' + str(cv.best_estimator_.feature_importances_))
f.write('\nRMSEå¹³å' + str(df_result['eval_rmse_min'].mean()))
f.write('\nçžé¢ä¿æ°' + str(df_result[['pred_value','real_value']].corr().iloc[1,0]))
f.write('\näºæž¬èª€å·®ã®æå€§å€' + str(max((df_result['pred_value'] - df_result['real_value']).abs())))
#æ£åžå³è¡šç€º
sns.regplot(x="pred_value", y="real_value", data=df_result, ci=0)
è©äŸ¡çµæ
ä»åæ±ããæ§èœè©äŸ¡ææšã¯äžèšã®ããã«ãªããŸããã
RMSEå¹³å(å°ããã»ã©Good)ïŒ0.0226
äºæž¬ãšå®éã®çžé¢ä¿æ°(倧ããã»ã©Good)ïŒ0.619
äºæž¬èª€å·®ã®æå€§å€(å°ããã»ã©Good)ïŒ0.0709
ãã®ææšãè¯ãã®ãæªãã®ãã¯æ¬¡ç¯ã§è©äŸ¡ããã®ã§ã
ãŸãã¯äºæž¬å€(暪軞)ãšå®éã®å€(瞊軞)ãšãæ¯èŒããæ£åžå³ãèŠãŠã¿ãŸã

äžèšæ£åžå³ãèŠãŠãäºæž¬å€ãšå®æž¬å€ã®å·®ã®å€§ããçŠå³¶åºã®çµæã«ãå°ãéåæãèŠããŸããã
äŸãã°ãåãå䜵åŸã®ååºã«æå±ããéœå³¶åºãšæ¯èŒãããšã

å
šãŠã®ç¹åŸŽéã®å€ãè¿ãã«ãé¢ãããçŠå³¶åºã®äºæž¬å€ãäžèªç¶ã«äœããªã£ãŠãã(ããã30ïœ50代å²åã倧ããåãæèŠçã«ã¯éœå³¶åºãããäºæž¬å€ã倧ãããªããã)ã
Leave-One-Outæã«åå²ããåŠç¿ããŒã¿ã«éåŠç¿ããŠããŸã£ãŠãããšæãããŸãã
次ç¯ä»¥éã§éåŠç¿é²æ¢æ³ãèããŠã¿ãŸãã
4-5. ã¢ãã«ã®æ¹å
åç¯ã§éåŠç¿ãšæãããçŸè±¡ãçºçããŠãããããæ¹åçãé©çšããŠã¢ãã«ã®æ§èœåäžãå³ããŸã
æ¹åç1 ç¹åŸŽéãçµã
éåŠç¿é²æ¢ã®ããã°ãªãããµãŒã以äžã®æ¹æ³ãæãã€ããªãã£ãã®ã§ã䜿çšãã説æå€æ°ãçµã£ãŠå¯ŸåŠããŠã¿ãŸããã
| 䜿çšèª¬æå€æ° | RMSEå¹³å (å°ããã»ã©Good) |
äºæž¬ãšå®éã®çžé¢ä¿æ° (倧ããã»ã©Good) |
äºæž¬èª€å·®ã®æå€§å€ (å°ããã»ã©Good) |
|---|---|---|---|
| 2,3,4,5å šãŠäœ¿çš | 0.0226 | 0.619 | 0.0709 |
| 2,3,4 | 0.0213 | 0.648 | 0.0531 |
| 2,3,5 | 0.0191 | 0.744 | 0.0474 |
| 2,4,5 | 0.0222 | 0.614 | 0.0739 |
| 3,4,5 | 0.0221 | 0.642 | 0.0593 |
| 2,3 | 0.0197 | 0.707 | 0.0519 |
| 2,4 | 0.0181 | 0.733 | 0.0604 |
| 2,5 | 0.0248 | 0.572 | 0.0590 |
| 3,4 | 0.0229 | 0.568 | 0.0610 |
| 3,5 | 0.0232 | 0.596 | 0.0503 |
| 4,5 | 0.0304 | 0.460 | 0.0750 |
| 2 | 0.0209 | 0.646 | 0.0559 |
| 3 | 0.0303 | -0.996 | 0.0726 |
| 4 | 0.0246 | 0.541 | 0.0532 |
| 5 | 0.0292 | 0.407 | 0.0686 |
ç¹ã«æ§èœãé«ãã£ãçµã¿åããã倪åã«ããŸããã
å
ã»ã©ãšåæ§ã«æ£åžå³ãäžèšããŸã
説æå€æ°2,3,5ã䜿çšããå Žåã®äºæž¬å€vs宿ž¬å€æ£åžå³
説æå€æ°2,4ã䜿çšããå Žåã®äºæž¬å€vs宿ž¬å€æ£åžå³
ãªãææšãæ¹åããïŒ
䜿çšãã4説æå€æ°éã«ã¯3è é以äžã§ã®çžé¢ã»å æé¢ä¿ïŒäŸïŒãæ¬åºèã«è¿ãäžå¿è¡ã»ã©ã30ïœ50代ã®åãçãäžä»£ãå€ãããã¡ããªãŒå±€ãå°ãªãã®ã§å¹³åäžåž¯äººå¡ãå°ãªãããªã©ïŒãå«ãŸãããããå šãŠã䜿çšãããšæªåœ±é¿ãäžããã®ã§ã¯ãªãããšä»®èª¬ãç«ãŠãŠããŸãã
ãŸããæ£çŽç§ã®åŸé
ããŒã¹ãã£ã³ã°æŽ»çšã¹ãã«ãè¶³ããªãããã4倿°ã§ã¯æ§èœãåºãåããªãã£ãæãåŠããªãããã
ããããããšéåŠç¿ãé²ããïŒããšãããããªç¥èŠããæã¡ã®æ¹ãããã°ãã³ã¡ã³ãé ãããšãããããã§ãã
æ¹åç2ãå°åã®äœçœ®é¢ä¿ã®èæ ®
æ§èœãè¯ãã£ã説æå€æ°2,3,5ã䜿çšããã¢ãã«ã®ãäºæž¬å€ãšå®æž¬å€ã®æ£åžå³ãèŠããšãäºæž¬ãã宿ž¬å€ãäœãåºã«ã¯ãååŽã®åº(ç¹ã«èµ€ã§ç€ºããæ°å€©ç寺åºã«çžåœããåº)ãç®ç«ã€ããšãåãããŸãã

ãŸãéã«ååºãæ·å·åºãªã©ç·ã§ç€ºããååŽã®åºã§ã¯ãäºæž¬ããã宿ž¬å€ãé«ãåºãå€ãã§ãã
倧éªåžã¯ååŽãšååŽã§å°åå¶ã倧ããç°ãªããšèšãããŠããããã®å°åæ§ã®å·®ãæç¥šè¡åã«åœ±é¿ãäžãããšä»®èª¬ãç«ãŠãããŸãã
ããã§ä»åãååã衚ã説æå€æ°ãšããŠãã緯床(latitude)ãã远å ããŸãã
(ãåç·¯ã床â³åâ¡ç§ãã®ãã®éšåã¯å
šãŠ"34床"ãªã®ã§ãä»åã¯å以äžã®å€ã䜿çšããŸã)
| 䜿çšèª¬æå€æ° | RMSEå¹³å (å°ããã»ã©Good) |
äºæž¬ãšå®éã®çžé¢ä¿æ° (倧ããã»ã©Good) |
äºæž¬èª€å·®ã®æå€§å€ (å°ããã»ã©Good) |
|---|---|---|---|
| 2,3,5 | 0.0191 | 0.744 | 0.0474 |
| 2,3,5+緯床 | 0.0174 | 0.767 | 0.0444 |
| 2,4 | 0.0181 | 0.733 | 0.0604 |
| 2,4+緯床 | 0.0182 | 0.755 | 0.0586 |
説æå€æ°ã2,3,5ãã䜿çšããå Žåããã2,4ãã䜿çšããå Žåããè»äžŠã¿ææšãæ¹åããŠãããŸãã
ãã¯ãååã®å·®ãè³æçã®èŠå ãšãªã£ãŠããããã§ãã
説æå€æ°2,3,5,latitudeã䜿çšããå Žåã®äºæž¬å€vs宿ž¬å€æ£åžå³
説æå€æ°2,4,latitudeã䜿çšããå Žåã®äºæž¬å€vs宿ž¬å€æ£åžå³
説æå€æ°2,3,5,latitudeã䜿çšããå Žåã®ç¹åŸŽééèŠåºŠ(Feature Importance)
5. èå¯ãšãŸãšã
æãæ§èœãè¯ãã¢ãã«(説æå€æ°2,3,5,latitudeã䜿çš)ã¯ãéèŠåºŠã®å€§ããé ã«ãäžèšã®ç¹åŸŽéã䜿çšããŠããŸã
ç¹åŸŽé2 ã30ïœ50代å²åã
ç¹åŸŽé5 ãå¹³åäžåž¯äººæ°ã
远å ç¹åŸŽé ã緯床ã
ç¹åŸŽé3 ãç·æ§æ¯çã
ããã§äœ¿çšããç¹åŸŽéããç®ç倿°ã§ããè³æçã«åœ±é¿ãäžããèŠå ãšã¿ãªããŸãã
æ·±ãåå èå¯ã¯é¿ããŸããã
ãåãçãäžä»£ã®ç·æ§æ¯çã倧ãããå¹³åäžåž¯äººæ°ãå°ãªããååŽã«ããåºãã§è³æãå€ã
ãåãçãäžä»£ã®ç·æ§æ¯çãå°ããããã¡ããªãŒå±€ãå€ããååŽã«ããåºãã§å察ãå€ã
ããšãäºå®ãšããŠèšãããã§ãã
ïŒåç¯ã®ç¹åŸŽééèŠåºŠãèŠãéããå¹Žéœ¢æ§æã®åœ±é¿ãæã倧ãããç·æ§æ¯çã®åœ±é¿ãæãå°ãããã§ãïŒ
ãŸãã4-1ã§ã®çžé¢åæããããããããã«
20代ã®åå¯Ÿãæ¯èŒçå€ã(30代ãšã®é転çŸè±¡)ããšããåºã«ããè³æçã®å·®ã«åœ±é¿ãäžããŠãã
ãšãèšããããšæããŸãã
6.æããããš
ä»åã®åæãéããŠãäžèšã®ãããªæè§ŠãåŸãããšãã§ããŸãã
ãã¡ã€ã³ç¥èã®éèŠã
4.4ã§éåŠç¿ãçããã£ãããšããŠããçŠå³¶åºãå€ãå€ãšãªãçç±ãæãæµ®ãã°ãªãããšãããã®ããããŸãã
çŠå³¶åºã¯ã°ã«ã¡ã§æåãªç¹è²ã®ããå°åã§ããã
æç¥šã«åœ±é¿ãäžãããããªèŠçŽ ãšããŠã¯åžå
ã§ãå¹³åçãªã€ã¡ãŒãžïŒãã¡ã€ã³ç¥èïŒããã£ãã®ã§ãããããå€ãå€ã«ãªããšããããšã¯ãäœã£ãã¢ãã«ã®æ§èœãæªãã«éããªãããšããèãã«è³ãããšãã§ããŸããã
ãã¡ã€ã³ç¥èãéä¿¡ããããªã
2ç« ã§ã¯ãåžæ°ã®æèŠãšããŠæããŠãããæ¬åºèããé ãã»ã©äžäŸ¿ããæããŠè³æçãäœããããšããèãã«åºã¥ããŠã
ç¹åŸŽéã4.æ¬åºèãŸã§ã®æèŠæéãã远å ããŸããã
乿æ¡å
ãããããããªããããŒã¿åéããŠãããšãã¯ã
ãæ§èœã¢ããã«ç¹ããç¹åŸŽéã«ãªãã«éããªãïŒãã¡ã€ã³ç¥èæåŒ·ïŒã
ãšæããªãããã€ãã³ã·ã§ã³ã«ãªã£ãŠããŸãããã
å®éã«åæãé²ããŠã¿ããšãä»ã®ç¹åŸŽéã«åãããŠããŸãçšåºŠã®åœ±é¿åºŠãããããŸããã§ããã
ãããŠé 匵ã£ãŠåéããããŒã¿ã«ã¯æãå
¥ããçãŸããã®ã§ã
ãäœãšããŠããã®ç¹åŸŽéã¯æšãŠãããªãïŒç¡çããã§ã䜿ãããã
ãšãããåæè
ãšããŠå®¢èгæ§ãæ¬ ããå¿æ
ãçããŠããŸãã
ãã®ãããªãã¡ã€ã³ç¥èããçãŸããå å ¥èŠ³ãæãå ¥ããå°å°ããŠãåŸãããäºå®ã®ã¿ãã倿ããäºã®é£ãããã身ããã£ãŠæããããšãã§ããŸããã
çããããŒã¿ãåæããé¢çœã
ã¿ã€ã ãªãŒãã€è©±é¡æ§ã®é«ãããŒã¿ãæ±ããšãã¢ãããŒã·ã§ã³ãäžããããšãã²ãã²ããšæããŸããã
ä»åŸãå匷ããçµæãã¢ãŠããããããå ŽãšããŠãæäºãã¿ãåæããŠããããšæããŸãïŒ
ããŸãïŒååæç¥šãšã®å·®ã®åæ
ããŸãçšåºŠã®åæãšãªããŸãããååæç¥šãšã®å·®ã倧ããåºã«ã€ããŠãåæããŠã¿ãŸãã
ååæç¥šãšä»åæç¥šã®è³æçæ¯èŒ
åå2015幎æç¥šã®è³æçãšãä»åè³æçãæ¯èŒããŠã¿ãŸãã(暪軞ïŒååã瞊軞ïŒä»å)

æŠãååãšåæ§ã®åŸå(R2=0.88)ã§ãããããã€ãååããå€åã®ãã£ãåºããããŸãïŒç¹ã«é¡èãªåºãèµ€è²ïŒ
åºåãã®æ¯èŒ
åè¿°ã®ååããã®å€åã®äžå ã«ãå䜵åŸã®åºåãã®å€åããããããããªããšæãã
ååãšä»åã§åºåããæ¯èŒããŠã¿ãŸããã
ååã®åºåã
ä»åã®åºåã
äžå€®åºãååºã®äžå¿éšã®åºåãã«ã¯å€åããªãã
åšèŸºéšã®åºïŒååã®æ±åºãååºã湟岞åºãçžåœïŒã®åºåãã倧ããå€åãåºãŠããïŒæ¬åºèãåžäžå¿éšã«è¿ãäœçœ®ã«ããåºã«ç·šå
¥ïŒããã§ãã
åææ¹é
ååãã2%以äžã®å¢æžããã£ãåºãæœåºããŠã¿ãŸããã
åç¯ã®åé¡ïŒäžå€®åºã»ååº or ãã®ä»ïŒã«åºã¥ããå䜵åŸã®åºåãã®å€åã䜵èšããŸãã
| åºå | å䜵åŸã®åºåãã®å€å | 墿ž |
|---|---|---|
| 倧æ£åº | ãã | +2.54% |
| 西æåº | ãªã | +2.49% |
| ååº | ãªã | -2.73% |
| äžå€®åº | ãã | -3.12% |
| é¿åéåº | ãã | -3.32% |
| è¥¿åº | ãªã | -3.89% |
| æž¯åº | ãã | -4.82% |
å䜵åŸã®åºåãã®å€åããã£ãåºãšããªãã£ãåºã«åããŠåæããããšæããŸãã
1. åºåãã«å€åããã£ãåº
枯åºãé¿åéåºã倧æ£åºãçžåœããŸãã
倩äžãçã«ã¯ãªããŸãããæž¯åºãšãã以å€ã§ç°ãªãèŠå ãããããã ãšæããŠããŸãã
枯åº
æžå°å¹
ããã³ããã§å€§ããæž¯åºã§ãããåçš®å ±éã§ãè§ŠããããŠããããã«ãæç¥šåããå°ççãªé ããææãã声ããã£ãããã§ãã
å䜵åŸã®å°å³ãèŠããšã枯åºã¯æ¬åºèã®ããåäžé§
ãããéåžžã«é¢ããå Žæã«ãããŸãã

ãã é¢ããå Žæã«ããã ãã§ãªããéã«æ·å·ãšãã倧ããªå·ãæãã§ããŠå°åçãªç¹ãããå°ããã§ããã
é»è»ã§è¡ãããšããŠãéäžã®æ¢
ç°é§
ã§ã®ä¹ææéãéåžžã«é·ãããšãŠãäžäŸ¿ã§ãã
ïŒæ±äº¬ã«äŸãããšããå°å Ž(æ±æ±åº)ãšæ°å°å²©(è食åº)ãããã®äœçœ®é¢ä¿ã®ã€ã¡ãŒãžïŒ
ååæ§æ³ã§ã¯æž¯åºã«æ¬åºèã眮ãããäºå®ã§ãã£ãããšãã
䌌ããããªäœçœ®é¢ä¿ã«ããæ€è±åºã§ã1.5%è³æçãäœäžããŠããããšãããã
æ¬åºèãŸã§ã®å°ççãªé ãã圱é¿ããŠããã®ã§ã¯ãšæšå¯ãããŸãã
é¿åéåºã倧æ£åº
ïŒå€å°ã®äž»èгãå
¥ã£ãŠããŸãããšãã容赊ãã ããïŒ
é¿åéåºã«é¢ããŠã¯ãååã®æ§æ³ã§ã¯é¿åéåºã«ã¯æ°"ååº"ã®æ¬åºèã眮ãããäºå®ã ã£ãã®ããä»åæ§æ³ã§ã¯æ§å€©ç寺åºã«æ¬åºèã眮ãããæ°åºã®åç§°ã"倩ç寺åº"ãšãªããŸãã
ããã¹ã®ãã«ã«ã¹ããšããååãã€ãããããã€ãããé¿åéãšããååãå
šåœåºã«ãããã
ãšãããã®ã ã£ãããšããèããŠããããçš®ã®ã©ã€ãã«é¢ä¿ã«ããé£ã®å€©ç寺åºã«åºåºèãåºåãç§»ã£ãŠããŸãããšã¯ãåºæ°ã«ãšã£ãŠãã¡ãªããã«æ ã£ãŠããŸã£ãã®ã§ã¯ããšæããŸãã
éã«å€§æ£åºã¯ãååã®æ¬åºèãé£ã§èŠæš¡ã®è¿ã枯åºã§ãã£ãã®ã«å¯Ÿããä»åã¯ããèŠæš¡ã®å€§ããäžå€®åºã«ç§»ãã®ã§ã
飿¥ããèŠæš¡ã®è¿ãåºã«æ¬åºèãç§»ããšããç¶æ³ãè±ããããšã§ãè³æçãäžãã£ãã®ã§ã¯ãšæšå¯ãããŸã
2. åºåãã«å€åããªãã£ãåº
西æåº(è³æçå¢)ãååº(è³æçæž)ãäžå€®åº(æž)ã西åº(æž)ãçžåœããŸãã
ããŸãã¯ã£ãããšããããšã¯åãããŸããããåºåãã®å€æŽãšã¯ç¡é¢ä¿ã«ããã®5幎éã§äœããã®æ¿æ²»çå€åãçºçãããšæãããŸãã
ïŒè³æçã®æžã£ãååºãäžå€®åºã西åºãå¹³å1人ããã幎åã®ããã4ã«å
¥ãåºã§ããã®ã«å¯Ÿãã
è³æçã®å¢ãã西æåºã1人ããã幎åã®æãäœãåºã§ããããšããã
åå
¥ã«é¢ä¿ããå€åãªã®ã§ã¯ïŒãšãã仮説ãç«ãŠãããŸãïŒ
ååãšä»åã§è³æçãå€åããåºããŸãšã
äžèšã®3åé¡ã«åãããããã§ã
åºåœ¹æãšã®å°ççéçµ¶
枯åºã(æ€è±åº)
è¿é£ã®èŠæš¡ã®è¿ãåºã«æ¬åºè
é¿åéåºã倧æ£åºã(æåº)
åºåãã®å€æŽãšã¯ç¡é¢ä¿ã«ãäœããã®å€åãçºçïŒåå
¥ãšé¢ä¿ããããïŒïŒ
西æåºãäžå€®åºã西åºãååº





