这个问题与逻辑比任何编程语言更相关.如果问题不适合论坛,请告诉我,我会删除它.
我必须编写一个逻辑来计算博客奖励网站的博客分数.博客可能会被提名为多个奖项类别,并由评审团进行同行评审或评级为-1至5级(-1表示他们完全不喜欢的博客).现在,一个或多个陪审员可以对博客进行评级.计算博客最终得分时的一个标准是,如果博客被更多人评为肯定,那么它应该获得更多的权重(反之亦然).类似地,即使是一个陪审员,评分为-1的博客也应该影响其得分(-1在这里是一种否决权).最后,我还希望根据博客的Technorati等级获得额外的分数(以便最终得分基于陪审员评级+ Technorati排名的组合).
示例:博客在A类中被评为6位陪审员.2分为3分,3分为2分,1分为4分.(我曾将得分计算为(2*3 + 3*2 + 1*4)/ 6 = 16/6 = 2.67得到加权平均但我对此不满意,主要是因为当陪审员评级为-1时它不能很好地工作.此外,我还需要添加Technorati排名等级标准.
你能帮我决定计算最终得分的最佳方法(保持评级方法与上面相同,现在不能改变)?
我有两个不同的时间序列,部分重叠的时间戳:
import scikits.timeseries as ts
from datetime import datetime
a = ts.time_series([1,2,3], dates=[datetime(2010,10,20), datetime(2010,10,21), datetime(2010,10,23)], freq='D')
b = ts.time_series([4,5,6], dates=[datetime(2010,10,20), datetime(2010,10,22), datetime(2010,10,23)], freq='D')
Run Code Online (Sandbox Code Playgroud)
代表以下数据:
Day: 20. 21. 22. 23.
a: 1 2 - 3
b: 4 - 5 6
Run Code Online (Sandbox Code Playgroud)
我想用系数a(0.3)和b(0.7)计算每天的加权平均值,同时忽略缺失值:
Day 20.: (0.3 * 1 + 0.7 * 4) / (0.3 + 0.7) = 3.1 / 1. = 3.1
Day 21.: (0.3 * 2 ) / (0.3 ) = 0.6 / 0.3 = 2
Day 22.: ( 0.7 * 5) …Run Code Online (Sandbox Code Playgroud) 我有以下pandas数据帧:
data_df = pd.DataFrame({'ind':['la','p','la','la','p','g','g','la'],
'dist':[10.,5.,7.,8.,7.,2.,5.,3.],
'diff':[0.54,3.2,8.6,7.2,2.1,1.,3.5,4.5],
'cas':[1.,2.,3.,4.,5.,6.,7.,8.]})
Run Code Online (Sandbox Code Playgroud)
那是
cas diff dist ind
0 1 0.54 10 la
1 2 3.20 5 p
2 3 8.60 7 la
3 4 7.20 8 la
4 5 2.10 7 p
5 6 1.00 2 g
6 7 3.50 5 g
7 8 4.50 3 la
Run Code Online (Sandbox Code Playgroud)
我需要计算权重在'dist'列中的所有列的加权平均值,并将值分组为'ind'.
例如'ind'='la'和'diff'列:
((10*0.54)+(8.60*7)+(7.20*8)+(4.50*3))/(10+7+8+3) = 4.882143
Run Code Online (Sandbox Code Playgroud)
我想要获得的结果如下
cas diff
ind
g 6.714286 2.785714
la 3.107143 4.882143
p 3.750000 2.558333
Run Code Online (Sandbox Code Playgroud)
这是通过将每个列的每个值乘以'dist'列中的相应值得到的,将结果与相同的'ind'相加,然后将结果除以与相同ind相对应的所有'dist'值的总和.
我认为这可能是数据帧'groupby'方法完成的一项简单任务,但实际上它有点棘手.
有人可以帮帮我吗?
我在python3和Haskell(编译)中实现了指数加权移动平均值(ewma).这需要大约相同的时间.但是当这个函数被应用两次时,haskell版本会无法预测地减慢速度(超过1000次,而python版本仅慢2倍).
Python3版本:
import numpy as np
def ewma_f(y, tau):
a = 1/tau
avg = np.zeros_like(y)
for i in range(1, len(y)):
avg[i] = a*y[i-1]+(1-a)*avg[i-1]
return avg
Run Code Online (Sandbox Code Playgroud)
Haskell列表:
ewmaL :: [Double] -> Double -> [Double]
ewmaL ys tau = reverse $ e (reverse ys) (1.0/tau)
where e [x] a = [a*x]
e (x:xs) a = (a*x + (1-a)*(head $ e xs a) : e xs a)
Run Code Online (Sandbox Code Playgroud)
Haskell与数组:
import qualified Data.Vector as V
ewmaV :: V.Vector Double -> Double -> V.Vector …Run Code Online (Sandbox Code Playgroud) 我有两个形式为 [y11, y12] 和 [y21, y22] 的 Pytorch 张量。如何获得两个张量的加权平均值?
我有几个加权值,我正在加权平均值.我想使用加权值和加权平均值来计算加权标准差.如何修改典型标准偏差以包括每次测量的权重?
这是我正在使用的标准差公式.

当我只使用' x '的每个加权值和'\ bar { x }' 的加权平均值时,结果似乎小于它应该的值.
我有一个形状矩阵(64,17)对应时间和纬度.我想采用加权纬度平均值,我知道np.average可以做,因为,与我用来平均经度的np.nanmean不同,权重可以在参数中使用.但是,np.average不会像np.nanmean那样忽略NaN,所以我每行的前5个条目都包含在纬度平均值中,并使整个时间序列充满NaN.
有没有一种方法可以在没有将NaN包含在计算中的情况下采用加权平均值?
file = Dataset("sst_aso_1951-2014latlon_seasavgs.nc")
sst = file.variables['sst']
lat = file.variables['lat']
sst_filt = np.asarray(sst)
missing_values_indices = sst_filt < -8000000 #missing values have value -infinity
sst_filt[missing_values_indices] = np.nan #all missing values set to NaN
weights = np.cos(np.deg2rad(lat))
sst_zonalavg = np.nanmean(sst_filt, axis=2)
print sst_zonalavg[0,:]
sst_ts = np.average(sst_zonalavg, axis=1, weights=weights)
print sst_ts[:]
Run Code Online (Sandbox Code Playgroud)
输出:
[ nan nan nan nan nan
27.08499908 27.33333397 28.1457119 28.32899857 28.34454346
28.27285767 28.18571472 28.10199928 28.10812378 28.03411865
28.06411552 28.16529465]
[ nan nan nan nan nan nan nan nan nan nan nan …Run Code Online (Sandbox Code Playgroud) 有关命令的问题by和weighted.mean已经存在,但没有一个能够帮助解决我的问题。我是R语言的新手,比起编程,我更习惯于数据挖掘语言。
我有一个数据框,其中包含每个人(观察/行)的收入,教育水平和样本权重。我想按教育程度计算收入的加权平均值,并且希望将结果与原始数据框的新列中的每个人相关联,如下所示:
obs income education weight incomegroup
1. 1000 A 10 --> display weighted mean of income for education level A
2. 2000 B 1 --> display weighted mean of income for education level B
3. 1500 B 5 --> display weighted mean of income for education level B
4. 2000 A 2 --> display weighted mean of income for education level A
Run Code Online (Sandbox Code Playgroud)
我试过了:
data$incomegroup=by(data$education, function(x) weighted.mean(data$income, data$weight))
Run Code Online (Sandbox Code Playgroud)
这是行不通的。加权均值是通过某种方式计算的,并显示在“收入组”列中,但是对于整个集合而不是按组或仅对于一个组,我不知道。我阅读了有关软件包的内容plyr,aggregate但似乎并没有做我感兴趣的事情。
该ave{stats}命令给出的正是我要查找的内容,但仅出于简单的意思: …
我想将加权滚动平均值应用于大型时间序列,设置为 pandas 数据框,其中每天的权重都不同。这是数据框的子集
DF:
Date v_std vertical
2010-10-01 1.909 545.231
2010-10-02 1.890 538.610
2010-10-03 1.887 542.759
2010-10-04 1.942 545.221
2010-10-05 1.847 536.832
2010-10-06 1.884 538.858
2010-10-07 1.864 538.017
2010-10-08 1.833 540.737
2010-10-09 1.847 537.906
2010-10-10 1.881 538.210
2010-10-11 1.868 544.238
2010-10-12 1.856 534.878
Run Code Online (Sandbox Code Playgroud)
我想使用 v_std 作为权重来获取垂直列的滚动平均值。我一直在使用加权平均函数:
def wavg(group, avg_name, weight_name):
d = group[avg_name]
w = group[weight_name]
try:
return (d * w).sum() / w.sum()
except ZeroDivisionError:
return d.mean()
Run Code Online (Sandbox Code Playgroud)
但我不知道如何实现滚动加权平均值。我认为它类似于
df.rolling(window = 7).apply(wavg, "vertical", "v_std")
Run Code Online (Sandbox Code Playgroud)
或利用rolling_apply?或者我必须一起编写一个新函数吗?谢谢你!
我有一个如下所示的数据框。
权重列本质上代表每个项目的频率,因此对于每个位置,权重总和将等于 1
请记住,这是一个简化的数据集,实际上有超过 100 列,例如value
d = {'location': ['a', 'a', 'b', 'b'],'item': ['x', 'y', 's', 'v'], 'value': [1, 5, 3, 7], 'weight': [0.9, 0.1, 0.8, 0.2]}
df = pd.DataFrame(data=d)
df
location item value weight
0 a x 1 0.9
1 a y 5 0.1
2 b s 3 0.8
3 b v 7 0.2
Run Code Online (Sandbox Code Playgroud)
我目前有代码可以计算未加权数据的分组中位数、标准差、偏斜和分位数,我使用以下代码:
df = df[['location','value']]
df1 = df.groupby('location').agg(['median','skew','std']).reset_index()
df2 = df.groupby('location').quantile([0.1, 0.9, 0.25, 0.75, 0.5]).unstack(level=1).reset_index()
dfs = df1.merge(df2, how …Run Code Online (Sandbox Code Playgroud) weighted-average ×10
python ×7
pandas ×3
numpy ×2
blogs ×1
dataframe ×1
datetime ×1
haskell ×1
logic ×1
mean ×1
performance ×1
pytorch ×1
r ×1
scikits ×1
statistics ×1
tensor ×1
time-series ×1