├── .gitignore
├── 000.Rproj
├── LICENSE
├── README.md
├── _language.yml
├── _quarto.yml
├── datasets
├── dca.r
├── hotels_df.rdata
├── pimadiabetes.rdata
├── tune_res.rdata
├── 例16-02.sav
├── 例16-03.sav
├── 例16-04.csv
└── 例16-05.csv
├── docs
├── 9999-appendix.html
├── KNN.html
├── KNN_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-14-1.png
│ │ ├── unnamed-chunk-20-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ └── unnamed-chunk-9-1.png
├── catboost.html
├── catboost_files
│ ├── figure-html
│ │ ├── unnamed-chunk-13-1.png
│ │ ├── unnamed-chunk-17-1.png
│ │ ├── unnamed-chunk-18-1.png
│ │ ├── unnamed-chunk-19-1.png
│ │ ├── unnamed-chunk-20-1.png
│ │ └── unnamed-chunk-22-1.png
│ └── figure-pdf
│ │ ├── unnamed-chunk-13-1.pdf
│ │ ├── unnamed-chunk-17-1.pdf
│ │ ├── unnamed-chunk-18-1.pdf
│ │ ├── unnamed-chunk-19-1.pdf
│ │ ├── unnamed-chunk-20-1.pdf
│ │ └── unnamed-chunk-22-1.pdf
├── figs
│ ├── 46346465dfgdfgd.jpg
│ ├── 6325461.png
│ ├── PixPin_2024-04-22_15-54-53.png
│ ├── PixPin_2024-04-22_16-05-22.png
│ ├── PixPin_2024-04-26_20-06-48.png
│ ├── PixPin_2024-04-27_13-20-37.png
│ ├── PixPin_2024-04-27_19-11-28.png
│ ├── PixPin_2024-04-27_19-52-48.png
│ ├── PixPin_2024-04-27_20-19-25.png
│ ├── PixPin_2024-04-28_10-41-44.png
│ ├── PixPin_2024-04-28_12-44-41.png
│ ├── PixPin_2024-04-28_12-56-47.png
│ ├── PixPin_2024-04-30_20-18-13.png
│ ├── PixPin_2024-04-30_20-19-09.png
│ ├── PixPin_2024-05-05_19-41-50.png
│ ├── Snipaste_2023-04-01_14-12-58.png
│ ├── Snipaste_2023-04-05_16-05-01.png
│ ├── Snipaste_2023-04-05_16-07-01.png
│ ├── Snipaste_2023-06-12_15-40-00.png
│ └── 模型复杂度和泛化误差.png
├── gbm.html
├── gbm_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-13-1.png
│ │ ├── unnamed-chunk-14-1.png
│ │ ├── unnamed-chunk-15-1.png
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-18-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ ├── unnamed-chunk-7-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ └── unnamed-chunk-9-1.png
├── glmnet.html
├── glmnet_files
│ └── figure-html
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-18-1.png
│ │ ├── unnamed-chunk-29-1.png
│ │ ├── unnamed-chunk-31-1.png
│ │ ├── unnamed-chunk-45-1.png
│ │ ├── unnamed-chunk-47-1.png
│ │ ├── unnamed-chunk-49-1.png
│ │ ├── unnamed-chunk-5-1.png
│ │ ├── unnamed-chunk-50-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ └── unnamed-chunk-7-1.png
├── index.html
├── lightGBM.html
├── robots.txt
├── search.json
├── site_libs
│ ├── DiagrammeR-styles-0.2
│ │ └── styles.css
│ ├── bootstrap
│ │ ├── bootstrap-icons.css
│ │ ├── bootstrap-icons.woff
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.js
│ ├── clipboard
│ │ └── clipboard.min.js
│ ├── grViz-binding-1.0.10
│ │ └── grViz.js
│ ├── htmlwidgets-1.6.4
│ │ └── htmlwidgets.js
│ ├── quarto-html
│ │ ├── anchor.min.js
│ │ ├── popper.min.js
│ │ ├── quarto-syntax-highlighting.css
│ │ ├── quarto.js
│ │ ├── tippy.css
│ │ └── tippy.umd.min.js
│ ├── quarto-nav
│ │ ├── headroom.min.js
│ │ └── quarto-nav.js
│ ├── quarto-search
│ │ ├── autocomplete.umd.js
│ │ ├── fuse.min.js
│ │ └── quarto-search.js
│ └── viz-1.8.2
│ │ └── viz.js
├── sitemap.xml
├── xgboost.html
├── 主成分分析.html
├── 主成分分析_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ └── unnamed-chunk-9-1.png
├── 主成分分析可视化.html
├── 主成分分析可视化_files
│ └── figure-html
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-13-1.png
│ │ ├── unnamed-chunk-14-1.png
│ │ ├── unnamed-chunk-17-1.png
│ │ ├── unnamed-chunk-18-1.png
│ │ ├── unnamed-chunk-19-1.png
│ │ ├── unnamed-chunk-20-1.png
│ │ ├── unnamed-chunk-21-1.png
│ │ ├── unnamed-chunk-22-1.png
│ │ ├── unnamed-chunk-23-1.png
│ │ ├── unnamed-chunk-24-1.png
│ │ ├── unnamed-chunk-25-1.png
│ │ ├── unnamed-chunk-26-1.png
│ │ ├── unnamed-chunk-3-1.png
│ │ ├── unnamed-chunk-30-1.png
│ │ ├── unnamed-chunk-31-1.png
│ │ ├── unnamed-chunk-5-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ ├── unnamed-chunk-7-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ └── unnamed-chunk-9-1.png
├── 决策树.html
├── 决策树_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-19-1.png
│ │ ├── unnamed-chunk-4-1.png
│ │ ├── unnamed-chunk-5-1.png
│ │ └── unnamed-chunk-6-1.png
├── 决策树可视化.html
├── 决策树可视化_files
│ └── figure-html
│ │ ├── unnamed-chunk-2-1.png
│ │ ├── unnamed-chunk-3-1.png
│ │ ├── unnamed-chunk-4-1.png
│ │ └── unnamed-chunk-5-1.png
├── 变量选择.html
├── 多元线性回归.html
├── 多元线性回归_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-13-1.png
│ │ ├── unnamed-chunk-14-1.png
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-2-1.png
│ │ ├── unnamed-chunk-21-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ ├── unnamed-chunk-7-1.png
│ │ └── unnamed-chunk-9-1.png
├── 支持向量机.html
├── 支持向量机_files
│ └── figure-html
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ ├── unnamed-chunk-8-2.png
│ │ ├── unnamed-chunk-8-3.png
│ │ └── unnamed-chunk-8-4.png
├── 支持向量机核函数比较.html
├── 支持向量机核函数比较_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ └── unnamed-chunk-12-1.png
├── 数据准备.html
├── 数据准备_files
│ └── figure-html
│ │ ├── unnamed-chunk-2-1.png
│ │ ├── unnamed-chunk-3-1.png
│ │ ├── unnamed-chunk-4-1.png
│ │ └── unnamed-chunk-5-1.png
├── 数据划分.html
├── 数据预处理.html
├── 数据预处理_files
│ ├── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-15-1.png
│ │ ├── unnamed-chunk-6-1.png
│ │ └── unnamed-chunk-9-1.png
│ └── figure-pdf
│ │ ├── unnamed-chunk-10-1.pdf
│ │ ├── unnamed-chunk-11-1.pdf
│ │ ├── unnamed-chunk-15-1.pdf
│ │ ├── unnamed-chunk-6-1.pdf
│ │ └── unnamed-chunk-9-1.pdf
├── 机器学习简介.html
├── 模型评价.html
├── 聚类分析.html
├── 聚类分析_files
│ └── figure-html
│ │ ├── unnamed-chunk-10-1.png
│ │ ├── unnamed-chunk-11-1.png
│ │ ├── unnamed-chunk-12-1.png
│ │ ├── unnamed-chunk-13-1.png
│ │ ├── unnamed-chunk-14-1.png
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-16-2.png
│ │ ├── unnamed-chunk-17-1.png
│ │ ├── unnamed-chunk-18-1.png
│ │ ├── unnamed-chunk-20-1.png
│ │ ├── unnamed-chunk-21-1.png
│ │ ├── unnamed-chunk-24-1.png
│ │ ├── unnamed-chunk-25-1.png
│ │ ├── unnamed-chunk-4-1.png
│ │ ├── unnamed-chunk-5-1.png
│ │ ├── unnamed-chunk-5-2.png
│ │ ├── unnamed-chunk-6-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ └── unnamed-chunk-9-1.png
├── 超参数调优简介.html
├── 逻辑回归.html
├── 随机森林.html
├── 随机森林_files
│ └── figure-html
│ │ ├── unnamed-chunk-15-1.png
│ │ ├── unnamed-chunk-16-1.png
│ │ ├── unnamed-chunk-17-1.png
│ │ ├── unnamed-chunk-4-1.png
│ │ ├── unnamed-chunk-7-1.png
│ │ ├── unnamed-chunk-8-1.png
│ │ └── unnamed-chunk-9-1.png
└── 集成算法类型.html
├── figs
├── 46346465dfgdfgd.jpg
├── 6325461.png
├── PixPin_2024-04-22_15-54-53.png
├── PixPin_2024-04-22_16-05-22.png
├── PixPin_2024-04-22_16-12-43.png
├── PixPin_2024-04-26_19-58-41.png
├── PixPin_2024-04-26_20-06-48.png
├── PixPin_2024-04-27_19-11-28.png
├── PixPin_2024-04-27_19-52-48.png
├── PixPin_2024-04-27_20-19-25.png
├── PixPin_2024-04-27_20-20-23.png
├── PixPin_2024-04-28_10-41-44.png
├── PixPin_2024-04-28_12-44-41.png
├── PixPin_2024-04-28_12-56-47.png
├── PixPin_2024-04-30_20-18-13.png
├── PixPin_2024-04-30_20-19-09.png
├── PixPin_2024-05-05_19-41-50.png
├── PixPin_2024-05-17_15-53-34.png
├── Snipaste_2023-04-01_14-12-58.png
├── Snipaste_2023-04-05_16-05-01.png
├── Snipaste_2023-04-05_16-07-01.png
├── Snipaste_2023-06-12_15-40-00.png
└── 模型复杂度和泛化误差.png
└── preamble.tex
/.gitignore:
--------------------------------------------------------------------------------
1 | .Rproj.user
2 | .Rhistory
3 | .RData
4 | .Ruserdata
5 | .quarto
6 | *.qmd
7 | xgboost_files/
8 | catboost_info/
9 | _book/
10 | .quarto/
11 |
12 | /.quarto/
13 |
--------------------------------------------------------------------------------
/000.Rproj:
--------------------------------------------------------------------------------
1 | Version: 1.0
2 |
3 | RestoreWorkspace: Default
4 | SaveWorkspace: Default
5 | AlwaysSaveHistory: Default
6 |
7 | EnableCodeIndexing: Yes
8 | UseSpacesForTab: Yes
9 | NumSpacesForTab: 2
10 | Encoding: UTF-8
11 |
12 | RnwWeave: Sweave
13 | LaTeX: XeLaTeX
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 ayue
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > 面向医学生/医生的实用机器学习教程,不适合计算机相关专业人士。
2 |
3 | ## 为什么写这个合集?
4 |
5 | 写这个合集的目的是为了帮助,从未接触过或不太了解机器学习的医学生/医生,快速了解机器学习,以及快速上手机器学习实战。
6 |
7 | 各种机器学习方法在医学领域中的使用越来越频繁,在各种医学相关的文献期刊中也是越来越常见,但是机器学习对于没有任何计算机背景的医学生/医生来说并不是那么友好。
8 |
9 | - 首先,复杂的概念以及冗长的公式推导让人望而却步;
10 | - 其次,目前市面上关于机器学习的书籍或视频资料等大多都是面向计算机相关人员的,对于没有任何计算机背景的人来说学习门槛偏高;
11 | - 第三,网络中的资料知识点太过杂乱,没有系统性的整理,质量也良莠不齐,很多代码难以复现,或者使用的方法太过老旧等,东拼西凑的学习体验较差。
12 |
13 | 所以我基于自己的学习经验以及看过的一些资料,整理了这本R语言机器学习相关的合集。相比于其他资料,个人认为本合集的优势很明显:
14 |
15 | - 本人是外科医生,也是从零开始学的这些东西,我对于各位医学生/医生学习过程中的痛点难点更加熟悉;
16 | - 系统整理、有头有尾、从易到难、循序渐进,重点展示大家迫切需要的内容;
17 | - 对于一些原理和概念,使用通俗易懂的语言进行解释,没有任何公式推导的内容。
18 |
19 | ## 合集介绍
20 |
21 | 本合集主要介绍如何使用R语言实现常见的机器学习方法,具体来说,本合集介绍了以下13种方法(后续可能会增加):
22 |
23 | - 聚类分析
24 | - 主成分分析
25 | - 线性回归
26 | - 逻辑回归
27 | - lasso回归
28 | - KNN
29 | - 支持向量机
30 | - 决策树
31 | - 随机森林
32 | - GBM
33 | - XGBoost
34 | - lightGBM
35 | - CatBoost
36 |
37 | 对于每种方法,都会首先介绍它的**原理**,这部分内容使用简洁易懂的语言向大家介绍一些算法的基本概念,不包含任何数学公式,方便大家理解。
38 |
39 | 然后是代码实战部分,这部分内容主要包括**模型建立、参数解释、结果解读、模型评价、超参数调优**等内容,力求详细、方便理解。由于临床医学中常见的任务都是分类任务,所以示例代码基本都是分类任务的演示。
40 |
41 | 对于生存分析,本合集并未涉及,因为生存任务和传统的分类/回归任务差别很大,大到可能需要单独开一个合集介绍,相关内容可参考:[R语言生存分析](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzOTQzNzU0NA==&action=getalbum&album_id=3157207532101337088&uin=&key=&devicetype=Windows+11+x64&version=63090a13&lang=zh_CN&ascene=0&session_us=gh_28ea67f3b544)。
42 |
43 | 模型评价部分重点展示了**混淆矩阵、敏感度/特异度、ROC曲线、PR曲线、校准曲线、决策曲线**等。
44 |
45 | 代码实战部分我并没有使用目前R语言机器学习领域很火爆的两个R包:`tidymodels`和`mlr3`,而是对于每种算法都使用了其对应的经典R包,比如:lasso回归部分使用了`glmnet`包、支持向量机部分使用了`e1071`包、随机森林部分使用了`randomForest`包。因为这两个R包本身还是基于这些经典的R包的,`tidymodels`和`mlr3`本身没有实现任何算法,它们只是对这些经典的R包进行了深度整合。所以,从这些R包开始学习方便为以后的进一步学习打下基础,如果你没接触过这些经典R包的话,有一些小问题你可能很难发现。
46 |
47 | [tidymodels](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzOTQzNzU0NA==&action=getalbum&album_id=2471700721298735105&scene=173&subscene=&sessionid=svr_a3acb4420ea&enterid=1714226193&from_msgid=2247500711&from_itemidx=1&count=3&nolastread=1#wechat_redirect)和[mlr3](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzOTQzNzU0NA==&action=getalbum&album_id=2267367378386731015&scene=173&subscene=&sessionid=svr_f66a5e6830a&enterid=1714226166&from_msgid=2247500669&from_itemidx=1&count=3&nolastread=1#wechat_redirect)的使用教程我在公众号中一直在更新,不久后也会整理成合集,还有一个[模型解释](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzOTQzNzU0NA==&action=getalbum&album_id=3302133732023369734&scene=173&subscene=&sessionid=svr_a8bea36737a&enterid=1714226258&from_msgid=2247501031&from_itemidx=1&count=3&nolastread=1#wechat_redirect)的合集也会整理出来。有了这些经典R包的基础之后,你会发现再学习`tidymodels`和`mlr3`会更加容易上手,毕竟就只需要学习下这两个R包的使用逻辑和语法就好了。
48 |
49 | 除此之外,本合集还介绍了一些机器学习中的其他重要问题,主要包括:
50 |
51 | - 数据预处理
52 | - 数据划分
53 | - 模型评价
54 | - 超参数调优
55 | - 变量选择
56 |
57 | 本合集介绍的内容非常基础,只是机器学习相关内容中的冰山一角,比如,对于模型的超参数调优,我只是演示了如何使用R包实现,虽然方法是对的,但是调参的方向并不一定对,或者说,有可能你一通操作下来,模型的表现还不如默认参数好。因为每种模型的调参方向都是不一样的,使用的方法也会有差别,这个需要专业知识,也需要相关的经验。更多专业的知识,需要大家自己阅读专业的书籍。
58 |
59 | 由于合集内容大部分都是代码实操,所以需要你对R语言有一些基础的理解,不然你可能会一直被一些基础的报错所困扰。每篇内容可能需要不同的R包,这里并没有展示安装这些R包的过程,大家需要自己安装。
60 |
61 | 限于个人专业、水平、时间等问题,难免有很多不足之处,欢迎大家以各种方式(微信、QQ、公众号留言等)交流、建议。但是请不要抬杠,也请不要成为喷子、伸手党。
62 |
63 | > 本合集是基于我公众号发表的[机器学习相关推文](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzOTQzNzU0NA==&action=getalbum&album_id=2267367379124928515&scene=126&sessionid=523916997&uin=&key=&devicetype=Windows+11+x64&version=63090819&lang=zh_CN&ascene=0)修改而来,为了更加适合机器学习初学者阅读以及方便理解,进行了**大量修改**,甚至可以说是从头重写!和我的其他合集一样,本合集也会保持长期更新。
64 |
65 | ## 作者介绍
66 |
67 | - 阿越,外科医生,R语言爱好者,长期分享R语言和医学统计学、临床预测模型、生信数据挖掘、R语言机器学习等知识。
68 | - 哔哩哔哩:[阿越就是我](https://space.bilibili.com/42460432)
69 | - Github:[ayueme](https://github.com/ayueme)
70 | - 公众号:**医学和生信笔记**,欢迎扫码关注:
71 |
72 | 
--------------------------------------------------------------------------------
/_language.yml:
--------------------------------------------------------------------------------
1 | toc-title-document: "目录"
2 | toc-title-website: "该页面内容"
3 |
4 | related-formats-title: "其他格式"
5 | related-notebooks-title: "笔记本"
6 | source-notebooks-prefix: "资源"
7 | other-links-title: "其他链接"
8 | code-links-title: "代码链接"
9 | launch-dev-container-title: "启动 Dev Container"
10 | launch-binder-title: "启动 Binder"
11 |
12 | article-notebook-label: "文章笔记本"
13 | notebook-preview-download: "下载笔记本"
14 | notebook-preview-download-src: "下载源代码"
15 | notebook-preview-back: "返回文章"
16 | manuscript-meca-bundle: "MECA存档"
17 |
18 | section-title-abstract: "摘要"
19 | section-title-appendices: "附录"
20 | section-title-footnotes: "脚注"
21 | section-title-references: "参考"
22 | section-title-reuse: "重用"
23 | section-title-copyright: "版权"
24 | section-title-citation: "引文"
25 |
26 | appendix-attribution-bibtex: "BibTeX"
27 | appendix-attribution-cite-as: "请引用这项工作:"
28 |
29 | title-block-author-single: "作者"
30 | title-block-author-plural: "作者"
31 | title-block-affiliation-single: "联系"
32 | title-block-affiliation-plural: "隶属关系"
33 | title-block-published: "发布日期"
34 | title-block-modified: "修改的"
35 | title-block-keywords: "关键词"
36 |
37 | callout-tip-title: "提示"
38 | callout-note-title: "注释"
39 | callout-warning-title: "警告"
40 | callout-important-title: "重要"
41 | callout-caution-title: "注意"
42 |
43 | code-summary: "代码"
44 |
45 | code-line: "行"
46 | code-lines: "行"
47 |
48 | code-tools-menu-caption: "代码"
49 | code-tools-show-all-code: "显示所有代码"
50 | code-tools-hide-all-code: "隐藏所有代码"
51 | code-tools-view-source: "查看源代码"
52 | code-tools-source-code: "源代码"
53 |
54 | copy-button-tooltip: "复制到剪贴板"
55 | copy-button-tooltip-success: "已复制"
56 |
57 | repo-action-links-edit: "编辑该页面"
58 | repo-action-links-source: "查看代码"
59 | repo-action-links-issue: "报告问题"
60 |
61 | back-to-top: "回到顶部"
62 |
63 | search-no-results-text: "没有结果"
64 | search-matching-documents-text: "匹配的文档"
65 | search-copy-link-title: "复制搜索链接"
66 | search-hide-matches-text: "隐藏其它匹配结果"
67 | search-more-match-text: "更多匹配结果"
68 | search-more-matches-text: "更多匹配结果"
69 | search-clear-button-title: "清除"
70 | search-detached-cancel-button-title: "取消"
71 | search-submit-button-title: "提交"
72 | search-label: "搜索"
73 |
74 | toggle-section: "切換部分"
75 | toggle-sidebar: "切换侧边栏导航"
76 | toggle-dark-mode: "切换深色模式"
77 | toggle-reader-mode: "切换阅读器模式"
78 | toggle-navigation: "切换导航"
79 |
80 | crossref-fig-title: "图"
81 | crossref-tbl-title: "表格"
82 | crossref-lst-title: "列表"
83 | crossref-thm-title: "定理"
84 | crossref-lem-title: "引理"
85 | crossref-cor-title: "推论"
86 | crossref-prp-title: "命题"
87 | crossref-cnj-title: "猜想"
88 | crossref-def-title: "定义"
89 | crossref-exm-title: "例子"
90 | crossref-exr-title: "练习"
91 | crossref-ch-prefix: "章节"
92 | crossref-apx-prefix: "附录"
93 | crossref-sec-prefix: "章节"
94 | crossref-eq-prefix: "方程式"
95 | crossref-lof-title: "插图目录"
96 | crossref-lot-title: "列表目录"
97 | crossref-lol-title: "列表目录"
98 |
99 | environment-proof-title: "论证"
100 | environment-remark-title: "评语"
101 | environment-solution-title: "答案"
102 |
103 | listing-page-order-by: "排序方式"
104 | listing-page-order-by-default: "缺省"
105 | listing-page-order-by-date-asc: "日期升序"
106 | listing-page-order-by-date-desc: "日期降序"
107 | listing-page-order-by-number-desc: "降序"
108 | listing-page-order-by-number-asc: "升序"
109 | listing-page-field-date: "日期"
110 | listing-page-field-title: "标题"
111 | listing-page-field-description: "描述"
112 | listing-page-field-author: "作者"
113 | listing-page-field-filename: "文件名"
114 | listing-page-field-filemodified: "修改时间"
115 | listing-page-field-subtitle: "副标题"
116 | listing-page-field-readingtime: "阅读时间"
117 | listing-page-field-categories: "类别"
118 | listing-page-minutes-compact: "{0} 分钟"
119 | listing-page-category-all: "全部"
120 | listing-page-no-matches: "无匹配项"
121 | listing-page-field-wordcount: "单词统计"
122 | listing-page-words: "{0}个单词"
--------------------------------------------------------------------------------
/_quarto.yml:
--------------------------------------------------------------------------------
1 | project:
2 | type: book
3 | output-dir: _book
4 |
5 | knitr:
6 | opts_chunk:
7 | collapse: true
8 | message: false
9 | warning: false
10 |
11 | book:
12 | title: "R语言实战机器学习"
13 | author: "阿越就是我"
14 | date: last-modified
15 | date-format: iso
16 |
17 | page-footer:
18 | left: |
19 | R语言实战机器学习 was written by 阿越.
20 | right: |
21 | 本书由 Quarto 强力驱动.
22 | #cover-image: cover.png
23 | #favicon: cover.png
24 | site-url: https://ayueme.github.io/R_machine_learning/
25 | repo-url: https://github.com/ayueme/R_machine_learning
26 | repo-branch: main
27 | repo-actions: [edit, issue]
28 |
29 | chapters:
30 | - index.qmd
31 |
32 | - part: "基础知识"
33 | chapters:
34 | - 机器学习简介.qmd
35 | - 数据预处理.qmd
36 | - 数据划分.qmd
37 | - 模型评价.qmd
38 | - 超参数调优简介.qmd
39 | - 变量选择.qmd
40 |
41 | - part: "代码实战"
42 | chapters:
43 | - 数据准备.qmd
44 | - 聚类分析.qmd
45 | - 主成分分析.qmd
46 | - 主成分分析可视化.qmd
47 | - 多元线性回归.qmd
48 | - 逻辑回归.qmd
49 | - glmnet.qmd
50 | - KNN.qmd
51 | - 支持向量机.qmd
52 | - 支持向量机核函数比较.qmd
53 | - 决策树.qmd
54 | - 决策树可视化.qmd
55 | - 集成算法类型.qmd
56 | - 随机森林.qmd
57 | - gbm.qmd
58 | - xgboost.qmd
59 | - lightGBM.qmd
60 | - catboost.qmd
61 |
62 | appendices:
63 | - 9999-appendix.qmd
64 |
65 | format:
66 | html:
67 | theme: cosmo
68 | code-copy: true
69 | pdf:
70 | documentclass: scrbook
71 | toc: true
72 | toc-depth: 2
73 | toc-title: 目录
74 | number-sections: true
75 | number-depth: 3
76 | linkcolor: highlight
77 | colorlinks: true
78 | highlight-style: github
79 | code-block-bg: light
80 | code-block-border-left: false
81 | fontsize: 12pt
82 | mainfont: "SimSun"
83 | monofont: "Noto Sans SC"
84 | sansfont: "Noto Sans SC"
85 | indent: TRUE
86 | #设置4个边距
87 | geometry:
88 | - top=2.5cm
89 | - bottom=2.5cm
90 | - left=2.0cm
91 | - right=2.0cm
92 | - heightrounded
93 | - ignorehead
94 | - ignorefoot
95 | include-in-header: preamble.tex
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/datasets/dca.r:
--------------------------------------------------------------------------------
1 | dca <- function(data, outcome, predictors, xstart=0.01, xstop=0.99, xby=0.01,
2 | ymin=-0.05, probability=NULL, harm=NULL,graph=TRUE, intervention=FALSE,
3 | interventionper=100, smooth=FALSE,loess.span=0.10) {
4 |
5 | # LOADING REQUIRED LIBRARIES
6 | require(stats)
7 |
8 | # data MUST BE A DATA FRAME
9 | if (class(data)!="data.frame") {
10 | stop("Input data must be class data.frame")
11 | }
12 |
13 | #ONLY KEEPING COMPLETE CASES
14 | data=data[complete.cases(data[append(outcome,predictors)]),append(outcome,predictors)]
15 |
16 | # outcome MUST BE CODED AS 0 AND 1
17 | if (max(data[[outcome]])>1 | min(data[[outcome]])<0) {
18 | stop("outcome cannot be less than 0 or greater than 1")
19 | }
20 | # xstart IS BETWEEN 0 AND 1
21 | if (xstart<0 | xstart>1) {
22 | stop("xstart must lie between 0 and 1")
23 | }
24 |
25 | # xstop IS BETWEEN 0 AND 1
26 | if (xstop<0 | xstop>1) {
27 | stop("xstop must lie between 0 and 1")
28 | }
29 |
30 | # xby IS BETWEEN 0 AND 1
31 | if (xby<=0 | xby>=1) {
32 | stop("xby must lie between 0 and 1")
33 | }
34 |
35 | # xstart IS BEFORE xstop
36 | if (xstart>=xstop) {
37 | stop("xstop must be larger than xstart")
38 | }
39 |
40 | #STORING THE NUMBER OF PREDICTORS SPECIFIED
41 | pred.n=length(predictors)
42 |
43 | #IF probability SPECIFIED ENSURING THAT EACH PREDICTOR IS INDICATED AS A YES OR NO
44 | if (length(probability)>0 & pred.n!=length(probability)) {
45 | stop("Number of probabilities specified must be the same as the number of predictors being checked.")
46 | }
47 |
48 | #IF harm SPECIFIED ENSURING THAT EACH PREDICTOR HAS A SPECIFIED HARM
49 | if (length(harm)>0 & pred.n!=length(harm)) {
50 | stop("Number of harms specified must be the same as the number of predictors being checked.")
51 | }
52 |
53 | #INITIALIZING DEFAULT VALUES FOR PROBABILITES AND HARMS IF NOT SPECIFIED
54 | if (length(harm)==0) {
55 | harm=rep(0,pred.n)
56 | }
57 | if (length(probability)==0) {
58 | probability=rep(TRUE,pred.n)
59 | }
60 |
61 |
62 | #CHECKING THAT EACH probability ELEMENT IS EQUAL TO YES OR NO,
63 | #AND CHECKING THAT PROBABILITIES ARE BETWEEN 0 and 1
64 | #IF NOT A PROB THEN CONVERTING WITH A LOGISTIC REGRESSION
65 | for(m in 1:pred.n) {
66 | if (probability[m]!=TRUE & probability[m]!=FALSE) {
67 | stop("Each element of probability vector must be TRUE or FALSE")
68 | }
69 | if (probability[m]==TRUE & (max(data[predictors[m]])>1 | min(data[predictors[m]])<0)) {
70 | stop(paste(predictors[m],"must be between 0 and 1 OR sepcified as a non-probability in the probability option",sep=" "))
71 | }
72 | if(probability[m]==FALSE) {
73 | model=NULL
74 | pred=NULL
75 | model=glm(data.matrix(data[outcome]) ~ data.matrix(data[predictors[m]]), family=binomial("logit"))
76 | pred=data.frame(model$fitted.values)
77 | pred=data.frame(pred)
78 | names(pred)=predictors[m]
79 | data=cbind(data[names(data)!=predictors[m]],pred)
80 | print(paste(predictors[m],"converted to a probability with logistic regression. Due to linearity assumption, miscalibration may occur.",sep=" "))
81 | }
82 | }
83 |
84 | # THE PREDICTOR NAMES CANNOT BE EQUAL TO all OR none.
85 | if (length(predictors[predictors=="all" | predictors=="none"])) {
86 | stop("Prediction names cannot be equal to all or none.")
87 | }
88 |
89 | ######### CALCULATING NET BENEFIT #########
90 | N=dim(data)[1]
91 | event.rate=colMeans(data[outcome])
92 |
93 | # CREATING DATAFRAME THAT IS ONE LINE PER THRESHOLD PER all AND none STRATEGY
94 | nb=data.frame(seq(from=xstart, to=xstop, by=xby))
95 | names(nb)="threshold"
96 | interv=nb
97 |
98 | nb["all"]=event.rate - (1-event.rate)*nb$threshold/(1-nb$threshold)
99 | nb["none"]=0
100 |
101 | # CYCLING THROUGH EACH PREDICTOR AND CALCULATING NET BENEFIT
102 | for(m in 1:pred.n){
103 | for(t in 1:length(nb$threshold)){
104 | # COUNTING TRUE POSITIVES AT EACH THRESHOLD
105 | tp=mean(data[data[[predictors[m]]]>=nb$threshold[t],outcome])*sum(data[[predictors[m]]]>=nb$threshold[t])
106 | # COUNTING FALSE POSITIVES AT EACH THRESHOLD
107 | fp=(1-mean(data[data[[predictors[m]]]>=nb$threshold[t],outcome]))*sum(data[[predictors[m]]]>=nb$threshold[t])
108 | #setting TP and FP to 0 if no observations meet threshold prob.
109 | if (sum(data[[predictors[m]]]>=nb$threshold[t])==0) {
110 | tp=0
111 | fp=0
112 | }
113 |
114 | # CALCULATING NET BENEFIT
115 | nb[t,predictors[m]]=tp/N - fp/N*(nb$threshold[t]/(1-nb$threshold[t])) - harm[m]
116 | }
117 | interv[predictors[m]]=(nb[predictors[m]] - nb["all"])*interventionper/(interv$threshold/(1-interv$threshold))
118 | }
119 |
120 | # CYCLING THROUGH EACH PREDICTOR AND SMOOTH NET BENEFIT AND INTERVENTIONS AVOIDED
121 | for(m in 1:pred.n) {
122 | if (smooth==TRUE){
123 | lws=loess(data.matrix(nb[!is.na(nb[[predictors[m]]]),predictors[m]]) ~ data.matrix(nb[!is.na(nb[[predictors[m]]]),"threshold"]),span=loess.span)
124 | nb[!is.na(nb[[predictors[m]]]),paste(predictors[m],"_sm",sep="")]=lws$fitted
125 |
126 | lws=loess(data.matrix(interv[!is.na(nb[[predictors[m]]]),predictors[m]]) ~ data.matrix(interv[!is.na(nb[[predictors[m]]]),"threshold"]),span=loess.span)
127 | interv[!is.na(nb[[predictors[m]]]),paste(predictors[m],"_sm",sep="")]=lws$fitted
128 | }
129 | }
130 |
131 | # PLOTTING GRAPH IF REQUESTED
132 | if (graph==TRUE) {
133 | require(graphics)
134 |
135 | # PLOTTING INTERVENTIONS AVOIDED IF REQUESTED
136 | if(intervention==TRUE) {
137 | # initialize the legend label, color, and width using the standard specs of the none and all lines
138 | legendlabel <- NULL
139 | legendcolor <- NULL
140 | legendwidth <- NULL
141 | legendpattern <- NULL
142 |
143 | #getting maximum number of avoided interventions
144 | ymax=max(interv[predictors],na.rm = TRUE)
145 |
146 | #INITIALIZING EMPTY PLOT WITH LABELS
147 | plot(x=nb$threshold, y=nb$all, type="n" ,xlim=c(xstart, xstop), ylim=c(ymin, ymax), xlab="Threshold probability", ylab=paste("Net reduction in interventions per",interventionper,"patients"))
148 |
149 | #PLOTTING INTERVENTIONS AVOIDED FOR EACH PREDICTOR
150 | for(m in 1:pred.n) {
151 | if (smooth==TRUE){
152 | lines(interv$threshold,data.matrix(interv[paste(predictors[m],"_sm",sep="")]),col=m,lty=2)
153 | } else {
154 | lines(interv$threshold,data.matrix(interv[predictors[m]]),col=m,lty=2)
155 | }
156 |
157 | # adding each model to the legend
158 | legendlabel <- c(legendlabel, predictors[m])
159 | legendcolor <- c(legendcolor, m)
160 | legendwidth <- c(legendwidth, 1)
161 | legendpattern <- c(legendpattern, 2)
162 | }
163 | } else {
164 | # PLOTTING NET BENEFIT IF REQUESTED
165 |
166 | # initialize the legend label, color, and width using the standard specs of the none and all lines
167 | legendlabel <- c("None", "All")
168 | legendcolor <- c(17, 8)
169 | legendwidth <- c(2, 2)
170 | legendpattern <- c(1, 1)
171 |
172 | #getting maximum net benefit
173 | ymax=max(nb[names(nb)!="threshold"],na.rm = TRUE)
174 |
175 | # inializing new benfit plot with treat all option
176 | plot(x=nb$threshold, y=nb$all, type="l", col=8, lwd=2 ,xlim=c(xstart, xstop), ylim=c(ymin, ymax), xlab="Threshold probability", ylab="Net benefit")
177 | # adding treat none option
178 | lines(x=nb$threshold, y=nb$none,lwd=2)
179 | #PLOTTING net benefit FOR EACH PREDICTOR
180 | for(m in 1:pred.n) {
181 | if (smooth==TRUE){
182 | lines(nb$threshold,data.matrix(nb[paste(predictors[m],"_sm",sep="")]),col=m,lty=2)
183 | } else {
184 | lines(nb$threshold,data.matrix(nb[predictors[m]]),col=m,lty=2)
185 | }
186 | # adding each model to the legend
187 | legendlabel <- c(legendlabel, predictors[m])
188 | legendcolor <- c(legendcolor, m)
189 | legendwidth <- c(legendwidth, 1)
190 | legendpattern <- c(legendpattern, 2)
191 | }
192 | }
193 | # then add the legend
194 | legend("topright", legendlabel, cex=0.8, col=legendcolor, lwd=legendwidth, lty=legendpattern)
195 |
196 | }
197 |
198 | #RETURNING RESULTS
199 | results=list()
200 | results$N=N
201 | results$predictors=data.frame(cbind(predictors,harm,probability))
202 | names(results$predictors)=c("predictor","harm.applied","probability")
203 | results$interventions.avoided.per=interventionper
204 | results$net.benefit=nb
205 | results$interventions.avoided=interv
206 | #return(results)
207 | return(results)
208 |
209 | }
210 |
211 |
212 |
213 |
--------------------------------------------------------------------------------
/datasets/hotels_df.rdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/datasets/hotels_df.rdata
--------------------------------------------------------------------------------
/datasets/pimadiabetes.rdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/datasets/pimadiabetes.rdata
--------------------------------------------------------------------------------
/datasets/tune_res.rdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/datasets/tune_res.rdata
--------------------------------------------------------------------------------
/datasets/例16-02.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/datasets/例16-02.sav
--------------------------------------------------------------------------------
/datasets/例16-03.sav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/datasets/例16-03.sav
--------------------------------------------------------------------------------
/datasets/例16-04.csv:
--------------------------------------------------------------------------------
1 | X1,X2,Y
2 | 0,0,1
3 | 0,0,1
4 | 0,0,1
5 | 0,0,1
6 | 0,0,1
7 | 0,0,1
8 | 0,0,1
9 | 0,0,1
10 | 0,0,1
11 | 0,0,1
12 | 0,0,3
13 | 0,1,1
14 | 0,1,1
15 | 0,1,1
16 | 0,1,1
17 | 0,1,1
18 | 0,1,1
19 | 0,1,1
20 | 0,1,2
21 | 0,1,2
22 | 0,1,3
23 | 0,1,3
24 | 0,1,3
25 | 0,1,3
26 | 0,1,3
27 | 1,0,1
28 | 1,0,1
29 | 1,0,1
30 | 1,0,1
31 | 1,0,1
32 | 1,0,1
33 | 1,0,1
34 | 1,0,1
35 | 1,0,1
36 | 1,0,1
37 | 1,0,1
38 | 1,0,1
39 | 1,0,1
40 | 1,0,1
41 | 1,0,1
42 | 1,0,1
43 | 1,0,1
44 | 1,0,1
45 | 1,0,1
46 | 1,0,2
47 | 1,0,2
48 | 1,0,2
49 | 1,0,2
50 | 1,0,2
51 | 1,0,2
52 | 1,0,2
53 | 1,0,3
54 | 1,0,3
55 | 1,0,3
56 | 1,0,3
57 | 1,0,3
58 | 1,0,3
59 | 1,1,1
60 | 1,1,1
61 | 1,1,1
62 | 1,1,1
63 | 1,1,1
64 | 1,1,1
65 | 1,1,2
66 | 1,1,2
67 | 1,1,2
68 | 1,1,2
69 | 1,1,2
70 | 1,1,3
71 | 1,1,3
72 | 1,1,3
73 | 1,1,3
74 | 1,1,3
75 | 1,1,3
76 | 1,1,3
77 | 1,1,3
78 | 1,1,3
79 | 1,1,3
80 | 1,1,3
81 | 1,1,3
82 | 1,1,3
83 | 1,1,3
84 | 1,1,3
85 | 1,1,3
86 |
--------------------------------------------------------------------------------
/datasets/例16-05.csv:
--------------------------------------------------------------------------------
1 | X1,X2,Y
2 | 0,0,1
3 | 0,0,1
4 | 0,0,1
5 | 0,0,1
6 | 0,0,1
7 | 0,0,1
8 | 0,0,1
9 | 0,0,1
10 | 0,0,1
11 | 0,0,1
12 | 0,0,1
13 | 0,0,1
14 | 0,0,1
15 | 0,0,1
16 | 0,0,1
17 | 0,0,1
18 | 0,0,1
19 | 0,0,1
20 | 0,0,1
21 | 0,0,1
22 | 0,0,2
23 | 0,0,2
24 | 0,0,2
25 | 0,0,2
26 | 0,0,2
27 | 0,0,2
28 | 0,0,2
29 | 0,0,2
30 | 0,0,2
31 | 0,0,2
32 | 0,0,2
33 | 0,0,2
34 | 0,0,2
35 | 0,0,2
36 | 0,0,2
37 | 0,0,2
38 | 0,0,2
39 | 0,0,2
40 | 0,0,2
41 | 0,0,2
42 | 0,0,2
43 | 0,0,2
44 | 0,0,2
45 | 0,0,2
46 | 0,0,2
47 | 0,0,2
48 | 0,0,2
49 | 0,0,2
50 | 0,0,2
51 | 0,0,2
52 | 0,0,2
53 | 0,0,2
54 | 0,0,2
55 | 0,0,2
56 | 0,0,2
57 | 0,0,3
58 | 0,0,3
59 | 0,0,3
60 | 0,0,3
61 | 0,0,3
62 | 0,0,3
63 | 0,0,3
64 | 0,0,3
65 | 0,0,3
66 | 0,0,3
67 | 0,0,3
68 | 0,0,3
69 | 0,0,3
70 | 0,0,3
71 | 0,0,3
72 | 0,0,3
73 | 0,0,3
74 | 0,0,3
75 | 0,0,3
76 | 0,0,3
77 | 0,0,3
78 | 0,0,3
79 | 0,0,3
80 | 0,0,3
81 | 0,0,3
82 | 0,0,3
83 | 0,1,1
84 | 0,1,1
85 | 0,1,1
86 | 0,1,1
87 | 0,1,1
88 | 0,1,1
89 | 0,1,1
90 | 0,1,1
91 | 0,1,1
92 | 0,1,1
93 | 0,1,2
94 | 0,1,2
95 | 0,1,2
96 | 0,1,2
97 | 0,1,2
98 | 0,1,2
99 | 0,1,2
100 | 0,1,2
101 | 0,1,2
102 | 0,1,2
103 | 0,1,2
104 | 0,1,2
105 | 0,1,2
106 | 0,1,2
107 | 0,1,2
108 | 0,1,2
109 | 0,1,2
110 | 0,1,2
111 | 0,1,2
112 | 0,1,2
113 | 0,1,2
114 | 0,1,2
115 | 0,1,2
116 | 0,1,2
117 | 0,1,2
118 | 0,1,2
119 | 0,1,2
120 | 0,1,3
121 | 0,1,3
122 | 0,1,3
123 | 0,1,3
124 | 0,1,3
125 | 0,1,3
126 | 0,1,3
127 | 0,1,3
128 | 0,1,3
129 | 0,1,3
130 | 0,1,3
131 | 0,1,3
132 | 0,1,3
133 | 0,1,3
134 | 0,1,3
135 | 0,1,3
136 | 0,1,3
137 | 0,1,3
138 | 0,1,3
139 | 0,1,3
140 | 0,1,3
141 | 0,1,3
142 | 0,1,3
143 | 0,1,3
144 | 0,1,3
145 | 0,1,3
146 | 0,1,3
147 | 0,1,3
148 | 0,1,3
149 | 0,1,3
150 | 0,1,3
151 | 0,1,3
152 | 0,1,3
153 | 0,1,3
154 | 0,1,3
155 | 0,1,3
156 | 0,1,3
157 | 0,1,3
158 | 0,1,3
159 | 0,1,3
160 | 0,1,3
161 | 0,1,3
162 | 0,1,3
163 | 0,1,3
164 | 0,1,3
165 | 0,1,3
166 | 0,1,3
167 | 0,1,3
168 | 0,1,3
169 | 0,1,3
170 | 0,1,3
171 | 0,1,3
172 | 0,1,3
173 | 0,1,3
174 | 0,1,3
175 | 0,1,3
176 | 0,1,3
177 | 1,0,1
178 | 1,0,1
179 | 1,0,1
180 | 1,0,1
181 | 1,0,1
182 | 1,0,1
183 | 1,0,1
184 | 1,0,1
185 | 1,0,1
186 | 1,0,1
187 | 1,0,1
188 | 1,0,1
189 | 1,0,1
190 | 1,0,1
191 | 1,0,1
192 | 1,0,1
193 | 1,0,1
194 | 1,0,1
195 | 1,0,1
196 | 1,0,1
197 | 1,0,1
198 | 1,0,1
199 | 1,0,1
200 | 1,0,1
201 | 1,0,1
202 | 1,0,1
203 | 1,0,1
204 | 1,0,1
205 | 1,0,1
206 | 1,0,1
207 | 1,0,1
208 | 1,0,1
209 | 1,0,1
210 | 1,0,1
211 | 1,0,1
212 | 1,0,1
213 | 1,0,1
214 | 1,0,1
215 | 1,0,1
216 | 1,0,1
217 | 1,0,1
218 | 1,0,1
219 | 1,0,2
220 | 1,0,2
221 | 1,0,2
222 | 1,0,2
223 | 1,0,2
224 | 1,0,2
225 | 1,0,2
226 | 1,0,2
227 | 1,0,2
228 | 1,0,2
229 | 1,0,2
230 | 1,0,2
231 | 1,0,2
232 | 1,0,2
233 | 1,0,2
234 | 1,0,2
235 | 1,0,2
236 | 1,0,3
237 | 1,0,3
238 | 1,0,3
239 | 1,0,3
240 | 1,0,3
241 | 1,0,3
242 | 1,0,3
243 | 1,0,3
244 | 1,0,3
245 | 1,0,3
246 | 1,0,3
247 | 1,0,3
248 | 1,0,3
249 | 1,0,3
250 | 1,0,3
251 | 1,0,3
252 | 1,0,3
253 | 1,0,3
254 | 1,0,3
255 | 1,0,3
256 | 1,0,3
257 | 1,0,3
258 | 1,0,3
259 | 1,0,3
260 | 1,0,3
261 | 1,0,3
262 | 1,1,1
263 | 1,1,1
264 | 1,1,1
265 | 1,1,1
266 | 1,1,1
267 | 1,1,1
268 | 1,1,1
269 | 1,1,1
270 | 1,1,1
271 | 1,1,1
272 | 1,1,1
273 | 1,1,1
274 | 1,1,1
275 | 1,1,1
276 | 1,1,1
277 | 1,1,1
278 | 1,1,2
279 | 1,1,2
280 | 1,1,2
281 | 1,1,2
282 | 1,1,2
283 | 1,1,2
284 | 1,1,2
285 | 1,1,2
286 | 1,1,2
287 | 1,1,2
288 | 1,1,2
289 | 1,1,2
290 | 1,1,3
291 | 1,1,3
292 | 1,1,3
293 | 1,1,3
294 | 1,1,3
295 | 1,1,3
296 | 1,1,3
297 | 1,1,3
298 | 1,1,3
299 | 1,1,3
300 | 1,1,3
301 | 1,1,3
302 | 1,1,3
303 | 1,1,3
304 | 1,1,3
305 | 1,1,3
306 | 1,1,3
307 | 1,1,3
308 | 1,1,3
309 | 1,1,3
310 | 1,1,3
311 | 1,1,3
312 | 1,1,3
313 | 1,1,3
314 | 1,1,3
315 | 1,1,3
316 |
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-20-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-20-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/KNN_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/KNN_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-17-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-17-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-18-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-18-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-19-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-19-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-20-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-20-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-html/unnamed-chunk-22-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-html/unnamed-chunk-22-1.png
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-13-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-13-1.pdf
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-17-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-17-1.pdf
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-18-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-18-1.pdf
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-19-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-19-1.pdf
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-20-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-20-1.pdf
--------------------------------------------------------------------------------
/docs/catboost_files/figure-pdf/unnamed-chunk-22-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/catboost_files/figure-pdf/unnamed-chunk-22-1.pdf
--------------------------------------------------------------------------------
/docs/figs/46346465dfgdfgd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/46346465dfgdfgd.jpg
--------------------------------------------------------------------------------
/docs/figs/6325461.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/6325461.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-22_15-54-53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-22_15-54-53.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-22_16-05-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-22_16-05-22.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-26_20-06-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-26_20-06-48.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-27_13-20-37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-27_13-20-37.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-27_19-11-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-27_19-11-28.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-27_19-52-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-27_19-52-48.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-27_20-19-25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-27_20-19-25.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-28_10-41-44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-28_10-41-44.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-28_12-44-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-28_12-44-41.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-28_12-56-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-28_12-56-47.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-30_20-18-13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-30_20-18-13.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-04-30_20-19-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-04-30_20-19-09.png
--------------------------------------------------------------------------------
/docs/figs/PixPin_2024-05-05_19-41-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/PixPin_2024-05-05_19-41-50.png
--------------------------------------------------------------------------------
/docs/figs/Snipaste_2023-04-01_14-12-58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/Snipaste_2023-04-01_14-12-58.png
--------------------------------------------------------------------------------
/docs/figs/Snipaste_2023-04-05_16-05-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/Snipaste_2023-04-05_16-05-01.png
--------------------------------------------------------------------------------
/docs/figs/Snipaste_2023-04-05_16-07-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/Snipaste_2023-04-05_16-07-01.png
--------------------------------------------------------------------------------
/docs/figs/Snipaste_2023-06-12_15-40-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/Snipaste_2023-06-12_15-40-00.png
--------------------------------------------------------------------------------
/docs/figs/模型复杂度和泛化误差.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/figs/模型复杂度和泛化误差.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-15-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-15-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-18-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-18-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/gbm_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/gbm_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-18-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-18-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-29-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-29-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-31-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-31-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-45-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-45-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-47-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-47-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-49-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-49-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-50-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-50-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/glmnet_files/figure-html/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/glmnet_files/figure-html/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/docs/robots.txt:
--------------------------------------------------------------------------------
1 | Sitemap: https://ayueme.github.io/R_machine_learning/sitemap.xml
2 |
--------------------------------------------------------------------------------
/docs/site_libs/DiagrammeR-styles-0.2/styles.css:
--------------------------------------------------------------------------------
1 | .DiagrammeR,.grViz pre {
2 | white-space: pre-wrap; /* CSS 3 */
3 | white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
4 | white-space: -pre-wrap; /* Opera 4-6 */
5 | white-space: -o-pre-wrap; /* Opera 7 */
6 | word-wrap: break-word; /* Internet Explorer 5.5+ */
7 | }
8 |
9 | .DiagrammeR g .label {
10 | font-family: Helvetica;
11 | font-size: 14px;
12 | color: #333333;
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/docs/site_libs/bootstrap/bootstrap-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/site_libs/bootstrap/bootstrap-icons.woff
--------------------------------------------------------------------------------
/docs/site_libs/clipboard/clipboard.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * clipboard.js v2.0.11
3 | * https://clipboardjs.com/
4 | *
5 | * Licensed MIT © Zeno Rocha
6 | */
7 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}});
9 | // @license-end
--------------------------------------------------------------------------------
/docs/site_libs/quarto-html/popper.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @popperjs/core v2.11.7 - MIT License
3 | */
4 |
5 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})}));
6 |
7 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-html/quarto-syntax-highlighting.css:
--------------------------------------------------------------------------------
1 | /* quarto syntax highlight colors */
2 | :root {
3 | --quarto-hl-ot-color: #003B4F;
4 | --quarto-hl-at-color: #657422;
5 | --quarto-hl-ss-color: #20794D;
6 | --quarto-hl-an-color: #5E5E5E;
7 | --quarto-hl-fu-color: #4758AB;
8 | --quarto-hl-st-color: #20794D;
9 | --quarto-hl-cf-color: #003B4F;
10 | --quarto-hl-op-color: #5E5E5E;
11 | --quarto-hl-er-color: #AD0000;
12 | --quarto-hl-bn-color: #AD0000;
13 | --quarto-hl-al-color: #AD0000;
14 | --quarto-hl-va-color: #111111;
15 | --quarto-hl-bu-color: inherit;
16 | --quarto-hl-ex-color: inherit;
17 | --quarto-hl-pp-color: #AD0000;
18 | --quarto-hl-in-color: #5E5E5E;
19 | --quarto-hl-vs-color: #20794D;
20 | --quarto-hl-wa-color: #5E5E5E;
21 | --quarto-hl-do-color: #5E5E5E;
22 | --quarto-hl-im-color: #00769E;
23 | --quarto-hl-ch-color: #20794D;
24 | --quarto-hl-dt-color: #AD0000;
25 | --quarto-hl-fl-color: #AD0000;
26 | --quarto-hl-co-color: #5E5E5E;
27 | --quarto-hl-cv-color: #5E5E5E;
28 | --quarto-hl-cn-color: #8f5902;
29 | --quarto-hl-sc-color: #5E5E5E;
30 | --quarto-hl-dv-color: #AD0000;
31 | --quarto-hl-kw-color: #003B4F;
32 | }
33 |
34 | /* other quarto variables */
35 | :root {
36 | --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
37 | }
38 |
39 | pre > code.sourceCode > span {
40 | color: #003B4F;
41 | }
42 |
43 | code span {
44 | color: #003B4F;
45 | }
46 |
47 | code.sourceCode > span {
48 | color: #003B4F;
49 | }
50 |
51 | div.sourceCode,
52 | div.sourceCode pre.sourceCode {
53 | color: #003B4F;
54 | }
55 |
56 | code span.ot {
57 | color: #003B4F;
58 | font-style: inherit;
59 | }
60 |
61 | code span.at {
62 | color: #657422;
63 | font-style: inherit;
64 | }
65 |
66 | code span.ss {
67 | color: #20794D;
68 | font-style: inherit;
69 | }
70 |
71 | code span.an {
72 | color: #5E5E5E;
73 | font-style: inherit;
74 | }
75 |
76 | code span.fu {
77 | color: #4758AB;
78 | font-style: inherit;
79 | }
80 |
81 | code span.st {
82 | color: #20794D;
83 | font-style: inherit;
84 | }
85 |
86 | code span.cf {
87 | color: #003B4F;
88 | font-style: inherit;
89 | }
90 |
91 | code span.op {
92 | color: #5E5E5E;
93 | font-style: inherit;
94 | }
95 |
96 | code span.er {
97 | color: #AD0000;
98 | font-style: inherit;
99 | }
100 |
101 | code span.bn {
102 | color: #AD0000;
103 | font-style: inherit;
104 | }
105 |
106 | code span.al {
107 | color: #AD0000;
108 | font-style: inherit;
109 | }
110 |
111 | code span.va {
112 | color: #111111;
113 | font-style: inherit;
114 | }
115 |
116 | code span.bu {
117 | font-style: inherit;
118 | }
119 |
120 | code span.ex {
121 | font-style: inherit;
122 | }
123 |
124 | code span.pp {
125 | color: #AD0000;
126 | font-style: inherit;
127 | }
128 |
129 | code span.in {
130 | color: #5E5E5E;
131 | font-style: inherit;
132 | }
133 |
134 | code span.vs {
135 | color: #20794D;
136 | font-style: inherit;
137 | }
138 |
139 | code span.wa {
140 | color: #5E5E5E;
141 | font-style: italic;
142 | }
143 |
144 | code span.do {
145 | color: #5E5E5E;
146 | font-style: italic;
147 | }
148 |
149 | code span.im {
150 | color: #00769E;
151 | font-style: inherit;
152 | }
153 |
154 | code span.ch {
155 | color: #20794D;
156 | font-style: inherit;
157 | }
158 |
159 | code span.dt {
160 | color: #AD0000;
161 | font-style: inherit;
162 | }
163 |
164 | code span.fl {
165 | color: #AD0000;
166 | font-style: inherit;
167 | }
168 |
169 | code span.co {
170 | color: #5E5E5E;
171 | font-style: inherit;
172 | }
173 |
174 | code span.cv {
175 | color: #5E5E5E;
176 | font-style: italic;
177 | }
178 |
179 | code span.cn {
180 | color: #8f5902;
181 | font-style: inherit;
182 | }
183 |
184 | code span.sc {
185 | color: #5E5E5E;
186 | font-style: inherit;
187 | }
188 |
189 | code span.dv {
190 | color: #AD0000;
191 | font-style: inherit;
192 | }
193 |
194 | code span.kw {
195 | color: #003B4F;
196 | font-style: inherit;
197 | }
198 |
199 | .prevent-inlining {
200 | content: "";
201 | }
202 |
203 | /*# sourceMappingURL=debc5d5d77c3f9108843748ff7464032.css.map */
204 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-html/quarto.js:
--------------------------------------------------------------------------------
1 | const sectionChanged = new CustomEvent("quarto-sectionChanged", {
2 | detail: {},
3 | bubbles: true,
4 | cancelable: false,
5 | composed: false,
6 | });
7 |
8 | const layoutMarginEls = () => {
9 | // Find any conflicting margin elements and add margins to the
10 | // top to prevent overlap
11 | const marginChildren = window.document.querySelectorAll(
12 | ".column-margin.column-container > *, .margin-caption, .aside"
13 | );
14 |
15 | let lastBottom = 0;
16 | for (const marginChild of marginChildren) {
17 | if (marginChild.offsetParent !== null) {
18 | // clear the top margin so we recompute it
19 | marginChild.style.marginTop = null;
20 | const top = marginChild.getBoundingClientRect().top + window.scrollY;
21 | if (top < lastBottom) {
22 | const marginChildStyle = window.getComputedStyle(marginChild);
23 | const marginBottom = parseFloat(marginChildStyle["marginBottom"]);
24 | const margin = lastBottom - top + marginBottom;
25 | marginChild.style.marginTop = `${margin}px`;
26 | }
27 | const styles = window.getComputedStyle(marginChild);
28 | const marginTop = parseFloat(styles["marginTop"]);
29 | lastBottom = top + marginChild.getBoundingClientRect().height + marginTop;
30 | }
31 | }
32 | };
33 |
34 | window.document.addEventListener("DOMContentLoaded", function (_event) {
35 | // Recompute the position of margin elements anytime the body size changes
36 | if (window.ResizeObserver) {
37 | const resizeObserver = new window.ResizeObserver(
38 | throttle(() => {
39 | layoutMarginEls();
40 | if (
41 | window.document.body.getBoundingClientRect().width < 990 &&
42 | isReaderMode()
43 | ) {
44 | quartoToggleReader();
45 | }
46 | }, 50)
47 | );
48 | resizeObserver.observe(window.document.body);
49 | }
50 |
51 | const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]');
52 | const sidebarEl = window.document.getElementById("quarto-sidebar");
53 | const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left");
54 | const marginSidebarEl = window.document.getElementById(
55 | "quarto-margin-sidebar"
56 | );
57 | // function to determine whether the element has a previous sibling that is active
58 | const prevSiblingIsActiveLink = (el) => {
59 | const sibling = el.previousElementSibling;
60 | if (sibling && sibling.tagName === "A") {
61 | return sibling.classList.contains("active");
62 | } else {
63 | return false;
64 | }
65 | };
66 |
67 | // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior)
68 | function fireSlideEnter(e) {
69 | const event = window.document.createEvent("Event");
70 | event.initEvent("slideenter", true, true);
71 | window.document.dispatchEvent(event);
72 | }
73 | const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]');
74 | tabs.forEach((tab) => {
75 | tab.addEventListener("shown.bs.tab", fireSlideEnter);
76 | });
77 |
78 | // fire slideEnter for tabby tab activations (for htmlwidget resize behavior)
79 | document.addEventListener("tabby", fireSlideEnter, false);
80 |
81 | // Track scrolling and mark TOC links as active
82 | // get table of contents and sidebar (bail if we don't have at least one)
83 | const tocLinks = tocEl
84 | ? [...tocEl.querySelectorAll("a[data-scroll-target]")]
85 | : [];
86 | const makeActive = (link) => tocLinks[link].classList.add("active");
87 | const removeActive = (link) => tocLinks[link].classList.remove("active");
88 | const removeAllActive = () =>
89 | [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link));
90 |
91 | // activate the anchor for a section associated with this TOC entry
92 | tocLinks.forEach((link) => {
93 | link.addEventListener("click", () => {
94 | if (link.href.indexOf("#") !== -1) {
95 | const anchor = link.href.split("#")[1];
96 | const heading = window.document.querySelector(
97 | `[data-anchor-id=${anchor}]`
98 | );
99 | if (heading) {
100 | // Add the class
101 | heading.classList.add("reveal-anchorjs-link");
102 |
103 | // function to show the anchor
104 | const handleMouseout = () => {
105 | heading.classList.remove("reveal-anchorjs-link");
106 | heading.removeEventListener("mouseout", handleMouseout);
107 | };
108 |
109 | // add a function to clear the anchor when the user mouses out of it
110 | heading.addEventListener("mouseout", handleMouseout);
111 | }
112 | }
113 | });
114 | });
115 |
116 | const sections = tocLinks.map((link) => {
117 | const target = link.getAttribute("data-scroll-target");
118 | if (target.startsWith("#")) {
119 | return window.document.getElementById(decodeURI(`${target.slice(1)}`));
120 | } else {
121 | return window.document.querySelector(decodeURI(`${target}`));
122 | }
123 | });
124 |
125 | const sectionMargin = 200;
126 | let currentActive = 0;
127 | // track whether we've initialized state the first time
128 | let init = false;
129 |
130 | const updateActiveLink = () => {
131 | // The index from bottom to top (e.g. reversed list)
132 | let sectionIndex = -1;
133 | if (
134 | window.innerHeight + window.pageYOffset >=
135 | window.document.body.offsetHeight
136 | ) {
137 | sectionIndex = 0;
138 | } else {
139 | sectionIndex = [...sections].reverse().findIndex((section) => {
140 | if (section) {
141 | return window.pageYOffset >= section.offsetTop - sectionMargin;
142 | } else {
143 | return false;
144 | }
145 | });
146 | }
147 | if (sectionIndex > -1) {
148 | const current = sections.length - sectionIndex - 1;
149 | if (current !== currentActive) {
150 | removeAllActive();
151 | currentActive = current;
152 | makeActive(current);
153 | if (init) {
154 | window.dispatchEvent(sectionChanged);
155 | }
156 | init = true;
157 | }
158 | }
159 | };
160 |
161 | const inHiddenRegion = (top, bottom, hiddenRegions) => {
162 | for (const region of hiddenRegions) {
163 | if (top <= region.bottom && bottom >= region.top) {
164 | return true;
165 | }
166 | }
167 | return false;
168 | };
169 |
170 | const categorySelector = "header.quarto-title-block .quarto-category";
171 | const activateCategories = (href) => {
172 | // Find any categories
173 | // Surround them with a link pointing back to:
174 | // #category=Authoring
175 | try {
176 | const categoryEls = window.document.querySelectorAll(categorySelector);
177 | for (const categoryEl of categoryEls) {
178 | const categoryText = categoryEl.textContent;
179 | if (categoryText) {
180 | const link = `${href}#category=${encodeURIComponent(categoryText)}`;
181 | const linkEl = window.document.createElement("a");
182 | linkEl.setAttribute("href", link);
183 | for (const child of categoryEl.childNodes) {
184 | linkEl.append(child);
185 | }
186 | categoryEl.appendChild(linkEl);
187 | }
188 | }
189 | } catch {
190 | // Ignore errors
191 | }
192 | };
193 | function hasTitleCategories() {
194 | return window.document.querySelector(categorySelector) !== null;
195 | }
196 |
197 | function offsetRelativeUrl(url) {
198 | const offset = getMeta("quarto:offset");
199 | return offset ? offset + url : url;
200 | }
201 |
202 | function offsetAbsoluteUrl(url) {
203 | const offset = getMeta("quarto:offset");
204 | const baseUrl = new URL(offset, window.location);
205 |
206 | const projRelativeUrl = url.replace(baseUrl, "");
207 | if (projRelativeUrl.startsWith("/")) {
208 | return projRelativeUrl;
209 | } else {
210 | return "/" + projRelativeUrl;
211 | }
212 | }
213 |
214 | // read a meta tag value
215 | function getMeta(metaName) {
216 | const metas = window.document.getElementsByTagName("meta");
217 | for (let i = 0; i < metas.length; i++) {
218 | if (metas[i].getAttribute("name") === metaName) {
219 | return metas[i].getAttribute("content");
220 | }
221 | }
222 | return "";
223 | }
224 |
225 | async function findAndActivateCategories() {
226 | const currentPagePath = offsetAbsoluteUrl(window.location.href);
227 | const response = await fetch(offsetRelativeUrl("listings.json"));
228 | if (response.status == 200) {
229 | return response.json().then(function (listingPaths) {
230 | const listingHrefs = [];
231 | for (const listingPath of listingPaths) {
232 | const pathWithoutLeadingSlash = listingPath.listing.substring(1);
233 | for (const item of listingPath.items) {
234 | if (
235 | item === currentPagePath ||
236 | item === currentPagePath + "index.html"
237 | ) {
238 | // Resolve this path against the offset to be sure
239 | // we already are using the correct path to the listing
240 | // (this adjusts the listing urls to be rooted against
241 | // whatever root the page is actually running against)
242 | const relative = offsetRelativeUrl(pathWithoutLeadingSlash);
243 | const baseUrl = window.location;
244 | const resolvedPath = new URL(relative, baseUrl);
245 | listingHrefs.push(resolvedPath.pathname);
246 | break;
247 | }
248 | }
249 | }
250 |
251 | // Look up the tree for a nearby linting and use that if we find one
252 | const nearestListing = findNearestParentListing(
253 | offsetAbsoluteUrl(window.location.pathname),
254 | listingHrefs
255 | );
256 | if (nearestListing) {
257 | activateCategories(nearestListing);
258 | } else {
259 | // See if the referrer is a listing page for this item
260 | const referredRelativePath = offsetAbsoluteUrl(document.referrer);
261 | const referrerListing = listingHrefs.find((listingHref) => {
262 | const isListingReferrer =
263 | listingHref === referredRelativePath ||
264 | listingHref === referredRelativePath + "index.html";
265 | return isListingReferrer;
266 | });
267 |
268 | if (referrerListing) {
269 | // Try to use the referrer if possible
270 | activateCategories(referrerListing);
271 | } else if (listingHrefs.length > 0) {
272 | // Otherwise, just fall back to the first listing
273 | activateCategories(listingHrefs[0]);
274 | }
275 | }
276 | });
277 | }
278 | }
279 | if (hasTitleCategories()) {
280 | findAndActivateCategories();
281 | }
282 |
283 | const findNearestParentListing = (href, listingHrefs) => {
284 | if (!href || !listingHrefs) {
285 | return undefined;
286 | }
287 | // Look up the tree for a nearby linting and use that if we find one
288 | const relativeParts = href.substring(1).split("/");
289 | while (relativeParts.length > 0) {
290 | const path = relativeParts.join("/");
291 | for (const listingHref of listingHrefs) {
292 | if (listingHref.startsWith(path)) {
293 | return listingHref;
294 | }
295 | }
296 | relativeParts.pop();
297 | }
298 |
299 | return undefined;
300 | };
301 |
302 | const manageSidebarVisiblity = (el, placeholderDescriptor) => {
303 | let isVisible = true;
304 | let elRect;
305 |
306 | return (hiddenRegions) => {
307 | if (el === null) {
308 | return;
309 | }
310 |
311 | // Find the last element of the TOC
312 | const lastChildEl = el.lastElementChild;
313 |
314 | if (lastChildEl) {
315 | // Converts the sidebar to a menu
316 | const convertToMenu = () => {
317 | for (const child of el.children) {
318 | child.style.opacity = 0;
319 | child.style.overflow = "hidden";
320 | }
321 |
322 | nexttick(() => {
323 | const toggleContainer = window.document.createElement("div");
324 | toggleContainer.style.width = "100%";
325 | toggleContainer.classList.add("zindex-over-content");
326 | toggleContainer.classList.add("quarto-sidebar-toggle");
327 | toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom
328 | toggleContainer.id = placeholderDescriptor.id;
329 | toggleContainer.style.position = "fixed";
330 |
331 | const toggleIcon = window.document.createElement("i");
332 | toggleIcon.classList.add("quarto-sidebar-toggle-icon");
333 | toggleIcon.classList.add("bi");
334 | toggleIcon.classList.add("bi-caret-down-fill");
335 |
336 | const toggleTitle = window.document.createElement("div");
337 | const titleEl = window.document.body.querySelector(
338 | placeholderDescriptor.titleSelector
339 | );
340 | if (titleEl) {
341 | toggleTitle.append(
342 | titleEl.textContent || titleEl.innerText,
343 | toggleIcon
344 | );
345 | }
346 | toggleTitle.classList.add("zindex-over-content");
347 | toggleTitle.classList.add("quarto-sidebar-toggle-title");
348 | toggleContainer.append(toggleTitle);
349 |
350 | const toggleContents = window.document.createElement("div");
351 | toggleContents.classList = el.classList;
352 | toggleContents.classList.add("zindex-over-content");
353 | toggleContents.classList.add("quarto-sidebar-toggle-contents");
354 | for (const child of el.children) {
355 | if (child.id === "toc-title") {
356 | continue;
357 | }
358 |
359 | const clone = child.cloneNode(true);
360 | clone.style.opacity = 1;
361 | clone.style.display = null;
362 | toggleContents.append(clone);
363 | }
364 | toggleContents.style.height = "0px";
365 | const positionToggle = () => {
366 | // position the element (top left of parent, same width as parent)
367 | if (!elRect) {
368 | elRect = el.getBoundingClientRect();
369 | }
370 | toggleContainer.style.left = `${elRect.left}px`;
371 | toggleContainer.style.top = `${elRect.top}px`;
372 | toggleContainer.style.width = `${elRect.width}px`;
373 | };
374 | positionToggle();
375 |
376 | toggleContainer.append(toggleContents);
377 | el.parentElement.prepend(toggleContainer);
378 |
379 | // Process clicks
380 | let tocShowing = false;
381 | // Allow the caller to control whether this is dismissed
382 | // when it is clicked (e.g. sidebar navigation supports
383 | // opening and closing the nav tree, so don't dismiss on click)
384 | const clickEl = placeholderDescriptor.dismissOnClick
385 | ? toggleContainer
386 | : toggleTitle;
387 |
388 | const closeToggle = () => {
389 | if (tocShowing) {
390 | toggleContainer.classList.remove("expanded");
391 | toggleContents.style.height = "0px";
392 | tocShowing = false;
393 | }
394 | };
395 |
396 | // Get rid of any expanded toggle if the user scrolls
397 | window.document.addEventListener(
398 | "scroll",
399 | throttle(() => {
400 | closeToggle();
401 | }, 50)
402 | );
403 |
404 | // Handle positioning of the toggle
405 | window.addEventListener(
406 | "resize",
407 | throttle(() => {
408 | elRect = undefined;
409 | positionToggle();
410 | }, 50)
411 | );
412 |
413 | window.addEventListener("quarto-hrChanged", () => {
414 | elRect = undefined;
415 | });
416 |
417 | // Process the click
418 | clickEl.onclick = () => {
419 | if (!tocShowing) {
420 | toggleContainer.classList.add("expanded");
421 | toggleContents.style.height = null;
422 | tocShowing = true;
423 | } else {
424 | closeToggle();
425 | }
426 | };
427 | });
428 | };
429 |
430 | // Converts a sidebar from a menu back to a sidebar
431 | const convertToSidebar = () => {
432 | for (const child of el.children) {
433 | child.style.opacity = 1;
434 | child.style.overflow = null;
435 | }
436 |
437 | const placeholderEl = window.document.getElementById(
438 | placeholderDescriptor.id
439 | );
440 | if (placeholderEl) {
441 | placeholderEl.remove();
442 | }
443 |
444 | el.classList.remove("rollup");
445 | };
446 |
447 | if (isReaderMode()) {
448 | convertToMenu();
449 | isVisible = false;
450 | } else {
451 | // Find the top and bottom o the element that is being managed
452 | const elTop = el.offsetTop;
453 | const elBottom =
454 | elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight;
455 |
456 | if (!isVisible) {
457 | // If the element is current not visible reveal if there are
458 | // no conflicts with overlay regions
459 | if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) {
460 | convertToSidebar();
461 | isVisible = true;
462 | }
463 | } else {
464 | // If the element is visible, hide it if it conflicts with overlay regions
465 | // and insert a placeholder toggle (or if we're in reader mode)
466 | if (inHiddenRegion(elTop, elBottom, hiddenRegions)) {
467 | convertToMenu();
468 | isVisible = false;
469 | }
470 | }
471 | }
472 | }
473 | };
474 | };
475 |
476 | const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]');
477 | for (const tabEl of tabEls) {
478 | const id = tabEl.getAttribute("data-bs-target");
479 | if (id) {
480 | const columnEl = document.querySelector(
481 | `${id} .column-margin, .tabset-margin-content`
482 | );
483 | if (columnEl)
484 | tabEl.addEventListener("shown.bs.tab", function (event) {
485 | const el = event.srcElement;
486 | if (el) {
487 | const visibleCls = `${el.id}-margin-content`;
488 | // walk up until we find a parent tabset
489 | let panelTabsetEl = el.parentElement;
490 | while (panelTabsetEl) {
491 | if (panelTabsetEl.classList.contains("panel-tabset")) {
492 | break;
493 | }
494 | panelTabsetEl = panelTabsetEl.parentElement;
495 | }
496 |
497 | if (panelTabsetEl) {
498 | const prevSib = panelTabsetEl.previousElementSibling;
499 | if (
500 | prevSib &&
501 | prevSib.classList.contains("tabset-margin-container")
502 | ) {
503 | const childNodes = prevSib.querySelectorAll(
504 | ".tabset-margin-content"
505 | );
506 | for (const childEl of childNodes) {
507 | if (childEl.classList.contains(visibleCls)) {
508 | childEl.classList.remove("collapse");
509 | } else {
510 | childEl.classList.add("collapse");
511 | }
512 | }
513 | }
514 | }
515 | }
516 |
517 | layoutMarginEls();
518 | });
519 | }
520 | }
521 |
522 | // Manage the visibility of the toc and the sidebar
523 | const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, {
524 | id: "quarto-toc-toggle",
525 | titleSelector: "#toc-title",
526 | dismissOnClick: true,
527 | });
528 | const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, {
529 | id: "quarto-sidebarnav-toggle",
530 | titleSelector: ".title",
531 | dismissOnClick: false,
532 | });
533 | let tocLeftScrollVisibility;
534 | if (leftTocEl) {
535 | tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, {
536 | id: "quarto-lefttoc-toggle",
537 | titleSelector: "#toc-title",
538 | dismissOnClick: true,
539 | });
540 | }
541 |
542 | // Find the first element that uses formatting in special columns
543 | const conflictingEls = window.document.body.querySelectorAll(
544 | '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]'
545 | );
546 |
547 | // Filter all the possibly conflicting elements into ones
548 | // the do conflict on the left or ride side
549 | const arrConflictingEls = Array.from(conflictingEls);
550 | const leftSideConflictEls = arrConflictingEls.filter((el) => {
551 | if (el.tagName === "ASIDE") {
552 | return false;
553 | }
554 | return Array.from(el.classList).find((className) => {
555 | return (
556 | className !== "column-body" &&
557 | className.startsWith("column-") &&
558 | !className.endsWith("right") &&
559 | !className.endsWith("container") &&
560 | className !== "column-margin"
561 | );
562 | });
563 | });
564 | const rightSideConflictEls = arrConflictingEls.filter((el) => {
565 | if (el.tagName === "ASIDE") {
566 | return true;
567 | }
568 |
569 | const hasMarginCaption = Array.from(el.classList).find((className) => {
570 | return className == "margin-caption";
571 | });
572 | if (hasMarginCaption) {
573 | return true;
574 | }
575 |
576 | return Array.from(el.classList).find((className) => {
577 | return (
578 | className !== "column-body" &&
579 | !className.endsWith("container") &&
580 | className.startsWith("column-") &&
581 | !className.endsWith("left")
582 | );
583 | });
584 | });
585 |
586 | const kOverlapPaddingSize = 10;
587 | function toRegions(els) {
588 | return els.map((el) => {
589 | const boundRect = el.getBoundingClientRect();
590 | const top =
591 | boundRect.top +
592 | document.documentElement.scrollTop -
593 | kOverlapPaddingSize;
594 | return {
595 | top,
596 | bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize,
597 | };
598 | });
599 | }
600 |
601 | let hasObserved = false;
602 | const visibleItemObserver = (els) => {
603 | let visibleElements = [...els];
604 | const intersectionObserver = new IntersectionObserver(
605 | (entries, _observer) => {
606 | entries.forEach((entry) => {
607 | if (entry.isIntersecting) {
608 | if (visibleElements.indexOf(entry.target) === -1) {
609 | visibleElements.push(entry.target);
610 | }
611 | } else {
612 | visibleElements = visibleElements.filter((visibleEntry) => {
613 | return visibleEntry !== entry;
614 | });
615 | }
616 | });
617 |
618 | if (!hasObserved) {
619 | hideOverlappedSidebars();
620 | }
621 | hasObserved = true;
622 | },
623 | {}
624 | );
625 | els.forEach((el) => {
626 | intersectionObserver.observe(el);
627 | });
628 |
629 | return {
630 | getVisibleEntries: () => {
631 | return visibleElements;
632 | },
633 | };
634 | };
635 |
636 | const rightElementObserver = visibleItemObserver(rightSideConflictEls);
637 | const leftElementObserver = visibleItemObserver(leftSideConflictEls);
638 |
639 | const hideOverlappedSidebars = () => {
640 | marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries()));
641 | sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries()));
642 | if (tocLeftScrollVisibility) {
643 | tocLeftScrollVisibility(
644 | toRegions(leftElementObserver.getVisibleEntries())
645 | );
646 | }
647 | };
648 |
649 | window.quartoToggleReader = () => {
650 | // Applies a slow class (or removes it)
651 | // to update the transition speed
652 | const slowTransition = (slow) => {
653 | const manageTransition = (id, slow) => {
654 | const el = document.getElementById(id);
655 | if (el) {
656 | if (slow) {
657 | el.classList.add("slow");
658 | } else {
659 | el.classList.remove("slow");
660 | }
661 | }
662 | };
663 |
664 | manageTransition("TOC", slow);
665 | manageTransition("quarto-sidebar", slow);
666 | };
667 | const readerMode = !isReaderMode();
668 | setReaderModeValue(readerMode);
669 |
670 | // If we're entering reader mode, slow the transition
671 | if (readerMode) {
672 | slowTransition(readerMode);
673 | }
674 | highlightReaderToggle(readerMode);
675 | hideOverlappedSidebars();
676 |
677 | // If we're exiting reader mode, restore the non-slow transition
678 | if (!readerMode) {
679 | slowTransition(!readerMode);
680 | }
681 | };
682 |
683 | const highlightReaderToggle = (readerMode) => {
684 | const els = document.querySelectorAll(".quarto-reader-toggle");
685 | if (els) {
686 | els.forEach((el) => {
687 | if (readerMode) {
688 | el.classList.add("reader");
689 | } else {
690 | el.classList.remove("reader");
691 | }
692 | });
693 | }
694 | };
695 |
696 | const setReaderModeValue = (val) => {
697 | if (window.location.protocol !== "file:") {
698 | window.localStorage.setItem("quarto-reader-mode", val);
699 | } else {
700 | localReaderMode = val;
701 | }
702 | };
703 |
704 | const isReaderMode = () => {
705 | if (window.location.protocol !== "file:") {
706 | return window.localStorage.getItem("quarto-reader-mode") === "true";
707 | } else {
708 | return localReaderMode;
709 | }
710 | };
711 | let localReaderMode = null;
712 |
713 | const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded");
714 | const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1;
715 |
716 | // Walk the TOC and collapse/expand nodes
717 | // Nodes are expanded if:
718 | // - they are top level
719 | // - they have children that are 'active' links
720 | // - they are directly below an link that is 'active'
721 | const walk = (el, depth) => {
722 | // Tick depth when we enter a UL
723 | if (el.tagName === "UL") {
724 | depth = depth + 1;
725 | }
726 |
727 | // It this is active link
728 | let isActiveNode = false;
729 | if (el.tagName === "A" && el.classList.contains("active")) {
730 | isActiveNode = true;
731 | }
732 |
733 | // See if there is an active child to this element
734 | let hasActiveChild = false;
735 | for (child of el.children) {
736 | hasActiveChild = walk(child, depth) || hasActiveChild;
737 | }
738 |
739 | // Process the collapse state if this is an UL
740 | if (el.tagName === "UL") {
741 | if (tocOpenDepth === -1 && depth > 1) {
742 | el.classList.add("collapse");
743 | } else if (
744 | depth <= tocOpenDepth ||
745 | hasActiveChild ||
746 | prevSiblingIsActiveLink(el)
747 | ) {
748 | el.classList.remove("collapse");
749 | } else {
750 | el.classList.add("collapse");
751 | }
752 |
753 | // untick depth when we leave a UL
754 | depth = depth - 1;
755 | }
756 | return hasActiveChild || isActiveNode;
757 | };
758 |
759 | // walk the TOC and expand / collapse any items that should be shown
760 |
761 | if (tocEl) {
762 | walk(tocEl, 0);
763 | updateActiveLink();
764 | }
765 |
766 | // Throttle the scroll event and walk peridiocally
767 | window.document.addEventListener(
768 | "scroll",
769 | throttle(() => {
770 | if (tocEl) {
771 | updateActiveLink();
772 | walk(tocEl, 0);
773 | }
774 | if (!isReaderMode()) {
775 | hideOverlappedSidebars();
776 | }
777 | }, 5)
778 | );
779 | window.addEventListener(
780 | "resize",
781 | throttle(() => {
782 | if (!isReaderMode()) {
783 | hideOverlappedSidebars();
784 | }
785 | }, 10)
786 | );
787 | hideOverlappedSidebars();
788 | highlightReaderToggle(isReaderMode());
789 | });
790 |
791 | // grouped tabsets
792 | window.addEventListener("pageshow", (_event) => {
793 | function getTabSettings() {
794 | const data = localStorage.getItem("quarto-persistent-tabsets-data");
795 | if (!data) {
796 | localStorage.setItem("quarto-persistent-tabsets-data", "{}");
797 | return {};
798 | }
799 | if (data) {
800 | return JSON.parse(data);
801 | }
802 | }
803 |
804 | function setTabSettings(data) {
805 | localStorage.setItem(
806 | "quarto-persistent-tabsets-data",
807 | JSON.stringify(data)
808 | );
809 | }
810 |
811 | function setTabState(groupName, groupValue) {
812 | const data = getTabSettings();
813 | data[groupName] = groupValue;
814 | setTabSettings(data);
815 | }
816 |
817 | function toggleTab(tab, active) {
818 | const tabPanelId = tab.getAttribute("aria-controls");
819 | const tabPanel = document.getElementById(tabPanelId);
820 | if (active) {
821 | tab.classList.add("active");
822 | tabPanel.classList.add("active");
823 | } else {
824 | tab.classList.remove("active");
825 | tabPanel.classList.remove("active");
826 | }
827 | }
828 |
829 | function toggleAll(selectedGroup, selectorsToSync) {
830 | for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) {
831 | const active = selectedGroup === thisGroup;
832 | for (const tab of tabs) {
833 | toggleTab(tab, active);
834 | }
835 | }
836 | }
837 |
838 | function findSelectorsToSyncByLanguage() {
839 | const result = {};
840 | const tabs = Array.from(
841 | document.querySelectorAll(`div[data-group] a[id^='tabset-']`)
842 | );
843 | for (const item of tabs) {
844 | const div = item.parentElement.parentElement.parentElement;
845 | const group = div.getAttribute("data-group");
846 | if (!result[group]) {
847 | result[group] = {};
848 | }
849 | const selectorsToSync = result[group];
850 | const value = item.innerHTML;
851 | if (!selectorsToSync[value]) {
852 | selectorsToSync[value] = [];
853 | }
854 | selectorsToSync[value].push(item);
855 | }
856 | return result;
857 | }
858 |
859 | function setupSelectorSync() {
860 | const selectorsToSync = findSelectorsToSyncByLanguage();
861 | Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => {
862 | Object.entries(tabSetsByValue).forEach(([value, items]) => {
863 | items.forEach((item) => {
864 | item.addEventListener("click", (_event) => {
865 | setTabState(group, value);
866 | toggleAll(value, selectorsToSync[group]);
867 | });
868 | });
869 | });
870 | });
871 | return selectorsToSync;
872 | }
873 |
874 | const selectorsToSync = setupSelectorSync();
875 | for (const [group, selectedName] of Object.entries(getTabSettings())) {
876 | const selectors = selectorsToSync[group];
877 | // it's possible that stale state gives us empty selections, so we explicitly check here.
878 | if (selectors) {
879 | toggleAll(selectedName, selectors);
880 | }
881 | }
882 | });
883 |
884 | function throttle(func, wait) {
885 | let waiting = false;
886 | return function () {
887 | if (!waiting) {
888 | func.apply(this, arguments);
889 | waiting = true;
890 | setTimeout(function () {
891 | waiting = false;
892 | }, wait);
893 | }
894 | };
895 | }
896 |
897 | function nexttick(func) {
898 | return setTimeout(func, 0);
899 | }
900 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-html/tippy.css:
--------------------------------------------------------------------------------
1 | .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}
--------------------------------------------------------------------------------
/docs/site_libs/quarto-html/tippy.umd.min.js:
--------------------------------------------------------------------------------
1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F}));
2 |
3 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-nav/headroom.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it
3 | * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js
4 | * License: MIT
5 | */
6 |
7 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s});
8 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-nav/quarto-nav.js:
--------------------------------------------------------------------------------
1 | const headroomChanged = new CustomEvent("quarto-hrChanged", {
2 | detail: {},
3 | bubbles: true,
4 | cancelable: false,
5 | composed: false,
6 | });
7 |
8 | window.document.addEventListener("DOMContentLoaded", function () {
9 | let init = false;
10 |
11 | // Manage the back to top button, if one is present.
12 | let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
13 | const scrollDownBuffer = 5;
14 | const scrollUpBuffer = 35;
15 | const btn = document.getElementById("quarto-back-to-top");
16 | const hideBackToTop = () => {
17 | btn.style.display = "none";
18 | };
19 | const showBackToTop = () => {
20 | btn.style.display = "inline-block";
21 | };
22 | if (btn) {
23 | window.document.addEventListener(
24 | "scroll",
25 | function () {
26 | const currentScrollTop =
27 | window.pageYOffset || document.documentElement.scrollTop;
28 |
29 | // Shows and hides the button 'intelligently' as the user scrolls
30 | if (currentScrollTop - scrollDownBuffer > lastScrollTop) {
31 | hideBackToTop();
32 | lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
33 | } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) {
34 | showBackToTop();
35 | lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop;
36 | }
37 |
38 | // Show the button at the bottom, hides it at the top
39 | if (currentScrollTop <= 0) {
40 | hideBackToTop();
41 | } else if (
42 | window.innerHeight + currentScrollTop >=
43 | document.body.offsetHeight
44 | ) {
45 | showBackToTop();
46 | }
47 | },
48 | false
49 | );
50 | }
51 |
52 | function throttle(func, wait) {
53 | var timeout;
54 | return function () {
55 | const context = this;
56 | const args = arguments;
57 | const later = function () {
58 | clearTimeout(timeout);
59 | timeout = null;
60 | func.apply(context, args);
61 | };
62 |
63 | if (!timeout) {
64 | timeout = setTimeout(later, wait);
65 | }
66 | };
67 | }
68 |
69 | function headerOffset() {
70 | // Set an offset if there is are fixed top navbar
71 | const headerEl = window.document.querySelector("header.fixed-top");
72 | if (headerEl) {
73 | return headerEl.clientHeight;
74 | } else {
75 | return 0;
76 | }
77 | }
78 |
79 | function footerOffset() {
80 | const footerEl = window.document.querySelector("footer.footer");
81 | if (footerEl) {
82 | return footerEl.clientHeight;
83 | } else {
84 | return 0;
85 | }
86 | }
87 |
88 | function dashboardOffset() {
89 | const dashboardNavEl = window.document.getElementById(
90 | "quarto-dashboard-header"
91 | );
92 | if (dashboardNavEl !== null) {
93 | return dashboardNavEl.clientHeight;
94 | } else {
95 | return 0;
96 | }
97 | }
98 |
99 | function updateDocumentOffsetWithoutAnimation() {
100 | updateDocumentOffset(false);
101 | }
102 |
103 | function updateDocumentOffset(animated) {
104 | // set body offset
105 | const topOffset = headerOffset();
106 | const bodyOffset = topOffset + footerOffset() + dashboardOffset();
107 | const bodyEl = window.document.body;
108 | bodyEl.setAttribute("data-bs-offset", topOffset);
109 | bodyEl.style.paddingTop = topOffset + "px";
110 |
111 | // deal with sidebar offsets
112 | const sidebars = window.document.querySelectorAll(
113 | ".sidebar, .headroom-target"
114 | );
115 | sidebars.forEach((sidebar) => {
116 | if (!animated) {
117 | sidebar.classList.add("notransition");
118 | // Remove the no transition class after the animation has time to complete
119 | setTimeout(function () {
120 | sidebar.classList.remove("notransition");
121 | }, 201);
122 | }
123 |
124 | if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) {
125 | sidebar.style.top = "0";
126 | sidebar.style.maxHeight = "100vh";
127 | } else {
128 | sidebar.style.top = topOffset + "px";
129 | sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)";
130 | }
131 | });
132 |
133 | // allow space for footer
134 | const mainContainer = window.document.querySelector(".quarto-container");
135 | if (mainContainer) {
136 | mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)";
137 | }
138 |
139 | // link offset
140 | let linkStyle = window.document.querySelector("#quarto-target-style");
141 | if (!linkStyle) {
142 | linkStyle = window.document.createElement("style");
143 | linkStyle.setAttribute("id", "quarto-target-style");
144 | window.document.head.appendChild(linkStyle);
145 | }
146 | while (linkStyle.firstChild) {
147 | linkStyle.removeChild(linkStyle.firstChild);
148 | }
149 | if (topOffset > 0) {
150 | linkStyle.appendChild(
151 | window.document.createTextNode(`
152 | section:target::before {
153 | content: "";
154 | display: block;
155 | height: ${topOffset}px;
156 | margin: -${topOffset}px 0 0;
157 | }`)
158 | );
159 | }
160 | if (init) {
161 | window.dispatchEvent(headroomChanged);
162 | }
163 | init = true;
164 | }
165 |
166 | // initialize headroom
167 | var header = window.document.querySelector("#quarto-header");
168 | if (header && window.Headroom) {
169 | const headroom = new window.Headroom(header, {
170 | tolerance: 5,
171 | onPin: function () {
172 | const sidebars = window.document.querySelectorAll(
173 | ".sidebar, .headroom-target"
174 | );
175 | sidebars.forEach((sidebar) => {
176 | sidebar.classList.remove("sidebar-unpinned");
177 | });
178 | updateDocumentOffset();
179 | },
180 | onUnpin: function () {
181 | const sidebars = window.document.querySelectorAll(
182 | ".sidebar, .headroom-target"
183 | );
184 | sidebars.forEach((sidebar) => {
185 | sidebar.classList.add("sidebar-unpinned");
186 | });
187 | updateDocumentOffset();
188 | },
189 | });
190 | headroom.init();
191 |
192 | let frozen = false;
193 | window.quartoToggleHeadroom = function () {
194 | if (frozen) {
195 | headroom.unfreeze();
196 | frozen = false;
197 | } else {
198 | headroom.freeze();
199 | frozen = true;
200 | }
201 | };
202 | }
203 |
204 | window.addEventListener(
205 | "hashchange",
206 | function (e) {
207 | if (
208 | getComputedStyle(document.documentElement).scrollBehavior !== "smooth"
209 | ) {
210 | window.scrollTo(0, window.pageYOffset - headerOffset());
211 | }
212 | },
213 | false
214 | );
215 |
216 | // Observe size changed for the header
217 | const headerEl = window.document.querySelector("header.fixed-top");
218 | if (headerEl && window.ResizeObserver) {
219 | const observer = new window.ResizeObserver(() => {
220 | setTimeout(updateDocumentOffsetWithoutAnimation, 0);
221 | });
222 | observer.observe(headerEl, {
223 | attributes: true,
224 | childList: true,
225 | characterData: true,
226 | });
227 | } else {
228 | window.addEventListener(
229 | "resize",
230 | throttle(updateDocumentOffsetWithoutAnimation, 50)
231 | );
232 | }
233 | setTimeout(updateDocumentOffsetWithoutAnimation, 250);
234 |
235 | // fixup index.html links if we aren't on the filesystem
236 | if (window.location.protocol !== "file:") {
237 | const links = window.document.querySelectorAll("a");
238 | for (let i = 0; i < links.length; i++) {
239 | if (links[i].href) {
240 | links[i].href = links[i].href.replace(/\/index\.html/, "/");
241 | }
242 | }
243 |
244 | // Fixup any sharing links that require urls
245 | // Append url to any sharing urls
246 | const sharingLinks = window.document.querySelectorAll(
247 | "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item"
248 | );
249 | for (let i = 0; i < sharingLinks.length; i++) {
250 | const sharingLink = sharingLinks[i];
251 | const href = sharingLink.getAttribute("href");
252 | if (href) {
253 | sharingLink.setAttribute(
254 | "href",
255 | href.replace("|url|", window.location.href)
256 | );
257 | }
258 | }
259 |
260 | // Scroll the active navigation item into view, if necessary
261 | const navSidebar = window.document.querySelector("nav#quarto-sidebar");
262 | if (navSidebar) {
263 | // Find the active item
264 | const activeItem = navSidebar.querySelector("li.sidebar-item a.active");
265 | if (activeItem) {
266 | // Wait for the scroll height and height to resolve by observing size changes on the
267 | // nav element that is scrollable
268 | const resizeObserver = new ResizeObserver((_entries) => {
269 | // The bottom of the element
270 | const elBottom = activeItem.offsetTop;
271 | const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight;
272 |
273 | // The element height and scroll height are the same, then we are still loading
274 | if (viewBottom !== navSidebar.scrollHeight) {
275 | // Determine if the item isn't visible and scroll to it
276 | if (elBottom >= viewBottom) {
277 | navSidebar.scrollTop = elBottom;
278 | }
279 |
280 | // stop observing now since we've completed the scroll
281 | resizeObserver.unobserve(navSidebar);
282 | }
283 | });
284 | resizeObserver.observe(navSidebar);
285 | }
286 | }
287 | }
288 | });
289 |
--------------------------------------------------------------------------------
/docs/site_libs/quarto-search/fuse.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)
3 | *
4 | * Copyright (c) 2022 Kiro Risk (http://kiro.me)
5 | * All Rights Reserved. Apache Software License 2.0
6 | *
7 | * http://www.apache.org/licenses/LICENSE-2.0
8 | */
9 | var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t();
--------------------------------------------------------------------------------
/docs/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | https://ayueme.github.io/R_machine_learning/index.html
5 | 2024-05-05T09:58:59.457Z
6 |
7 |
8 | https://ayueme.github.io/R_machine_learning/机器学习简介.html
9 | 2024-04-30T04:13:34.908Z
10 |
11 |
12 | https://ayueme.github.io/R_machine_learning/数据预处理.html
13 | 2024-05-05T11:32:07.645Z
14 |
15 |
16 | https://ayueme.github.io/R_machine_learning/数据划分.html
17 | 2024-05-04T14:06:30.378Z
18 |
19 |
20 | https://ayueme.github.io/R_machine_learning/模型评价.html
21 | 2024-05-05T11:03:10.974Z
22 |
23 |
24 | https://ayueme.github.io/R_machine_learning/超参数调优简介.html
25 | 2024-05-04T13:44:30.659Z
26 |
27 |
28 | https://ayueme.github.io/R_machine_learning/变量选择.html
29 | 2024-04-27T11:10:17.968Z
30 |
31 |
32 | https://ayueme.github.io/R_machine_learning/数据准备.html
33 | 2024-05-02T13:01:25.246Z
34 |
35 |
36 | https://ayueme.github.io/R_machine_learning/聚类分析.html
37 | 2024-05-05T10:00:21.909Z
38 |
39 |
40 | https://ayueme.github.io/R_machine_learning/主成分分析.html
41 | 2024-05-05T10:02:53.709Z
42 |
43 |
44 | https://ayueme.github.io/R_machine_learning/主成分分析可视化.html
45 | 2024-05-05T10:04:57.571Z
46 |
47 |
48 | https://ayueme.github.io/R_machine_learning/多元线性回归.html
49 | 2024-05-05T10:06:30.942Z
50 |
51 |
52 | https://ayueme.github.io/R_machine_learning/逻辑回归.html
53 | 2024-05-05T10:20:31.882Z
54 |
55 |
56 | https://ayueme.github.io/R_machine_learning/glmnet.html
57 | 2024-05-05T10:25:24.794Z
58 |
59 |
60 | https://ayueme.github.io/R_machine_learning/KNN.html
61 | 2024-05-02T12:48:41.463Z
62 |
63 |
64 | https://ayueme.github.io/R_machine_learning/支持向量机.html
65 | 2024-05-05T11:36:55.781Z
66 |
67 |
68 | https://ayueme.github.io/R_machine_learning/支持向量机核函数比较.html
69 | 2024-05-05T11:41:03.106Z
70 |
71 |
72 | https://ayueme.github.io/R_machine_learning/决策树.html
73 | 2024-05-05T11:42:03.059Z
74 |
75 |
76 | https://ayueme.github.io/R_machine_learning/决策树可视化.html
77 | 2024-04-28T12:55:26.011Z
78 |
79 |
80 | https://ayueme.github.io/R_machine_learning/集成算法类型.html
81 | 2024-05-05T10:38:32.656Z
82 |
83 |
84 | https://ayueme.github.io/R_machine_learning/随机森林.html
85 | 2024-05-05T10:40:15.964Z
86 |
87 |
88 | https://ayueme.github.io/R_machine_learning/gbm.html
89 | 2024-05-05T10:44:34.744Z
90 |
91 |
92 | https://ayueme.github.io/R_machine_learning/xgboost.html
93 | 2024-05-05T10:58:04.525Z
94 |
95 |
96 | https://ayueme.github.io/R_machine_learning/lightGBM.html
97 | 2024-05-05T10:59:42.438Z
98 |
99 |
100 | https://ayueme.github.io/R_machine_learning/catboost.html
101 | 2024-05-02T12:48:16.839Z
102 |
103 |
104 | https://ayueme.github.io/R_machine_learning/9999-appendix.html
105 | 2024-05-05T10:46:43.938Z
106 |
107 |
108 | https://ayueme.github.io/R_machine_learning/R语言实战机器学习.pdf
109 | 2024-05-05T12:01:03.938Z
110 |
111 |
112 |
--------------------------------------------------------------------------------
/docs/主成分分析_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/主成分分析_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-17-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-17-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-18-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-18-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-19-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-19-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-20-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-20-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-21-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-21-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-22-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-22-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-23-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-23-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-24-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-24-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-25-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-25-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-26-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-26-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-30-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-30-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-31-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-31-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/主成分分析可视化_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/主成分分析可视化_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-19-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-19-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/决策树_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/决策树可视化_files/figure-html/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树可视化_files/figure-html/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/docs/决策树可视化_files/figure-html/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树可视化_files/figure-html/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/docs/决策树可视化_files/figure-html/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树可视化_files/figure-html/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/docs/决策树可视化_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/决策树可视化_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-21-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-21-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/docs/多元线性回归_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/多元线性回归_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-8-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-8-2.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-8-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-8-3.png
--------------------------------------------------------------------------------
/docs/支持向量机_files/figure-html/unnamed-chunk-8-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机_files/figure-html/unnamed-chunk-8-4.png
--------------------------------------------------------------------------------
/docs/支持向量机核函数比较_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机核函数比较_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/支持向量机核函数比较_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/支持向量机核函数比较_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/数据准备_files/figure-html/unnamed-chunk-2-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据准备_files/figure-html/unnamed-chunk-2-1.png
--------------------------------------------------------------------------------
/docs/数据准备_files/figure-html/unnamed-chunk-3-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据准备_files/figure-html/unnamed-chunk-3-1.png
--------------------------------------------------------------------------------
/docs/数据准备_files/figure-html/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据准备_files/figure-html/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/docs/数据准备_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据准备_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-html/unnamed-chunk-15-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-html/unnamed-chunk-15-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-pdf/unnamed-chunk-10-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-pdf/unnamed-chunk-10-1.pdf
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-pdf/unnamed-chunk-11-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-pdf/unnamed-chunk-11-1.pdf
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-pdf/unnamed-chunk-15-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-pdf/unnamed-chunk-15-1.pdf
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-pdf/unnamed-chunk-6-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-pdf/unnamed-chunk-6-1.pdf
--------------------------------------------------------------------------------
/docs/数据预处理_files/figure-pdf/unnamed-chunk-9-1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/数据预处理_files/figure-pdf/unnamed-chunk-9-1.pdf
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-10-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-10-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-11-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-11-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-12-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-12-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-13-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-13-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-14-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-14-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-16-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-16-2.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-17-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-17-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-18-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-18-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-20-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-20-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-21-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-21-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-24-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-24-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-25-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-25-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-5-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-5-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-5-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-5-2.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-6-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-6-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/聚类分析_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/聚类分析_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-15-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-15-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-16-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-16-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-17-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-17-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-4-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-4-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-7-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-7-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-8-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-8-1.png
--------------------------------------------------------------------------------
/docs/随机森林_files/figure-html/unnamed-chunk-9-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/docs/随机森林_files/figure-html/unnamed-chunk-9-1.png
--------------------------------------------------------------------------------
/figs/46346465dfgdfgd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/46346465dfgdfgd.jpg
--------------------------------------------------------------------------------
/figs/6325461.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/6325461.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-22_15-54-53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-22_15-54-53.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-22_16-05-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-22_16-05-22.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-22_16-12-43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-22_16-12-43.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-26_19-58-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-26_19-58-41.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-26_20-06-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-26_20-06-48.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-27_19-11-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-27_19-11-28.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-27_19-52-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-27_19-52-48.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-27_20-19-25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-27_20-19-25.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-27_20-20-23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-27_20-20-23.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-28_10-41-44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-28_10-41-44.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-28_12-44-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-28_12-44-41.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-28_12-56-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-28_12-56-47.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-30_20-18-13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-30_20-18-13.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-04-30_20-19-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-04-30_20-19-09.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-05-05_19-41-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-05-05_19-41-50.png
--------------------------------------------------------------------------------
/figs/PixPin_2024-05-17_15-53-34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/PixPin_2024-05-17_15-53-34.png
--------------------------------------------------------------------------------
/figs/Snipaste_2023-04-01_14-12-58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/Snipaste_2023-04-01_14-12-58.png
--------------------------------------------------------------------------------
/figs/Snipaste_2023-04-05_16-05-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/Snipaste_2023-04-05_16-05-01.png
--------------------------------------------------------------------------------
/figs/Snipaste_2023-04-05_16-07-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/Snipaste_2023-04-05_16-07-01.png
--------------------------------------------------------------------------------
/figs/Snipaste_2023-06-12_15-40-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/Snipaste_2023-06-12_15-40-00.png
--------------------------------------------------------------------------------
/figs/模型复杂度和泛化误差.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ayueme/machine_learning_base_r/b3e8ded7cdb7f821e48313d652e8a4e8628d07ae/figs/模型复杂度和泛化误差.png
--------------------------------------------------------------------------------
/preamble.tex:
--------------------------------------------------------------------------------
1 | \usepackage[heading=true, fontset=fandol, UTF8]{ctex}
2 | \usepackage[scale=0.85]{sourcecodepro}
3 | %\usepackage{booktabs} % 控制三线表
4 | \RecustomVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\},formatcom=\xeCJKVerbAddon}
5 | %\usepackage{bookmark}
6 | %\bookmarksetup{open,numbered,
7 | %depth=2, %设置PDF的书签级别,2显示到subsection,3显示到subsubsection
8 | %addtohook={%
9 | %\ifnum\bookmarkget{level}=0 % chapter
10 | %\bookmarksetup{bold}%PDF标签的主标题加粗
11 | %\fi
12 | %\ifnum\bookmarkget{level}=-1 % part
13 | %\bookmarksetup{color=orange,bold}%PDF标签标题颜色
14 | %\fi
15 | %}
16 | %}
17 |
18 | %控制行距
19 | \usepackage{setspace}
20 | %\onehalfspacing
21 | \linespread{1.25}
22 | \setlength{\intextsep}{0.5em} % 浮动对象(如图片、表格)和文字之间的间距设置为0.5em
23 | \setlength{\textfloatsep}{0.5em} % 浮动对象和文本之间的间距设置为0.5em
24 |
25 |
26 | \usepackage{xcolor}
27 | \definecolor{light}{HTML}{F6F6F6}
28 | \definecolor{highlight}{HTML}{0074CC}
29 | \definecolor{dark}{HTML}{330033}
--------------------------------------------------------------------------------