æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã 培åºè§£èª¬ïŒæè¡é¢æ¥ãçªç Žããããã®å®å šã¬ã€ã
æè¡é¢æ¥ã«å¿ èŠãªæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ãç¶²çŸ çã«è§£èª¬ãç·åœ¢ã¢ãã«ãæ±ºå®æšãã¢ã³ãµã³ãã«ææ³ãã¯ã©ã¹ã¿ãªã³ã°ãè©äŸ¡ææšãæ£ååãscikit-learnã®ã³ãŒãäŸãšãšãã«ç޹ä»ããŸãã

2026å¹Žã®æè¡é¢æ¥ã«ãããŠãæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®çè§£ã¯é¿ããŠéããªãå¿ é èŠä»¶ãšãªã£ãŠããŸãããžã¥ãã¢ã¬ãã«ã®ããŒã¿ãµã€ãšã³ãã£ã¹ãããã·ãã¢MLãšã³ãžãã¢ãŸã§ã颿¥å®ã¯åè£è ã«å¯ŸããŠäž»èŠãªã¢ã«ãŽãªãºã 矀ã説æããå®è£ ããæ¯èŒããèœåãæ±ããŸããç·åœ¢ã¢ãã«ããã¢ã³ãµã³ãã«ææ³ãæåž«ãªãåŠç¿ã«è³ããŸã§ãåã¢ã«ãŽãªãºã ã®ç¹æ§ãæ·±ãçè§£ããŠããããšãååŠãåããæ±ºå®çãªèŠå ã§ããæ¬èšäºã§ã¯ãscikit-learn 1.8ãçšããPythonå®è£ ãè©äŸ¡æŠç¥ããããŠé¢æ¥ã§å·®ãã€ããã¬ãŒããªãã«ã€ããŠäœç³»çã«è§£èª¬ããŸãã
æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã¯ãæåž«ããåŠç¿ïŒååž°ã»åé¡ïŒãæåž«ãªãåŠç¿ïŒã¯ã©ã¹ã¿ãªã³ã°ã»æ¬¡å åæžïŒã匷ååŠç¿ã®3ã€ã«å€§å¥ãããŸãã2026å¹Žã®æè¡é¢æ¥ã§ã¯å2è ãéç¹çã«åãããç¹ã«ã¢ã«ãŽãªãºã ã®éžæåºæºãšè©äŸ¡ææ³ã«é¢ããæ·±ãçè§£ãæ±ããããŸãã
æåž«ããåŠç¿ïŒååž°ãšåé¡ã®åºç€
æåž«ããåŠç¿ã¯ãã©ãã«ä»ãããŒã¿ããåŠç¿ããã¢ã«ãŽãªãºã 矀ã§ããåèšç·ŽããŒã¿ã«ã¯å ¥åãšæåŸ ãããåºåãå«ãŸããŠãããã¢ãã«ã¯ãã®å¯Ÿå¿é¢ä¿ãåŠã³ãŸããååž°ã¯é£ç¶å€ïŒäœå® äŸ¡æ Œãæ°æž©ãªã©ïŒãäºæž¬ããåé¡ã¯é¢æ£çãªã©ãã«ïŒã¹ãã /éã¹ãã ãçŸç 蚺æãªã©ïŒãå²ãåœãŠãŸããããŒã¿ãµã€ãšã³ã¹é¢æ¥ã«ãããŠããã®äž¡æ¹ã確å®ã«çè§£ããŠããããšã¯å¿ é ã§ãã
ç·åœ¢ååž°ã¯ãååž°ã¿ã¹ã¯ã®åºçºç¹ãšããŠæãåºæ¬çãªã¢ã«ãŽãªãºã ã§ããç¹åŸŽéãšã¿ãŒã²ãã倿°ã®é¢ä¿ãéã¿ä»ãåãšããŠã¢ãã«åããŸãã颿¥ã§ã¯ãå®è£ èœåã«å ããŠã³ã¹ã颿°ã®èª¬æããç·åœ¢ååž°ãé©åã§ãªãã±ãŒã¹ã«ã€ããŠãåãããããšãå€ãã§ãã
# linear_regression_demo.py
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# Generate synthetic housing data: square footage -> price
np.random.seed(42)
sqft = np.random.uniform(500, 3000, size=200).reshape(-1, 1)
price = 150 * sqft.flatten() + np.random.normal(0, 20000, size=200)
X_train, X_test, y_train, y_test = train_test_split(sqft, price, test_size=0.2)
model = LinearRegression()
model.fit(X_train, y_train) # Fit on training data
predictions = model.predict(X_test) # Predict on unseen data
print(f"Coefficient: {model.coef_[0]:.2f}") # Weight per sqft
print(f"R2 Score: {r2_score(y_test, predictions):.4f}")
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, predictions)):.2f}")äžèšã®ååž°ä¿æ°ã¯ãé¢ç©ã1å¹³æ¹ãã£ãŒãå¢å ããããšã«äŸ¡æ Œãã©ãã ãå€åãããã瀺ããŠããŸããR2ã¹ã³ã¢ã¯äºæž¬ç²ŸåºŠã®å²åããRMSEã¯äºæž¬èª€å·®ã®å€§ãããç€ºãææšã§ãã颿¥ã§ã¯ããããã®ææšã®æå³ãå³åº§ã«è§£éã§ããããšãæåŸ ãããŸãã
åé¡ã¿ã¹ã¯ã«ã¯ãããžã¹ãã£ãã¯ååž°ãåºã䜿ãããŸããååã«ãååž°ããšä»ããŠããŸãããã·ã°ã¢ã€ã颿°ãé©çšããŠç¢ºçãåºåããåé¡ã¢ã«ãŽãªãºã ã§ããæ±ºå®å¢çã®ä»çµã¿ãæ£ååãã©ã¡ãŒã¿Cã®åœ¹å²ãäºå€åé¡ãšå€ã¯ã©ã¹åé¡ã®éãã¯ãããããé »åºã®é¢æ¥ãããã¯ã§ãã
# logistic_classification.py
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
data = load_breast_cancer() # Binary classification dataset
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.2, random_state=42
)
clf = LogisticRegression(max_iter=5000, C=1.0) # C controls regularization strength
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred, target_names=data.target_names))classification_reportã¯ãåã¯ã©ã¹ã®é©åçïŒPrecisionïŒãåçŸçïŒRecallïŒãF1ã¹ã³ã¢ãäžèЧã§è¡šç€ºããŸãã颿¥å®ã¯ãã®ã¬ããŒããæç€ºããŠãåæ°å€ã®æå³ã説æãããããšããããŸããã¹ã ãŒãºã«èªã¿è§£ãããã©ããããæºåã®æ·±ããåŠå®ã«è¡šããŸãã
æ±ºå®æšãšã¢ã³ãµã³ãã«ææ³
æ±ºå®æšã¯ãç¹åŸŽéã®éŸå€ã«åºã¥ããŠããŒã¿ãååž°çã«åå²ããã¢ã«ãŽãªãºã ã§ããåäœã§ã¯éåŠç¿ãããããšãã匱ç¹ããããŸãããã¢ã³ãµã³ãã«ææ³ã§ããã©ã³ãã ãã©ã¬ã¹ããšåŸé ããŒã¹ãã£ã³ã°ã¯ãè€æ°ã®æšãçµã¿åãããããšã§ãã®åé¡ã解決ããŸããè§£éãããããšäºæž¬æ§èœã®ãã©ã³ã¹ãè¯ããããæè¡é¢æ¥ã§ã¯éåžžã«é«ãé »åºŠã§åºé¡ãããŸãã
ã©ã³ãã ãã©ã¬ã¹ãã¯ãããŒãã¹ãã©ãããµã³ãã«ã«åºã¥ããŠå€æ°ã®ç¬ç«ããæ±ºå®æšãæ§ç¯ãããããã®äºæž¬ãå¹³ååããŸãããã®ææ³ã¯ãã®ã³ã°ïŒBaggingïŒãšåŒã°ãã忣ãäœæžãã€ã€ãã€ã¢ã¹ãå¢å ãããŸãããæ±ºå®æšã»ã¢ã³ãµã³ãã«ææ³ã«é¢ãã颿¥è³ªåã§ã¯ããã®ã³ã°ãšããŒã¹ãã£ã³ã°ã®éããç¹åŸŽééèŠåºŠã®ç®åºæ¹æ³ãOOBïŒOut-of-BagïŒãšã©ãŒã®ä»çµã¿ãé »ç¹ã«åãããŸãã
# ensemble_comparison.py
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import cross_val_score
data = load_wine() # 3-class classification
X, y = data.data, data.target
# Random Forest: parallel trees, reduces variance
rf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
rf_scores = cross_val_score(rf, X, y, cv=5, scoring='accuracy')
# Gradient Boosting: sequential trees, reduces bias
gb = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3)
gb_scores = cross_val_score(gb, X, y, cv=5, scoring='accuracy')
print(f"Random Forest: {rf_scores.mean():.4f} +/- {rf_scores.std():.4f}")
print(f"Gradient Boosting: {gb_scores.mean():.4f} +/- {gb_scores.std():.4f}")ã©ã³ãã ãã©ã¬ã¹ãã¯ãå®å®æ§ãæ±ããããå Žé¢ããã€ããŒãã©ã¡ãŒã¿ã®èª¿æŽã³ã¹ããæãããå Žé¢ã«é©ããŠããŸããäžæ¹ãåŸé ããŒã¹ãã£ã³ã°ã¯ããé«ã粟床ãå®çŸã§ããå¯èœæ§ããããŸãããåŠç¿çãæšå®åšã®æ°ãæšã®æ·±ããªã©è€æ°ã®ãã©ã¡ãŒã¿ãçžäºã«åœ±é¿ãããããæ éãªãã¥ãŒãã³ã°ãå¿ èŠã§ãã颿¥ã§ã¯ãåã«ã©ã¡ãã®ç²ŸåºŠãé«ããã§ã¯ãªãããã®ãã¬ãŒããªããçè§£ããŠãããã©ãããåãããŸãã
| æ¯èŒé ç® | ã©ã³ãã ãã©ã¬ã¹ã | åŸé ããŒã¹ãã£ã³ã° | |-----------|--------------|-------------------| | åŠç¿é床 | é«éïŒäžŠååŠçå¯ïŒ | äœéïŒé次åŠçïŒ | | éåŠç¿ãªã¹ã¯ | äœã | ãã¥ãŒãã³ã°ãªãã§ã¯é«ã | | ãã€ããŒãã©ã¡ãŒã¿æåºŠ | äœã | é«ã | | ç¹åŸŽééèŠåºŠ | äžçŽåºŠããŒã¹ | ã²ã€ã³ããŒã¹ | | æé©ãªçšé | ããŒã¹ã©ã€ã³ã¢ãã«ããã€ãºã®å€ãããŒã¿ | ã³ã³ããã£ã·ã§ã³ãããŒãã«ããŒã¿ |
æåž«ãªãåŠç¿ïŒã¯ã©ã¹ã¿ãªã³ã°ã𿬡å åæž
æåž«ãªãåŠç¿ã¯ãã©ãã«ã®ãªãããŒã¿ããæ§é ããã¿ãŒã³ãçºèŠããã¢ã«ãŽãªãºã 矀ã§ããK-Meansã¯ã©ã¹ã¿ãªã³ã°ãšäž»æååæïŒPCAïŒã¯ã颿¥ã§æãé »ç¹ã«åããã2ã€ã®ææ³ã§ããæåž«ãªãåŠç¿ã®é¢æ¥è³ªåã«å¯Ÿå¿ããããã«ã¯ãäž¡æ¹ã®æ·±ãçè§£ãäžå¯æ¬ ã§ãã
K-Meansã¯ãã¯ã©ã¹ã¿å ã®åæ£ãæå°åããããšã§ããŒã¿ãkåã®ã¯ã©ã¹ã¿ã«åå²ããŸããåããŒã¿ãã€ã³ããæãè¿ãéå¿ã«å²ãåœãŠãéå¿ãæŽæ°ãããšããåŠçãç¹°ãè¿ããŸãã颿¥ã§ã®éèŠãªãã€ã³ãã¯ãkã®éžã³æ¹ïŒãšã«ããŒæ³ãã·ã«ãšããã¹ã³ã¢ïŒãšãéçç¶ã®ã¯ã©ã¹ã¿ã«å¯Ÿããéçã®2ç¹ã§ãã
# kmeans_clustering.py
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
from sklearn.datasets import load_iris
data = load_iris()
X = StandardScaler().fit_transform(data.data) # Scale features first
# Test multiple values of k to find optimal cluster count
for k in [2, 3, 4, 5]:
kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)
labels = kmeans.fit_predict(X)
sil = silhouette_score(X, labels) # Higher = better-defined clusters
inertia = kmeans.inertia_ # Within-cluster sum of squares
print(f"k={k}: silhouette={sil:.3f}, inertia={inertia:.1f}")ã¯ã©ã¹ã¿ãªã³ã°ã®åã«ã¹ã±ãŒãªã³ã°ãè¡ãããšã¯å¿ é ã§ããK-Meansã¯ãŠãŒã¯ãªããè·é¢ã䜿çšãããããã¹ã±ãŒã«ã®å€§ããç¹åŸŽéãè·é¢èšç®ãæ¯é ããŠããŸããŸãã颿¥ã§ãã®ç¹ãèŠèœãšããšãåºç€çãªçè§£ãäžè¶³ããŠãããšå€æãããå¯èœæ§ããããŸãã
PCAïŒäž»æååæïŒã¯ã忣ãæå€§ãšãªãæ¹åã«ããŒã¿ãå°åœ±ããããšã§æ¬¡å ãåæžããŸããå¯èŠåïŒ2D/3Dãžã®å°åœ±ïŒãšååŠçïŒãã€ãºé€å»ãåŸç¶ã¢ãã«ã®é«éåïŒã®äž¡æ¹ã®ç®çã§äœ¿çšãããŸãã颿¥ã§ã¯ãå¯äžçïŒexplained variance ratioïŒã®è§£éãšãé©åãªäž»æåæ°ã®éžæåºæºã説æã§ããããšãæ±ããããŸãã
PCAã¯ãç¹åŸŽééã«çžé¢ãããã·ã°ãã«ãå°æ°ã®æ¹åã«éäžããŠããå Žåã«å¹æãçºæ®ããŸããäžæ¹ãããã¹ãããŒã¿ãã¯ã³ããããšã³ã³ãŒãã£ã³ã°ãããã«ããŽãªå€æ°ãªã©ãã¹ããŒã¹ã§é«æ¬¡å ã®ããŒã¿ã«é©çšãããšãæçšãªæ§é ãç Žå£ãããå ŽåããããŸãããã®ãããªã±ãŒã¹ã§ã¯ãTruncated SVDãå°çšã®åãèŸŒã¿ææ³ãããé©åã§ãã
Data Science & MLã®é¢æ¥å¯Ÿçã¯ã§ããŠããŸããïŒ
ã€ã³ã¿ã©ã¯ãã£ããªã·ãã¥ã¬ãŒã¿ãŒãflashcardsãæè¡ãã¹ãã§ç·Žç¿ããŸãããã
ã¢ãã«è©äŸ¡ææšãšäº€å·®æ€èšŒ
é©åãªè©äŸ¡ææšã®éžæã¯ãã¢ã«ãŽãªãºã ã®éžæä»¥äžã«éèŠã§ããäžåè¡¡ããŒã¿ïŒäŸïŒè©æ¬ºç1%ïŒã«å¯ŸããŠæ£è§£ç99%ã®ã¢ãã«ããã£ããšããŠããåã«ãè©æ¬ºã§ãªãããšäºæž¬ãç¶ããŠããã ããããããŸããã颿¥å®ã¯ãè©äŸ¡ææšã«é¢ãã質åãéããŠåè£è ã®å®è·µçãªå€æåããã¹ãããŸãã
åé¡ã¿ã¹ã¯ã§ã¯ã以äžã®4ã€ã®ææšã颿¥ã§éç¹çã«åãããŸãã
- é©åçïŒPrecisionïŒïŒéœæ§ãšäºæž¬ãããã®ã®ãã¡ãå®éã«éœæ§ã§ããå²åãåœéœæ§ã®ã³ã¹ããé«ãå Žé¢ïŒã¹ãã ãã£ã«ã¿ãªã³ã°ãªã©ïŒã§éèŠãããŸã
- åçŸçïŒRecallïŒïŒå®éã®éœæ§ã®ãã¡ãæ£ããæ€åºã§ããå²åãåœé°æ§ã®ã³ã¹ããé«ãå Žé¢ïŒçŸç ã¹ã¯ãªãŒãã³ã°ãªã©ïŒã§éèŠãããŸã
- F1ã¹ã³ã¢ïŒé©åçãšåçŸçã®èª¿åå¹³åãã©ã¡ãã®èª€ãã¿ã€ããåçšåºŠã«éèŠãªå Žåã«äœ¿çšãããŸã
- AUC-ROCïŒå šãŠã®åé¡éŸå€ã«ãããã©ã³ãã³ã°åè³ªãæž¬å®ããææšãã¢ãã«éã®æ¯èŒã«äžå¯æ¬ ã§ã
ååž°ã¿ã¹ã¯ã§ã¯ãRMSEïŒå€§ããªèª€å·®ã«ããã«ãã£ã課ãïŒãMAEïŒå€ãå€ã«é å¥ïŒãR2ïŒèª¬æããã忣ã®å²åïŒãäž»èŠãªææšã§ããMAEãšRMSEã®äœ¿ãåããçè§£ããŠããããšãã衚é¢çãªç¥èãšæ¬è³ªçãªçè§£ã®éãã瀺ããŸããååž°ã«é¢ãã颿¥ã·ããªãªã§å®è·µçã«ç·Žç¿ããããšãæšå¥šãããŸãã
# evaluation_metrics.py
from sklearn.metrics import (
precision_score, recall_score, f1_score,
roc_auc_score, confusion_matrix
)
import numpy as np
# Simulated predictions on imbalanced data (5% positive class)
np.random.seed(42)
y_true = np.array([1]*50 + [0]*950)
y_pred = np.array([1]*40 + [0]*10 + [1]*30 + [0]*920) # Some errors
print(f"Precision: {precision_score(y_true, y_pred):.3f}") # 40/(40+30) = 0.571
print(f"Recall: {recall_score(y_true, y_pred):.3f}") # 40/(40+10) = 0.800
print(f"F1-Score: {f1_score(y_true, y_pred):.3f}") # Harmonic mean
cm = confusion_matrix(y_true, y_pred)
print(f"
Confusion Matrix:
{cm}")
# [[920, 30], -> TN=920, FP=30
# [10, 40]] -> FN=10, TP=40æ··åè¡åã®æ£ç¢ºãªèªã¿æ¹ã¯ãç¹°ãè¿ãç·Žç¿ãã䟡å€ããããŸããå·ŠäžïŒçé°æ§ïŒãšå³äžïŒçéœæ§ïŒãæ£ããäºæž¬ã衚ãã察è§ç·å€ã®èŠçŽ ã2çš®é¡ã®èª€ãã衚ããŸãã颿¥ã§ã¯æ··åè¡åãæç€ºãããããããé©åçãšåçŸçãæèšç®ã§æ±ããããæç€ºãããããšããããŸãã
亀差æ€èšŒã«ã€ããŠãç¹ã«æ³šæãå¿ èŠã§ããåçŽãªããŒã«ãã¢ãŠãåå²ã§ã¯äžååãªçç±ãkåå²äº€å·®æ€èšŒã®ä»çµã¿ãå±€ååå²ïŒStratified K-FoldïŒãå¿ èŠãªã±ãŒã¹ïŒäžåè¡¡ã¯ã©ã¹ïŒã説æã§ããããšãæ±ããããŸããæç³»åããŒã¿ã§ã¯æéé ã®åå²ãå¿ èŠã§ãããã©ã³ãã åå²ãé©çšãããšæªæ¥ã®ããŒã¿ãããªãŒã¯ãçºçãããšããç¹ã¯ã颿¥ã§å€ãã®åè£è ãèŠèœãšãèœãšã穎ã§ãã
æ£ååãšéåŠç¿ã®é²æ¢æŠç¥
ãã€ã¢ã¹-ããªã¢ã³ã¹ãã¬ãŒããªãã¯ãæ©æ¢°åŠç¿çè«ã«ãããŠæãéèŠãªæŠå¿µã§ãããã€ã¢ã¹ãé«ãã¢ãã«ã¯åçŽãããŠåŠç¿äžè¶³ïŒunderfittingïŒã«é¥ããããªã¢ã³ã¹ãé«ãã¢ãã«ã¯è€éãããŠéåŠç¿ïŒoverfittingïŒãèµ·ãããŸããã¢ã«ãŽãªãºã ã®éžæããã€ããŒãã©ã¡ãŒã¿ã®æ±ºå®ã¯ãå šãŠãã®ãã¬ãŒããªãã®äžã§è¡ãããŸãã
æ£ååã¯ã倧ããªä¿æ°ã«ããã«ãã£ã課ãããšã§ã¢ãã«ã®è€éããå¶åŸ¡ããææ³ã§ããRidgeååž°ïŒL2æ£ååïŒã¯ä¿æ°ããŒãã«è¿ã¥ããŸãããå šãŠã®ç¹åŸŽéãä¿æããŸããLassoååž°ïŒL1æ£ååïŒã¯äžéšã®ä¿æ°ãå³å¯ã«ãŒãã«ãããããæé»çãªç¹åŸŽééžæãè¡ããŸããElastic Netã¯äž¡è ãçµã¿åãããææ³ã§ãããããã®éãã¯ãåé¡ã«é¢ãã颿¥è³ªåãšååž°ã®äž¡æ¹ã§åãããŸãã
æ£ååã¯ä¿æ°ã®å€§ããã«ããã«ãã£ã課ãä»çµã¿ã§ããç¹åŸŽéã®ã¹ã±ãŒã«ãç°ãªãå ŽåïŒå¹Žéœ¢ã¯æ°åã幎åã¯æ°çŸäžãªã©ïŒãã¹ã±ãŒã«ã®å°ããç¹åŸŽéã«å¯ŸããŠããã«ãã£ãäžåœã«å€§ããããããŸããRidgeãLassoãElastic Netãé©çšããåã«ã¯ãå¿ ãç¹åŸŽéãæšæºåããå¿ èŠããããŸãããã®ç¹ãèŠèœãšãããšã¯ã颿¥ã§éåžžã«ãããããã¹ã§ãã
# regularization_comparison.py
from sklearn.linear_model import Ridge, Lasso, ElasticNet
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_diabetes
X, y = load_diabetes(return_X_y=True)
models = {
"Ridge (L2)": make_pipeline(StandardScaler(), Ridge(alpha=1.0)),
"Lasso (L1)": make_pipeline(StandardScaler(), Lasso(alpha=0.1)),
"ElasticNet (L1+L2)": make_pipeline(StandardScaler(), ElasticNet(alpha=0.1, l1_ratio=0.5)),
}
for name, model in models.items():
scores = cross_val_score(model, X, y, cv=5, scoring='r2')
print(f"{name:25s} R2: {scores.mean():.4f} +/- {scores.std():.4f}")äžèšã®ã³ãŒãã§ã¯ãmake_pipelineã䜿çšããŠã¹ã±ãŒãªã³ã°ãšæ£ååãäžã€ã®ãã€ãã©ã€ã³ã«ãŸãšããŠããŸããããã«ããããã¹ãããŒã¿ã«å¯ŸããŠã¹ã±ãŒã©ãŒãåå¥ã«ãã£ããããŠããŸãããŒã¿ãªãŒã±ãŒãžã鲿¢ã§ããŸããããŒã¿åå²åã«å šããŒã¿ã«å¯ŸããŠfit_transformãé©çšããããšã¯ãã·ãã¢ã¬ãã«ã®é¢æ¥ã§ã¯èŽåœçãªãã¹ãšèŠãªãããŸãã
2026å¹Žã®æè¡é¢æ¥ã§æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã«é¢ããŠé«ãè©äŸ¡ãåŸãã«ã¯ãçè«ççè§£ïŒæ°åŠçèæ¯ã説æã§ãããïŒãå®è·µçå®è£ åïŒã³ãŒããæžãããïŒã倿åïŒåé¡ã«å¿ããŠé©åãªã¢ã«ãŽãªãºã ãéžæã§ãããïŒã®3ã€ã®æ¬¡å ã§æºåããå¿ èŠããããŸãã
ããŒã¿ãµã€ãšã³ã¹é¢æ¥å¯Ÿçãã©ãã¯ã§ã¯ããããã®å šãŠã®æ¬¡å ãã«ããŒããå®è·µçãªç·Žç¿åé¡ãçšæãããŠããŸããç¹ã«ä»¥äžã®é åãå€ãã®é¢æ¥è³ªåãçã¿åºããŠããŸãã
- ã¢ã«ãŽãªãºã éžæïŒããŒã¿ã»ããã®èª¬æãåºã«ãç¹å®ã®ã¢ã«ãŽãªãºã ãéžæããçç±ãè«ççã«èª¬æãããããŒã¿ãµã€ãºãç¹åŸŽéã®åãè§£éæ§ã®èŠä»¶ãåŠç¿æéã®å¶çŽãèæ ®ããå¿ èŠããããŸã
- ãã€ããŒãã©ã¡ãŒã¿ãã¥ãŒãã³ã°ïŒåãã©ã¡ãŒã¿ãäœãå¶åŸ¡ãããã€ã¢ã¹-ããªã¢ã³ã¹ãã¬ãŒããªãã«ã©ã圱é¿ãããã説æãããã°ãªãããµãŒããšã©ã³ãã ãµãŒãã¯åºæ¬ã§ãããOptunaã«ãããã€ãºæé©åãæ±ããããããã«ãªã£ãŠããŸã
- æ¬çªéçšã®èæ ®äºé ïŒããŒã¿ããªããæ€åºãã¢ãã«ã¢ãã¿ãªã³ã°ãA/Bãã¹ãããã£ãŒãã£ãŒã¹ãã¢ã¯ãäžçŽã»äžçŽããžã·ã§ã³ã®æšæºçãªãããã¯ã§ã
- 説æå¯èœæ§ïŒèª¬æå¯èœãªAIã®éèŠæ§ãé«ãŸãäžãSHAPå€ãç¹åŸŽééèŠåºŠã®ææ³ãçè§£ããŠããããšãæåŸ ãããŸã
ä»ããç·Žç¿ãå§ããŸãããïŒ
颿¥ã·ãã¥ã¬ãŒã¿ãŒãšæè¡ãã¹ãã§ç¥èããã¹ãããŸãããã
ãŸãšã
- ç·åœ¢ã¢ãã«ïŒç·åœ¢ååž°ãããžã¹ãã£ãã¯ååž°ïŒã¯ããããã¢ã«ãŽãªãºã ã®åºç€ã§ãããä»®å®ãã³ã¹ã颿°ãé©çšéçãçè§£ããŠããè€éãªã¢ã«ãŽãªãºã ã«é²ãã¹ãã§ã
- æ±ºå®æšã¯åäœã§ã¯éåŠç¿ãããããã©ã³ãã ãã©ã¬ã¹ãïŒãã®ã³ã°ïŒãšåŸé ããŒã¹ãã£ã³ã°ïŒããŒã¹ãã£ã³ã°ïŒãããããç°ãªããã¬ãŒããªããããã¡ã€ã«ã§è£å®ããŸã
- K-MeansãšPCAã¯æåž«ãªãåŠç¿ã®åºæ¬ã§ãããå¿ ãã¹ã±ãŒãªã³ã°ãè¡ããåææ³ã®éçãææ¡ããŠããããšãéèŠã§ã
- è©äŸ¡ææšã¯ããžãã¹èª²é¡ã«åãããŠéžæããå¿ èŠããããŸããäžåè¡¡ããŒã¿ã§ã¯æ£è§£çã ãã§ã¯äžååã§ãããé©åçãåçŸçãF1ã¹ã³ã¢ãAUC-ROCã¯ããããç°ãªãç®çã«å¯Ÿå¿ããŸã
- æ£ååïŒRidgeãLassoãElastic NetïŒã¯éåŠç¿ãå¶åŸ¡ããŸããããã€ãã©ã€ã³å ã§æšæºåãããç¹åŸŽéã«å¯ŸããŠã®ã¿æ£ããæ©èœããŸã
- 2026幎ã®é¢æ¥ã§æåããããã«ã¯ãã¢ã«ãŽãªãºã ã®å®è£ åã ãã§ãªããéžæã®ãçç±ããè«ççã«èª¬æãã倿åã瀺ãããšãäžå¯æ¬ ã§ã
ã¿ã°
å ±æ
é¢é£èšäº

PythonããŒã¿ãµã€ãšã³ã¹å ¥é: NumPyã»Pandasã»Scikit-Learnã®å®è·µã¬ã€ã2026
Python 3.12ãšNumPy 2.1ãPandas 2.2ãScikit-Learn 1.6ã䜿ã£ãããŒã¿ãµã€ãšã³ã¹ã®å®è·µãã¥ãŒããªã¢ã«ã§ããããŒã¿ååŠçããç¹åŸŽéãšã³ãžãã¢ãªã³ã°ãæ©æ¢°åŠç¿ãã€ãã©ã€ã³ã®æ§ç¯ãŸã§ãã³ãŒãä»ãã§è§£èª¬ããŸãã

2026幎ç ããŒã¿ãµã€ãšã³ã¹é¢æ¥ã®é »åºè³ªå25éž
çµ±èšåŠãæ©æ¢°åŠç¿ãç¹åŸŽéãšã³ãžãã¢ãªã³ã°ããã£ãŒãã©ãŒãã³ã°ãã·ã¹ãã èšèšã«é¢ããããŒã¿ãµã€ãšã³ã¹é¢æ¥ã®éèŠè³ªå25åãPythonã³ãŒãä»ãã§è©³ãã解説ã

2026幎ã®MLOps: MLflowãã¢ãã«ã¬ãžã¹ããªãæè¡é¢æ¥ã®è³ªå
MLã©ã€ããµã€ã¯ã«ãMLflowã«ããå®éšè¿œè·¡ãã¢ãã«ã¬ãžã¹ããªã®ææ Œããããã€ãã¿ãŒã³ãããªããç£èŠãã·ã¹ãã èšèšãæ±ã2026幎åãã®MLOps颿¥è³ªåãPythonã³ãŒããšåçäŸä»ãã§ãã