圣者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2005-8-12
|
我对你们吵架的这事纯粹是看乐子,结果如何说实话没多大兴趣,
不过我对数据处理有点兴趣。
前面有人提到应该统计时域信息,我觉得很有道理,便试着做了一下。
因为投票时间是没有数据记录的,所以我只有投票顺序这一个时域信息可用。
统计学这东西反正就是个BIAO子,谁都能让她对自己岔开双腿。
所以结果只跟统计方法有关,并不说明什么根本性问题。
我的做法很简单,拿一个简单代表活跃度的数值(最简单的选了发帖数),将其按投票顺序排列,然后卷积一个平均值窗口(宽度20)。
简单代码:
- #! python3
- # coding: utf-8
- # https://bbs.saraba1st.com/2b/thread-2167453-1-1.html
- import json
- import numpy as np
- from matplotlib import pyplot as plt
- SEQ_NAME = '202401101326.json'
- INF_NAME = 'resultWithVote2.json'
- def load_json(fn):
- with open(fn, 'r', encoding='utf8') as fd:
- return json.load(fd)
- def load_tdat(bkey, ikey, exbkey = None):
- dseq = load_json(SEQ_NAME)
- dinf = load_json(INF_NAME)
- rs = []
- for sitm in dseq[bkey]:
- unm = sitm['name']
- if exbkey:
- exclude = False
- for exitm in dseq[exbkey]:
- if exitm['name'] == unm:
- exclude = True
- break
- if exclude:
- continue
- for iitm in dinf:
- if iitm['name'] == unm:
- rs.append(iitm[ikey])
- break
- return rs
- def draw_convolve(ds, n, ax, nosrc = False):
- dc = np.convolve(ds, [1/n] * n)[:len(ds)]
- xs = np.linspace(0, 1, len(ds))
- if not nosrc:
- ax.plot(xs, ds, 'orange')
- ax.plot(xs, dc)
- def main(n):
- d1 = load_tdat('MyGO', 'post', '芙莉莲')
- d2 = load_tdat('芙莉莲', 'post', 'MyGO')
- print(len(d1), len(d2))
- fig, axs = plt.subplots(2, 2)
- draw_convolve(d1, n, axs[0][0])
- draw_convolve(d2, n, axs[1][0])
- draw_convolve(d1, n, axs[0][1], True)
- draw_convolve(d2, n, axs[1][1], True)
- plt.show()
- plt.cla()
- if __name__ == '__main__':
- main(20)
复制代码
只统计单边票,MYGO的359票,芙莉莲的292票。
结果如下:
上面是MYGO,下面是芙莉莲,黄色是原始发帖数,蓝色是卷积结果,右边2个是为了看得更清晰只显示了卷积结果。
可以看到上下时域趋势上其实区别不大,只在大概横轴0.6处有一个峰值差异。
被认为有嫌疑的尾端,其实两方都有活跃均值降低的倾向,差别不大。
就像前面说的,数据没多大意义,只看你怎么用。
这种简单用无加权的发帖量来代表活跃度的算法确实十分简陋,看个乐就行。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|