使用 Julia 库时遇到问题

Posted

技术标签:

【中文标题】使用 Julia 库时遇到问题【英文标题】:Having issue using Julia library 【发布时间】:2022-01-04 22:52:06 【问题描述】:

我试图在 Julia 中运行此代码来计算 knn 值,但运行时出现以下错误。

错误:LoadError:语法:表达式结束后的额外标记“ScikitLearn” 堆栈跟踪: [1] ***范围 @ e:\Fontbonne\CIS 585 独立研究\代码\knn.jl:6 在从 e:\Fontbonne\CIS 585 Independent Study\Code\knn.jl:6 开始的表达式中

错误似乎是第 6 行的库。我搜索了几个小时试图找到解决方案。任何帮助将不胜感激。 代码如下:

import Pkg
Pkg.add("ScikitLearn")
using ScikitLearn: fit!, predict, @sk_import
using DataFrames, CSV, DataStructures

from ScikitLearn.neighbors import KNeighborsClassifier
from ScikitLearn.model_selection import train_test_split
from ScikitLearn.metrics import accuracy_score

function splitTrainTest(data, at = 0.8)
    n = nrow(data)
    ind = shuffle(1:n)
    train_ind = view(ind, 1:floor(Int, at*n))
    test_ind = view(ind, (floor(Int, at*n)+1):n)
    return data[train_ind,:], data[test_ind,:]
end

# data preparation

df = open("breast-cancer.data") do file
    read(file, String)
 end
print(df)
X, y = splitTrainTest(df)


# split data into train and test
x_train, x_test, y_train, y_test = train_test_split(X, y, train_size=0.8)

# make model
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(x_train, y_train)

# check accuracy
print(accuracy_score(y_test, knn.predict(x_test)))

【问题讨论】:

这不是有效的 Julia 语法,它是 Python 语法。 【参考方案1】:

该评论应该是一个答案:你正在做

from ScikitLearn.neighbors import KNeighborsClassifier

这是 Python 语法,而不是 Julia 语法。如果您尝试在 ScikitLearn.jl 中使用 Python 模型,您可能需要 @sk_import 宏,在您的情况下:

julia> @sk_import neighbors: KNeighborsClassifier
PyObject <class 'sklearn.neighbors._classification.KNeighborsClassifier'>

【讨论】:

嗨 Nils,感谢您的回复(还有您的 BatWannaBe),输入您的代码,我现在收到此错误!错误:LoadError:语法:字符文字包含多个字符 Stacktrace:[1] ***范围 @ e:\Fontbonne\CIS 585 Independent Study\Code\knn.jl:6 在表达式中从 e:\Fontbonne\CIS 585 Independent 开始学习\代码\knn.jl:6 这里是修改后的代码@sk_import 邻居:KNeighborsClassifier PyObject 使用DataFrames、CSV、DataStructures 您是否将整个 PyObject &lt;class ... 行评论到 Julia 中?这就是你在这种情况下会得到的错误:julia&gt; 'class sklearn.neighbors._classification.KNeighborsClassifier' ERROR: syntax: character literal contains multiple characters。这是因为 Julia 中的单引号用于单个字符,双引号 " 用于字符串。您可能应该在已解决的情况下关闭这个问题并注册 Julia Discourse,因为 SO 不是逐行调试代码的正确位置。 好建议。谢谢。

以上是关于使用 Julia 库时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 makefile 链接 GLFW 库时遇到问题

使用 pip 安装私有 github 存储库时遇到问题

我在导入 PyDictionary 库时遇到问题

在计算机上构建 RAPIDXML 库时遇到问题 - 错误消息

Composer 在安装新的 laravel 库时遇到问题

解决用pip安装Python库时可能会遇到的问题