datarobot-feature-engineering — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited datarobot-feature-engineering (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill provides guidance for working with features in DataRobot, including understanding automated feature engineering, analyzing feature importance, and optimizing feature sets.
Most common use case: Analyze feature importance for a model
model = dr.Model.get(project_id, model_id), then model.get_or_request_feature_impact() to get importance scoresdr.Project.get(project_id).get_features(), then iterate f.name, f.feature_type, f.importance to document featuresExample: "Show me the top 10 most important features for model xyz123"
Use this skill when you need to:
Note: Feature Impact scores are unsigned magnitudes - they say how much a feature matters, not which direction it pushes predictions. For direction, use partial dependence via model.get_or_request_feature_effect(source) — Pattern 3 below shows how. Do not state direction in a report without it.
User request: "Show me the top 10 most important features for model xyz123 and explain what they mean."
Agent workflow:
User request: "Create a simplified feature set for deployment abc123, keeping only features with importance > 0.1."
Agent workflow:
This skill guides you to use the DataRobot Python SDK directly. Install the SDK if needed:
uv pip install datarobot || python -m pip install datarobotUse these DataRobot SDK methods for feature analysis:
Feature Information:
model.get_features_used() - List feature names used by a model (bare strings, includes the target)model.get_or_request_feature_impact() - Get feature importance scores (computes them first if needed)project.get_features() - List features in a projectFeature Analysis:
feature.name - Feature namefeature.feature_type - Feature type (Numeric, Categorical, etc.)feature.importance - Feature importance scoreSee the Common Patterns section below for complete examples.
import datarobot as dr
# Initialize client
dr.Client()
# Get model and feature importance (Model.get requires both project and model ids)
model = dr.Model.get(project_id, model_id)
feature_impact = model.get_or_request_feature_impact()
# Sort by importance
sorted_features = sorted(
feature_impact, key=lambda x: x.get("impactNormalized", 0), reverse=True
)
# Get top 10 features
top_features = sorted_features[:10]
for feature in top_features:
print(f"{feature['featureName']}: {feature.get('impactNormalized', 0):.3f}")import datarobot as dr
# Get model and feature importance (Model.get requires both project and model ids)
model = dr.Model.get(project_id, model_id)
feature_impact = model.get_or_request_feature_impact()
# Filter by importance threshold (> 0.1)
important_features = [f for f in feature_impact if f.get("impactNormalized", 0) > 0.1]
print(f"Found {len(important_features)} features with importance > 0.1")Feature Impact never tells you which way a feature pushes predictions. When a report describes direction ("higher X increases churn"), compute partial dependence first:
import datarobot as dr
model = dr.Model.get(project_id, model_id)
sources = model.get_feature_effect_metadata().sources # e.g. ["training", "validation"]
fe = model.get_or_request_feature_effect(source=sources[0]) # source is required
for eff in fe.feature_effects[:5]:
# partial_dependence["data"] is [{"label": <feature value>, "dependence": <prediction>}];
# direction is how dependence changes across labels — there is no single signed field.
points = eff["partial_dependence"]["data"]
print(eff["feature_name"], [(p["label"], p["dependence"]) for p in points[:3]])Feature Impact rows report impactUnnormalized (how much worse the model's error metric gets when the feature is shuffled - not a percentage or share of predictive signal) and impactNormalized (the same value scaled so the largest is 1.0). The thresholds below apply to the normalized score.
Feature importance scores indicate:
Note: Importance thresholds vary by model type and problem domain.
Output rule: Feature Impact is magnitude only, never direction. A report that has not called model.get_or_request_feature_effect(source=...) (Pattern 3) must not claim direction — write "tenure_months is the 4th most impactful feature", not "longer tenure reduces churn". Impact scores are also not shares of predictive signal and cannot be summed into proportions — never write "accounts for 65% of the signal" or "these features carry the majority of the model's predictive power", with or without a number.
Common errors and solutions:
model.get_or_request_feature_impact() insteaduv pip install datarobot || python -m pip install datarobotimport datarobot as dr
dr.Client()~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.