一个python库,用于构建不同类型的copula并使用它们进行采样。
copulas的Python项目详细描述
麻省理工学院从数据到人工智能实验室的开源项目。
copulas
概述
一个python库,用于构建不同类型的copulas并使用它们进行采样。
- 自由软件:麻省理工学院许可证
- 文档:https://DAI-Lab.github.io/Copulas
支持的copula
二元
- 克莱顿
- 弗兰克
- 甘贝尔
可从copulas.bivariate.copulas.Copula
多变量
- 高斯[+ info]
可从copulas.multivariate.models.CopulaModel
安装
使用pip
安装安装copulas最简单的方法是使用pip
pip install copulas
从源安装
您还可以克隆存储库并从源安装它
git clone git@github.com:DAI-Lab/Copulas.git
cd Copulas
python setup.py install
数据要求
此软件包在数据完全干净的假设下工作,这意味着:
- 没有丢失的值。
- 所有值都是数值
用法
在这个库中,您可以对单变量分布建模,并从数字数据集中创建copula。 对于这个例子,我们将使用数据文件夹中的iris数据集。
创建单变量分布
首先,我们将从数据文件夹中检索数据并创建一个单变量分布。 对于本例,我们将创建正态分布。首先在上键入以下命令 python终端。
>>>fromcopulas.univariate.gaussianimportGaussianUnivariate>>>importpandasaspd>>>data=pd.read_csv('data/iris.data.csv')>>>data.head()feature_01feature_02feature_03feature_0405.13.51.40.214.93.01.40.224.73.21.30.234.63.11.50.245.03.61.40.2
一旦我们有了数据,我们就可以把它传给gaussianunivariate类。
>>>feature1=data['feature_01']>>>gu=GaussianUnivariate()>>>gu.fit(feature1)>>>print(gu)DistributionType:GaussianVariablename:feature_01Mean:5.843333333333334Standarddeviation:0.8253012917851409
一旦你适应了这个分布,你就可以得到数据点的pdf或cdf,并且你可以取样 从发行版。
>>>gu.probability_density(5)0.2867858505472377>>>gu.cumulative_distribution(5)0.15342617720079227>>>gu.sample(1)array([6.14745446])
创建高斯copula
当您有一个数字数据表时,还可以创建一个copula并使用它从 多元分布。在这个例子中,我们将使用高斯copula。
>>>fromcopulas.multivariate.gaussianimportGaussianMultivariate>>>gc=GaussianMultivariate()>>>gc.fit(data)>>>print(gc)feature_01===============DistributionType:GaussianVariablename:feature_01Mean:5.843333333333334Standarddeviation:0.8253012917851409feature_02===============DistributionType:GaussianVariablename:feature_02Mean:3.0540000000000003Standarddeviation:0.4321465800705435feature_03===============DistributionType:GaussianVariablename:feature_03Mean:3.758666666666666Standarddeviation:1.7585291834055212feature_04===============DistributionType:GaussianVariablename:feature_04Mean:1.1986666666666668Standarddeviation:0.7606126185881716Covariancematrix:[[1.269355360.649877280.94166734...-0.57458312-0.14548004-0.43589371][0.649877280.333020680.4849735...-0.29401609-0.06772633-0.21867228][0.941667340.48497350.72674568...-0.42778472-0.04608618-0.27836438]...[-0.57458312-0.29401609-0.42778472...0.27086850.07860540.19208669][-0.14548004-0.06772633-0.04608618...0.07860540.176685620.14455133][-0.43589371-0.21867228-0.27836438...0.192086690.144551330.22229033]]
一旦你安装了copula,你就可以从中提取样本。
gc.sample(5)feature_01feature_02feature_03feature_0405.5296102.9669473.1628910.97426015.7088273.0110783.4078121.14980324.6237952.7122841.2831940.21379635.9526883.0862594.0882191.38252345.3602562.9209292.8447290.826919
历史记录
0.2.1-vine序列化
- 将序列化添加到vine copulas。
- 添加
distribution
作为高斯copula的参数。 - 改进二元copulas码结构,消除码重复。
- 修复vine copulas采样中的错误:“edge”对象没有属性“index”
- 改进代码文档。
- 改进代码样式和linting工具配置。
0.2.0-统一API
- stats方法的新api。
- 标准化输入和输出到
numpy.ndarray
。 - 将unittest覆盖率提高到90%。
- 添加方法以加载/保存copula。
- 提高高斯copula采样精度。
0.1.1-小改进
- 在子类中分隔的不同copula类型
- 广泛的单元测试
- 公共api中有更多的pythonic名称。
- 停止使用即将被否决的第三方元素。
- 添加方法以对二元copulas上的新数据进行采样。
- 新的kde单变量copula
- 用额外的演示数据改进了示例。
0.1.0-首次发布
- pypi上的第一个版本。