Python随笔

Numpy.random.seed()用法

刚开始使用seed的时候,最疑惑的地方就是seed里的数字的含义,不同的数字有什么样的区别。
其实可以这样理解,有一堆堆的随机数,每个随机数都会有一个标号,当使用seed时,传入的数字是什么,就会给你返回对应标号的随机数。所以当传入的seed值相同时,返回的随机数组就是一样的。

但是有时设置的seed没有变,但是随机数组还是变了,如下

import numpy as np

np.random.seed(0)

print(np.random.rand(10))
print(np.random.rand(10))
# 两次输出如下
[0.5488135  0.71518937 0.60276338 0.54488318 0.4236548  0.64589411 
 0.43758721 0.891773   0.96366276 0.38344152]
[0.79172504 0.52889492 0.56804456 0.92559664 0.07103606 0.0871293
 0.0202184  0.83261985 0.77815675 0.87001215]

为什么会不一样,设置的seed不是没变么?

其实,第二遍的np.random.rand(10)已经不是在你设置的np.random.seed(0)下了,所以第二遍的随机数组只是在默认random下随机挑选的样本数值。
可以通过以下两个方法来加深一下seed的理解

import numpy as np

def seed1():
    for i in range(4):
        np.random.seed(0)
        print(np.random.rand(5))

def seed2():
    np.random.seed(0)
    for i in range(4):
        print(np.random.rand(5))

if __name__ == '__main__':
    seed1()
    seed2()

numpy.random.RandomState()

randomState()的用法和seed()的用法类似。
numpy.random.RandomState()是一个伪随机数生成器。
伪随机数是用确定性的算法计算出来的似来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。
其用法如下:

import numpy as np

rs = np.random.RandomState(10)
print(rs.rand(10))
rs = np.random.RandomState(10)
print(rs.rand(10))

# 两次输出如下
[0.77132064 0.02075195 0.63364823 0.74880388 0.49850701 0.22479665
 0.19806286 0.76053071 0.16911084 0.08833981]

用法是不是和Numpy.random.seed()类似呢?相似的,可以查看如下程序

import numpy as np

def rng1():
    for i in range(4):
        rng = np.random.RandomState(0)
        print("i = ", i)
        print(rng.rand(3, 2))

def rng2():
    rng = np.random.RandomState(0)
    for i in range(4):
        print("i = ", i)
        print(rng.rand(3, 2))

if __name__ == '__main__':
    rng1()
    rng2()

以上参考自:https://blog.csdn.net/weixin_41571493/article/details/80549833

使用sklearn对数据标准化、归一化以及将数据还原

标准化和归一化的区别
归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了[0,1]这个区间中。
标准化则是将数据按照比例缩放,使之放到一个特定区间中。标准化后的数据的均值=0,标准差=1,因而标准化的数据可正可负。
使用sklearn进行数据标准化和标准化还原
在这里插入图片描述

导入模块:

from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from matplotlib import gridspec
import numpy as np
import matplotlib.pyplot as plt

数据标准化和标准化还原

data = np.random.uniform(0, 100, 10)[:, np.newaxis]
ss = StandardScaler()
std_data = ss.fit_transform(data)
origin_data = ss.inverse_transform(std_data)
print('data is ',data)
print('after standard ',std_data)
print('after inverse ',origin_data)
print('after standard mean and std is ',np.mean(std_data), np.std(std_data))

使用sklearn进行数据标准化和标准化还原
在这里插入图片描述

data = np.random.uniform(0, 100, 10)[:, np.newaxis]
mm = MinMaxScaler()
mm_data = mm.fit_transform(data)
origin_data = mm.inverse_transform(mm_data)
print('data is ',data)
print('after Min Max ',mm_data)
print('origin data is ',origin_data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值