我正在开发功能工程流程,作为机器学习项目的一部分。目前我必须确定是否对某些列进行日志转换。
我开始知道应该对那些具有偏差分布值的列进行日志转换。
现在,我需要澄清一些问题/疑问。
如何在Python中确定特定列值是否属于偏斜分布(右倾斜或左偏斜)?
并且假设我确定了需要应用日志转换的列,日志函数有很多基础,如loge,log10,log2等...... 所以我使用自然日志( ie)loge或log10或其他任何机器学习方法?
如果我没有错,日志转换只能应用于数字变量。这是对的吗?
答案 0 :(得分:0)
是的,您只能将日志转换应用于数值数据。还有其他方法可以将文本数据转换为数字ex。一热编码。
绘制列的直方图以检查数据中是否存在任何偏斜。箱形图也有助于这方面。
如果您正在使用pandas,那么hist()函数将会有所帮助。尝试使用不同的箱尺寸绘图。 对于日志转换,选择任何不会影响很大的基数。通常使用loge和log10。
答案 1 :(得分:0)
衡量您可以使用{(3}}或scipy.stats.skew
您还可以使用scipy.stats.skewtest
获取对数正态分布的参数
答案 2 :(得分:0)
您可以使用Pandas DataFrame.skew(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
Pandas skew查看天气特定列的值是否偏斜。
基本上,自然对数转换是优选的,它只能应用除零和负值之外的数值。
正态分布的偏度为零,任何对称数据的偏度都应接近零。偏斜的负值表示向左倾斜的数据,偏斜的正值表示向右倾斜的数据。左倾斜,我们的意思是左尾相对于右尾长。同样,向右倾斜意味着右尾相对于左尾长。