我正在使用Colab和Python查找最适合我的数据的分布。我是新手,因此遇到很多问题。到目前为止,这是我的代码:
from rpy2.robjects import pandas2ri
from rpy2.robjects.packages import importr
MASS = importr('MASS')
pandas2ri.activate()
df_temp = pd.DataFrame()
df_temp["Values"] = [37.50,46.79,48.30,46.04,43.40,39.25]
ri_temp = pandas2ri.py2ri(df_temp)
params_temp = MASS.fitdistr(ri_temp, 'normal')
print(params_temp)
现在,有很多事情我还不了解。请尽可能地描述一下!:)例如,我不明白为什么必须使用pandas2ri.activate()
。我的代码产生的错误是这样的:
/usr/local/lib/python3.6/dist-packages/rpy2/rinterface/__init__.py:146:
RRuntimeWarning: Error in (function (x, densfun, start, ...) :
'x' must be a non-empty numeric vector
...之间的回溯...
warnings.warn(x, RRuntimeWarning)
RRuntimeError: Error in (function (x, densfun, start, ...) :
'x' must be a non-empty numeric vector
那是什么问题?
我首先使用熊猫的原因是我将数据存储在列表中。如果我可以避免使用熊猫,那有什么选择呢?当我尝试简单地解析MASS.fitdistr(list, 'normal')
时,也会给我带来错误。另外,也许有更好的替代方法,而不是使用r为给定列表数据找到最佳拟合分布?有什么建议吗?
答案 0 :(得分:0)
这有助于:my_array = np.asarray(my_list)
。然后使用该数组作为我的输入:params_temp = MASS.fitdistr(my_array, 'normal')
。
感谢akrun。