èæ¯ã»ç®ç
ç§ã¯ãçŸåšããŒã¿ãšã³ãžãã¢ãªã³ã°ãçæ¥ãšããŠããŸããæ®æ®µã¯ãããŒã¿åºç€ã®æ§ç¯ãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãªã©ã«åŸäºããŠããŸãã
ããã¯ããŒã¿ã®åéããèç©ãåæãªã©ã®ç°å¢æ§ç¯ã®çµéšã¯ãããããããŸãããæ©æ¢°åŠç¿ã«ããäºæž¬ãåé¡ãªã©ã®ã¹ãã«ã¯æã¡åãããŠããŸããã§ããã
ä»ãŸã§æ©æ¢°åŠç¿ãé¿ãç¶ããŠããŸããããäžå¿µçºèµ·ãåŠãŒããšæããŸãã
åŠã³æ¹ãšããŠã¯ãAWS Certified Machine Learning â SpecialtyïŒä»¥éãML詊éšãšãããïŒã®å匷ãéããŠãçè§£ãæ·±ããŠããããšæããŸãã
ML詊éšã®ã¬ã€ããèªããšã第ïŒåéã«æ¢çŽ¢çããŒã¿è§£æãåºãŠããŸããã®ã§ãããããåŠã³ãããšæããŸãã
ååã¯æ¢çŽ¢çããŒã¿è§£æã«ãããããŒã¿ã®ç¹åŸŽãæŽãããã®ææ³ãåŠã³ãŸããããä»åã¯ãã¹ã±ãŒãªã³ã°ã«ã€ããŠåŠã³ãããšæããŸãã
ãŸãšã
- æ©æ¢°åŠç¿ã§ã¯ãããŒã¿ãå¿ èŠã§ããããã®ããŒã¿ã«å€ãå€ãæ··ãã£ãŠãããšäºæž¬ã®ç²ŸåºŠãäžãããŸãã
- ãŸããåããŒã¿ã®å€ã¯éã¿ãå¹³çã«ããããšãéèŠã§ããã®ããã«ã¯ååŠçã§ã¹ã±ãŒãªã³ã°ïŒæ£èŠåãæšæºåïŒãè¡ãããšãå¿ èŠã«ãªããŸãã
æŠèŠ
åååæ§ã«ãcodexaããã®èšäºãæ£èŠåã»æšæºåã培åºè§£èª¬ ïŒPython ååŠç ãµã³ãã«ã³ãŒãä»ãïŒããå ã«åŠãã§ãããããšæããŸãã
æ©æ¢°åŠç¿ã®åãæå€§é掻ããããã«ã¯ååŠçãéèŠãšã®ããšã
ä»åã¯ãæ©æ¢°åŠç¿ã®ååŠçã®ãæ£èŠåããšãæšæºåããçè§£ããŸãã
ã¹ã±ãŒãªã³ã°ãšã¯ïŒ
- Feature Scaling
- ç¹åŸŽéã«ãããŠå€ãäžå®ã®ã«ãŒã«ã«åºã¥ããŠäžå®ã®ç¯å²ã«å€æããåŠçã®ããšãæããŸãã
- ã¹ã±ãŒãªã³ã°ã«ã¯ã以äžãå«ãŸããŸãã
- æ£èŠå
- 0ã1ã«å€æããŸãã
- æšæºå
- å¹³åã0ã忣ã1ã«å€æããŸãã
- æ£èŠå
- ã¹ã±ãŒãªã³ã°ã¯ãå šãŠã®æ©æ¢°åŠç¿ã¢ãã«ã«æå¹ã«åãããã§ã¯ãªãã
ã¹ã±ãŒãªã³ã°ã®ç®çâ
- ç¹åŸŽéãæã€å€ã®æã€éã¿ãå¹³çã«ããããšã
- ç¹åŸŽééã®è·é¢ãããŒã¹ã«ãã以äžã®ãããªã¢ãã«ã«æå¹ãšã®ããšã§ãã
- SVNïŒSupport Vector MachineïŒ
- kNN(k-Nearest Neighbors)
- æ©æ¢°åŠç¿ã§æ±ãç¹åŸŽéã«ã¯ãåºæ¬çã«æ°å€ãæ±ãããããã®ããæ°å€å士ãåãå°ºåºŠã§æ±ã£ãŠããŸãå¯èœæ§ããããšã®ããšã§ãã
- 詳现ã¯ãcodexaããã®ããŒãžãã確èªããã ããšããŠãäŸãã°AãEã®çåŸããããšã身é·ãšå¹³ç±ã®ç¹åŸŽéããããšãã«ããŠãŒã°ãªããè·é¢ãçšããŠãçåŸå士ã®è·é¢ã枬ã£ãå Žåãå¹³ç±ã®å¹ ããã身é·ã®å¹ ãåºããªã£ãŠããŸããŸãããïŒèº«é·ã®éã¿ã倧ãããªã£ãŠããŸãããïŒ
- æ¬æ¥åäœãéãã¯ãã®ç¹åŸŽéãåãå°ºåºŠã§æããããšãããšãæ¯èŒãé£ããå ŽåãããäŸã§ããã
- äžèšã®ç¹åŸŽéã§ãæšæºåã®ã¹ã±ãŒãªã³ã°ãé©å¿ããå ŽåããŠãŒã°ãªããè·é¢ã®å·®ãå°ãããªããŸããã
- ç¹°ãè¿ãã§ããæšæºåã¯ãåç¹åŸŽéã®å¹³åã0ãæšæºåå·®ã1ã«ãªããããªååžã«å€æããŠããã
ã¹ã±ãŒãªã³ã°ã®ç®çâ¡
- åŠç¿ã³ã¹ãã®åæžãç®çã®äžã€ã§ãã
- 以äžã®ã¢ãã«ã§æå¹ãšãããŠããããã§ãã
- ç·åœ¢ååž°
- ãã¥ãŒã©ã«ãããã¯ãŒã¯
- ç¹åŸŽéã®ç¯å²ãç°ãªãããšã§ã忥éäžæã«æŽæ°ããããã©ã¡ãŒã¿ã®ãµã€ãºãç°ãªã£ãŠããŸãããã§ããåŠç¿ãã¹ã ãŒãºã«è¡ãããããã«ã¯ã¹ã±ãŒãªã³ã°ãå¿
èŠãšã®ããšã§ããã
- ææ¥éäžæ³ã«ã€ããŠãç§ã¯çè§£ã§ããŠããªãã®ã§åŸã»ã©åŠç¿ããããšæããŸãã
ã¹ã±ãŒãªã³ã°ã®åœ±é¿ãå°ãªãã¢ãã«
- æ¯èŒç圱é¿ãåãã«ããã¢ãã«ãšããŠã以äžã®ãããªããªãŒããŒã¹åã®ãã®ããããã§ãã
- ã©ã³ãã ãã©ã¬ã¹ã
- LightGBM
- ããªãŒããŒã¹åã®ã¢ãã«ã¯åç¹åŸŽéå ã®åå²ãç¹°ãè¿ããããç¹åŸŽéå士ã®ã¹ã±ãŒã«ãåãããªããŠãã圱é¿ãåãã«ããããã§ãã
æ£èŠåãšæšæºåã®å®çŸ©ãšå®è£
æ£èŠåãšã¯ïŒ
- NormalizationãšåŒã¶ã
- Normalizationã¯ãè€æ°ã®ææ³ãæã£ãŠããããããã§ã¯ãmin-max normalizationãšããã
- æ£èŠåã«ã€ããŠã®æ°åŒã¯ã以äžã®éãã
- æ°åŒã¯ãQiitaã®æ°åŒããŒãã·ãŒããåèã«æžããŸããããšãŠãå©ãããŸãããæè¬ã§ãã
$ \large{ x_{norm}^i = \frac{x^i-x_{min}} {x_{max} - x_{min}} } $
-
$ x^iã\quad $ ç¹åŸŽéå ã®åå€
-
$ x_{min} \quad $ ç¹åŸŽéå ã®æå°å€
-
$ x_{max} \quad $ ç¹åŸŽéå ã®æå€§å€
-
ç¹åŸŽéã®åå€ãæå°å€ããåŒãããã®ïŒäžèšã®ååïŒããç¹åŸŽéå ã®æå€§å€ããæå°å€ãåŒããå€ïŒäžèšã®åæ¯ïŒã§å²ãããšã§æ£èŠåãè¡ã£ãŠããŸãã
䜿çšããéã®æ³šæç¹
- æ£èŠåã¯å€ãå€ã«ææã§ããããšãããã§ãã
- éåžžã«å€§ããªå€ãå°ããªå€ãå€ãå€ãšããŠååšããŠããå Žåãä»ã®å€ã0ã1ã«åŒã£åŒµããããïŒç¢ºãã«åŒãèŠããšããã¯ããããïŒ
- ãã®ãããæ£èŠåã䜿çšããå Žåã¯ãå€ãå€ãååšããªãã確èªããå¿ èŠããããŸãã
å€ãå€ã®æç¡ã®éãã確èªããŠã¿ã
å€ãå€ãªãã®å Žå
â 衚A
| çåŸ | 身é·(cm) | å¹³ç±(â) |
|---|---|---|
| A | 168 | 37.1 |
| B | 170 | 36.3 |
| C | 168 | 35.6 |
| D | 162 | 36.1 |
| E | 182 | 36.1 |
â
â 衚CïŒæ£èŠååŸïŒ
| çåŸ | 身é·(cm) | å¹³ç±(â) |
|---|---|---|
| A | 0.3 | 1 |
| B | 0.4 | 0.466667 |
| C | 0.3 | 0 |
| D | 0 | 0.333333 |
| E | 1 | 0.333333 |
- $ \large{x_{min}} \quad$ 身é·ã¯ã162cmãå¹³ç±ã¯ã35.6â
- $ \large{x_{max}} \quad$ 身é·ã¯ã182cmãå¹³ç±ã¯ã37.1â
- $ \large{x_{max}-x_{min}} \quad$ 身é·ã¯ã20ãå¹³ç±ã¯ã1.5
å€ãå€ããã®å Žå
â 衚D
| çåŸ | 身é·(cm) | å¹³ç±(â) |
|---|---|---|
| A | 168 | 37.1 |
| B | 170 | 36.3 |
| C | $ \color{red}{10000} $ | 35.6 |
| D | 162 | $ \color{red}{0} $ |
| E | 182 | 36.1 |
â
â 衚EïŒæ£èŠååŸïŒ
| çåŸ | 身é·(cm) | å¹³ç±(â) |
|---|---|---|
| A | 0.000061 | 1 |
| B | 0.000813 | 0.959569 |
| C | 1 | 0.959569 |
| D | 0 | 0 |
| E | 0.002033 | 0.973046 |
- $ \large{x_{min}} \quad$ 身é·ã¯ã162cmãå¹³ç±ã¯ã0â
- $ \large{x_{max}} \quad$ 身é·ã¯ã100000cmãå¹³ç±ã¯ã37.1â
- $ \large{x_{max}-x_{min}} \quad$ 身é·ã¯ã9838ãå¹³ç±ã¯ã37.1
å€ãå€ã®æ³šæç¹
- 衚Dã§ã¯ãçåŸCã®èº«é·ã10000cmãçåŸDã®å¹³ç±ã0âã«ãªã£ãŠãããããå€ãå€ã§ããã
- ãã®ããã身é·ã¯0ä»è¿ãå¹³ç±ã¯1ä»è¿ã«å€ãåŒã£åŒµãããŠããã
æšæºåãšã¯ïŒ
-
Standardization
-
åºæ¬çã«ã¯ãå¹³åã0ãæšæºåå·®ã1ãšãã倿ãšããŠå®çŸ©ãããŠãããšã®ããšã
-
å ¥åã®ç¹åŸŽéãæ£èŠååžã«åŸãä»®å®ãã倿ãè¡ãããšãã§ããŸãã
-
åŒã¯ã以äžã®ãšããã§ãã
$ \large{ x_{std}^i = \frac{x^i - ÎŒ} {Ï} } $ -
$ x^iã\quad $ ç¹åŸŽéå ã®åå€
-
$ ÎŒ \quad $ ç¹åŸŽéå ã®å¹³åå€
-
$ Ï \quad $ ç¹åŸŽéå ã®æšæºåå·®
-
ç¹åŸŽéå ã®åå€ããå¹³åå€ãåŒããå€ããæšæºåå·®ã§å²ãããšã§ãæšæºåãå®çŸããŸãã
-
æšæºåã¯ãååžå ã®å¹³åå€ã0ãæšæºåå·®ã1ã«ãã倿ãšã®ããšã§ãã
-
ïŒæ£èŠåã0ã1ã®ç¯å²ã«åããŠããã®ãšã¯ç°ãªããæšæºåã¯ç¹å®ã®ç¯å²ã«åãããããªå€æã§ã¯ãªãïŒ
-
æšæºåå·®ïŒÏïŒã«ã¯ä»¥äžã®ãã®ããããŸãã
- éåžžã®æšæºåå·®
- äžåæšæºåå·®
-
ããŒã¿ã«ã¯ä»¥äžã®ãã®ããããŸãã
- æ¯éå£ãšåŒã°ããå šäœã瀺ãããŒã¿
- æšæ¬ãšåŒã°ããæ¯éå£ããæœåºãããããŒã¿
-
忣ã«ã¯ä»¥äžã®ãã®ããããŸãã
- æ¯éå£ããæ±ããããåæ£ãæ¯åæ£
- æšæ¬ããæ±ãããã忣ãäžå忣
-
çµ±èšåŠçã«ãäžååæ£ã¯æ¯åæ£ãããå°ãã ãå°ãããªãããšãç¥ãããŠãããšã®ããšã忣ã®å¹³æ¹æ ¹ã§ããæšæºåå·®ã«ãè¥å¹²ã®éããçãŸãããããã§ãã
æ£èŠåãšæšæºåã®ã©ã¡ãã䜿çšããã¹ãã
- 䜿çšããã¢ãã«ãç²ŸåºŠãšæ¯èŒããªããæ€èšããããšã§ãããäžæŠã«æ±ºããããšã¯ã§ããªããšã®ããšã
- äŸãã°æ£èŠåã¯å€ãå€ã«ææã§ãããŸãããå€ãå€ãååšãããšããã ãã§äœ¿çšããªãããã§ã¯ãªãããã§ãã
- å€ãå€ãé€å€ããŠæ£èŠåãçšããå Žåãããããã§ãã
- ãããã£ã倿ã¯ç¥èãšçµéšã®ç©ã¿éãã§å®çŸãããäžãããã課é¡ã«å¯ŸããŠä»ãŸã§ã®çµéšãç¥èãããã©ã¡ãã䜿çšããã¹ãã倿ãããšããå Žåãå€ãããã§ãã
å®è·µ
æ£èŠåã®Pythonå®è£
æºå(ä¹±æ°ã®çæ)
- æ£èŠåãè¡ããããæºåãšããŠä¹±æ°ãçæããŸãã
# NumpyãšMatplotlibãPandasã®ã€ã³ããŒã
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# ã·ãŒããçšããããšã§çºçããä¹±æ°ã®åºå®ãå¯èœ
np.random.seed(seed = 0)
data_n = np.random.multivariate_normal([4, 4], [[2, 0], [0, 2]], 200 )
data_p = pd.DataFrame(data_n)
print("numpyã®é
åâ")
print(data_n[0:5])
print("pandasã®DataFrameâ")
print(data_p.head(5))
- çµæã¯ã以äžã®ãšããã§ãã
sklearnã®ã€ã³ã¹ããŒã«
- 次ã®ã¹ãããã§å¿ èŠã«ãªãããäºåã«ã€ã³ã¹ããŒã«ããŠãããŸãã
pip install sklearn
1.scikit-learnã«ããæ£èŠåã®å®è£ ïŒæ£èŠåååŸã®ãããããå«ãïŒ
- ã¹ã±ãŒãªã³ã°åãšã¹ã±ãŒãªã³ã°åŸã®ç¹ãå¯èŠåããããã®é¢æ°ãå®çŸ©ããŸãã
def image_show(data_before,data_after,title):
# åºåãµã€ãº
plt.figure(figsize=(8,8))
# ã¿ã€ãã«
plt.title(title)
# X軞ãšY軞ã®ç¯å²ãå®çŸ©
plt.xlim([-8,8])
plt.ylim([-8,8])
# ç®çãã®å»ã¿
plt.xticks(np.arange(-8,9,1))
plt.yticks(np.arange(-8,9,1))
# ããããã®èšå®
plt.scatter(data_before[:,0],data_before[:,1],c='blue',s=10,label='before')
plt.scatter(data_after[:,0],data_after[:,1],c='red',s=10,label='before')
# ã©ãã«ã®èšå®
plt.legend(fontsize = 15)
# äžå¿ã©ã€ã³ã®èšå®
plt.hlines(0, xmin = -8, xmax = 8 , linestyles='dashed')
plt.vlines(0, ymin = -8, ymax = 8 , linestyles='dashed')
plt.show()
return
- scikit-learnã®MinMaxScalarã¯ã©ã¹ãçšããŠå®è£ ããŸãã
from sklearn.preprocessing import MinMaxScaler
#æ£èŠåã®ã¯ã©ã¹ãæºå
ms = MinMaxScaler()
#ç¹åŸŽéã®æå€§å€ãšæå°å€ãèšç®ã倿
data_sc = ms.fit_transform(data_n)
#ãããã
image_show(data_n,data_sc, 'min-max normalization')
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
-
æ£èŠååŸãimage_show颿°ã®data_afterã«å ¥ããèµ€åã§è¡šç€ºãããŠããŸãã
-
確ãã«0ã1ã®éã«å€ãå€ãéãŸã£ãŠããããã§ãã
-
æ£èŠååŸã®å€ã確èªããŠã¿ãŸãã
data_sc[0:5]
- åç¹åŸŽéã®çµ±èšå€ã確èªããŸãã
# æå°å€
ms.data_min_
# æå€§å€
ms.data_max_
# åç¹åŸŽéããšã®ç¯å²
ms.data_range_
# ãµã³ãã«æ°
ms.n_samples_seen_
2.Numpyã«ããæ£èŠåã®å®è£
- Numpyã®ã¡ãœãããçšããŠå®è£ ãè¡ããŸããä¹±æ°ã«ã€ããŠã¯ãæåã«å®çŸ©ããdata_n倿°ãçšããŸãã
- Numpyã®ã¡ãœãããçšããå Žåã¯ãscikit-learnãšã¯ç°ãªããæ£èŠåã®èšç®åŒãå®çŸ©ããŠãã²ã«å¿ èŠããããŸãã
- min_max_n()ãšãã颿°ãäœæããæ£èŠååŸã®å€ãè¿ãããã«ããŸãã
def min_max_n(n, axis=None):
# æå°å€ã®èšç®
min_n = n.min(axis= axis, keepdims = True)
# æå€§å€ã®èšç®
max_n = n.max(axis=axis, keepdims = True)
# æ£èŠåã®èšç® â» æ°åŒã§æžãããã®ãšåãïŒ
min_max_n = (n - min_n) / (max_n - min_n)
return min_max_n
- å®è¡
print("æ£èŠåå")
print(data_n[0:5])
print("æ£èŠååŸ")
print(min_max_n(data_n,axis=0)[0:5])
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
- 1.scikit-learnã«ããæ£èŠåã®å®è£ ãšåãå€ãåºåãããŠããŸããå®è£ éã§èšãã°scikit-learnãçšããã»ããç°¡åã
- ããã§ã¯ãå®è£ ã®å 容ãç¥ãæå³ã§å®è£ ãããŠãããšã®ããšã
3.Pandasã«ããæ£èŠåã®å®è£
- DataFrameåã§ãã£ããšããŠãscikit-learnãçšããŠæ£èŠåã¯å®è£ å¯èœ.
- PandasãçšããŠå®è£ ããããšã§ãå 容ãçè§£ããã
- min_max_pãšãã颿°ãäœæããŸãã
def min_max_p(p):
min_p = p.min()
max_p = p.max()
min_max_p = (p - min_p) / (max_p - min_p)
return min_max_p
- 1.scikit-learnã«ããæ£èŠåã®å®è£ ã2.Numpyã«ããæ£èŠåã®å®è£ ãšåãå€ãåºåãããŠããããšã確èªã§ããŸããã
æšæºåã®Python å®è£
- ä¹±æ°ã«é¢ããŠã¯æ£èŠåã§äœæãããã®ã䜿çšããŸãã
- 䜿çšããã©ã€ãã©ãªã«ãã£ãŠãæšæºåå·®ã®ã¿äœ¿çšã§ãããã®ãšãäžåæšæºåå·®ã䜿çšã§ãããã®ãããããã§ãããã®ãã以äžã®å®è£
ã確èªããŸãã
- 1.scikit-learnã«ããæšæºåã®å®è£ ã«ã€ããŠã¯ãæšæºåå·®ã®ã¿
- 2.Numpyã«ããæšæºåã®å®è£ ãšã3.Pandasã«ããæšæºåã®å®è£ ã§ã¯ãæšæºåå·®ãšäžåæšæºåå·®ã®äž¡æ¹
1.sckit-learnã«ããæšæºåã®å®è£ ïŒæšæºåååŸã®ãããããå«ãïŒ
- ãããããã颿°ã«ã¯ãæ¢ã«äœæããimage_showãå©çšããŸãã
from sklearn.preprocessing import StandardScaler
# æšæºåã®ã¯ã©ã¹ãå®çŸ©
ms = StandardScaler()
# ç¹åŸŽéã®å¹³åå€ãšæšæºåãèšç®ããç¹åŸŽéã®ã¹ã±ãŒã«å€æãè¡ã£ãŠãããŸãã
data_std = ms.fit_transform(data_n)
image_show(data_n,data_std,'Standardization')
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
- å€ã確èªããŸãã
# æšæºåå
print("æšæºåå")
print(data_n[0:5])
# æšæºååŸ
print("æšæºååŸ")
print(data_std[0:5])
- å€ãããããããçµæã確èªãããšã0ä»è¿ã«ååžããŠããããšãåãããŸããã
# åç¹åŸŽéããšã®å¹³åå€
print(ms.mean_)
# åç¹åŸŽéããšã®æšæºåå·®
print(ms.var_)
# ãµã³ãã«æ°
print(ms.n_samples_seen_)
- çµæã¯ã以äžã®ãšããã§ãã
2.Numpyã«ããæšæºåã®å®è£
- Numpyã§æšæºåŒã®èšç®åŒãå®çŸ©ãã颿°ãäœæããŸãã
- standard_n()ãšãã颿°ãäœæãæ£èŠååŸã®å€ãè¿ãããã«ããŸãã
def standard_n(n, axis=None, ddof=0):
# å¹³åå€ãèšç®
mean_n = n.mean(axis = axis , keepdims = True)
# æšæºåå·®ãèšç®ãddofã0ãªãã°æšæºåå·®ãddofã1ãªãã°äžæšæºåå·®
# keepdims:é
åã®æ¬¡å
æ°ãèœãšããã«çµæãæ±ããããã®åŒæ°
std_n = n.std(axis = axis , keepdims = True, ddof = ddof)
# æšæºåã®èšç®
standard_n = (n - mean_n) / std_n
return standard_n
print("æšæºåå")
print(data_n[0:5])
print("æšæºåïŒæšæºåå·®ïŒ")
print(standard_n(data_n,0,0)[0:5])
print("æšæºåïŒäžæšæºåå·®ïŒ")
print(standard_n(data_n,0,1)[0:5])
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
3.Pandasã«ããæšæºåã®å®è£
- æ£èŠååŸã®å€ãè¿ãstandard_pãšãã颿°ãäœæããŸãã
def standard_p(p, ddof=1):
# å¹³åå€
mean_p = p.mean()
# æšæºåå·®
std_p = p.std(ddof = ddof)
# æšæºåã®èšç®
return (p - mean_p) / std_p
print("æšæºåå")
print(data_p[0:5])
print("æšæºå(æšæºåå·®)")
print(standard_p(data_p,ddof=0).head(5))
print("æšæºå(äžåæšæºåå·®)")
print(standard_p(data_p,ddof=1).head(5))
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
æ£èŠåã»æšæºåãçšããã¯ã€ã³ã®åé¡
- scikit-learnãçšããŠå©çšã§ããã¯ã€ã³èªèã®ããŒã¿ã»ãããçšããŠæ©æ¢°åŠç¿ã«ãããåé¡åé¡ãå®è£ ããŸãã
- äž»ã«æ£èŠåãšæšæºåãé©å¿ããå Žåãšé©å¿ããªãå Žåã®æ¯èŒãäžå¿ã«ç¢ºèªãè¡ããŸãã
äºåæºå
- äžèšã§æ¢ã«å®è£ åæžã¿ã§ããããããããŠimportã®å®è£ ãè¡ããŸãã
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
- ã¯ã€ã³ã®ããŒã¿ãèªã¿èŸŒã¿ãŸãã
- sklearnã«ã¯ãããŒã¿ã»ãããäºãå®çŸ©ãããŠããããã§ãã
from sklearn.datasets import load_wine
data_wine = load_wine()
data_wine
- çµæã¯ã以äžã®ãšããã§ããïŒäžã®æ¹ã¯ãçç¥ããŠããŸããïŒ
- PandasãçšããŠäºæž¬ã«å¿ èŠãªã©ãã«ãæœåºããŸãã
df_wine = pd.DataFrame(data_wine['target'],columns=['wine'])
df_wine.head(5)
- çµæã¯ã以äžã®ãšããã§ãã
- åç¹åŸŽéããã©ãã«ãšåæ§ã«DataFrameåã§æœåºããŸãã
df_data = pd.DataFrame(data_wine['data'],columns=data_wine['feature_names'])
df_data.head(5)
- çµæã¯ã以äžã®ãšããã§ãã
- åç¹åŸŽéã®å€ã衚瀺ãããŸããã
- ãã®ã¯ã€ã³ã®ããŒã¿ã»ããã«ã¯ãèšç·ŽããŒã¿ãšãæ€èšŒçšããŒã¿ã«åãããŠããªãã®ã§2åå²ããŸãã
- ååãèšç·Žçšãååãæ€èšŒçšã«åå²ããŸãã
- ã¯ã€ã³ã®ã©ãã«ã®å²åãçããããããã«ã stratifyåŒæ°ã§ã©ãã«ãæå®ããŸãã
from sklearn.model_selection import train_test_split
train_x,test_x,train_y,test_y = train_test_split(df_data,df_wine,test_size=0.5,stratify=df_wine['wine'],random_state=0)
- ç¹åŸŽéãšåã©ãã«ã«åå²ã§ããŸããã
- æ£èŠåãšæšæºåã®å®è£ ãè¡ããŸãã
from sklearn.preprocessing import StandardScaler,MinMaxScaler
mmsc = MinMaxScaler()
stdsc = StandardScaler()
- å¥ã ã«fit()ãfit_transform()ã¡ãœãããçšãããšãæ£èŠåãæšæºåã®èšç®æ¡ä»¶ãç°ãªã£ãŠããŸãå¯èœæ§ããããããèšç·ŽããŒã¿ãšæ€èšŒããŒã¿ã«é©çšããã¯ã©ã¹ã¯åããã®ã䜿çšããããšã
- èšç·ŽçšããŒã¿ã§fit()ãfit_transform()ã¡ãœãããçšããŠæ£èŠåãæšæºåã®ãã©ã¡ãŒã¿ãèšç®ããæ€èšŒçšããŒã¿ã«ã¯transform()ã¡ãœãããçšããŠã¹ã±ãŒãªã³ã°ãè¡ããŸãã
#泚æ
#âèšç·ŽããŒã¿ã§fitãã倿åšãçšããŠæ€èšŒããŒã¿ã倿ããããš
#èšç·Žçšã®ããŒã¿ãæ£èŠå
train_mm = mmsc.fit_transform(train_x)
#èšç·Žçšã®ããŒã¿ãæšæºå
train_std = stdsc.fit_transform(train_x)
#èšç·ŽçšããŒã¿ãåºã«ãã¹ãããŒã¿ãæ£èŠå
test_mm=mmsc.transform(test_x)
#èšç·ŽçšããŒã¿ãåºã«ãã¹ãããŒã¿ãæšæºå
test_std = stdsc.transform(test_x)
#ã³ã¡ã³ãã¢ãŠããå€ããšã¹ã±ãŒãªã³ã°åŸã®å€ã確èªã§ãã
#print(train_mm)
#print(train_std)
#print(test_mm)
#print(test_std)
- 次ã«ããKè¿åæ³ããããŒã»ãããã³ããã©ã³ãã ãã©ã¬ã¹ãããçšããŠããå ã®ããŒã¿ããæ£èŠåããããŒã¿ããæšæºåããããŒã¿ãã®æ£è§£çãæ¯èŒããŸãã
1.Kè¿åæ³
- ãæ°ãããµã³ãã«ãšç¹åŸŽã䌌ãŠããããã€ãã®ãµã³ãã«ã®ã©ãã«ãåèã«ããŠãæ°ãããµã³ãã«ã®ã©ãã«ãäºæž¬ããå顿æ³ããšã®ããšã
- åèïŒWikipedia Kè¿åæ³
from sklearn.neighbors import KNeighborsClassifier
#å
ã®ããŒã¿çš
lr = KNeighborsClassifier()
#æ£èŠåããããŒã¿çš
lr_mm = KNeighborsClassifier()
#æšæºåããããŒã¿çš
lr_std = KNeighborsClassifier()
#å
ã®ããŒã¿ã®é©çš
lr.fit(train_x, train_y)
#æ£èŠåããããŒã¿ã®é©çš
lr_mm.fit(train_mm, train_y)
#æšæºåããããŒã¿ã®é©çš
lr_std.fit(train_std, train_y)
print('å
ã®ããŒã¿ã®ã¹ã³ã¢ :',lr.score(test_x, test_y))
print('æ£èŠåããããŒã¿ã®ã¹ã³ã¢ :',lr_mm.score(test_mm, test_y))
print('æšæºåããããŒã¿ã®ã¹ã³ã¢ :',lr_std.score(test_std, test_y))
- æ¯èŒãããšå ã®ããŒã¿ã®ã¹ã³ã¢ã ããäœããæ£èŠåãæšæºåãè¡ãªã£ãããŒã¿ã«å¯Ÿããæ£è§£çã¯0.9ãè¶ ããŠããŸãã
- äžèšãããæ£èŠåãæšæºåãKè¿åæ³ã«æå¹ã§ããããšãåãããŸãã
2.ããŒã»ãããã³
-
Kè¿åæ³ãšåæ§ã«ã¢ãã«ã®ãã©ã¡ãŒã¿ã¯ããã©ã«ãã«èšå®ãããŠãããã®ã䜿çšããŸãã
-
ããŒã»ãããã³ã¯æè¿ã®æ©æ¢°åŠç¿åéã«ãããŠå¿ é ãšãèšããç¥èãšã®ããšã確å®ã«æŒãããŠããå¿ èŠããã
-
ããŒã»ãããã³ããã¥ãŒã©ã«ãããã¯ãŒã¯ã«ã€ããŠã®ç¥èã¯AIãã¬ãžã³ã®ä»æã®ãšã³ãžãã¢ãç¥ã£ãŠããã¹ããã£ãŒãã©ãŒãã³ã°ã®åºç€ç¥èãåèã«ãªãããã§ããïŒåŸã»ã©ç¢ºèªããŸããïŒ
-
åããŒã¿çšã«ããŒã»ãããã³ãå®çŸ©ããããŒã¿ãå®çŸ©ããŸãã
from sklearn.linear_model import Perceptron
#å
ã®ããŒã¿çš
lr = Perceptron(random_state = 0)
#æ£èŠåããããŒã¿çš
lr_mm = Perceptron(random_state = 0)
#æšæºåããããŒã¿çš
lr_std = Perceptron(random_state = 0)
#å
ã®ããŒã¿ã®é©çš
lr.fit(train_x, train_y)
#æ£èŠåããããŒã¿ã®é©çš
lr_mm.fit(train_mm, train_y)
#æšæºåããããŒã¿ã®é©çš
lr_std.fit(train_std, train_y)
print('å
ã®ããŒã¿ã®ã¹ã³ã¢ :',lr.score(test_x, test_y))
print('æšæºåããããŒã¿ã®ã¹ã³ã¢ :',lr_std.score(test_std, test_y))
print('æ£èŠåããããŒã¿ã®ã¹ã³ã¢ :',lr_mm.score(test_mm, test_y))
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
- å ã®ããŒã¿ã«å¯Ÿããæ£è§£çãèŠããšãKè¿åæ³ãããããã«äœããªã£ãŠããŸãã
- ããšã®æ£èŠåãæšæºåãè¡ãªã£ãããŒã¿ã«å¯Ÿããæ£è§£çã¯0.9ãè¶ ããŠããŸãããã®ããšããæ£èŠåãæšæºåãããŒã»ãããã³ã«æå¹ã§ããããšãåãããŸãã
3.ã©ã³ãã ãã©ã¬ã¹ã
- ããªãŒããŒã¹åã®ã¢ãã«ã§ããã©ã³ãã ãã©ã¬ã¹ããçšããŠã¯ã€ã³ã®åé¡ãè¡ããŸããïŒããªãŒããŒã¹åã¢ãã«ã¯ãæ£èŠåãæšæºåã«ããã»ã©åœ±é¿ããã«ãããïŒ
- åããŒã¿çšã«ã©ã³ãã ãã©ã¬ã¹ããå®çŸ©ããããŒã¿ãé©çšããŸãã
from sklearn.ensemble import RandomForestClassifier
#å
ã®ããŒã¿çš
lr = RandomForestClassifier(random_state = 0)
#æ£èŠåããããŒã¿çš
lr_mm = RandomForestClassifier(random_state = 0)
#æšæºåããããŒã¿çš
lr_std = RandomForestClassifier(random_state = 0)
#å
ã®ããŒã¿ã®é©çš
lr.fit(train_x, train_y)
#æ£èŠåããããŒã¿ã®é©çš
lr_mm.fit(train_mm, train_y)
#æšæºåããããŒã¿ã®é©çš
lr_std.fit(train_std, train_y)
print('å
ããŒã¿ã®ã¹ã³ã¢ :',lr.score(test_x, test_y))
print('æ£èŠåããŒã¿ã®ã¹ã³ã¢ :',lr_mm.score(test_mm, test_y))
print('æšæºåããŒã¿ã®ã¹ã³ã¢ :',lr_std.score(test_std, test_y))
- å®è¡çµæã¯ã以äžã®ãšããã§ãã
- å ããŒã¿ã®ã¹ã³ã¢ã0.97ãã¹ã³ã¢0.9ãè¶ ããŠããããã圱é¿ãåãã«ããã®ã¯ééããªãã
- ã¢ãã«ã«ãã£ãŠã¹ã±ãŒãªã³ã°ã®åœ±é¿ã¯æ§ã ãšããããšãåãããŸããã
èå¯
- ä»åã¯ãããŒã¿ã®ã¹ã±ãŒãªã³ã°ïŒæšæºåãæ£èŠåïŒãåŠã³ãŸãããã¹ã±ãŒãªã³ã°ããã«ããããè€æ°ã®ã©ã€ãã©ãªã§å®è£ ã§ããããšãåãããŸããã
- ãŸããæåŸã®æ¹ã«ã¯ã¯ã€ã³ã®åé¡ã§ãããã€ãã®ã¢ãã«ã詊ããŸããããã®éçšã§ããŒã¿ã»ãããåŠç¿çšãšãã¹ãçšã«åå²ããäºæž¬ããäžé£ã®æµããçµéšããå°ãã¥ã€æ©æ¢°åŠç¿ãœããªã£ãŠããæ°ãããŸãããŸã ãŸã ãåŠã¶ããšãå€ãã§ããå°ãã¥ã€åŠç¿ãé²ããŠãããŸãã
åè






