python使用KDE曲线描述频率分布

sklearn KDE文档:https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KernelDensity.html

算法描述

KDE核密度估计,通俗来说,就是用平滑的曲线描述一个序列数据的频率分布直方图。然而在使用频率分布直方图时,要确定每个频率的区间大小,太大则无法反应细微的差距,太小则会是直方图变得毫无意义,因此我们可以通过KDE,从核函数的角度了解这个序列频率的趋势变化,而无需通过阈值确定区间大小。

示例代码

from sklearn.neighbors import KernelDensity
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


def get_curve_by_kde(array: np.ndarray):
    """计算KDE曲线"""
    model = KernelDensity(bandwidth=1.0, kernel='gaussian')
    model.fit(array[:, np.newaxis])  # 概率分布
    x_range = np.linspace(min(array) - 1, max(array) + 1, len(array))
    # model.score_samples返回的是一个log之后的值,因此需要使用e还原数据
    x_prob = np.exp(model.score_samples(x_range[:, np.newaxis]))
    return x_prob


def main():
    """主流程"""
    x_train = np.hstack((np.random.normal(2, 1, 200), np.random.normal(6, 4, 200)))  # 两个高斯分布组合到一起
    x_prob = get_curve_by_kde(x_train)
    # 展示
    dataframe = pd.DataFrame(data=[x_prob]).T
    dataframe.plot()
    plt.show()


if __name__ == '__main__':
    main()

得到效果图:

在这里插入图片描述

更多学习参考

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在金融领域中,股价的走势往往是一个非常复杂的过程,受到多种因素的影响。然而,有研究表明,某些情况下,股价的变动可以近似地服从正态分布。而在Python中,我们可以使用核密度估计(Kernel Density Estimation,KDE)来绘制股价的正态分布曲线。 首先,我们需要准备股价数据。可以通过金融数据接口或者从已有的股价数据集中获取数据。然后,我们使用Python中的库,例如pandas和numpy,对数据进行处理和计算。 接下来,我们可以使用KDE函数,比如在Python中常用的scipy库的`gaussian_kde`函数,来估计数据的概率密度分布。它可以基于给定数据的观测值,使用高斯核函数进行估计。 一旦我们获得了估计的概率密度分布,我们可以使用matplotlib库绘制股价的正态分布曲线。我们可以通过设置合适的参数,如带宽(bandwidth),来调整曲线的光滑度和拟合程度。 此外,我们还可以进一步对股价数据进行统计分析,例如计算均值、标准差、偏度、峰度等指标。这些指标可以帮助我们了解股价变动的特征,并判断是否符合正态分布假设。 需要注意的是,股价的走势可能受到多种非正态的因素影响,如市场情绪、新闻事件、经济数据等。因此,股价的正态分布仅是一种近似,而不是精确的描述。 总之,使用Python中的KDE方法可以帮助我们在一定程度上了解股价的正态分布情况。但在进行金融分析时,我们还需要考虑其他因素,并结合技术指标、基本面分析等方法,综合判断股价的走势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值