遇到来自PyMC3的奇怪错误消息-Python 3.8.5

问题描述

我最近将IDE从Spyder更改为PyCharm,因为我觉得通过Anaconda使用的Spyder有点was肿。下面的代码或多或少在Spyder中运行良好,但是我在PyCharm中遇到问题。代码运行平稳,直到将数据框放入模型(1.1)。观察与文件有关的元数据(?),应该适合进行分析。

我看过的所有其他地方都在处理错误的文件导入格式。据我所知,事实并非如此,因为数据帧在模型之前运行良好。

我为解决Isse问题所做的事情:

  • 将样本大小从100K减少到50K,从10K减少到1K
  • 将项目目录更改为实际的
  • 我通过conda相反的点重新安装了以下依赖项:numpy,PyMC3,Theano
  • 我将虚拟机增加到100GB
  • 安装了新的GPU驱动程序进行处理
  • 我添加了预处理,认为可能与此有关

我在运行模型时不断遇到的错误是:

Traceback (most recent call last):
  File "<string>",line 1,in <module>
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py",line 116,in spawn_main
    exitcode = _main(fd,parent_sentinel)
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py",line 125,in _main
    prepare(preparation_data)
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py",line 236,in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "C:\Users\Greencom\miniconda3\lib\multiprocessing\spawn.py",line 287,in _fixup_main_from_path
    main_content = runpy.run_path(main_path,File "C:\Users\Greencom\miniconda3\lib\runpy.py",line 264,in run_path
    code,fname = _get_code_from_file(run_name,path_name)
  File "C:\Users\Greencom\miniconda3\lib\runpy.py",line 234,in _get_code_from_file
    with io.open_code(decoded_path) as f:
OSError: [Errno 22] Invalid argument: 'C:\\Users\\Greencom\\OneDrive\\Dokumenter\\Trading\\Quant\\Python Analysis\\<input>'

我看不到文件目录与实际模型有什么关系,所以我不理解计数器参数。

我该如何解决?

from scipy import stats
import arviz as az
import numpy as np
import matplotlib.pyplot as plt
import pymc3 as pm
import seaborn as sns
import pandas as pd
from theano import shared
from sklearn import preprocessing

print ( 'Running on PyMC3 v{}'.format ( pm.__version__ ) )

# data import #
EU50p1d = pd.read_excel (
    "C:\\Users\\Greencom/OneDrive\\Dokumenter\\Trading\\Quant\\Python Analysis\\CURRENCYCOM_EU501Dp.xlsx" )

# checking for 0-values #
EU50p1d.isnull ().sum () / len ( EU50p1d )

# Determining upper & lower value for model
lower = int ( EU50p1d.min () ) if int ( EU50p1d.min () ) == float ( EU50p1d.min () ) else float ( EU50p1d.min () )
upper = int ( EU50p1d.max () ) if int ( EU50p1d.max () ) == float ( EU50p1d.max () ) else float ( EU50p1d.max () )

# Gaussian Inferences #
az.plot_kde ( EU50p1d.close,rug=True )
plt.yticks ( [0],alpha=0 )


### 1.1 Model ##
with pm.Model() as model_g:
    μ = pm.Uniform('μ',lower=2375.7,upper=3858.3)
    σ = pm.HalfNormal('σ',sd=100)
    y = pm.Normal('y',mu=μ,sd=σ,observed=EU50p1d.values)
    trace_g = pm.sample(100000,tune=1000)

解决方法

我决定尝试一下您的问题,但是看来您的代码中存在几个与错误没有太大关系的问题,而如果按照以下步骤操作,则错误不会自行出现:

  • 使用main.py创建一个新的空项目,为其建立一个新的Python 3.8虚拟环境
  • 将您的代码复制到main.py中,仅删除所有未使用的导入并重新格式化
  • 使用一些任意数据创建新的test.xlsx,在代码中更改文件引用
  • 安装要求:

现在,您可以运行代码,它将很高兴地继续阅读文件。当然,代码中存在一些使它无法正常工作的问题:

  • EU50p1d.min()转换为整数将不起作用
  • Uniform()的第一个参数不应是字符串,但这就是要传递的内容

此外,我不知道您的.xlsx中包含什么数据,因此,当然可能还有其他问题不会出现。但我怀疑这些因素会导致您描述的问题。

您最有可能出现问题的原因是没有设置适当的虚拟环境。假设您使用的是最新的Python,并且仅使用一些示例路径,可以根据需要进行更改。

确保您位于命令行上的python实际执行您要为其使用虚拟环境的Python版本的位置,或者直接引用该python.exe

python -m venv "c:\my_venv\folder"
"c:\my_venv\folder\Scripts\activate"
pip install arviz
pip install pymc3
pip install xlrd

如果您使用的是PyCharm,则可以让PyCharm为您执行此操作,只需确保在创建新环境之前选择了适当的基本Python解释器即可。如果您按照说明手动进行操作,则需要在“解释器的项目设置”中告诉PyCharm使用刚刚为正在处理的项目创建的环境。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...