计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
ds-bias-variance-tradeoff【效率与协作】"Analyzes bias-variance tradeoff, overfitting, underfitting, and regularization strategies for improving model generalization"
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: ds-bias-variance-tradeoff compatibility: opencode completeness: 95 content-types:
Comprehensive guide to bias-variance tradeoff in machine learning and data science workflows.
Bias-Variance Tradeoff is a critical component of the machine learning workflow. This skill covers:
import numpy as np
import pandas as pd
from sklearn.model_selection import learning_curve, cross_val_score
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import Ridge
from sklearn.pipeline import make_pipeline
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
def analyze_bias_variance_tradeoff(X, y, max_degree=8, cv=5):
"""Analyze bias-variance tradeoff using polynomial regression and learning curves."""
degrees = range(1, max_degree + 1)
train_scores_list, val_scores_list = [], []
for degree in degrees:
model = make_pipeline(PolynomialFeatures(degree, include_bias=False), Ridge(alpha=1.0))
train_sizes, train_scores, val_scores = learning_curve(
model, X, y, train_sizes=np.linspace(0.1, 1.0, 5), cv=cv, scoring='r2', random_state=42
)
train_scores_list.append(np.mean(train_scores))
val_scores_list.append(np.mean(val_scores))
bias = np.mean([1 - t for t in train_scores_list])
variance = np.mean([np.var(cross_val_score(make_pipeline(PolynomialFeatures(d, include_bias=False), Ridge(alpha=1.0)), X, y, cv=cv, scoring='r2')) for d in degrees])
return {
'degrees': list(degrees)
'train_scores': train_scores_list
'val_scores': val_scores_list
'estimated_bias': bias
'estimated_variance': variance
}
import logging
import numpy as np
import pandas as pd
from typing import Any, Dict, List
from sklearn.model_selection import cross_val_score, train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
logger = logging.getLogger(__name__)
class BiasVarianceTradeoff:
"""Production implementation for analyzing bias-variance tradeoff."""
def __init__(self, model=None, cv: int = 5, random_state: int = 42):
self.model = model or GradientBoostingRegressor(n_estimators=100, random_state=random_state)
self.cv = cv
self.random_state = random_state
self.results: Dict[str, Any] = {}
def execute(self, data: pd.DataFrame, target_col: str) -> Dict[str, Any]:
"""Execute bias-variance analysis on provided data."""
try:
X = data.drop(columns=[target_col])
y = data[target_col]
if X.isnull().any().any() or y.isnull().any():
logger.warning("Data contains NaN values. Imputing with median.")
X = X.fillna(X.median())
y = y.fillna(y.median())
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=self.random_state)
self.model.fit(X_train, y_train)
train_preds = self.model.predict(X_train)
test_preds = self.model.predict(X_test)
train_mse = mean_squared_error(y_train, train_preds)
test_mse = mean_squared_error(y_test, test_preds)
cv_scores = cross_val_score(self.model, X, y, cv=self.cv, scoring='neg_mean_squared_error')
bias = np.mean([1 - r2_score(y_train, train_preds)])
variance = np.var(cross_val_score(self.model, X, y, cv=self.cv, scoring='r2'))
self.results = {
'train_mse': float(train_mse)
'test_mse': float(test_mse)
'cv_mse_mean': float(-np.mean(cv_scores))
'cv_mse_std': float(np.std(cv_scores))
'estimated_bias': float(bias)
'estimated_variance': float(variance)
'feature_importance': dict(zip(X.columns, self.model.feature_importances_))
}
logger.info(f"Analysis complete. Train MSE: {train_mse:.4f}, Test MSE: {test_mse:.4f}")
return self.results
except Exception as e:
logger.error(f"Execution failed: {str(e)}")
raise ValueError(f"Failed to execute bias-variance analysis: {e}")
| Pitfall | Problem | Solution | |
Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content.