繁体   English   中英

Python-生成发行版

[英]Python - Generate distribution

使用科学库在python中生成分布

目前无法尝试您的代码,但是您可以像这样限制缩放器的输入

min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
data_scaled = min_max_scaler.fit_transform([data])

1是错误的值,但仅应显示概念。 链接到文档http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html#sklearn.preprocessing.MinMaxScaler

让我们开始

import pandas as pd
from scipy.stats import norm
from sklearn import preprocessing
from sklearn import mixture
import numpy as np

df = pd.read_csv('test2.csv')

打扫干净:

df.dropna(inplace=True)

之后,您想将日志应用于所有数据。 通常需要为0(或接近0)的值插入数据。 因子alpha确定插补因子-0表示完全不插补。

alpha = 0.01
m = df.as_matrix()
m = alpha * np.ones_like(m) + (1 - alpha) * m
m = np.log(m)

缩放比例:

m = preprocessing.scale(m)

现在,由于数据很大,因此我不得不为以下内容进行一些采样。 以下是1000行的示例:

m = m[np.random.choice(range(m.shape[0]), 1000), :]

均值和协方差可以找到

mu, sigma = np.mean(m), np.cov(m)

这两个参数完全决定了分布 从这里开始,您可以做很多事情,例如, 从fit分布中生成更多值

我不知道您的编码问题的解决方案。 但是也许您可以考虑使用其他软件包。 OpenTURNS是一个python软件包,其中包含许多方便的统计信息。 您可以使用Student发行版 它还提供了一个多元版本。

您还写了一个“ t”距离,但不是您需要的那个。 您也可以尝试查看非中央学生分布。 如果是这种情况,您可能需要使用copulas来创建相关的边际。

import openturns as ot
nu = 2
mu = [0.8,0.2]
sigma = [1.2,1.0]
R = ot.CorrelationMatrix(2)
# fill R as needed
print(R)
dist = ot.Student(nu, mu, sigma, R)
#this will draw PDF (for max 2 dims.)
dist.drawPDF()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM