利用百度Echart【scatter】进行数据分析

最近在做一个投票活动,由于活动参与量较大,部分淘宝商家已经做起了刷票生意【据说生意还很不错~~】。所以防刷是很重要的一部分。

之前已经在技术层面已经做好了防刷,但人工刷票,确实防不胜防啊!
今天呢,从数据分析的角度,通过投票记录,来筛选异常投票情况,从而找出刷票教练。

思路整理:
1.计算每小时(可细化到每分钟),每个教练的得票数;
2.利用Echarts【scatter-aqi-color】,进行数据可视化;
3.找出异常点,找出异常教练;

具体步骤:

1. 导出每小时的教练得票数

select sum(vote) as vote,uid,date_format(from_unixtime(create_time), '%H') as date from t_vote_log where from_unixtime(create_time) between '2018-09-10' and '2018-09-12' group by uid,date;

2. 格式化数据【支持Echarts-scatter-aqi-color】

php代码:
   $file = './0913votelog.log';  // 导出日志log
    $fileout = './0913votelognew.log';  // 生成新的文件
    if (file_exists($fileout)) {
        unlink($fileout);  // 初始化,如果已经导出过,先删除旧文件
    }
    $f = fopen($file, 'r') or exit('file not exit');
    $f2 = fopen($fileout, 'w') or exit('file open error');
    fwrite($f2, 'var VOTEDATA = [');  
    while (!feof($f)) {
        $line = fgets($f);
        $attr = preg_split('/[\n\t\r\s+]/i', $line);
        $vote = $attr[0];$cid = $attr[1];$time = $attr[2];
        if ($vote && $cid && $time && is_numeric($cid)) {
            $format = "[{$time},{$vote},{$cid}],";
            fwrite($f2, $format . PHP_EOL);
        }
    }
    $end = rtrim($format, ',') . ']';
    fwrite($f2, $end);
    echo 'success';

数据格式如下:


利用百度Echart【scatter】进行数据分析_第1张图片
image.png

3.使用Echart进行数据可视化【在官网下载-demo代码scatter-aqi-color】

a.首先导入数据


b.配置

注意:数据的第一列是x轴,第二列是y轴数据。

var dataBJ = VOTEDATA;
// 根据具体数据格式配置:
var schema = [
    {name: 'date', index: 0, text: '时间'},
    {name: 'vote', index: 1, text: '票数'},
    {name: 'userId', index: 2, text: '用户id'}
];

tooltip: {
        padding: 10,
        backgroundColor: '#222',
        borderColor: '#777',
        borderWidth: 1,
        formatter: function (obj) {
            var value = obj.value;
            return '
' + obj.seriesName + '时间:' + value[0] + '
' + schema[1].text + ':' + value[1] + '
' + schema[2].text + ':' + value[2] + '
'; } }, xAxis: { type: 'value', name: '日期', nameGap: 16, nameTextStyle: { color: '#fff', fontSize: 10 }, max: 24, // 横坐标按照24小时 splitLine: { show: false }, axisLine: { lineStyle: { color: '#eee' } } }, yAxis: { type: 'value', name: '票数', nameLocation: 'end', nameGap: 20, nameTextStyle: { color: '#fff', fontSize: 16 }, axisLine: { lineStyle: { color: '#eee' } }, splitLine: { show: false } }, // 右边筛选配置 visualMap: [ { left: 'right', top: '10%', dimension: 2, min: 0, max: 1000, itemWidth: 30, itemHeight: 120, calculable: true, precision: 0.1, text: ['圆形大小:票数'], textGap: 30, textStyle: { color: '#fff' }, inRange: { symbolSize: [1, 7] // 圆圈大小 }, outOfRange: { symbolSize: [1, 7], color: ['rgba(255,255,255,.2)'] }, controller: { inRange: { color: ['#c23531'] }, outOfRange: { color: ['#444'] } } }, { left: 'right', bottom: '5%', dimension: 6, min: 1, max: 24, itemHeight: 120, calculable: true, precision: 0.1, text: ['明暗:时间'], textGap: 30, textStyle: { color: '#fff' }, inRange: { colorLightness: [1, 0.5] }, outOfRange: { color: ['rgba(255,255,255,.2)'] }, controller: { inRange: { color: ['#c23531'] }, outOfRange: { color: ['#444'] } } } ],

最后如图:


利用百度Echart【scatter】进行数据分析_第2张图片
image.png

总结:本来想利用深度学习,利用knn分类,找出异常点。但根据实际业务,无需做如此复杂的计算。通过这次的实践,主要锻炼数据思维以及分析能力,最后的结果也是喜人的。
根据运营的反馈,找出来的90%的异常点用户均属于刷票用户。

你可能感兴趣的:(利用百度Echart【scatter】进行数据分析)