渲染脚本文件

人工智能与机器学习

概述

人工智能(AI)和机器学习(ML)是当今科技领域最热门的话题之一。AI是指计算机系统能够执行通常需要人类智能的任务,如视觉识别、语音识别和决策制定。ML是AI的一个子集,专注于开发能够从数据中学习的算法。

关键技术

深度学习

深度学习是ML的一个分支,使用多层神经网络来处理复杂的数据模式。它在图像和语音识别方面取得了显著的成果。

强化学习

强化学习是一种通过试错来学习的ML方法。它通常用于游戏和机器人控制等领域。

应用领域

医疗保健

AI和ML在医疗诊断、药物发现和个性化治疗方面有广泛应用。

金融

在金融领域,AI用于风险管理、欺诈检测和算法交易。

挑战

数据隐私

随着AI和ML的发展,数据隐私成为一个重要问题。如何在不侵犯个人隐私的情况下利用数据是一个挑战。

伦理问题

AI系统的决策过程可能不透明,这引发了关于伦理和责任的讨论。

未来展望

AI和ML的未来充满希望,但也伴随着挑战。随着技术的进步,我们期待看到更多创新的应用和解决方案。

概述

Quarto 支持渲染特殊格式化为笔记本的脚本文件(例如 .py.jl.r)。该格式的具体语法对于 Jupyter 和 Knitr 引擎是不同的。Jupyter 引擎可以渲染 Python、Julia 和 R(使用 IRkernel)脚本,而 Knitr 引擎只渲染 R 脚本。

在本页上,您可以学习 Jupyter 和 Knitr 笔记本脚本的 语法,如何 渲染和预览 笔记本脚本,以及如何在项目中使用笔记本 脚本

语法

划分 YAML、代码和 Markdown 的语法取决于您是使用 Jupyter 还是 Knitr 引擎进行渲染。对于 Python 和 Julia 脚本,请使用 Jupyter 引擎。对于 R 脚本,您可以使用 Jupyter 或 Knitr 引擎。

Jupyter

Jupyter 的脚本渲染使用 百分比格式,该格式由 Spyder、VS Code、PyCharm 和 Jupytext 等其他工具支持。

在百分比格式中:

  • Markdown 单元格由 # %% [markdown] 分隔,可以包含单行注释(#)或多行字符串(""")的内容。

  • 代码单元格由 # %% 分隔。

还有一些 Quarto 特定的添加:

  • 脚本必须以包含 YAML 头块的 Markdown 单元格开头(包括通常的 --- YAML 分隔符)。

  • 您可以以通常的方式使用 #| 注释添加代码单元格选项。

例如,这是一个包含 Markdown 和代码单元格的 Python 脚本(您可以点击右侧的数字以获取更多详细信息):

script.py
# %% [markdown]
# ---
# title: Palmer Penguins
# author: Norah Jones
# date: 3/12/23
# ---

# %%
#| echo: false
import pandas as pd
df = pd.read_csv("palmer-penguins.csv")

# %% [markdown]
"""
## 探索数据

查看 @fig-bill-sizes 以了解不同物种的喙大小探索。
"""

# %% 
#| label: fig-bill-sizes
#| fig-cap: 不同物种的喙大小
                                          
import matplotlib.pyplot as plt           
import seaborn as sns

g = sns.FacetGrid(df, hue="species", height=3, aspect=3.5/1.5)
g.map(plt.scatter, "bill_length_mm", "bill_depth_mm").add_legend()
1
使用 Quarto 渲染的脚本必须以包含 YAML 头的 Markdown 单元格开头。
2
一个代码单元格。
3
包含多行字符串(""")的 Markdown 单元格。
4
使用 #| 注释指定的代码单元格选项。
5
您可以在单元格内包含空行——单元格继续直到遇到另一个单元格。

生成 Markdown

当文档的大部分内容由动态生成 Markdown 的代码组成时,Jupyter 脚本特别方便。您可以使用 IPython.display 模块中的函数从 Python 编写 Markdown。例如:

# %%
#| echo: false
radius = 10
from IPython.display import Markdown
Markdown(f"圆的_半径_是 **{radius}**。")

请注意,动态生成的 Markdown 仍然会被包含在标准的 Quarto 输出 div 中。如果您想移除所有 Quarto 的默认输出封装,请使用 output: asis 选项。例如:

# %%
#| echo: false
#| output: asis
radius = 10
from IPython.display import Markdown
Markdown(f"圆的_半径_是 **{radius}**。")

原始单元格

您可以在脚本中使用 # %% [raw] 单元格分隔符和 format 属性包含原始单元格(例如 HTML 或 LaTeX),例如:

# %% [raw] format="html"
"""
<iframe width="560" height="315" src="https://www.youtube.com/embed/lJIrF4YjHfQ?si=aP7PxA1Pz8IIoQUX"></iframe>
"""

Knitr

Knitr 的脚本渲染基于 knitr::spin() 功能,并使用相同的 语法规则

  • Markdown 内容包含在以特殊 #' 注释开头的行中。

  • 不以 # 开头的行是代码。代码块在出现 Markdown 内容时被分割,例如使用 #' 创建另一个代码块。

还有一些 Quarto 特定的添加: - R脚本必须以使用特殊#'注释的YAML头部块开始。

  • 您可以像往常一样使用#|注释添加代码单元选项。

例如,这里是一个包含Markdown和代码单元的R脚本(您可以点击右侧的数字获取更多详细信息):

script.R
#' ---
#' title: 帕尔默企��
#' author: 诺拉·琼斯
#' date: 3/12/23
#' format: html
#' ---

library(palmerpenguins)

#' ## 探索数据
#' 参见 @fig-bill-sizes 以探索按物种分类的喙尺寸。

#| label: fig-bill-sizes
#| fig-cap: 按物种分类的喙尺寸
#| warning: false
library(ggplot2)
ggplot(data = penguins,
       aes(x = bill_length_mm,
           y = bill_depth_mm,
           group = species)) +
  geom_point(aes(color = species,
                 shape = species),
             size = 3,
             alpha = 0.8) +
  labs(title = "企鹅喙的尺寸",
       subtitle = "在帕尔默站LTER的阿德利、下巴和帝企鹅的喙长度和深度",
       x = "喙长度 (mm)",
       y = "喙深度 (mm)",
       color = "企鹅种类",
       shape = "企鹅种类")
1
使用Quarto渲染的脚本必须以使用#'注释的YAML头部开始。
2
R代码是R脚本的主要内容,不包含任何分隔符。
3
使用#'注释作为Markdown内容的前缀。
4
代码单元选项通过#|注释指定,并适用于其下方的代码。

渲染和预览

您可以像渲染.qmd.ipynb文件一样渲染和预览笔记本脚本。例如,以下命令都是有效的:

$ quarto render script.py
$ quarto render script.jl
$ quarto render script.R

$ quarto preview script.py
$ quarto preview script.jl
$ quarto preview script.R

脚本必须以适当的语法开始,以便使用Quarto渲染YAML块。根据检测到的语法,Quarto将使用Jupyter或Knitr引擎进行渲染。

Quarto VS Code扩展也实现了对脚本渲染和预览的支持。

项目中的脚本

笔记本脚本也可以包含在项目(例如网站、博客等)中。只有当它们以适当的语法开始时,Quarto才会渲染项目中的脚本。

如果出于某种原因您需要忽略这样的脚本,您可以在_quarto.yml中创建一个明确的渲染列表,根据需要排除个别脚本,例如:

project:
  type: website
  render:
    - "*.{qmd,R,py}"
    - "!utils.py"

请注意,此技术是为完整性而记录的——在实践中,您几乎不需要这样做,因为脚本很少在没有YAML块的情况下开始,除非您专门为报告渲染编写它们。