在 Orange Miner 的 Python 脚本小部件中实现 Q-Q 图

Implementing Q-Q plot within Orange Miner's Python script widget

我正在尝试在 Orange Miner 的 Python 脚本中创建 QQ 图。我一直收到一个错误,我假设它与 Orange 的本机数据格式有关,在尝试将单个列读入 sm.qqplot 函数时显示 "AttributeError: 'Table' object has no attribute 'shape'"。

我已经将这个设置大致用于其他地块。我想出了如何将 Orange table 转换为 Pandas 数据框来进行相关热图,如下所示:

import numpy as np
from Orange.data import Table
import Orange
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns



data = in_data.copy()

# Converts to pandas!!!
frame = Orange.data.pandas_compat.table_to_frame(data)

# Get all columns
heatmap_sub = frame.corr(method = 'pearson')

sns.heatmap(heatmap_sub,
            xticklabels=heatmap_sub.columns.values,
            yticklabels=heatmap_sub.columns.values,
            center = 0,
            annot = True)
plt.title('Pearson correlation of Binder type = Acrylic')            
plt.show()

下面是我尝试为 Q-Q 图实现的代码:

import numpy as np
from Orange.data import Table 
import statsmodels.api as sm
import pylab

data = in_data.copy()

sm.qqplot(data[:,1], line='45')
pylab.show()

我希望从代码输出的图是一个图,但我一直得到这个:

Running script:
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<string>", line 8, in <module>
  File "C:\Users\Doug\Anaconda3\lib\site-packages\statsmodels\graphics\gofplots.py", line 506, in qqplot
    fit=fit, a=a, loc=loc, scale=scale)
  File "C:\Users\Doug\Anaconda3\lib\site-packages\statsmodels\graphics\gofplots.py", line 130, in __init__
    self.nobs = data.shape[0]
AttributeError: 'Table' object has no attribute 'shape'

我确定这与 Orange table 对象有关,但我不确定如何将其 "converting" 转换为 numpy 数组或类似的东西。文档只是说数据是“一维数据数组”。 https://www.statsmodels.org/stable/generated/statsmodels.graphics.gofplots.qqplot.html

提前感谢您的帮助!

我想通了是否还有其他人遇到过这个问题。将您尝试 select 的数据用 np.array() 包装起来进行转换,如下所示:

sm.qqplot(np.array(data[:,1]), line='45')
pylab.show()