AI-OMS-Analyze / README.md
kawaiipeace's picture
Update README
1921d67
---
title: OMS Analyze by AI
emoji: 🐨
colorFrom: gray
colorTo: indigo
sdk: gradio
sdk_version: 5.35.0
app_file: app.py
pinned: false
license: apache-2.0
short_description: AI OMS Platform
---
# OMS Analyze — Prototype
> Created by PEACE, Powered by AI, Version 0.0.1
Prototype Application Platform สำหรับวิเคราะห์ข้อมูลการดับไฟฟ้า (OMS - Outage Management System) โดยใช้ AI และ Machine Learning เพื่อสรุป สืบหาความผิดปกติ พยากรณ์ และจำแนกสาเหตุ
แอปสร้างด้วย Gradio สำหรับใช้งานผ่านเว็บเบราว์เซอร์ และรองรับการอัปโหลดไฟล์ CSV เพื่อวิเคราะห์ รองรับบน Huggingface Space
## วิธีการติดตั้งและใช้งาน
### วิธีการใช้งานผ่าน Docker (แนะนำ)
ต้องมี Docker ก่อน ถึงจะสามารถใช้งานได้ [(ดาวน์โหลด Rancher Desktop)](https://github.com/rancher-sandbox/rancher-desktop/releases/download/v1.20.0/Rancher.Desktop.Setup.1.20.0.msi)
```
docker build -t ai-oms-analyze:latest .
docker run -d -p 7860:7860 -p 8000:8000 --env-file .env -v $(pwd)/outputs:/app/outputs ai-oms-analyze:latest
```
### วิธีการใช้งาน (MacOS)
```
brew install pyenv
cd /AI-OMS-Analyze
pyenv install 3.12.9
pyenv local 3.12.9
/Users/$(whoami)/.pyenv/versions/3.12.9/bin/python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements.txt
python app.py
```
### วิธีการใช้งาน (Windows)
```bash
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install pyenv-win
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
cd /AI-OMS-Analyze
pyenv install 3.12.9
pyenv local 3.12.9
pip install -r requirements.txt
python app.py
```
## เมนูการใช้งาน
แอปแบ่งเป็นแท็บต่าง ๆ ดังนี้ (ตรงกับ UI ใน `app.py`):
### 1. Upload & Preview
- **Usecase Scenario**: อัปโหลดไฟล์ CSV เพื่อตรวจสอบข้อมูลต้นฉบับ และทำความสะอาดข้อมูล (ลบข้อมูลซ้ำ, จัดการค่าที่หายไป)
- **วิธีใช้**:
1. คลิก "Upload CSV (data.csv)" และเลือกไฟล์
2. ปรับตัวเลือกเช่น Remove Duplicates และ Missing Values Handling
3. คลิก "Apply Cleansing" เพื่อรันการทำความสะอาด
4. เปรียบเทียบตัวอย่างข้อมูลในแท็บ "Original Data" และ "Cleansed Data"
5. ดาวน์โหลดไฟล์ผลลัพธ์จากปุ่ม "Download Cleansed CSV"
- **ผลลัพธ์**: ไฟล์ `outputs/cleansed_data.csv` (ดาวน์โหลดผ่าน UI)
### 2. Recommendation
- **Usecase Scenario**: สร้างสรุปข้อความสำหรับเหตุการณ์ที่เลือก (เช่น สรุปเหตุการณ์ไฟฟ้าขัดข้องหรือบำรุงรักษา) และส่งออก CSV ของสรุป
- **วิธีใช้**:
1. คลิก "Upload CSV (data.csv)"
2. กรอกแถวที่ต้องการในช่อง "Rows (comma-separated indexes)" หรือเว้นว่างเพื่อย่อให้เป็นทั้งหมด
3. เลือกว่าต้องการใช้ Generative AI (Use Generative AI) หรือไม่
4. เลือกระดับสรุป (Summary Type) แล้วคลิก "Generate Summaries"
5. ดูผลในตาราง และดาวน์โหลด `outputs/summaries_from_ui.csv`
- **ฟีเจอร์**: รองรับการใช้ GenAI (model selector จะปรากฏเมื่อเปิด Use Generative AI)
### 3. Summary
- **Usecase Scenario**: สร้างสรุปภาพรวมของชุดข้อมูลทั้งชุด รวมสถิติพื้นฐาน และคำนวณดัชนีความน่าเชื่อถือ (SAIFI, SAIDI, CAIDI)
- **วิธีใช้**:
1. คลิก "Upload CSV for Overall Summary"
2. เลือกว่าจะใช้ Generative AI ในการขยายความหรือไม่
3. กำหนดจำนวนลูกค้าทั้งหมดสำหรับการคำนวณ reliability
4. คลิก "Generate Overall Summary" เพื่อรับ AI summary, basic statistics และ reliability metrics
### 4. Anomaly Detection
- **Usecase Scenario**: ตรวจจับเหตุการณ์ที่ผิดปกติโดยใช้หลาย algorithm (Isolation Forest, LOF, Autoencoder)
- **วิธีใช้**:
1. คลิก "Upload CSV for Anomaly"
2. เลือก algorithm และปรับค่า contamination
3. คลิก "Run Anomaly Detection"
4. ดูผลลัพธ์ในตารางและดาวน์โหลด `outputs/anomalies_from_ui.csv`
### 5. Classification
- **Usecase Scenario**: ฝึกโมเดลเพื่อจำแนกสาเหตุของเหตุการณ์ (เลือก Target Column เช่น CauseType หรือ SubCauseType)
- **วิธีใช้**:
1. คลิก "Upload CSV for Classification"
2. เลือก Target Column และชนิดโมเดล (rf/gb/mlp)
3. ปรับ Hyperparameters ใน Accordion (ถ้าจำเป็น) หรือเปิด Weak-labeling เพื่อเรียกใช้ HF
4. คลิก "Train Classifier" แล้วรอรายงานผล
5. ดาวน์โหลดโมเดลและไฟล์ predictions ผ่านปุ่มที่ปรากฏ
### 6. Label Suggestion
- **Usecase Scenario**: แนะนำป้ายกำกับสำหรับเหตุการณ์ที่ไม่มีฉลาก โดยยึดจากความคล้ายกับตัวอย่างที่มีฉลาก
- **วิธีใช้**:
1. คลิก "Upload CSV (defaults to data/data_3.csv)" หรือปล่อยให้ใช้ไฟล์เริ่มต้น
2. เลือกจำนวนคำแนะนำสูงสุด (Top K suggestions)
3. คลิก "Run Label Suggestion" แล้วดาวน์โหลด `outputs/label_suggestions.csv`
### 7. Forecasting
- **Usecase Scenario**: พยากรณ์จำนวนเหตุการณ์หรือ downtime ในอนาคตโดยเลือกโมเดล (Prophet, LSTM, Bi-LSTM, GRU, Naive)
- **วิธีใช้**:
1. คลิก "Upload CSV for Forecasting"
2. เลือก metric (count หรือ downtime_minutes) และ model
3. ปรับ periods/horizon และ (ถ้าจำเป็น) เปิด Multivariate สำหรับ DL models
4. คลิก "Run Forecasting" เพื่อดู Historical Data, Forecast Results และ Time Series Plot
5. ดาวน์โหลดไฟล์ forecast ที่สร้างใน `outputs/` (ชื่อไฟล์รูปแบบ `forecast_{metric}_{model}_...csv`)
## หมายเหตุ
- เป็น prototype ยังไม่สามารถใช้งานบนระดับ Production ได้
- แนะนำแหล่งอ่าน Machine Learning [ที่นี่](https://guopai.github.io/)
## การพัฒนาเพิ่มเติม
- TBA