在 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()
我正在尝试在 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()