disha2005's picture
updated
2aa1223
|
Raw
History Blame Contribute Delete
4.56 kB
---
title: Data Cleaning Env
emoji: 🧹
colorFrom: blue
colorTo: green
sdk: docker
app_file: app.py
pinned: false
---
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
# 🧠 AI-Powered Data Cleaning Environment (OpenEnv)
## πŸ“Œ Overview
This project implements an **AI-driven data cleaning environment** following the OpenEnv specification.
An LLM-based agent interacts with the environment step-by-step and performs data cleaning actions to improve dataset quality.
The system evaluates:
- Decision-making ability of AI
- Data cleaning strategies
- Efficiency (steps vs quality)
---
## 🎯 Objective
To build an environment where an AI agent can:
- Detect data issues
- Apply cleaning actions
- Maximize final data quality score
---
## βš™οΈ Environment Design
### πŸ”Ή Observation Space
Each step returns:
```json
{
"dataset": {...},
"shape": [rows, columns],
"steps": n
}
```
- `dataset`: current dataset state
- `shape`: dimensions
- `steps`: steps taken so far
### πŸ”Ή Action Space
Agent can perform:
| Action | Description |
|--------|-------------|
| `fill_nulls` | Fill missing values |
| `remove_nulls` | Remove rows with nulls |
| `deduplicate` | Remove duplicate rows |
| `convert_types` | Fix incorrect data types |
| `trim_whitespace` | Clean text formatting |
| `normalize` | Normalize numeric columns |
| `inspect_column` | Analyze a column |
**Action Format:**
```json
{
"type": "action_name",
"column": "column_name"
}
```
### πŸ”Ή Reward System
- Positive reward β†’ correct cleaning
- Negative reward β†’ unnecessary/wrong action
**Example:**
- Fill nulls β†’ `+0.12`
- Wrong removal β†’ `-0.08`
### πŸ”Ή Episode Termination
Episode ends when:
- `done = True` OR
- max steps reached
Final score is computed using:
```
score ∈ [0, 1]
```
---
## πŸ§ͺ Tasks
### βœ… Task 1: Basic Cleaning
- Handle null values
- Remove duplicates
- Fix data types
### βœ… Task 2: Intermediate Cleaning
- Better decision strategies
- Column-wise reasoning
### βœ… Task 3: Full Pipeline
- Complete dataset cleaning
- Optimal sequence of actions
---
## πŸ€– AI Agent (Inference)
The agent uses an LLM to:
1. Analyze dataset summary
2. Choose next action
3. Avoid repeating actions
4. Improve data quality iteratively
### πŸ”Ή Strategy Used
Instead of sending full dataset, we send:
- Column statistics (null %, dtype, unique values)
- Duplicate count
- Sample rows
- Action history
πŸ‘‰ This improves reasoning and reduces noise.
---
## πŸ“Š Baseline Performance
| Task | Score |
|------|-------|
| Task 1 | ~0.70 |
| Task 2 | ~0.75 |
| Task 3 | ~0.80 |
---
## πŸš€ Setup Instructions
### 1️⃣ Clone Repository
```bash
git clone <repo-url>
cd data-cleaning-env
```
### 2️⃣ Install Dependencies
```bash
pip install -r requirements.txt
```
### 3️⃣ Set Environment Variables
**Windows (PowerShell):**
```powershell
setx HF_TOKEN "your_token_here"
setx MODEL_NAME "Qwen/Qwen2.5-72B-Instruct"
setx API_BASE_URL "https://router.huggingface.co/v1"
```
**Linux/Mac:**
```bash
export HF_TOKEN="your_token_here"
export MODEL_NAME="Qwen/Qwen2.5-72B-Instruct"
export API_BASE_URL="https://router.huggingface.co/v1"
```
### 4️⃣ Run Inference
```bash
python inference.py
```
---
## πŸ“‘ API Endpoints
### πŸ”Ή Reset
```
POST /reset
```
### πŸ”Ή Step
```
POST /step
```
**Example:**
```json
{
"type": "fill_nulls",
"column": "city"
}
```
### πŸ”Ή State
```
GET /state
```
---
## 🐳 Docker Setup
**Build:**
```bash
docker build -t data-cleaning-env .
```
**Run:**
```bash
docker run -p 7860:7860 data-cleaning-env
```
---
## 🌐 Hugging Face Deployment
1. Create Space β†’ Docker
2. Push code
3. Add environment variables:
- `HF_TOKEN`
- `MODEL_NAME`
- `API_BASE_URL`
---
## βœ… Validation
```bash
openenv validate
```
```bash
bash validate-submission.sh <your-space-url>
```
---
## πŸ“ Project Structure
```
.
β”œβ”€β”€ app.py
β”œβ”€β”€ inference.py
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ README.md
└── env/
β”œβ”€β”€ environment.py
β”œβ”€β”€ actions.py
β”œβ”€β”€ data_generator.py
β”œβ”€β”€ issue_injector.py
└── graders/
```
---
## ⚠️ Constraints
- Runtime < 20 minutes
- Compatible with:
- 2 vCPU
- 8GB RAM
- Must follow OpenEnv spec
---
## πŸŽ‰ Conclusion
This project demonstrates:
- AI-based decision making
- Reinforcement-style environment
- Automated data cleaning
---
## πŸ‘©β€πŸ’» Authors
- Tanushree Gupta
- Disha Singla