โปรเจกต์นี้เป็น pipeline สำหรับเตรียมข้อมูลดิน (WoSIS) และพยากรณ์ค่า pH ของดิน โดยเน้นพื้นที่จังหวัดนครราชสีมา ประเทศไทย รันบน Google Colab
WoSIS CSV Files → Data Merge → Filter (Thailand / Korat) → Drought Soil Filter
→ Missing Value Imputation → Outlier Handling → Feature Engineering
→ Feature Scaling → Train/Val/Test Split → Export
ตัวแปรเป้าหมาย (Target): pH (value_avg จากไฟล์ phaq)
| ไฟล์ | คุณสมบัติดิน |
|---|---|
wosis_latest_phaq.csv |
ค่า pH ในน้ำ |
wosis_latest_clay2.csv |
ปริมาณดินเหนียว (%) |
wosis_latest_orgc.csv |
ปริมาณคาร์บอนอินทรีย์ (g/kg) |
wosis_latest_cecph7.csv |
ความจุในการแลกเปลี่ยนประจุบวกที่ pH 7 |
wosis_latest_bdfiod.csv |
ความหนาแน่นรวมของดิน (Bulk Density) |
ดาวน์โหลดได้จาก WoSIS — ISRIC World Soil Information
- อัปโหลดและอ่านข้อมูล — อัปโหลด CSV ทั้งหมดผ่าน
google.colab.files.upload() - วิเคราะห์โครงสร้างข้อมูล — แสดงสถิติและกราฟการกระจายตัวของแต่ละคุณสมบัติ
- รวมข้อมูล (Merge) — เชื่อมไฟล์ต่าง ๆ ด้วย
profile_idและlayer_id - กรองพื้นที่ — เลือกเฉพาะประเทศไทย และ/หรือพิกัดนครราชสีมา (Lat 14.5–16.0, Lon 101.0–103.0)
- กรองดินแห้งแล้ง — ดินเหนียวต่ำ, คาร์บอนอินทรีย์ต่ำ, ความหนาแน่นรวมสูง
- จัดการ Missing Values — ใช้
KNNImputer (k=5), ตัดคอลัมน์ที่ขาดหายเกิน 50% - จัดการ Outliers — ใช้วิธี IQR (แทนที่ด้วยค่าขอบ)
- Feature Engineering — สร้างคุณลักษณะใหม่:
avg_depth— ความลึกเฉลี่ยของชั้นดินlayer_thickness— ความหนาของชั้นดินX_cart, Y_cart, Z_cart— พิกัดคาร์ทีเซียน (จาก Lat/Lon)cec_orgc_ratio— อัตราส่วน CEC ต่อคาร์บอนอินทรีย์ (ถ้ามีข้อมูล)clay_bd_ratio— อัตราส่วนดินเหนียวต่อความหนาแน่นรวม (ถ้ามีข้อมูล)
- Feature Scaling — ใช้
StandardScaler - แบ่งข้อมูล — Train 70% / Validation 15% / Test 15%
- Export — บันทึกและดาวน์โหลดผลลัพธ์อัตโนมัติ
บันทึกในโฟลเดอร์ soil_ph_data_<timestamp>/:
| ไฟล์ | รายละเอียด |
|---|---|
X_train.csv, y_train.csv |
ชุดข้อมูลฝึกโมเดล (70%) |
X_val.csv, y_val.csv |
ชุดข้อมูลตรวจสอบโมเดล (15%) |
X_test.csv, y_test.csv |
ชุดข้อมูลทดสอบโมเดล (15%) |
cleaned_features_and_target.csv |
ข้อมูลทั้งหมดหลัง scale |
cleaned_original_data.csv |
ข้อมูลทั้งหมดก่อน scale |
scaler.pkl |
StandardScaler สำหรับข้อมูลใหม่ |
model_info.json |
metadata ของชุดข้อมูล |
numpy
pandas
matplotlib
seaborn
scikit-learn
plotly
joblib
google-colab # มีอยู่แล้วใน Colab
- เปิดไฟล์
soildpred.pyใน Google Colab - รันทุก cell ตามลำดับ
- อัปโหลดไฟล์ CSV ของ WoSIS เมื่อระบบขอ
- ระบบจะดาวน์โหลดไฟล์ผลลัพธ์ให้อัตโนมัติ
จังหวัดนครราชสีมา, ประเทศไทย
- ละติจูด: 14.5° – 16.0° N
- ลองจิจูด: 101.0° – 103.0° E
หากไม่พบข้อมูลเพียงพอ (< 100 ตัวอย่าง) จะขยายไปใช้ข้อมูลระดับประเทศ หรือทวีปเอเชียแทน


