首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小部件在木星笔记本中运行得很好,但在Voila却什么也不做。

小部件在木星笔记本中运行得很好,但在Voila却什么也不做。
EN

Stack Overflow用户
提问于 2022-04-28 00:26:54
回答 1查看 691关注 0票数 1

我有几个按钮可以生成图像。所有的一切都在木星笔记本中完美地工作,但是当我点击Voila,点击按钮,什么都不会发生。第一个按钮工作,但代码非常类似于运行其他模型,但其他按钮不工作。在这个问题上有工作要做吗?

编辑:我的代码,它在单击按钮时不显示输出:

代码语言:javascript
复制
compare = {}
button9 = widgets.Button(description = "Report All")
output = widgets.Output()
display(button9, output)

dt = DecisionTreeClassifier(random_state=42)
dt = dt.fit(X_train, y_train)
y_pred = dt.predict(X_test)
compare['Decision Trees'] = [accuracy_score(y_test, y_pred), precision_score(y_test, y_pred), recall_score(y_test, y_pred), f1_score(y_test, y_pred)]

def report_button(b):
    compare = pd.DataFrame.from_dict(compare).T
    compare.columns = ['Accuracy', 'Precision', 'Recall', 'F1 Score']
    compare = com.sort_values('Accuracy', ascending=False)
    sns.heatmap(compare, center = True, fmt='.4f', cmap='Blues', annot=True)
    
button9.on_click(report_button)

但是,当单击此代码时,将显示输出:

代码语言:javascript
复制
button3 = widgets.Button(description="Decision Trees")
output3 = widgets.Output()
display(button3, output3)

def dt_button(b):
# Decision Trees Classifier
    dt = DecisionTreeClassifier(random_state=42)
    dt = dt.fit(X_train, y_train)
    y_pred = dt.predict(X_test)
    compare['Decision Trees'] = [accuracy_score(y_test, y_pred), precision_score(y_test, y_pred_dt), recall_score(y_test, y_pred), f1_score(y_test, y_pred)]
    CM = confusion_matrix(y_test, y_pred_dt)
    sns.heatmap(CM, center = True, fmt='', cmap='Blues', annot=True)
    plt.title('Decision Trees Confusion Matrix')
    plt.show()

button3.on_click(dt_button)

此外,我遇到了使用Voila呈现文件的MyBinder问题,但几分钟后,MyBinder链接显示了错误404。

EN

回答 1

Stack Overflow用户

发布于 2022-05-05 20:32:06

我在这里回答您的最后一个问题(关于下载按钮),因为我需要添加代码块,注释不允许这样做。

您正在使用面板在您的笔记本进行下载,因此它的工作。对于Voila,您需要坚持使用与ipywidget兼容的解决方案,正如我前面所讨论的。您不能仅仅添加另一个仪表板扩展Panel,并期望它在Voila中工作。

这里让人觉得这并不像看起来那么容易。

建议的选项:

基于https://stackoverflow.com/a/60013735/8508004,以SVM_Confusion_Matrix.jpg为例。

代码语言:javascript
复制
%%html
<a href="SVM_Confusion_Matrix.jpg" download="SVM_Confusion_Matrix.jpg">Click to Download SVM image</a>

这条线上的选项甚至可以被编码,以便在VOila中的事件之后动态显示,参见示例代码使用

不建议,但可能对类似情况有用:

基于https://github.com/jupyter-widgets/ipywidgets/issues/2471#issuecomment-580965788 (这只是将图像作为单独的打开,您必须右键单击并将图像保存为)

代码语言:javascript
复制
from IPython.display import display, FileLink

local_file = FileLink('./SVM_Confusion_Matrix.jpg', result_html_prefix="Click here to download: ")
display(local_file)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72036644

复制
相关文章

相似问题

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