我正在为一个小型项目进行调查,该项目要求用户通过从一组无线电值中进行选择来回答一些问题,如强烈不同意、同意、中立、同意和强烈同意。对于这些选择,无线电值分别为-1、-2、0、1和2。最后,我需要对数据执行某种类型的分析。首先,我使用Python尝试将值规范化,使用Log10函数。
import numpy as np
feel = [-1,-2,0,1,2]
for i in feel:
print( np.log10(i))结果是不利的:
-inf
nan
0.0
0.6931471805599453
1.0986122886681098
<ipython-input-35-830bb9e2f96e>:3: RuntimeWarning: divide by zero encountered in log1p
print( np.log1p(i))
<ipython-input-35-830bb9e2f96e>:3: RuntimeWarning: invalid value encountered in log1p
print( np.log1p(i))如果我使用C#来重复Log10规范化:
List<double> origin = new List<double> { -1,-2,0,1,2};
Program p = new Program();
var norm = 0.0;
var denorm = 0.0;
foreach(var item in origin){
System.Console.WriteLine($"Number: {item}");
norm = p.normalize(item); // 0.2
System.Console.WriteLine($"Normalized: {norm}");
denorm = p.denormalize(norm); //12
System.Console.WriteLine($"Denormalized: {denorm}");
}
public double normalize(double value)
{
var norm = Math.Log10(value);
return norm;
}
public double denormalize(double value)
{
var denorm = Math.Round(Math.Pow(10,value),14);
return denorm;
}我得到:
Number: -1
Normalized: NaN
Denormalized: NaN
Number: -2
Normalized: NaN
Denormalized: NaN
Number: 0
Normalized: -∞
Denormalized: 0
Number: 1
Normalized: 0
Denormalized: 1
Number: 2
Normalized: 0.3010299956639812
Denormalized: 2是否有有限的方式收集调查数据,然后标准化,并最终对态度方法进行一些分析?
发布于 2022-04-21 07:33:36
使用np.log10的问题是,基数10上没有负数的根。换句话说,y<0的10^x =y是不可解的。如果您想要或需要特别使用该函数,则需要将3与所有选项相加。也就是说,与其从-2到2,他们应该从1到5。
import numpy as np
feel = [1,2,3,4,5]
for i in feel:
print(np.log10(i))这一产出如下:
>>> 0.0
>>> 0.3010299956639812
>>> 0.47712125471966244
>>> 0.6020599913279624
>>> 0.6989700043360189https://stackoverflow.com/questions/71884734
复制相似问题