请不要将其标记为如何调用Matlab的Python和Sklearn的重复?在我看来,这个问题并没有真正回答。
由于我认为MATLAB版本R2014B,因此可以直接使用Matlab的Python。
简而我是我的设置(在用命令pyversion('PATH_TO_PYTHON')
给MATLAB提供Python路径后,运行良好。我什至可以使用dask
多处理。非常酷。例如,执行py.dask.distributed.Client
在
Python Client with properties:
asynchronous: 0
cluster: [1×1 py.distributed.deploy.local.LocalCluster]
get_futures_error: [1×1 py.method]
coroutines: [1×1 py.list]
scheduler_file: [1×1 py.NoneType]
loop: [1×1 py.tornado.platform.select.SelectIOLoop]
recreate_error_locally: [1×1 py.method]
refcount: [1×1 py.collections.defaultdict]
extensions: [1×1 py.dict]
scheduler: [1×1 py.distributed.core.rpc]
rpc: [1×1 py.distributed.core.ConnectionPool]
futures: [1×1 py.dict]
scheduler_comm: [1×1 py.distributed.batched.BatchedSend]
status: [1×7 py.str]
connection_args: [1×1 py.dict]
id: [1×43 py.str]
generation: [1×1 py.int]
io_loop: [1×1 py.tornado.platform.select.SelectIOLoop]
security: [1×1 py.distributed.security.Security]
<Client: scheduler='tcp://127.0.0.1:59795' processes=4 cores=4>
回到一个问题:我已经安装了Sklearn,可以从引用的Python安装中使用它。它的工作方式与Dask相同。但是Matlab R2017A无法找到Sklearn。
与上述py.sklearn.cluster.dbscan
给定的类似呼叫
Undefined variable "py" or class "py.sklearn.cluster.dbscan".
是否有Python专家可以解释?
我从MathWorks支持中获得了一个解决方案。
它读到了方式,也许Python环境不是完全设置的。我被要求从Anaconda Prompt
内部启动MATLAB,该CC_6具有完整的环境。从那里运行MATLAB产生了想要的结果,因此能够使用例如Sklearn。
进一步比较了从那里出现的差异,必须将更多来自Python的目录添加到系统搜索路径中。
进一步了解到,运行py.importlib.import_module(<MODULENAME>)
将显示详细信息是否可用。
在Mac上:
-
打开一个新的终端窗口;
-
类型:
which python
(找出安装python的默认版本); -
重新启动matlab;
- 类型:
pyversion('/anaconda2/bin/python')
,在命令行(显然用路径替换)。 - 现在,您可以在默认的Python安装中运行所有库。
例如:
>>py.sys.version;
>>py.sklearn.cluster.dbscan
您可以创建一个conda环境并从matlab中使用如下。请注意,您正在同时调试Python,并且对py
0进行更改,您必须每次重新加载它(以下以clear classes
开头的代码是如何做到的):
py_root_useFromMATLAB = fileparts(C:anaconda_3envsuseFromMATLAB_conda.exe);
ENV = getenv('PATH');
ENV = strsplit(ENV, ';');
items_to_add_to_path = {
fullfile(py_root_useFromMATLAB, 'Library', 'mingw-w64', 'bin')
fullfile(py_root_useFromMATLAB, 'Library', 'usr', 'bin')
fullfile(py_root_useFromMATLAB, 'Library', 'bin')
fullfile(py_root_useFromMATLAB, 'Scripts')
};
ENV = [items_to_add_to_path(:); ENV(:)];
ENV = unique(ENV, 'stable');
ENV = strjoin(ENV, ';');
setenv('PATH', ENV);
clear classes
module_to_load = 'some_awesome_python_module';
python_module_to_use = py.importlib.import_module(module_to_load);
py.importlib.reload(python_module_to_use);
现在您可以使用它:
output = py.some_awesome_python_module.some_awesome_python_function(input)