Skip to content
Back to skills

XGBoost Analysis

ASecurity

Use when building XGBoost models on tabular data and returning feature importance ranking outputs. Supports binary classification and regression with automatic task detection, train-test split, performance tables, feature importance ranking tables, and PNG importance plots.

  • 1,793 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 6, 2026
datagoshellbashgitperformance

Works with

  • cli

Security analysis

A100/100

Pro scans all 12 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add aipoch/medical-research-skills --skill XGBoost-analysis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of XGBoost Analysis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for XGBoost Analysis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aipoch-xgboost-analysis/badge)](https://www.skillsdirectory.com/skills/aipoch-xgboost-analysis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: xgboost-analysis
description: Use when building XGBoost models on tabular data and returning feature importance ranking outputs. Supports binary classification and regression with automatic task detection, train-test split, performance tables, feature importance ranking tables, and PNG importance plots.
license: MIT
author: AIPOCH
---
> **Source**: [https://github.com/aipoch/medical-research-skills](https://github.com/aipoch/medical-research-skills)

# XGBoost Modeling And Feature Importance Ranking

Use this skill to train an XGBoost model from a tabular dataset and export both feature importance ranking tables and feature importance plots.

## Use This Skill When

- You need a command-line XGBoost workflow in R for tabular data.
- You need a reproducible train-test split, model training, and evaluation.
- You need feature importance ranking outputs as both a table and a figure.
- You need automatic one-hot encoding for categorical predictors.
- Your data may contain a first unnamed sample ID column such as `V1` that should not enter the model.

## Do Not Use This Skill When

- Your classification target has more than 2 classes.
- Your input is not tabular CSV, TXT, or TSV data.
- You need causal interpretation, mechanism claims, or policy, business, or clinical conclusions.
- You only need narrative interpretation or triage of an existing result rather than model training.

## Primary Command

```bash
Rscript scripts/main.R \
  --data_file <input_file> \
  --target_var <target_column> \
  --task_type <auto|classification|regression> \
  --output_dir <output_dir>
```

## Prerequisites

- `Rscript` is available in the shell.
- Required R packages: `optparse`, `data.table`, `Matrix`, `xgboost`.
- Install missing packages with `Rscript -e 'install.packages(c("optparse", "data.table", "Matrix", "xgboost"), repos="https://cloud.r-project.org")'`.

## Core Arguments

| Argument | Required | Description |
|----------|----------|-------------|
| `--data_file` | Yes | Input CSV, TXT, or TSV file |
| `--target_var` | Yes | Target column used for modeling |
| `--task_type` | No | `auto`, `classification`, or `regression`. Default `auto` |
| `--output_dir` | No | Output directory, default `./XGBoost_Results` |
| `--ignore_vars` | No | Comma-separated columns to exclude from predictors |
| `--positive_class` | No | Positive class label for binary classification |
| `--test_size` | No | Test set proportion between 0 and 1, default `0.2` |
| `--seed` | No | Random seed, default `123` |
| `--nrounds` | No | Maximum boosting rounds, default `300` |
| `--max_depth` | No | Tree depth, default `6` |
| `--eta` | No | Learning rate, default `0.1` |
| `--subsample` | No | Row sampling ratio, default `0.8` |
| `--colsample_bytree` | No | Column sampling ratio, default `0.8` |
| `--min_child_weight` | No | Minimum child weight, default `1` |
| `--gamma` | No | Minimum split loss reduction, default `0` |
| `--lambda` | No | L2 regularization, default `1` |
| `--alpha` | No | L1 regularization, default `0` |
| `--early_stopping_rounds` | No | Early stopping rounds, default `20` |
| `--importance_metric` | No | `gain`, `cover`, or `frequency`. Default `gain` |
| `--top_n` | No | Number of features to plot, default `20` |
| `--output_format` | No | Table format: `csv` or `txt`, default `csv` |
| `--output_prefix` | No | Output filename prefix, default `xgboost` |

## Input Requirements

- The input file must contain the target column.
- Predictor columns can be numeric, integer, logical, character, or factor-like text.
- Character and factor predictors are one-hot encoded automatically.
- A first unnamed identifier column such as `V1` is automatically excluded when it contains unique sample IDs.
- Rows with missing target values are removed before training.
- For classification, exactly 2 classes are required.
- For regression, the target column must be numeric.
- Each class should have at least 2 rows so both training and test sets can be created.

Example input:

```csv
,fustat,CAMK2N2,GGT6,GPR161,RAB26,RIBC2
TCGA-C5-A1M5,1,2.248291938,5.274690305,2.825215762,3.121114894,5.35318565
TCGA-EA-A5O9,0,3.346176843,5.404368414,2.604616977,0.629473197,4.429314674
TCGA-C5-A3HL,0,3.363100974,5.363314779,4.124799581,4.127228806,4.916596068
```

## Minimal Workflow

1. Confirm the input file exists and the target column name is correct.
2. Run `scripts/main.R` with `--data_file` and `--target_var`.
3. Check the output directory for `table/feature_importance_*` and `figure/feature_importance_*`.

If you omit `--data_file` or `--target_var`, the script exits with `SKILL_MISSING_INPUT`.

## Outputs

Expected output structure:

```text
<output_dir>/
├── table/
├── figure/
└── data/
```

Primary outputs:

- `table/<output_prefix>_feature_importance.csv`
- `table/<output_prefix>_model_performance.csv`
- `figure/<output_prefix>_feature_importance_<importance_metric>.png`

Additional outputs:

- `session_info.txt`

Feature importance table fields include:

- `Rank`
- `Feature`
- `Gain`
- `Cover`
- `Frequency`
- `SelectedMetric`
- `SelectedValue`

## Feature Importance Metrics

- `gain`: Average contribution to loss reduction. Recommended for most ranking use cases.
- `cover`: Relative sample coverage contributed by a feature.
- `frequency`: How often the feature is used in splits.

## Read These Files When Needed

| Need | File |
|------|------|
| XGBoost method details and importance interpretation | `references/algorithm.md` |
| More CLI examples | `references/cli-guide.md` |
| Error diagnosis | `references/troubleshooting.md` |
| Main execution entry point | `scripts/main.R` |
| Bundled test data | `tests/data/` |

## Quick Examples

Auto-detected binary classification on `dt_sample1.csv`:

```bash
Rscript scripts/main.R \
  --data_file tests/data/dt_sample1.csv \
  --target_var fustat \
  --task_type auto \
  --output_dir tests/output_binary
```

Binary classification on `dt_sample2.csv`:

```bash
Rscript scripts/main.R \
  --data_file tests/data/dt_sample2.csv \
  --target_var fustat \
  --task_type classification \
  --importance_metric gain \
  --output_dir tests/output_gain
```

Character-label classification on `dt_sample3.txt`:

```bash
Rscript scripts/main.R \
  --data_file tests/data/dt_sample3.txt \
  --target_var Group \
  --task_type classification \
  --positive_class high \
  --top_n 15 \
  --output_dir tests/output_group
```

## Validation

```bash
Rscript scripts/main.R --help
```

```bash
Rscript scripts/main.R \
  --data_file tests/data/dt_sample1.csv \
  --target_var fustat \
  --task_type classification \
  --output_dir tests/validation_output
```

After running analysis, verify that these files exist:

- `tests/validation_output/table/xgboost_feature_importance.csv`
- `tests/validation_output/table/xgboost_model_performance.csv`
- `tests/validation_output/figure/xgboost_feature_importance_gain.png`

## Common Errors

- `SKILL_FILE_NOT_FOUND`: Input file path is wrong or inaccessible.
- `SKILL_MISSING_COLUMNS`: The target column is missing.
- `SKILL_INVALID_DATA`: Data is malformed, the target type is unsuitable, classification has more or fewer than 2 classes, or too few usable rows remain.
- `SKILL_INVALID_PARAMETER`: An argument value is invalid.
- `SKILL_DEPENDENCY_MISSING`: A required R package such as `xgboost` is unavailable.

If the issue is not obvious, read `references/troubleshooting.md`.

Files in this skill

  • SKILL.md7.3 KB
  • eval_report_xgboost-analysis_result.json14.8 KB
  • references/algorithm.md3.4 KB
  • references/cli-guide.md3.8 KB
  • references/troubleshooting.md4.2 KB
  • scripts/functions.R11.3 KB
  • scripts/main.R5.4 KB
  • scripts/run_analysis.R3.9 KB
  • scripts/utils.R7 KB
  • tests/data/dt_sample1.csv13.4 KB
  • tests/data/dt_sample2.csv4.6 KB
  • tests/data/dt_sample3.txt70.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.