在sklearn中使用拟合进行协方差估计时出错

时间:2016-11-06 18:20:04

标签: python machine-learning scikit-learn curve-fitting

我有一个变量 xcin ,其中包含数组形式的数据。我试图使用GraphLassoCV中的fit()来拟合这些数据。

xcin中的数据:

[ 0.722    0.32202  0.70102  0.7414   0.18204  0.01132  0.171    0.723
  0.722    0.52605  0.70102  0.7414   0.29253  0.95     0.729    0.7414
  0.74999  0.7412   0.454    0.7414   0.15122  0.7414   0.65992  0.723
  0.70102  0.45209  0.521    0.7412   0.92412  0.01403  0.45203  0.723
  0.9303   0.454    0.74999  0.5232   0.6309   0.1712   0.7414   0.221
  0.70102  0.851    0.241    0.01122  0.749    0.749    0.24232  0.454
  0.80904  0.454    0.40106  0.74999  0.74999  0.17123  0.74999  0.7412
  0.271    0.7414   0.55204  0.7414   0.5259   0.7414   0.749    0.7414
  0.722    0.28133  0.9219   0.749    0.729    0.749    0.3311   0.45201
  0.9303   0.45201  0.722    0.6304   0.722    0.40106  0.45205  0.18109
  0.722    0.749    0.749    0.5259   0.40107  0.40106  0.36911  0.7414
  0.7412   0.74999  0.154    0.851    0.722    0.154    0.722    0.74999
  0.29253  0.729    0.7412   0.6309 ]

我尝试使用以下代码:

xcin =np.array([df['xcin']])/100000.0
# Learn a graphical structure from the correlations
edge_model = covariance.GraphLassoCV()
X = xcin.copy().T
X /= X.std(axis=0)
edge_model.fit(X)

但是我在edge_model.fit()行上收到错误:

ValueError: Found array with 1 feature(s) (shape=(100, 1)) while a minimum of 2 is required by GraphLassoCV.

有人可以解释如何解决这个问题。

我正在尝试按照此处所示的方法(http://scikit-learn.org/stable/auto_examples/applications/plot_stock_market.html#sphx-glr-auto-examples-applications-plot-stock-market-py)来生成类似的可视化类型。

2 个答案:

答案 0 :(得分:1)

您的数据是100x1,这意味着您有100个数字。因此,这是1个1dim数据的100个样本或100个暗淡数据的1个样本。无论哪种方式都没有协方差矩阵与这些数据的概念,您需要至少2个样本和2个维度。只有一个维度,您可以计算的唯一事物是方差。特别是在source code

中对此行为进行了评论
# Covariance does not make sense for a single feature
X = check_array(X, ensure_min_features=2, estimator=self)

答案 1 :(得分:0)

使用sklearn.preprocessing.PolynomialFeatures(2).fit_transform(X)来制作更多功能