我试图通过PyCall在Julia中使用Scikit-learn。
首先,我尝试将虹膜数据读入Julia数据结构。
这是Python中的代码:
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
iris = datasets.load_iris()
X = iris.data
y = iris.target
PyCall文档说在Python中调用Python方法,例如:
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
?
答案 0 :(得分:1)
正如你所说,朱莉娅告诉你user_link
是什么类型:
iris
它还会告诉您词典中的键是什么。 所以现在你只需使用Julia的语法来访问字典中的值(结果剪切):
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----…
请注意,我不知道这个问题的答案。我让朱莉娅指导我做什么。
最后,正如@ChrisRackauckas所建议的那样,已经有一个包裹scikit-learn的Julia软件包:https://github.com/cstjean/ScikitLearn.jl
答案 1 :(得分:1)
由于进行了一些更改,除了Davids的答案,我想添加PyCall
(当前的版本1.91.4)的当前语法。
python代码
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
iris = datasets.load_iris()
X = iris.data
y = iris.target
成为朱莉娅:
using PyCall
datasets = pyimport("sklearn.datasets")
GaussianNB = pyimport("sklearn.naive_bayes")
iris = datasets.load_iris()
X = iris["data"]
y = iris["target"]