2018-12-01 警告AVX2 zipf分布样本

2018-12-01  本文已影响10人  七月那个阿瓜呀

1.警告: Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

解决办法: 加入代码

import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' 

2. zipf分布生成样本

法一:利用现有函数

y = np.random.zipf(alf,shape=none)

注意:alf>1

法二:从统计学方面

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 27 10:00:00 2018

@author: yi&gua"""

import numpy as np
import pandas as pd

N = 50   # zipf分布是1-50
a = np.array([2,1,0.5,0.7,1.2,0.6])   #zipf分布的参数
c = a[0]
pi = []#
req_cont = []
req = []
Rsize = 100    #每个时间段共有请求1000个
s = 0
n_sum = 0

#最初从1-50个数中生成request 1000个
req_init = np.random.randint(1, N+1,size=Rsize)  #生成内容
b = pd.value_counts(req_init)  #排序

req_size=[]
for k,v in b.items():
    req_size.append(k)
    req_size.append(v)
req_size_reshpe = np.reshape(req_size,[-1,2])   #[内容 ,出现次数]
req_cont = [x[0] for x in req_size_reshpe]   #按照概率排序的结果
print(req_cont)
N_L = len(req_cont)

for i in range(N_L):
    s += (i + 1)**(-c)      #求概率分母
for i in range(N_L):
    p = (i + 1) ** (-c) / s    #第i个内容 的概率
    pi.append(p)   #每个内容的概率
for i in range(N_L):
    n = round(pi[i] * Rsize)     #四舍五入取整
    n_sum += n     #确定概率的总数
    for j in range(int(n)):
        req_cont[i] = np.array(req_cont[i])
        req.append(req_cont[i])
if n_sum < Rsize:    #不够1000,加入1-50之间的数
    for i in range(int(Rsize - n_sum)):
        req.append(np.random.randint(1,N+1))
elif n_sum > Rsize:
    for i in range(int(n_sum - Rsize)):
        req.pop(np.random.randint(1,N+1))     #pop移除该列表最后一个元素
np.random.shuffle(req)     #将请求顺序打乱
np.savetxt('Lstm_4_DeepCaching_data1',req)
duqu=np.loadtxt('Lstm_4_DeepCaching_data1')
print(duqu)

法三:逆变换法 生成zipf样本

逆变换法 https://en.wikipedia.org/wiki/Inverse_transform_sampling?tdsourcetag=s_pctim_aiomsg

zipf(alp,N)

# -*- coding: UTF-8 -*-
"""
Created on Sat Dec 1 21:20:00 2018

@author: Agua"""


import numpy as np
#import tensorflow as tf
import matplotlib.pyplot as plt

alfall = [0.8,1.2,1]
alf = alfall[1]
yy = []
xx = []
valuearray = []
sumsort = []
yysort = []
N = 1000
Nsort = 50
sumy = 0
for i in range(Nsort):
    sumy += ((i + 1) ** (-1 * alf))
print(sumy)

for ii in range(N):
    y = np.random.rand()
    yy.append(y)
    j = 1
    sumx = 0
    while (sumx < y * sumy):
        sumx += (j ** (-1 * alf))
        j += 1
    xx.append(j)

i = 0
j = 1

while(j<Nsort+1):
    yysort.append(j)
    sum = 0
    i = 0
    while(i<N):
        if(xx[i] == j):
            sum +=1
        i +=1
    sumsort.append(sum)
    j +=1
print('生成的 %d 个请求:' %(N))
print(xx)
print("种类个数",sumsort)
plt.plot(yysort,sumsort,'o')
plt.show()
#np.savetxt('Lstm_4_zip1000_data1',xx)
上一篇下一篇

猜你喜欢

热点阅读