首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PyCall在Julia中使用scikit learn

通过PyCall在Julia中使用scikit learn
EN

Stack Overflow用户
提问于 2017-03-16 08:47:07
回答 2查看 1.3K关注 0票数 2

我正在尝试通过PyCall在Julia中使用Scikit-learn。

首先,我尝试将虹膜数据读取到Julia数据结构中。

这是Python中的代码:

代码语言:javascript
复制
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

iris = datasets.load_iris()

X = iris.data
y = iris.target

PyCall文档中提到,Python方法在Julia中的调用方式如下:

代码语言:javascript
复制
my_dna[:find]("ACT")

与此相对的是:

代码语言:javascript
复制
my_dna.find("ACT")

在Python中。

我在Julia中导入虹膜数据的尝试是:

代码语言:javascript
复制
using PyCall
@pyimport sklearn.datasets as datasets
@pyimport sklearn.naive_bayes as NB

iris = datasets.load_iris()

X = ...?
Y = ...?

irisDict{Any,Any}类型的情况下,iris = datasets.load_iris()调用有效。

我不确定这是否正确。我尝试使用iris = datasets[:load_iris],但结果如下:

代码语言:javascript
复制
ERROR: LoadError: MethodError: no method matching getindex(::Module, ::Symbol)

更进一步,我如何将iris.datairis.target读入XY

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-16 09:23:03

正如您所说,Julia告诉您iris是什么类型:

代码语言:javascript
复制
julia v0.5> @pyimport sklearn.datasets as datasets

julia v0.5> @pyimport sklearn.naive_bayes as NB

julia v0.5> iris = datasets.load_iris()
Dict{Any,Any} with 5 entries:
  "feature_names" => Any["sepal length (cm)","sepal width (cm)","petal length (…
  "target_names"  => PyObject array(['setosa', 'versicolor', 'virginica'], …
  "data"          => [5.1 3.5 1.4 0.2; 4.9 3.0 1.4 0.2; … ; 6.2 3.4 5.4 2.3; 5.…
  "target"        => [0,0,0,0,0,0,0,0,0,0  …  2,2,2,2,2,2,2,2,2,2]
  "DESCR"         => "Iris Plants Database\n====================\n\nNotes\n----…

它还会告诉你字典中的关键字是什么。因此,现在您只需使用Julia的语法来访问字典中的值(结果片段):

代码语言:javascript
复制
julia v0.5> X = iris["data"]
150×4 Array{Float64,2}:
 5.1  3.5  1.4  0.2
 4.9  3.0  1.4  0.2
 4.7  3.2  1.3  0.2

julia v0.5> Y = iris["target"]
150-element Array{Int64,1}:
 0
 0

请注意,我不知道这个问题的答案。我只是让朱莉娅来指引我该怎么做。

最后,正如@克里斯拉考卡斯建议的那样,已经有了一个封装了scikit-learn的Julia包:https://github.com/cstjean/ScikitLearn.jl

票数 2
EN

Stack Overflow用户

发布于 2020-05-10 16:28:16

由于有一些变化,我想在Davids之外添加of PyCall (当前版本为1.91.4)的当前语法。

python代码

代码语言:javascript
复制
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

iris = datasets.load_iris()

X = iris.data
y = iris.target

变成了朱莉娅:

代码语言:javascript
复制
using PyCall
datasets = pyimport("sklearn.datasets")
GaussianNB = pyimport("sklearn.naive_bayes")
iris = datasets.load_iris()
X = iris["data"]
y = iris["target"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42823365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档