今天就跟大家聊聊有关如何进行TEC-006的数据模糊处理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据在用户层要做模糊化处理,数据范围连续,没有
今天就跟大家聊聊有关如何进行TEC-006的数据模糊处理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
数据在用户层要做模糊化处理,数据范围连续,没有重合,想了一个解决方案,通过对范围的起始位置排序用二分查找获取模糊值区间;
数据转换格式如下:
eg.1
50平以下(<50)
50-70平(>=50,<70)
70-90平(>=70,<90)
90-110平(>=90,<110)
110-130平(>=110,<130)
130-150平(>=130,<150)
150-200平(>=150,<200)
200平以上(>=200)
eg.2
一个月以内(0-30天)
两个月以内(31-60天)
三个月以内(61-90天)
半年以内(91-180天)
一年以内(181天-365天)
一年以上(365天以上)
demo:
class VlCode {
const CONSTRUCTioN_AREA=[50,70,90,110,130,150,200];
const FINAL_PRICE=[100,150,200,250,300,400,500,800,1000];
const LOAN_AMOUNT=[30,50,100,150,200,250,300,400,500];
const LOAN_DATE=[30,31,60,61,90,91,180,181,365];
const LOAN_DATE_CEIL=[
'-1'=>"一个月以内",
'1'=>"两个月以内",
'3'=>"三个月以内",
'5'=>"半年以内",
'7'=>"一年以内",
'9'=>"一年以上"
];
static public function getRanges($arr,$target,$ceil=''){
if(empty($target)||$target<0){
return '无';
}
$index=self::binarySearchAsc($arr,$target);
if($ceil=='date'){
$changeArr=self::LOAN_DATE_CEIL;
return @$changeArr[$index];
}
$count=count($arr);
$last=$ceil;
if($index==-1){
$last='以下';
$ret=$arr[0];
}elseif($index==$count){
$last='以上';
$ret=$arr[$index-1];
}else{
$ret=$arr[$index].'-'.$arr[$index+1];
}
if(empty($ceil)){
return $ret;
}else{
return $ret.$last;
}
}
//二分查找
static public function binarySearchAsc(Array $arr, $target) {
$last=count($arr);
$low = 0;
$high = $last - 1;
while($low <= $high) {
$mid = floor(($low + $high) / 2);
$next=$mid+1;
$pre=$mid-1;
//#找到元素
if($arr[$mid]==$target){
return $mid;}elseif($arr[$mid]>$target&&$pre>=0&&$target>=@$arr[$pre]){<br/" rel="nofollow">br/>}elseif($arr[$mid]>$target&&$pre>=0&&$target>=@$arr[$pre]){<br/return $pre;
}elseif($target>=$arr[$high]){
return $last;
}elseif($pre<0){
return $pre;
}
//if($arr[$mid] == $target) return $mid;
//#中元素比目标大,查找左部
if($arr[$mid] > $target) $high = $mid - 1;
//#重元素比目标小,查找右部
if($arr[$mid] < $target) $low = $mid + 1;
}
//#查找失败
return false;
}
}
$arr = array(1, 3, 5, 7, 9, 11,13);
echo VlCode::getRanges($arr,8,'平');
$date='2017-05-12';
$days=VlCode::getDays($date);
echo VlCode::getRanges(VlCode::LOAN_DATE,$days,'date');
看完上述内容,你们对如何进行TEC-006的数据模糊处理有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网node.js频道,感谢大家的支持。
--结束END--
本文标题: 如何进行TEC-006的数据模糊处理
本文链接: https://lsjlt.com/news/82910.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
2022-06-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0