①.)线性归一化
这种归一化比较适用在数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min.
经过处理的数据符合标准正态分布,即均值为0,标准差为1.
经常用在数据分化较大的场景,有些数值大,有些很小.通过一些数学函数,将原始值进行映射.该方法包括log、指数、反正切等.需要根据数据分布的情况,决定非线性函数的曲线.
log函数:x = lg(x)/lg(max)
Python实现
线性归一化
定义数组:x = numpy.array(x)
获取二维数组列方向的最大值:x.max(axis = 0)
获取二维数组列方向的最小值:x.min(axis = 0)
对二维数组进行线性归一化:
def max_min_normalization(data_value, data_col_max_values, data_col_min_values):
""" Data normalization using max value and min value
Args:
data_value: The data to be normalized
data_col_max_values: The maximum value of data's columns
data_col_min_values: The minimum value of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value[i][j] = \
(data_value[i][j] - data_col_min_values[j]) / \
(data_col_max_values[j] - data_col_min_values[j])
标准差归一化
获取二维数组列方向的均值:x.mean(axis = 0)
获取二维数组列方向的标准差:x.std(axis = 0)
对二维数组进行标准差归一化:
def standard_deviation_normalization(data_value, data_col_means,
data_col_standard_deviation):
""" Data normalization using standard deviation
data_col_means: The means of data's columns
data_col_standard_deviation: The variance of data's columns
(data_value[i][j] - data_col_means[j]) / \
data_col_standard_deviation[j]
非线性归一化(以lg为例)
获取二维数组列方向的最大值:x.max(axis=0)
获取二维数组每个元素的lg值:numpy.log10(x)
获取二维数组列方向的最大值的lg值:numpy.log10(x.max(axis=0))
对二维数组使用lg进行非线性归一化:
def nonlinearity_normalization_lg(data_value_after_lg,
data_col_max_values_after_lg):
""" Data normalization using lg
data_value_after_lg: The data to be normalized
data_col_max_values_after_lg: The maximum value of data's columns
data_shape = data_value_after_lg.shape
data_value_after_lg[i][j] = \
data_value_after_lg[i][j] / data_col_max_values_after_lg[j]
计算器上一般用shift键,再按的tan输入,就是tan的负一次方的.
计算机先选科学型,然后在度与弧度下面有个inv键,按了它后就有tan-1次方,就是arctan的意思,arctan是正切的反函数,计算器上一般用shift键加tan键,就是tan的负一次方的那个.
科学型计算器一般都可以计算,常见的有夏普计算器、卡西欧计算器、得力计算器.arctan也可以写作arctg,是反正切函数,你看看计算机上有没有arctan或者arc^-1注意各个键位上的标示以及该键位所对应的功能键标示,有些功能要先按shift键、alpha等功能.
先来看一下 math 模块中包含内容,如下所示:
此时此刻呢具体看一下该模块的常用函数和常量.
ceil(x)
返回 x 的上限,即大于或者等于 x 的最小整数.看下示例:
floor(x)
返回 x 的向下取整,小于或等于 x 的最大整数.看下示例:
fabs(x)
返回 x 的绝对值.看下示例:
fmod(x, y)
返回 x/y 的余数,值为浮点数.看下示例:
factorial(x)
返回 x 的阶乘,如果 x 不是整数或为负数时则将引发 ValueError.看下示例:
pow(x, y)
返回 x 的 y 次幂.看下示例:
fsum(iterable)
返回迭代器中所有元素的和.看下示例:
gcd(x, y)
返回整数 x 和 y 的最大公约数.看下示例:
sqrt(x)
返回 x 的平方根.看下示例:
trunc(x)
返回 x 的整数部分.看下示例:
exp(x)
返回 e 的 x 次幂.看下示例:
log(x[, base])
返回 x 的对数,底数默认为 e.看下示例:
常量
tan(x)
返回 x 弧度的正切值.看下示例:
atan(x)
返回 x 的反正切值.看下示例:
sin(x)
返回 x 弧度的正弦值.看下示例:
asin(x)
返回 x 的反正弦值.看下示例:
cos(x)
返回 x 弧度的余弦值.看下示例:
acos(x)
返回 x 的反余弦值.看下示例:
decimal 模块为正确舍入十进制浮点运算提供了支持,相比内置的浮点类型 float,它能更加精确的控制精度,能够为精度要求较高的金融等领域提供支持.
decimal 在一个独立的 context 下工作,可以使用 getcontext() 查看当前上下文,如下所示:
基本运算
执行结果:
上面结果是用了默认精度,我们重新设置下精度再来看一下:
random 模块可以生成随机数,我们来看一下其常用函数.
random()
返回 [0.0, 1.0) 范围内的一个随机浮点数.看下示例:
uniform(a, b)
返回 [a, b) 范围内的一个随机浮点数.看下示例:
randint(a, b)
返回 [a, b] 范围内的一个随机整数.看下示例:
randrange(start, stop[, step])
返回 [start, stop) 范围内步长为 step 的一个随机整数.看下示例:
choice(seq)
从非空序列 seq 返回一个随机元素. 看下示例:
shuffle(x[, random])
将序列 x 随机打乱位置.看下示例:
sample(population, k)
返回从总体序列或集合中选择的唯一元素的 k 长度列表,用于无重复的随机抽样.看下示例:
参考:
Python math 库提供许多对浮点数的数学运算函数,math模块不支持复数运算,若需计算复数,可使用cmath模块(本文不赘述).
使用dir函数,查看math库中包含的所有内容:
①.) math.pi?# 圆周率n
①.) math.fabs(x)? ? #表示X值的绝对值
①.0) math.modf(x)? ? #表示x的小数和整数部分
①.1) math.trunc(x)? ? #表示x值的整数部分
①.) math.pow(x,y)? ? #表示x的y次幂
①.) math.degrees(x)? ? #表示弧度值转角度值
①.1) math.sinh(x)? ? #表示x的双曲正弦函数值
①.)math.erf(x)? ? #高斯误差函数
参考文章:
在python中,有一个math module,你可以import math,里面有math.sin(), math.cos(), math.asin()和math.acos()四个函数.相信你也知道asin和acos的意思,就是arcsin和arccos.有了这四个函数你就可以求函数值和角度了.但是要注意括号里面填的数值,要用弧度制.
以上就是土嘎嘎小编为大家整理的python中反正切函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!