[英]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()
调用适用于iris
是Dict{Any,Any}
类型的情况。
我不确定这是否正确。 我尝试了iris = datasets[:load_iris]
但这导致:
ERROR: LoadError: MethodError: no method matching getindex(::Module, ::Symbol)
更进一步,我如何将iris.data
和iris.target
读入X
和Y
?
正如您所说,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.