Chức năng xử lý dữ liệu thiếu

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và xây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường ở việt nam (Trang 72 - 73)

CHƯƠNG 1 TỔNG QUAN VỀ Ô NHIỄM KHÔNG KHÍ

4.7 Xây dựng hệ thống

4.7.2 Chức năng xử lý dữ liệu thiếu

Chức năng xử lý dữ liệu nhiễu được thực hiện với phương pháp hồi quy tuyến tính, vì vậy yêu cầu đầu vào bao gồm mảng dữ liệu quan trắc cần xử lý (csvInput), chỉ tiêu quan trắc cần xử lý (varSelect), tập dữ liệu học (csvTraining) và danh sách các chỉ tiêu quan trắc để xây dựng mô hình hồi quy (varTrainCor). Quy trình xử lý như sau:

1. Từ PHP truyền vào mảng dữ liệu học, mảng dữ liệu cần xử lý, chỉ tiêu quan trắc cần xử lý, danh sách chỉ tiêu để xây dựng mô hình hồi quy 2. Với từng tháng từ bộ dữ liệu csvInput được tách ra, tiến hành tách lấy bộ

dữ liệu có tháng tương ứng từ tập csvTraining.

3. Từ tập dữ liệu được tách từ csvTraining theo tháng. Xây dựng mô hình hồi quy của tháng đó dựa vào danh sách các chỉ tiêu được dùng để xây dựng mô hình hồi quy tuyến tính. Đồng thời lấy mô hình hồi quy nào chạy dự đoán dữ liệu cho chỉ tiêu cần xử lý.

4. Tìm những bản ghi không có dữ liệu và gán dữ liệu được dự đoán từ bước trước sang

5. Trả về bộ dữ liệu sau khi đã gán dữ liệu cho những bản ghi thiếu ở định dạng Json lại cho PHP.

Mã nguồn quy trình xử lý được viết trên R

csvInput<- read.csv(OrgPath,header=TRUE)

// csvInput lưu trữ dữ liệu quan trắc cần xử lý csvTraining<- read.csv(trainPath,header=TRUE)

// csvTraining lưu trữ bộ dữ liệu học funcLM=paste(varSelect,"~",sep="")

funcLM=paste(funcLM,varTrainCor[j],"+",sep="") }

funcLM=substr(funcLM, 1, nchar(funcLM)-1) //Xây dựng hàm hồi quy tuyến tính funcLM df <- data.frame()

//Khai báo mảng df để lưu trữ dữ liệu sang khi điền dữ liệu thiếu

for(i in 1:length(nameMonth)){

// Với mỗi tháng từ tập dữ liệu cần xử lý

splitInput= csvInput[ which(csvInput$MM==nameMonth[i]),]

splitTraining= csvTraining[ which(csvTraining$MM==nameMonth[i]),] //Tách lấy tháng tương ứng từ tập dữ liệu học

regress=lm(funcLM,splitTraining)

//Xây dựng mô hình hồi quy của tháng đó từ tập dữ liệu học splitInput$predict <- predict(regress, newdata=splitInput) //Chạy mô hình hồi quy đó trên tháng tương ứng của bộ dữ liệu cần sử lý để dự báo giá trị thiếu thông qua hàm predict

df=rbind(df,splitInput)

//Gán dữ liệu sau khi điền dữ liệu thiếu vào mảng df }

df=df[ order(df$Time , decreasing = FALSE ),]

df=sqldf(c("update df set varSelect=predict where copyOrg is NULL", "select * from df"))

//Gán những dữ liệu được dự đoán cho những bản ghi thiếu DataHand=df[,c("DateTime","copyOrg")]

afterHandle=cat(toJSON(DataHand)) // Trả về dữ liệu cho PHP

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu và xây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường ở việt nam (Trang 72 - 73)

Tải bản đầy đủ (PDF)

(85 trang)