前幾天開會拿到了某個專案的一部分資料
在會上大家發現了這些資料中出現了很多問題
並進行了討論
由於保密的原因資料不能貼出來
但是大體的情況是這樣的:
某個**量採集系統,當乙個人進入系統時,計數+1;當乙個人出去時計數-1.
隨著時間的發展系統會不停有人進進出出,但是當系統重置的時候所有人都應該從系統離開。
採集的資料:
1.當前時刻進入量
2.當前時刻離開量
3.當前時刻系統內人數
4.當前時刻總進入量
而這個系統現在還不是特別的準確,所以在某些時候這個系統會出一些問題,會漏記一些人數
優點:
1.能精確地找到問題所在,用人眼觀測的話基本不存在誤差。
2.能夠發現當時現場的很多複雜的環境因素。
缺點:
2.無法在巨集觀的方面上衡量系統的精確性,很難得到定性的資料。
我想是不是可以利用這些文字資料來對這個系統進行分析呢
後來乙個學長提供了乙個非常好的計算誤差率的演算法
演算法核心如下:
當前系統內人數類似於乙個迭代的過程
當前系統人數 += 進 - 初
所有進入系統的人在系統重置前都將離開系統
所以在每次系統重置的前一時刻系統內人數應該等於零
因此若不為0則該系統出現了誤差
所以基於這個模型,我們完全可以實現:
然後基於這個資料可以做的事情還有很多
比如計算該系統進行檢測的準確率
但是後來我考慮到可能會出現進入系統時未檢測到,離開系統時未檢測到,正好造成最後系統內剩餘人數等於0的情況
所以出現檢測失誤的情況有
+1 +1
+1 - 1
-1 + 1
-1 - 1
所以系統誤差率大致可以用末時刻
當前系統人數 / 當前系統總進出量 * 2
但是當前的模型只能計算在系統重置的中間的屬性
而無法對某一時刻的屬性進行分析
下面貼出c原始碼:
因為給的資料沒有劃分系統重置的時間點,所以判斷系統重置點和進行預處理占用了大量時間
#include"iostream"
#include"cstdio"
#include"vector"
using namespace std;
struct node
;vectordata;
void getdata()
int count = 0;
bool flag = true;
while (flag)
fscanf_s(fp, "%d", &temp.frontin);
fscanf_s(fp, "%d", &temp.frontout);
fscanf_s(fp, "%d", &temp.backin);
fscanf_s(fp, "%d", &temp.backout);
fscanf_s(fp, "%d", &temp.currentamount);
fscanf_s(fp, "%d", &temp.allamount);
data.push_back(temp); }}
void cutdata()
} data[data.size() - 1].cut = amount;
/*amount = 1;
for (auto it = data.begin(); it != data.end() - 2; it++)
}*/}void findwrong()
else
else
}} }
}void printwrong()
} }}double errorposibility()
}return sum / amount ;
}void check()
} }}int main()
資料分析在物聯網的應用(二)
這篇文章重點給大家說一說iot中的知識圖譜。那麼什麼是iot呢?iot就是物聯網。iot的知識圖譜的要點有很多 語義物聯 圖譜使能 知識規則 學習深化。首先就是語義物聯,所謂語義物聯,就是要通過語義建模,建立一套標準的物聯網語義,對物體的屬性 狀態 動作以及能力有個標準的規範,能夠實現物體的描述 解...
資料分析在物聯網的應用(二)
這篇文章重點給大家說一說iot中的知識圖譜。那麼什麼是iot呢?iot就是物聯網。iot的知識圖譜的要點有很多 語義物聯 圖譜使能 知識規則 學習深化。首先就是語義物聯,所謂語義物聯,就是要通過語義建模,建立一套標準的物聯網語義,對物體的屬性 狀態 動作以及能力有個標準的規範,能夠實現物體的描述 解...
資料分析在物聯網的應用(六)
我們在前面的文章中給大家說到了物聯網的資料分析可以分為四個類別。分別是描述式分析 診斷式分析 式分析 處方式分析,在每個類別裡面,又必須從兩個層次來展開分析。首先就是機理分析,這是根據物理或化學的原理,對工業裝置的控制 過程以及產生的響應進行基於設計原理的專業分析,這部分一定是以專業知識為依據的。然...