|
@@ -32,6 +32,7 @@ public abstract class NNDataSet {
|
|
|
private boolean doFilterDiagnosis = false; // 是否做疾病过滤
|
|
|
|
|
|
private final float firstRateThreshold = 0.1f; // 第一个疾病的概率阈值
|
|
|
+ private final float lastRateThreshold = 0.01f; // 最后一个概率阈值
|
|
|
private final float rateSumThreshold = 0.6f; // 概率和阈值
|
|
|
private final int numToPush = 3; // 推荐推送的个数
|
|
|
private final float rapidFallTimes = 5; // 骤降倍数
|
|
@@ -142,28 +143,39 @@ public abstract class NNDataSet {
|
|
|
float rateSum = 0.0f; // 概率和
|
|
|
|
|
|
while (it.hasNext()) {
|
|
|
+// NameAndValue nameAndValue = it.next();
|
|
|
+// if (!deleteTheRest) {
|
|
|
+// // 相对于前一个疾病概率骤降rapidFallTimes倍
|
|
|
+// if (preRate / nameAndValue.getValue() >= this.rapidFallTimes)
|
|
|
+// deleteTheRest = true;
|
|
|
+// else {
|
|
|
+// rateSum += nameAndValue.getValue();
|
|
|
+// preRate = nameAndValue.getValue();
|
|
|
+// restCnt += 1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (deleteTheRest) // 删除剩下的疾病
|
|
|
+// it.remove();
|
|
|
+//
|
|
|
+//
|
|
|
+// if (!deleteTheRest && restCnt >= this.numToPush) {
|
|
|
+//
|
|
|
+// // 如果超过尽量推送的个数,那么做概率和阈值过滤【从下一个开始删除】
|
|
|
+// if (rateSum >= this.rateSumThreshold)
|
|
|
+// deleteTheRest = true;
|
|
|
+// }
|
|
|
+
|
|
|
NameAndValue nameAndValue = it.next();
|
|
|
if (!deleteTheRest) {
|
|
|
- // 相对于前一个疾病概率骤降rapidFallTimes倍
|
|
|
- if (preRate / nameAndValue.getValue() >= this.rapidFallTimes)
|
|
|
+ // 最后一个必须大于某个阈值
|
|
|
+ if (nameAndValue.getValue() < this.lastRateThreshold)
|
|
|
deleteTheRest = true;
|
|
|
- else {
|
|
|
- rateSum += nameAndValue.getValue();
|
|
|
- preRate = nameAndValue.getValue();
|
|
|
- restCnt += 1;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
if (deleteTheRest) // 删除剩下的疾病
|
|
|
it.remove();
|
|
|
|
|
|
-
|
|
|
- if (!deleteTheRest && restCnt >= this.numToPush) {
|
|
|
-
|
|
|
- // 如果超过尽量推送的个数,那么做概率和阈值过滤【从下一个开始删除】
|
|
|
- if (rateSum >= this.rateSumThreshold)
|
|
|
- deleteTheRest = true;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
}
|