用Python实现微信公众号WCI指数计算器

今天弄公众号的时候,
想到了WCI指数,
计算公式复杂但是不难,
可以用Excel实现计算,
我想着可以用Python代码练习一下。

1、关于WCI
采用数据:总阅读数R、总点赞数Z、发布文章数N、该账号当期最高阅读数Rmax、该账号最高点赞数Zmax。
采用指标:总阅读数R、平均阅读数R/N,最高阅读数Rmax,总点赞数Z,平均阅读数Z/N,最高点赞数Zmax,点赞率Z/R。建立如下指标体系:
在这里插入图片描述
2、确定权重
在这里插入图片描述
3、计算公式
在这里插入图片描述
4、源代码

"""
    作者:玉笙寒
    功能:WCI指数计算器
    版本:1.0
    日期:2019/04/02
"""

import math

def main():
   	   """
            主函数
        """
    y_or_n = input('是否退出程序(y/n)?')
    while y_or_n != 'y':
        # 总阅读数R
        R = float(input('总阅读数:'))
        # 所有文章n
        n = float(input('所有文章数:'))
        # 平均阅读数(R/n)
        R_n = R / n
        print('平均阅读数:',R_n)
        # 最高阅读数Rmax
        Rmax = float(input('最高阅读数:'))

        # 总点赞数
        Z = float(input('总点赞数:'))
        # 平均点赞数(Z/n)
        Z_n = Z / n
        print('平均点赞数:', Z_n)
        # 最高点赞数Zmax
        Zmax = float(input('最高点赞数:'))
        # 点赞率
        Z_R = Z / R
        print('点赞率:',Z_R)

        if R < 1000:
            # WCI计算
            WCI = pow((0.65 * math.log(0.6 * R + 0.3 * R_n * 5 + 0.1 * Rmax * 3) + 0.35 * math.log(
                0.6 * Z + 0.3 * Z_n * 4.5 + 0.1 * Zmax * 2)), 2) * 10

        else:
            WCI = pow((0.65 * math.log(0.6 * R + 0.3 * R_n * 5 + 0.1 * Rmax * 3) + 0.35 * math.log(
                0.6 * Z + 0.3 * Z_n * 4.5 + 0.1 * Zmax * 2 + 0.05 * Z_R * 1000)), 2) * 10

        print('WCI指数为:', WCI)
        print()  # 输出空行
        y_or_n = input('是否退出程序(y/n)?')

if __name__ == '__main__':
    main()

5、打包成exe
在这里插入图片描述
使用pyinstaller将Python代码打包成exe应用程序,
这一步骤我也是一边学一边实践,
关于打包
经过种种曲折坎坷,
终于完美成功!
开心。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
你可以使用以下代码来直接调用PyTorch中的ConvLSTM: ``` import torch.nn as nn from torch.autograd import Variable class ConvLSTMCell(nn.Module): def __init__(self, input_size, hidden_size, kernel_size): super(ConvLSTMCell, self).__init__() self.input_size = input_size self.hidden_size = hidden_size self.kernel_size = kernel_size self.padding = kernel_size // 2 self.Wxi = nn.Conv2d(in_channels=input_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Whi = nn.Conv2d(in_channels=hidden_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Wxf = nn.Conv2d(in_channels=input_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Whf = nn.Conv2d(in_channels=hidden_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Wxc = nn.Conv2d(in_channels=input_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Whc = nn.Conv2d(in_channels=hidden_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Wxo = nn.Conv2d(in_channels=input_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Who = nn.Conv2d(in_channels=hidden_size, out_channels=hidden_size, kernel_size=kernel_size, padding=self.padding) self.Wci = None self.Wcf = None self.Wco = None def forward(self, x, h, c): ci = torch.sigmoid(self.Wxi(x) + self.Whi(h) + c * self.Wci) cf = torch.sigmoid(self.Wxf(x) + self.Whf(h) + c * self.Wcf) cc = cf * c + ci * torch.tanh(self.Wxc(x) + self.Whc(h)) co = torch.sigmoid(self.Wxo(x) + self.Who(h) + cc * self.Wco) ch = co * torch.tanh(cc) return ch, cc class ConvLSTM(nn.Module): def __init__(self, input_size, hidden_size, kernel_size, num_layers, batch_first=False): super(ConvLSTM, self).__init__() self.input_size = input_size self.hidden_size = hidden_size self.kernel_size = kernel_size self.num_layers = num_layers self.batch_first = batch_first cell_list = [] for i in range(0, self.num_layers): cur_input_size = self.input_size if i == 0 else self.hidden_size cell_list.append(ConvLSTMCell(input_size=cur_input_size, hidden_size=self.hidden_size, kernel_size=self.kernel_size)) self.cell_list = nn.ModuleList(cell_list) def forward(self, input_tensor, hidden_state=None): if hidden_state is None: hidden_state = self._init_hidden(batch_size=input_tensor.size(0)) layer_output_list = [] last_state_list = [] seq_len = input_tensor.size(1) if self.batch_first else input_tensor.size(0) cur_layer_input = input_tensor for layer_idx in range(self.num_layers): h, c = hidden_state[layer_idx] output_inner = [] for t in range(seq_len): h, c = self.cell_list[layer_idx](input_tensor=cur_layer_input[:, t, :, :, :], h=h, c=c) output_inner.append(h) layer_output = torch.stack(output_inner, dim=1) cur_layer_input = layer_output layer_output_list.append(layer_output) last_state_list.append((h, c)) if self.batch_first: return layer_output_list, last_state_list else: return layer_output_list.transpose(0, 1), last_state_list def _init_hidden(self, batch_size): init_states = [] for i in range(self.num_layers): init_states.append((Variable(torch.zeros(batch_size, self.hidden_size, 64, 64)).cuda(), Variable(torch.zeros(batch_size, self.hidden_size, 64, 64)).cuda())) return init_states ``` 这是一个ConvLSTM的实现,可以直接调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PlanetB613_布瓜

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值