仿¥ã¯ãWargaming APIã®äœ¿çšã«ã€ããŠè©±ããå€ãã®ã°ã©ããäœæããæŠè»ã®åçãäœã«äŸåããŠããããåæããŸãã ç§ã¯World of Tanksã®ç¬¬äžäººè
ã§ã¯ãªãããšã«æ³šæããŠãã ãããã©ããã§ééããç¯ããå Žåã¯ãã³ã¡ã³ãã«æžããŠãã ããã ãã¹ãŠã®ã°ã©ãã¯ã¯ãªãã¯å¯èœã§ãã

ãã¹ãŠã®æŠè»ã®åçãã¹ãã°ã©ã ã¯ãå
šäœçãªååžãæ£åžžã§ããããšã瀺ããŠããŸãããå³åŽã«å°ŸããããŸãã ãããçè§£ããŠã¿ãŸãããã
ã²ãŒã ã¯ãŒã«ããªãã¿ã³ã¯ã¹ã§ã¯ãå€ãã®ãã¬ã€ã€ãŒãã¢ã«ãŠã³ãã®çµ±èšãã€ãŸãåçïŒåå©ã®å²åïŒãå人è©äŸ¡ãWN8ãªã©ã«å€§ããªæ³šæãæã£ãŠããŸãã ãããã®ãã©ã¡ãŒã¿ãŒã«ã¯ãå€ãã®ç¹æ§ãèæ
®ããæ°åŒããããŸãã åºæ¬çã«ããã¬ã€ã€ãŒã®åçã¯ãæŠéããšã®å¹³åãã¡ãŒãžãçåçãæŠéã®å¹³åã¬ãã«ãããã³ãã®ä»ã®ããã€ãã®ãã©ã¡ãŒã¿ãŒã®åœ±é¿ãåããŸãã ããããåäžã®æŠè»ã®åçãæ±ºå®ãããã®ã¯äœã§ããïŒ æãæçœãªãªãã·ã§ã³ã¯ãããããã£ãšãã¬ã€ãããã¬ã€ã€ãŒããã§ãã ãããã仿¥ã¯ããµãŒããŒäžã®ã¿ã³ã¯ã®å¹³åçãªæå·ãæ ŒçŽåº«ããã¯èŠããªãé¡äŒŒã®ç¹æ§ãå«ããªãã§ãã¿ã³ã¯ã®ãã©ã¡ãŒã¿ãåæããããšæããŸãã
ãããã£ãŠãåå¥ã®æŠéãè¡ãå ŽåãåããŒã ã«ã¯15人ããããããåãã¬ã€ã€ãŒã¯å¹³åã§æŠéã®çµæã«6.66ïŒ
ã®åœ±é¿ãäžããŸãã ããŒã å
ã®ãã¬ã€ã€ãŒãå°ãªãå Žåããããã®ãã©ã³ã¹ãåãããšãããé£ãããªãããã®ãããããããã®åœ±é¿ãæ»ããã«ãªããŸãã ããŒã ã¯ãåã¿ã³ã¯ã®ééã«åºã¥ããŠä»²äººã«ãã£ãŠåœ¢æããããããããŒã ã®ééã®åèšå·®ã¯æå°éã«æããããŸãã æŠè»ã®ééã¯ãæŠéã®ã¬ãã«ãšãã®ã¯ã©ã¹ïŒéæŠè»ãäžæŠè»ã軜æŠè»ãéæãéæãªã©ïŒã«ãã£ãŠç°ãªããŸãã ã²ãŒã ã§äžè¬çã«èªããããŠããæèŠã¯ãæŠéã®çµæã¯ãã¹ãŠå¹³å49ïŒ
ã®åå©ãåæ°ã®æåã2ïŒ
ã®åŒãåãã«æžããšãããã®ã§ãã
ãã¬ãŒã€ãŒãäžãããã¡ãŒãžã倧ãããªããåãåãåæ°ãæžãã»ã©ãåã€ãã£ã³ã¹ãå¢ãããããåçãäžããããšã¯æããã§ãã ããã¯ããã¬ã€ã€ãŒèªèº«ãšåœŒã®çµéšã«å€§ããäŸåããŸãããééã£ãæãã®äžã§æãã¯ãŒã«ãªæŠè»ã§ããããŒã ã«å©çããããããªãããã§ãã
ããŒã¿æ€çŽ¢
ããŒã¿ãååŸããã«ã¯ãå
¬éã®Wargaming APIã䜿çšã§ããŸãããã®APIã¯ããã¬ãŒã€ãŒãšæ©åšã«é¢ããããŸããŸãªæ
å ±ãæäŸããŸãã https://api.worldoftanks.ru/wot/account/tanks/ã®account_idãã£ãŒã«ãã§GETãªã¯ãšã¹ãã䜿çšãããšããã¬ãŒã€ãŒã®ãã¯ããã¯ã«é¢ããæ
å ±ãã€ãŸãjson圢åŒã®åæŠè»ã§ã®æŠéãšåå©ã®ç·æ°ãååŸã§ããŸãã ç§ã¯ãããé¡ã«ããŸããïŒ0ãã40kkã®ãµã€ã¯ã«ã§ããã¹ãŠã®account_idã®ããŒã¿ãååŸããããšããŸããã Pythonã³ãŒãã¹ããããïŒ
url_users = 'https://api.worldoftanks.ru/wot/account/tanks/'
ãã¡ããããã«ãã¹ã¬ãããŸãã¯éåæã«ã¢ãžã¥ãŒã«ã䜿çšããããšãã§ããŸããããã«ãããééããªãããŠã³ããŒããé«éåãããŸãã ç§ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãã¹ã¯ãªããã2æ¥éå®è¡ããã2600äžäººã®ãŠãŒã¶ãŒã®ããŒã¿ãããŠã³ããŒããããŸããã 鱿«ã«åºçºããã®ã§ã2æ¥éã®ç©ã¿èŸŒã¿ã¯éèŠã§ã¯ãããŸããã§ããã
次ã«ãåã¿ã³ã¯ã®åçïŒåèš450ïŒãèšç®ãããã¹ãŠã®æ©åšã®è©³çްãªç¹æ§ãååŸã§ããŸãã ç¹æ§ã¯https://api.worldoftanks.ru/wot/encyclopedia/vehicles/ã§ãªã¯ãšã¹ãããããšã§ååŸã§ããŸãããAPIã¯ãã®ã¿ã³ã¯ã®æäžäœã®ã¢ãžã¥ãŒã«ãæããŠãããŸããã ãã®æ¹æ³ã®çãã¯ããmodules_treeããã£ãŒã«ãã§ãããã®ãã£ãŒã«ãã«ã¯ãæŠè»ã®ã¢ãžã¥ãŒã«ã調æ»ããããã®ããªãŒãå«ãŸããŠããã®ã§ãããã調ã¹ãåŸãæäžäœã®ã¢ãžã¥ãŒã«ãéžæã§ããŸãã å®çŸ©äžãããã¯æé«ã¬ãã«ã®ã¢ãžã¥ãŒã«ã§ãããè€æ°ããå Žåã¯ç ç©¶ã«æãé«äŸ¡ã§ãã ããã§ã httpsïŒ //api.worldoftanks.ru/wot/encyclopedia/vehicleprofile/ã§å¿
èŠãªã¢ãžã¥ãŒã«ã®IDãæž¡ããŠãªã¯ãšã¹ããè¡ãããšãã§ããŸãã ãã®çµæã450ã®æŠè»ã«é¢ãã詳现ãªããŒã¿ãåŸãããŸãã
ã¿ã°ã䜿çšãã
ããŒã¿åæã«ã¯ãpythonã©ã€ãã©ãªpandasã䜿çšããŸããã ãã¹ãŠã®ããŒã¿ãpandas.DataFrameã«ããŒããããšã450è¡40åã«ãªããŸããã ãã¹ãŠã®å
åã®ãªã¹ãïŒ

ap_damageãapcr_damageãhe_damgeãhc_damageãããã³_penetrationãšåããã®ãé€ãããã¹ãŠã®æ©èœã¯çŽæçã§ãªããã°ãªããŸããã ããã¯ãããŸããŸãªçš®é¡ã®ã·ã§ã«ã«ããæå·ãšè£
ç²è²«éã§ãã APIã¯ãç¹å®ã®çš®é¡ã®çºå°äœã®æå·ãšè£
ç²è²«éã«é¢ããããŒã¿ãå«ããªããžã§ã¯ãã®é
åã®åœ¢åŒã§ãæŠåšã«é¢ããæ
å ±ãè¿ããŸãã ãããã«ã¯4ã€ã®ã¿ã€ãããããŸãã
- ARMOR_PIERCING-培ç²åŒŸ
- ARMOR_PIERCING_CR-ãµããã£ãªããŒã·ã§ã«
- HIGH_EXPLOSIVE-HEã·ã§ã«
- HOLLOW_CHARGE-环ç©ã·ã§ã«
APIã¯ãã©ã®ã·ã§ã«ãã¡ã€ã³ã§ãããã©ã®ã·ã§ã«ãéã®ããã«è³Œå
¥ãããŠãããã瀺ããŠããªããããåæãè€éã«ãªããŸãã
ç¹æ§ã®äœæãšéžæ
ãœãŒã¹ããŒã¿ã«åºã¥ããŠãããæçãªå
åãååŸã§ããŸãã
df['power'] = df.engine_power / (df.weight / 1000)
詊è¡é¯èª€ã«ãã£ãŠïŒã©ã³ãã ãã©ã¬ã¹ãïŒãæãéèŠãªå
åãéžæããŸããïŒããã«ãããã«2ã€ã®è峿·±ãå
åãæ€èšããŸãïŒã

WOTããã¬ã€ããªãã£ãå Žåã以äžã衚瀺ãããŸãïŒã¿ã³ã¯ã¬ãã«ïŒ1ãã10ïŒããã¬ãã¢ã ã¿ã³ã¯ã®æç¡ã匷ããã€ã³ãæ°ããã¯ãŒïŒéЬ/ãã³ïŒãçºå°é床ïŒã©ãŠã³ã/åïŒãéé床ïŒç§ïŒ ãéã®æ£åžïŒã¡ãŒãã«ïŒãåé²é床ïŒkm / hïŒãæå€§ãã¡ãŒãžïŒhpïŒãæå€§è£
ç²è²«éåïŒmmïŒã1åãããã®ãã¡ãŒãžïŒhp / minïŒãè£
ç²ïŒmmïŒã
çç¶ã®æ£åžžå
åæãéå§ããåã«ãããã€ãã®æ©èœãæ£èŠåããå¿
èŠããããŸãã ã¿ã³ã¯ã¬ãã«ã«äŸåããªãå€ãååŸãããã®ã§ãã¬ãã«ããšã«åå¥ã«æ£èŠåããŸãã èšãæãããšãã¬ãã«ããšã®å±æ§ã®å¹³åå€ã0ã«ããŸããæå€§ãã¡ãŒãžãæå€§è£
ç²è²«éåã1åãããã®ãã¡ãŒãžãè£
ç²ã匷ããããã³ãã¯ãŒã®æ£èŠåãå®è¡ããŸããã
ããŒã¿åæ
åçã¯ãã¯ãããžãŒã®åœã«äŸåããŸããïŒ éçºè
ã¯ãããå¯èœãªéããã©ã³ã¹ãããããšããŠããã®ã§ãããããšä»®å®ããã®ã¯è«ççã§ãã ããããããŸãããã ããããã«ã¯ãseabornã©ã€ãã©ãªãŒã䜿çšããŸããã
sns.factorplot('nation','winrate', data=df_normalized,size=4,aspect=3) sns.plt.title('Winrate from nation')

ãã§ã³ã®æŠè»ã¯ããã«ç®ãåŒããŸã-å¹³ååçã¯51ïŒ
ã§ãããã¹ãã¬ããã¯æå€§ã§ãã ããã¯ããã©ã³ããæ¯èŒçæ°ããããã§ã«å¯èœãªãã®ããã¹ãŠæå
¥ããŠããå€ãã®ãã¬ãŒã€ãŒãããã®ãã©ã³ããæå
¥ããããã«æ¥ãã§ãããšããäºå®ã«ãã£ãŠèª¬æãããŸãã ãã®ãããªãã¬ã€ã€ãŒã¯ããªãçç·ŽããŠãããããåå©ã®å²åã¯å¹³åãäžåã£ãŠããŸãã ãŸãããã§ã³äººãšå¯ŸæŠãããã¹ãŠã®äººãèªåã®åŒ±ç¹ãšäŸµå
¥ãŸãŒã³ãç¥ã£ãŠããããã§ã¯ãããŸããã ããããæéãçµã€ã«ã€ããŠãåçã®å€ã¯çãããªãå¯èœæ§ããããŸãïŒããã§ãªãå ŽåãWGã¯ãã©ã³ãå
ã®å€ãã®æŠè»ã匱äœåãããŸãïŒã
ãããŠãã©ã®ã¯ã©ã¹ã®ãã¯ãããžãŒãã©ã®ããã«ãæ²ãããã®ã§ããããïŒ åæ§ã®ãã£ãŒããäœæããŸãããïŒ
ax = sns.factorplot('type','winrate', data=df_normalized,size=5,aspect=3) sns.plt.title('Winrate from type')

å¹³åçãªæŠè»ã§åã€æå€§ã®ãã£ã³ã¹ã§ããã軜æŠè»ãšå€§ç ²ã§æå°ã®ãã£ã³ã¹ã§ããããšãããããŸãã 軜æŠè»ã«ãã®ãããªæå³ããããšããäºå®ã¯çè§£ã§ããŸãã ãã®ã¯ã©ã¹ã®ãã¬ã€ã€ãŒã®å€ãã¯ãæŠééå§çŽåŸã«çã£åããé£ã³åºããããŒã ã«ç¹å¥ãªå©çãããããããšãªãèªç¶ã«èåããŸãã éåžžãArtaã¯å¥ã®ãããã¯ã§ãããããããã§ã¯èª¬æããŸããã
ããã«ãããã2ã€ã®æ©èœã«ã€ããŠã¯ãã©ã³ãã ãã©ã¬ã¹ãã«åºã¥ãã¢ãã«ã«å€§ããªå©ç¹ããããããªãããã説æããŸããã
以åã«éžæãã屿§ãšåå©ã®å²åã®çžé¢é¢ä¿ãèŠãŠã¿ãŸãããã

is_premiumãšwinrateã®åŒ·ãçžé¢é¢ä¿ãéç«ã£ãŠããŸãã ãã¬ãã¢ã ã¿ã³ã¯ã¯éåžžã®ã¿ã³ã¯ãããåªããŠããŸããïŒ ããŸã奜ãã§ã¯ãããŸããã ãã®ãããªåŒ·ãäŸåæ§ã¯ãçµéšè±å¯ãªãã¬ã€ã€ãŒãã·ã«ããŒãé€ãããã«ãã¬ãã¢ã è£
åã䜿çšããŠãããšããäºå®ã«ããå¯èœæ§ãæãé«ãã§ãã ã°ã©ããäœæããŠããã¬ãã¢ã ããã³åŸæ¥ã®æ©åšã§ã®ãŠã£ã³ã¬ãŒãã®ååžã確èªã§ããŸãã
facet = sns.FacetGrid(df_normalized, hue="is_premium",aspect=4) facet.map(sns.kdeplot,'winrate',shade= True) facet.set(xlim=(0.40, df_normalized['winrate'].max())) facet.add_legend() sns.plt.title('Winrate from premium')

åŸæ¥ã®è£
眮ã§ã®åå©ã®ååžå¯åºŠã¯ãå¹³åå€ã49ïŒ
ã®ã¬ãŠã¹æ£èŠååžã§ããããšãããããŸãã ãã¬ãã¢ã è»ã®åå©ã®ååžå¯åºŠã¯ããé«ãwinrateã«åãã£ãŠæ¡åŒµãããå¹³åå€ã¯52ïŒ
ã§ããã忣ã¯åŸæ¥ã®è»ã®ããããã¯ããã«é«ãã§ãã
ã²ãŒã ã«ã¯åèš114ã®ãã¬ãã¢ã ã¿ã³ã¯ããããããã¯åèšã®25ïŒ
ã§ãã åå©ã®å²åã«ãããã¹ãŠã®æŠè»ã®ãã¹ãã°ã©ã ã§ã¯ãå³åŽã«å°ŸãèŠããŸããã ã©ã®ã¿ã³ã¯ãå
¥ã£ãã®ãèŠãŠã¿ãŸãããïŒ

ããŒã«ã®ã¿ã³ã¯ã®93ïŒ
ããã¬ãã¢ã ã§ãã è峿·±ãããšã«ãæ®ãã®7ïŒ
ïŒ31ã®2ïŒã¯ãã§ã³ã®æŠè»ã§ãã
ãŸããçžé¢ããŒãã«ãããåçã¯ã¿ã³ã¯ã¬ãã«ã«çŽæ¥æ¯äŸããããšãããããŸãã ãã£ãŒãã«ã€ããŠããã«è©³ããèããŠã¿ãŸãããã

ãã®ãããªåçã説æããã®ã¯ç°¡åã§ãã ãã¯ãããžãŒã®æåã®2ã€ã®ã¬ãã«ã§ã¯ãçµéšäžè¶³ã®ããã«åå¿è
ãã¬ã€ã€ãŒå
šå¡ãæŠè»ã®çµ±èšãå°ç¡ãã«ãããšããäºå®ã®ããã«ããã®ãããªå°ããªåå©çããããŸãã ãŸããæåã®ã¬ãã«ã§ã¯ããªã¹ãã®äžçªäžã«ããå¯èœæ§ãé«ããªããŸãã å察ã«ã10ã¬ãã«ã§ã¯ãåžžã«ãããã«ããŸãã ãŸããã¬ãã«9-10ã§ã¯ããã¬ãã¢ã ã¢ã«ãŠã³ããªãã§ãã¬ã€ããããšã¯åçæ§ããªããããããã«ããã»ãšãã©ã®äººã¯ãã¬ãã¢ã ã§ãã¬ã€ããŸãã
æ®ãã®å
åã®ãã¡ããããã¯åå©çã«çŽæ¥æ¯äŸããŸãïŒåŒ·ããåé²é床ã1åãããã®ãã¡ãŒãžãããã³é§ã 鿝äŸïŒåæžã®é床ãéã®æ£åžã ãããŸã§ã®ãšããããã¹ãŠãæããã§ãããæå€§ã®ãã¡ãŒãžãšè£
ç²ã®è²«éåã¯ãåå©ã®å²åã«åæ¯äŸããããšãããããŸãã
ããã¯å¥åŠã§ãããªããªããã¿ã³ã¯ãããå€ãã®ãã¡ãŒãžãäžããã»ã©ãããè¯ãããã§ãã ããã§ãã æå€§ãã¡ãŒãžã®å€ãã©ã®ããã«ååŸããããããäžåºŠèŠããšããã£ãããäœã§ããããæšæž¬ã§ããŸãã ãããã¬ã³ã®ãã¹ãŠã®å¯èœãªç ²åŒŸããæå€§ã®ãã¡ãŒãžãšè£
ç²è²«éåãååŸããŸããã ããããçµå±ã®ãšãããã»ãšãã©ã®å Žåãå°é·ãžã®æå€§ã®ãã¡ãŒãžïŒæå°ã®è£
ç²è²«éåïŒã§ãããå°é·ã¯åŸæ¥ã®æŠè»ã§æãäžè¬çã«äœ¿çšãããã·ã§ã«ãšã¯ã»ã©é ããããäžæ£ç¢ºã«ãªããŸãã ãŸãã1åéãã®ãã¡ãŒãžã¯å€§ãããªãå¯èœæ§ããããé·æéã®ã¯ãŒã«ããŠã³ã«ãã1åãããã®ãã¡ãŒãžã¯å°ãããªããŸãã ããã«ãçžé¢ã®è² ã®å€ã¯ãããããå€§ç ²ãéåžžæå€§ã®ãã¡ãŒãžãšæå°ã®åå©çãæã£ãŠãããšããäºå®ã«ãããã®ã§ã-ãããã£ãŠã忝äŸã
çç¶ã®éèŠæ§
ããã§ããã®ããŒã¿ã«ã©ã³ãã ãã©ã¬ã¹ããæ§ç¯ããçµæã確èªã§ããŸãã ã©ã³ãã ãã©ã¬ã¹ãã¯ãå€ãã®ç°ãªãæ±ºå®æšã®çµæã®å¹³åã«åºã¥ãæãäžè¬çãªæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®1ã€ã§ãã ãã®ã¢ã«ãŽãªãºã ã¯ãåã
ã®ç¹æ§ã®éèŠæ§ãèŠã€ããã®ã«é©ããŠããŸãã

ããŸããŸãªãã©ã¡ãŒã¿ãŒãšèšå·ã詊ããŸãããããšã©ãŒã倧å¹
ã«æžããããšã¯ã§ããŸããã§ããã ã¢ã«ãŽãªãºã ã¯å¹³åã§äºæž¬ã§1.3ïŒ
ã®ãšã©ãŒãçããããšãããããŸãã æ¬¡ã«ããã®ãã©ã¬ã¹ãã®å±æ§ã®éèŠæ§ãèŠãŠã¿ãŸãããã
importances = rf.feature_importances_ std = np.std([tree.feature_importances_ for tree in rf.estimators_], axis=0) indices = np.argsort(importances)[::-1] legends = [] for i in range(X.shape[1]): legends.append('%d.%s (%f)' % (i + 1, X.columns[indices[i]], importances[indices[i]])) plt.title('Feature importances') bars = plt.bar(range(X.shape[1]), importances[indices], color='c', yerr=std[indices], align='center') plt.xticks(range(X.shape[1]), range(1, X.shape[1] + 1)) plt.xlim([-1, X.shape[1]]) plt.legend(bars, legends, fontsize=12)

ãã®ã¢ãã«ã§ã¯ãæãéèŠãªãã©ã¡ãŒã¿ãŒããã¬ãã¢ã ã¿ã³ã¯ã§ãããã©ããã倿ããŸãããããã®æ©èœã®éèŠæ§ã¯æ¬¡ã«äœäžãããã®ã®2åã§ãã éèŠæ§ã«é¢ããæ¬¡ã®4ã€ã®ç¹åŸŽã¯ãããŒã«ã®ç¹æ§ã§ããããããäºæž¬å¯èœã§ãã ãã§ã³å
±ååœã«å±ããæ©èœã远å ããããšãããããŸããããã«ããããšã©ãŒããããã«æžå°ããŸããã ãã ããä»ã®ãã¹ãŠã®æ©èœãåœãæè¡ã¯ã©ã¹ã«è¿œå ããŠããã¢ã«ãŽãªãºã ã®åäœã¯æ¹åãããŸããã§ããã
ãµã³ãã«ãããã¬ãã¢ã ã¿ã³ã¯ãåé€ããåããã©ã¡ãŒã¿ãŒã§ã©ã³ãã ãã©ã¬ã¹ãããã¬ãŒãã³ã°ãããšã©ããªããŸããïŒ çµæãç®±ã²ãå³ã§æç€ºãããšäŸ¿å©ã§ãã
fig, ax1 = plt.subplots(figsize=(10, 6)) data = [score_with_premium, score_without_premim] bp = plt.boxplot(data, notch=0, sym='+', vert=1, whis=1.5) ax1.set_title('Comparison of score with and without premium') ax1.set_ylabel('mean_absolute_error') xtickNames = plt.setp(ax1, xticklabels=['With premium', 'Without premium']) plt.setp(xtickNames, rotation=0, fontsize=12)

ã¢ã«ãŽãªãºã ãåå©ã®å²åãæšæž¬ããããšã¯ããã«ã¯ããã«å®¹æã«ãªããå¹³åããŠãçžäºæ€èšŒã®ãšã©ãŒã¯0.9ïŒ
ã«æžå°ãããšã©ãŒã®åºãããéåžžã«å°ãããªããŸããã
ãããã«
WG APIã®äœ¿ç𿹿³ãæ€èšããŸããã 圌ãã¯ãåçãã©ã®ããã«åœã«äŸåããããçºèŠããŸãã-çŸæç¹ã§ã¯ãæè¡ã¯ã©ã¹ã®ãã§ã³äººã§æãäžå®å®ã§ã-äžæŠè»ã§æå€§ã§ãèžè¡ã§æå°ã§ãã ãŸããã¬ãã«ã«çŽæ¥äŸåããŠããããšãããããŸããã ç§ãã¡ã¯ãæŠè»ã®ã©ã®å
åãæŠéã§ã®åå©ã«æã圱é¿ããããåæããŸãã-ãã¬ãã¢ã æŠè»ãã©ããããããŠéã®ãã©ã¡ãŒã¿ãŒã§ãã ãŸããæŠè»ã®ç¹æ§ã«ãã£ãŠåå©ã®å²åãæ¯èŒçæ£ç¢ºã«äºæž¬ã§ããåçŽãªã¢ãã«ãæ§ç¯ããŸããã
UpdïŒ saw_toothã¯ãåŸæ¥æè¡ããã®winrateã®ã°ã©ããäœæããåå¥ã«å
¥åããïŒã¯ãªãã¯å¯èœãªïŒã¢ã€ãã¢ãææ¡ããŸããïŒ

PSïŒãã®ããŒã¿ã»ããã䜿çšãããããAPIçµç±ã§ããŒã¿ãããŠã³ããŒãããããªãå Žåã¯ãç§ã«é£çµ¡ããŠãã ããã