繁体   English   中英

通过 PyCall 在 Julia 中使用 scikit-learn

[英]Using scikit-learn in Julia through PyCall

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

首先,我试图将 iris 数据读入 Julia 数据结构。

这是 Python 中的代码:

from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

iris = datasets.load_iris()

X = iris.data
y = iris.target

PyCall 文档说 Python 方法在 Julia 中被调用,例如:

my_dna[:find]("ACT")

与:

my_dna.find("ACT")

在 Python 中。

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

using PyCall
@pyimport sklearn.datasets as datasets
@pyimport sklearn.naive_bayes as NB

iris = datasets.load_iris()

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

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

我不确定这是否正确。 我尝试了iris = datasets[:load_iris]但这导致:

ERROR: LoadError: MethodError: no method matching getindex(::Module, ::Symbol)

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

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

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 的语法来访问字典中的值(结果被截断):

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

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

最后,正如@ChrisRackauckas 所建议的,已经有一个包装 scikit-learn 的 Julia 包: https : //github.com/cstjean/ScikitLearn.jl

由于有一些变化,除了 Davids 的回答之外,我还想添加PyCall (当前版本 1.91.4)的当前语法。

蟒蛇代码

from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

iris = datasets.load_iris()

X = iris.data
y = iris.target

在 Julia 中变为:

using PyCall
datasets = pyimport("sklearn.datasets")
GaussianNB = pyimport("sklearn.naive_bayes")
iris = datasets.load_iris()
X = iris["data"]
y = iris["target"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM