<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>月明</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://ideaforge.icu/</id>
  <link href="https://ideaforge.icu/" rel="alternate"/>
  <link href="https://ideaforge.icu/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 月明</rights>
  <subtitle>人的内心不种满鲜花，就会长满杂草。</subtitle>
  <title>
    <![CDATA[Yueming & Blog]]>
  </title>
  <updated>2026-06-10T07:58:26.426Z</updated>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="blog_learning" scheme="https://ideaforge.icu/tags/blog-learning/"/>
    <content>
      <![CDATA[<h3 id="关于hexo-next的美化"><a href="#关于hexo-next的美化" class="headerlink" title="关于hexo-next的美化"></a>关于hexo-next的美化</h3><h4 id="如何创建一个新的博客文章？（2025-10-27）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何创建一个新的博客文章？（2025-10-27）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何创建一个新的博客文章？（2025-10-27）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何创建一个新的博客文章？（2025-10-27）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><p>hexo new “文章标题”<br>或者在对应的文件夹在直接添加对应.md文件，注意编辑文件头信息yaml格式</p><h4 id="如何更改首页置顶顺序？（2025-10-28）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何更改首页置顶顺序？（2025-10-28）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何更改首页置顶顺序？（2025-10-28）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何更改首页置顶顺序？（2025-10-28）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><ul><li>可以参考这篇博主的文章<a href="https://www.axitown.com/a764f98564af/">阿希の小镇, 2025</a></li></ul><h4 id="如何更改首页，仅部分显示文章？-2025-10-29"><a href="#如何更改首页，仅部分显示文章？-2025-10-29" class="headerlink" title="如何更改首页，仅部分显示文章？(2025-10-29)"></a>如何更改首页，仅部分显示文章？(2025-10-29)</h4><h4 id="如何实现副标题的动态显示？-2025-10-30"><a href="#如何实现副标题的动态显示？-2025-10-30" class="headerlink" title="如何实现副标题的动态显示？(2025-10-30)"></a>如何实现副标题的动态显示？(2025-10-30)</h4><h4 id="文章如何只显示部分文章内容？-2025-10-30-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#文章如何只显示部分文章内容？-2025-10-30-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="文章如何只显示部分文章内容？(2025-10-30) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>文章如何只显示部分文章内容？(2025-10-30) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><ul><li>可以在文章的md文件中，添加<span id="more"></span>注释，注释之前的内容就会显示在首页，注释之后的内容就会隐藏起来。</li></ul><h4 id="链接跳转样式（2025-10-30）"><a href="#链接跳转样式（2025-10-30）" class="headerlink" title="链接跳转样式（2025-10-30）"></a>链接跳转样式（2025-10-30）</h4><ul><li>链接跳转样式的图标美化</li></ul><p>博客美化的教程<a href="https://fatedshadow.github.io/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/%E5%8D%9A%E5%AE%A2/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-Hexo-Next-%E7%BE%8E%E5%8C%96%E5%8D%9A%E5%AE%A2/">text</a></p><h4 id="如何自动折叠代码块？（2025-11-06）-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何自动折叠代码块？（2025-11-06）-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何自动折叠代码块？（2025-11-06） ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何自动折叠代码块？（2025-11-06） ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><p>最新版的hexo-next主题已经支持代码折叠，去主题配置yml文件中，找到codeblock，将fold的enable设置为true即可。</p><!-- more --><hr><h3 id="关于如何优化访问，正规的站点建设"><a href="#关于如何优化访问，正规的站点建设" class="headerlink" title="关于如何优化访问，正规的站点建设"></a>关于如何优化访问，正规的站点建设</h3><h4 id="为什么每段时间自己的域名就要重新对齐GitHub（2025-10-29）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#为什么每段时间自己的域名就要重新对齐GitHub（2025-10-29）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="为什么每段时间自己的域名就要重新对齐GitHub（2025-10-29）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>为什么每段时间自己的域名就要重新对齐GitHub（2025-10-29）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><ul><li>可以参考这篇博主的文章<a href="https://www.cnblogs.com/xieqk/p/Github-Page-DNS.html">域名DNS解析到自己的githubpages页面,谢乔康</a></li></ul><h4 id="如何配置自己的域名？（2025-10-27）"><a href="#如何配置自己的域名？（2025-10-27）" class="headerlink" title="如何配置自己的域名？（2025-10-27）"></a><strong>如何配置自己的域名？（2025-10-27）</strong></h4><p>查看<a href="/2025/10/27/yuming/">域名配置</a></p><h4 id="如何添加自己的友链？（2025-10-28）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何添加自己的友链？（2025-10-28）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何添加自己的友链？（2025-10-28）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何添加自己的友链？（2025-10-28）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h4><ul><li>友链是指在博客中添加其他博客作者的链接，以展示他们的创作和关注。</li></ul><blockquote><p>感悟思考：现在hexo博客的建立主要靠，<strong>浏览器的搜索查找别人的技术文章</strong>以及<strong>ai的回答</strong>。还是要多学会用<strong>dp、chatgpt</strong>等工具，来理解问题解决问题。Trea真的太垃圾了，要加快自己的学习速度！</p></blockquote><h4 id="如何添加文章分享功能？（2025-10-30）"><a href="#如何添加文章分享功能？（2025-10-30）" class="headerlink" title="如何添加文章分享功能？（2025-10-30）"></a>如何添加文章分享功能？（2025-10-30）</h4><h4 id="如何将自己的ipynb文件转换为markdown文件？并发表在博客上？（2025-11-02）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何将自己的ipynb文件转换为markdown文件？并发表在博客上？（2025-11-02）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何将自己的ipynb文件转换为markdown文件？并发表在博客上？（2025-11-02）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何将自己的ipynb文件转换为markdown文件？并发表在博客上？（2025-11-02）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><p>参考这篇文章<a href="https://juejin.cn/post/7506038621612245033">惜鸟，2025</a></p><h4 id="如何升级评论系统，GitHub评论系统较为封闭并不开放？（2025-11-03）"><a href="#如何升级评论系统，GitHub评论系统较为封闭并不开放？（2025-11-03）" class="headerlink" title="如何升级评论系统，GitHub评论系统较为封闭并不开放？（2025-11-03）"></a>如何升级评论系统，GitHub评论系统较为封闭并不开放？（2025-11-03）</h4><h4 id="RSS订阅功能如何添加？（2025-11-04）"><a href="#RSS订阅功能如何添加？（2025-11-04）" class="headerlink" title="RSS订阅功能如何添加？（2025-11-04）"></a>RSS订阅功能如何添加？（2025-11-04）</h4><ul><li>添加<a href="https://www.boyouquan.com/home">博客圈</a></li></ul><hr><h3 id="关于markdown的使用"><a href="#关于markdown的使用" class="headerlink" title="关于markdown的使用"></a>关于markdown的使用</h3><p>markdown是一种轻量级的标记语言，用于在文本中添加格式化元素。它简单易学，同时也非常灵活。（obsidion、blog必备的技能、现在ai回答输出的格式也是markdown例如deepseek的回答、）基础语法参考(小刘在路上[^1]，2024)</p><h4 id="如何链接文章？（2025-10-27）-有问题跳转找不到网页，亟待解决-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何链接文章？（2025-10-27）-有问题跳转找不到网页，亟待解决-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何链接文章？（2025-10-27）,有问题跳转找不到网页，亟待解决 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何链接文章？（2025-10-27）,有问题跳转找不到网页，亟待解决 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><h5 id="内部链接-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#内部链接-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="内部链接 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>内部链接 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h5><ul><li>这种问题是由于在hexo生成的public文件夹中，文章的路径与链接的路径不一致导致的。</li><li>解决方法：在hexo配置文件中，将permalink设置为&#x2F;:year&#x2F;:month&#x2F;:day&#x2F;:title&#x2F;，例如：permalink: &#x2F;:year&#x2F;:month&#x2F;:day&#x2F;:title&#x2F;</li><li>这样，在生成的public文件夹中，文章的路径就与链接的路径一致了。</li></ul><p>例如，文章的路径为&#x2F;2025&#x2F;10&#x2F;27&#x2F;yuming&#x2F;，那么链接就为<a href="/2025/10/27/yuming/">域名配置</a></p><h5 id="外部链接-https-www-baidu-com-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#外部链接-https-www-baidu-com-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="外部链接(https://www.baidu.com/) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>外部链接(<a href="https://www.baidu.com/">https://www.baidu.com/</a>) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h5><ul><li>外部链接是指指向其他网站的链接，例如：<a href="https://www.baidu.com/">百度</a></li><li>外部链接的安全链接的调试可能存在问题（待解决）</li></ul><h5 id="外部链接跳转无效问题？（2025-10-29）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#外部链接跳转无效问题？（2025-10-29）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="外部链接跳转无效问题？（2025-10-29）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>外部链接跳转无效问题？（2025-10-29）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h5><ul><li>问题出在butterfly与next主题的容器选择器不同所导致的，致谢<a href="https://blog.liushen.fun/posts/1dfd1f41/">LiuShen,2024</a></li></ul><h4 id="如何添加脚注，来致谢引用参考链接的作者？（2025-10-27）15min-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何添加脚注，来致谢引用参考链接的作者？（2025-10-27）15min-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何添加脚注，来致谢引用参考链接的作者？（2025-10-27）15min ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何添加脚注，来致谢引用参考链接的作者？（2025-10-27）15min ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h4><p>[^1]: 小刘在路上, 2024. 手把手教会你使用Markdown. CNDS, <a href="https://blog.csdn.net/qq_40818172/article/details/126260661">https://blog.csdn.net/qq_40818172/article/details/126260661</a></p>]]>
    </content>
    <id>https://ideaforge.icu/2026/06/10/blog_learning/</id>
    <link href="https://ideaforge.icu/2026/06/10/blog_learning/"/>
    <published>2026-06-10T07:58:26.426Z</published>
    <summary>这是一篇关于Hexo-Next博客学习进展的总结文章，记录了作者在博客美化、站点建设和Markdown使用方面的学习笔记，包含如何创建新文章、更改首页置顶顺序、实现文章部分显示、配置域名、添加友链、将ipynb转换为markdown、解决链接跳转问题、添加脚注等实用技巧，每个技巧都标注了学习日期，并提供了相关参考链接和解决方法。</summary>
    <title>blog学习进展/hexo-next教程</title>
    <updated>2026-06-10T07:58:26.426Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="教程" scheme="https://ideaforge.icu/categories/%E6%95%99%E7%A8%8B/"/>
    <category term="claude_code" scheme="https://ideaforge.icu/tags/claude-code/"/>
    <content>
      <![CDATA[<h1 id="如何安装claude-code-vscode的新编程模式-元工具的方式不止编程"><a href="#如何安装claude-code-vscode的新编程模式-元工具的方式不止编程" class="headerlink" title="如何安装claude code+vscode的新编程模式? 元工具的方式不止编程"></a>如何安装claude code+vscode的新编程模式? 元工具的方式不止编程</h1><h1 id="关于安装不推荐采用claude-code官方的安装指令（地区和网络问题），也就是下面这行代码"><a href="#关于安装不推荐采用claude-code官方的安装指令（地区和网络问题），也就是下面这行代码" class="headerlink" title="关于安装不推荐采用claude code官方的安装指令（地区和网络问题），也就是下面这行代码"></a>关于安装不推荐采用<a href="https://code.claude.com/docs/zh-CN/overview">claude code官方的安装指令</a>（地区和网络问题），也就是下面这行代码</h1><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">irm</span> https://claude.ai/install.ps1 | iex</span><br></pre></td></tr></table></figure><h1 id="推荐采用以下两种方式："><a href="#推荐采用以下两种方式：" class="headerlink" title="推荐采用以下两种方式："></a>推荐采用以下两种方式：</h1><h1 id="1-采用npm的方式"><a href="#1-采用npm的方式" class="headerlink" title="1.采用npm的方式"></a>1.采用<a href="https://blog.csdn.net/kai_2003/article/details/158469982">npm的方式</a></h1><h2 id="先安装node，node-js官网"><a href="#先安装node，node-js官网" class="headerlink" title="先安装node，node.js官网"></a>先安装node，<a href="https://nodejs.org/zh-cn">node.js官网</a></h2><h3 id="对于liunx：一般先安装nvm，安装node，也就有了npm"><a href="#对于liunx：一般先安装nvm，安装node，也就有了npm" class="headerlink" title="对于liunx：一般先安装nvm，安装node，也就有了npm"></a>对于liunx：一般先安装nvm，安装node，也就有了npm</h3><h3 id="对于windows：直接去官网下载exe，然后，在终端测试版本号，即可验证安装是否成功"><a href="#对于windows：直接去官网下载exe，然后，在终端测试版本号，即可验证安装是否成功" class="headerlink" title="对于windows：直接去官网下载exe，然后，在终端测试版本号，即可验证安装是否成功"></a>对于windows：直接去官网下载exe，然后，在终端测试版本号，即可验证安装是否成功</h3><h1 id="2-采用字节，的教程（让卖方告诉你使用的方法，说明书一样），这种方法往往实用且高效，字节也有个agent的脚本ark-helper"><a href="#2-采用字节，的教程（让卖方告诉你使用的方法，说明书一样），这种方法往往实用且高效，字节也有个agent的脚本ark-helper" class="headerlink" title="2.采用字节，的教程（让卖方告诉你使用的方法，说明书一样），这种方法往往实用且高效，字节也有个agent的脚本ark-helper."></a>2.采用<a href="https://www.volcengine.com/docs/82379/1928262?lang=zh#7fd1eee7">字节，的教程（让卖方告诉你使用的方法，说明书一样）</a>，这种方法往往实用且高效，字节也有个agent的脚本ark-helper.</h1><h1 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h1><h2 id="关于如何快速管理自己的agent端的模型，如何快速切换，这里笔者强力推荐一个项目，叫做cc-switch；通过它我们可以实现openclaw、claude-code、codex等cil工具背后的模型接口的快速的切换。"><a href="#关于如何快速管理自己的agent端的模型，如何快速切换，这里笔者强力推荐一个项目，叫做cc-switch；通过它我们可以实现openclaw、claude-code、codex等cil工具背后的模型接口的快速的切换。" class="headerlink" title="关于如何快速管理自己的agent端的模型，如何快速切换，这里笔者强力推荐一个项目，叫做cc switch；通过它我们可以实现openclaw、claude code、codex等cil工具背后的模型接口的快速的切换。"></a>关于如何快速管理自己的agent端的模型，如何快速切换，这里笔者强力推荐一个项目，叫做<a href="https://github.com/farion1231/cc-switch/blob/main/README_ZH.md">cc switch</a>；通过它我们可以实现openclaw、claude code、codex等cil工具背后的模型接口的快速的切换。</h2>]]>
    </content>
    <id>https://ideaforge.icu/2026/04/30/Claude_code_install/</id>
    <link href="https://ideaforge.icu/2026/04/30/Claude_code_install/"/>
    <published>2026-04-29T16:00:00.000Z</published>
    <summary>一步步教你使用强大的ai操控，的cil工具Claude code，元工具不止用来编程，文献检索，数据分析，科研绘图；天才第一步——安装配置Claude code</summary>
    <title>claude_code 配置安装完整教程</title>
    <updated>2026-04-29T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="教程" scheme="https://ideaforge.icu/categories/%E6%95%99%E7%A8%8B/"/>
    <category term="OpenClaw" scheme="https://ideaforge.icu/tags/OpenClaw/"/>
    <category term="浏览器自动化" scheme="https://ideaforge.icu/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="爬虫" scheme="https://ideaforge.icu/tags/%E7%88%AC%E8%99%AB/"/>
    <category term="WSL2" scheme="https://ideaforge.icu/tags/WSL2/"/>
    <content>
      <![CDATA[<h1 id="静态神器：web-fetch-内置工具"><a href="#静态神器：web-fetch-内置工具" class="headerlink" title="静态神器：web_fetch 内置工具"></a>静态神器：web_fetch 内置工具</h1><h2 id="原理机制-获取-URL-并提取可读内容"><a href="#原理机制-获取-URL-并提取可读内容" class="headerlink" title="原理机制 - 获取 URL 并提取可读内容"></a>原理机制 - 获取 URL 并提取可读内容</h2><p>详细见 <a href="https://openclaw.cc/tools/web.html#web-fetch">openclaw中文站官方解释</a></p><p>![[images&#x2F;Pasted image 20260414120119.png]]</p><ol><li><strong>纯 HTTP 请求</strong>：发送 GET 请求（不执行 JavaScript），用 Chrome-like UA 模拟正常浏览器 </li><li><strong>SSRF 防护</strong>：默认阻止私有&#x2F;内网主机，每一步重定向都重新检查 </li><li><strong>正文提取</strong>：用 Readability 算法从 HTML 中提取主体内容，去除导航、广告等干扰 </li><li><strong>格式转换</strong>：输出转换为干净的 Markdown 或纯文本 </li><li><strong>回退机制</strong>：提取失败且配置了 Firecrawl 时，自动回退到 Firecrawl API </li><li><strong>缓存</strong>：相同 URL 结果缓存 15 分钟，减少重复请求</li></ol><h2 id="使用场景"><a href="#使用场景" class="headerlink" title="使用场景"></a>使用场景</h2><p>✅ <strong>适合</strong>：静态网页、文章、文档、API 数据获取<br>❌ <strong>不适合</strong>：JavaScript 动态渲染页面、需要登录的页面、交互操作  </p><p>总结：<strong>轻量快速获取静态网页正文</strong>，动态内容请用 browser&#x2F;agent-browser。</p><h1 id="通过-Chrome-DevTools-MCP-连接现有会话"><a href="#通过-Chrome-DevTools-MCP-连接现有会话" class="headerlink" title="通过 Chrome DevTools MCP 连接现有会话"></a>通过 Chrome DevTools MCP 连接现有会话</h1><blockquote><p><a href="https://docs.openclaw.ai/zh-CN/tools/browser#%E9%80%9A%E8%BF%87-chrome-devtools-mcp-%E8%BF%9E%E6%8E%A5%E7%8E%B0%E6%9C%89%E4%BC%9A%E8%AF%9D">官网介绍</a></p></blockquote><h2 id="检查状态"><a href="#检查状态" class="headerlink" title="检查状态"></a>检查状态</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw browser --browser-profile user status </span><br></pre></td></tr></table></figure><p><code>running: true</code> 则成功。</p><h2 id="在浏览器中打开并批准远程调试"><a href="#在浏览器中打开并批准远程调试" class="headerlink" title="在浏览器中打开并批准远程调试"></a>在浏览器中打开并批准远程调试</h2><p>地址：<code>chrome://inspect/#remote-debugging</code></p><p>![[images&#x2F;Pasted image 20260414122323.png]]</p><h2 id="实际操作示例"><a href="#实际操作示例" class="headerlink" title="实际操作示例"></a>实际操作示例</h2><p>![[images&#x2F;Pasted image 20260414122458.png]]</p><h2 id="适用场景"><a href="#适用场景" class="headerlink" title="适用场景"></a>适用场景</h2><p>这种方式非常适合：</p><ul><li>需要登录才能访问的网站</li><li>JavaScript 动态渲染页面</li><li>人机验证（你点击验证，AI 提取内容）</li><li>多种反爬机制</li></ul><h1 id="OpenClaw-独立控制专用浏览器（openclaw-配置文件）"><a href="#OpenClaw-独立控制专用浏览器（openclaw-配置文件）" class="headerlink" title="OpenClaw 独立控制专用浏览器（openclaw 配置文件）"></a>OpenClaw 独立控制专用浏览器（openclaw 配置文件）</h1><h2 id="前置步骤"><a href="#前置步骤" class="headerlink" title="前置步骤"></a>前置步骤</h2><p>安装浏览器可以参考这两篇教程：</p><ul><li><a href="https://juejin.cn/post/7616129123815931931">保姆级 OpenClaw 浏览器配置教程</a></li><li><a href="https://zhuanlan.zhihu.com/p/601320998">WSL 2 GUI 原生支持！Ubuntu 安装 Chrome 浏览器</a></li></ul><h2 id="启动"><a href="#启动" class="headerlink" title="启动"></a>启动</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw browser --browser-profile openclaw start</span><br></pre></td></tr></table></figure><h2 id="检查浏览器状态"><a href="#检查浏览器状态" class="headerlink" title="检查浏览器状态"></a>检查浏览器状态</h2><h3 id="Q：如果遇到自动启动报错，应该怎么办？"><a href="#Q：如果遇到自动启动报错，应该怎么办？" class="headerlink" title="Q：如果遇到自动启动报错，应该怎么办？"></a>Q：如果遇到自动启动报错，应该怎么办？</h3><p>可以使用无头模式（不显示窗口），或者 WSLg 显示窗口，手动启动。</p><hr><h2 id="踩坑总结：WSL2-systemd-环境下-OpenClaw-自启动失败解决方法——额这是小龙虾总结的，仅供参考"><a href="#踩坑总结：WSL2-systemd-环境下-OpenClaw-自启动失败解决方法——额这是小龙虾总结的，仅供参考" class="headerlink" title="踩坑总结：WSL2 + systemd 环境下 OpenClaw 自启动失败解决方法——额这是小龙虾总结的，仅供参考"></a>踩坑总结：WSL2 + systemd 环境下 OpenClaw 自启动失败解决方法——额这是小龙虾总结的，仅供参考</h2><h3 id="问题现象"><a href="#问题现象" class="headerlink" title="问题现象"></a>问题现象</h3><ul><li><code>openclaw browser --profile openclaw start</code> 一直报 <code>Chrome CDP websocket not reachable after start</code></li><li>手动启动 Chrome 能成功，curl 能拿到 CDP 信息，但 OpenClaw 还是连不上</li></ul><h3 id="根本原因"><a href="#根本原因" class="headerlink" title="根本原因"></a>根本原因</h3><p>WSL2 中 <code>openclaw-gateway</code> 由 systemd 管理，<strong>systemd 服务不会继承你终端的 <code>DISPLAY</code> 环境变量</strong>，即使你 <code>echo $DISPLAY</code> 显示 <code>:0</code>，systemd 启动的 Gateway 还是拿不到，Chrome 启动还是找不到 X 服务器，即使开了 <code>headless: true</code> 也会失败。</p><h3 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h3><ol><li><strong>创建 systemd 服务配置，添加 <code>DISPLAY=:0</code> 环境变量</strong></li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl edit --force --full openclaw-gateway.service</span><br></pre></td></tr></table></figure><p>填入以下内容：</p><figure class="highlight ini"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[Unit]</span></span><br><span class="line"><span class="attr">Description</span>=OpenClaw Gateway</span><br><span class="line"><span class="attr">After</span>=network.target</span><br><span class="line"></span><br><span class="line"><span class="section">[Service]</span></span><br><span class="line"><span class="attr">Type</span>=simple</span><br><span class="line"><span class="attr">User</span>=xm</span><br><span class="line"><span class="attr">Environment</span>=DISPLAY=:<span class="number">0</span></span><br><span class="line"><span class="attr">ExecStart</span>=/usr/bin/openclaw gateway start</span><br><span class="line"><span class="attr">WorkingDirectory</span>=%h</span><br><span class="line"><span class="attr">Restart</span>=always</span><br><span class="line"><span class="attr">RestartSec</span>=<span class="number">5</span></span><br><span class="line"></span><br><span class="line"><span class="section">[Install]</span></span><br><span class="line"><span class="attr">WantedBy</span>=multi-user.target</span><br></pre></td></tr></table></figure><ol start="2"><li><strong>重载配置并重启</strong></li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl daemon-reload</span><br><span class="line"><span class="built_in">sudo</span> systemctl restart openclaw-gateway.service</span><br></pre></td></tr></table></figure><ol start="3"><li><strong>测试启动</strong></li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">openclaw browser --browser-profile openclaw start</span><br><span class="line">openclaw browser --browser-profile openclaw status</span><br></pre></td></tr></table></figure><p>现在应该就能显示 <code>running: true</code> 了 ✅</p><h2 id="如果自动启动失败，可以手动启动浏览器，OpenClaw-通过-CDP-连接"><a href="#如果自动启动失败，可以手动启动浏览器，OpenClaw-通过-CDP-连接" class="headerlink" title="如果自动启动失败，可以手动启动浏览器，OpenClaw 通过 CDP 连接"></a>如果自动启动失败，可以手动启动浏览器，OpenClaw 通过 CDP 连接</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/google-chrome-stable --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=/tmp/chrome-openclaw </span><br></pre></td></tr></table></figure><p>参数说明：</p><table><thead><tr><th>参数</th><th>作用</th><th>是否必须</th></tr></thead><tbody><tr><td><code>--headless</code></td><td>无头模式运行，不显示窗口</td><td>✅ 必须</td></tr><tr><td><code>--no-sandbox</code></td><td>WSL2 root 运行必须加，否则权限错误</td><td>✅ 必须</td></tr><tr><td><code>--disable-gpu</code></td><td>禁用 GPU 加速</td><td>✅ 建议</td></tr><tr><td><code>--remote-debugging-port</code></td><td>CDP 调试端口</td><td>✅ 必须</td></tr><tr><td><code>--user-data-dir</code></td><td>独立临时用户数据目录，避免和日常 Chrome 冲突</td><td>✅ 必须</td></tr></tbody></table><h2 id="最后检查状态"><a href="#最后检查状态" class="headerlink" title="最后检查状态"></a>最后检查状态</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw browser --browser-profile openclaw status</span><br></pre></td></tr></table></figure><p><code>running: true</code> 则成功。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>推荐优先使用<strong>第二种方式（连接现有会话）</strong>，适合需要登录、人机验证的场景，踩坑更少。<br>如果需要完全自动化无人值守，再用第三种方式，按照上文修改 systemd 配置就能解决问题。</p>]]>
    </content>
    <id>https://ideaforge.icu/2026/04/15/openclaw-browser-setup/</id>
    <link href="https://ideaforge.icu/2026/04/15/openclaw-browser-setup/"/>
    <published>2026-04-14T16:00:00.000Z</published>
    <summary>详细讲解 OpenClaw 三种浏览器使用方式，解决 WSL2 + systemd 环境下自启动失败问题</summary>
    <title>OpenClaw 浏览器配置完整教程 - 解决 WSL2 自启动失败问题</title>
    <updated>2026-04-14T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="教程" scheme="https://ideaforge.icu/categories/%E6%95%99%E7%A8%8B/"/>
    <category term="OpenClaw" scheme="https://ideaforge.icu/tags/OpenClaw/"/>
    <content>
      <![CDATA[<h1 id="🚀-step1：根据openclaw官网，对应自己系统，使用终端命令下载对应的版本"><a href="#🚀-step1：根据openclaw官网，对应自己系统，使用终端命令下载对应的版本" class="headerlink" title="🚀 step1：根据openclaw官网，对应自己系统，使用终端命令下载对应的版本"></a>🚀 step1：根据<a href="https://openclaw.ai/">openclaw官网</a>，对应自己系统，使用终端命令下载对应的版本</h1><p>![[images&#x2F;Pasted image 20260407090302.png]]</p><h3 id="这里笔者使用的是win的wsl2子系统Ubuntu22-04中的npm下载的；如果你也是win系统官网也是非常强烈的推荐使用WSL2来下载的。✅"><a href="#这里笔者使用的是win的wsl2子系统Ubuntu22-04中的npm下载的；如果你也是win系统官网也是非常强烈的推荐使用WSL2来下载的。✅" class="headerlink" title="这里笔者使用的是win的wsl2子系统Ubuntu22.04中的npm下载的；如果你也是win系统官网也是非常强烈的推荐使用WSL2来下载的。✅"></a>这里笔者使用的是win的wsl2子系统Ubuntu22.04中的npm下载的；如果你也是win系统官网也是非常强烈的推荐使用WSL2来下载的。✅</h3><h1 id="⚙️-step2：进行基础配置，因为小龙虾是数字员工，官网也叫做入职，允许以下代码"><a href="#⚙️-step2：进行基础配置，因为小龙虾是数字员工，官网也叫做入职，允许以下代码" class="headerlink" title="⚙️ step2：进行基础配置，因为小龙虾是数字员工，官网也叫做入职，允许以下代码"></a>⚙️ step2：进行基础配置，因为小龙虾是数字员工，官网也叫做入职，允许以下代码</h1><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw onboard --install-daemon</span><br></pre></td></tr></table></figure><h2 id="QuickStart-vs-Advanced，推荐使用前者进行配置，要提前准备好，大模型的api-key"><a href="#QuickStart-vs-Advanced，推荐使用前者进行配置，要提前准备好，大模型的api-key" class="headerlink" title="QuickStart vs Advanced，推荐使用前者进行配置，要提前准备好，大模型的api_key"></a>QuickStart vs Advanced，推荐使用前者进行配置，要提前准备好，大模型的api_key</h2><h3 id="有无-install-daemon对应——有无后台服务，使网关自动启动-🚀"><a href="#有无-install-daemon对应——有无后台服务，使网关自动启动-🚀" class="headerlink" title="有无--install-daemon对应——有无后台服务，使网关自动启动 🚀"></a>有无<code>--install-daemon</code>对应——有无后台服务，使网关自动启动 🚀</h3><h2 id="无论如何配置，一定包含Model-provider-and-auth（必选，模型的提供者）、Workspace、Gateway（网关配置）、Channels（其他端介入）。具体可以先参考：火山引擎、官方教程"><a href="#无论如何配置，一定包含Model-provider-and-auth（必选，模型的提供者）、Workspace、Gateway（网关配置）、Channels（其他端介入）。具体可以先参考：火山引擎、官方教程" class="headerlink" title="无论如何配置，一定包含Model provider and auth（必选，模型的提供者）、Workspace、Gateway（网关配置）、Channels（其他端介入）。具体可以先参考：火山引擎、官方教程"></a>无论如何配置，一定包含Model provider and auth（必选，模型的提供者）、Workspace、Gateway（网关配置）、Channels（其他端介入）。具体可以先参考：<a href="https://www.volcengine.com/docs/82379/2183190?lang=zh">火山引擎</a>、<a href="https://docs.openclaw.ai/zh-CN/start/wizard">官方教程</a></h2><h3 id="最重要的配置信息都集中在-openclaw-openclaw-json文件内，可以通过记事本编辑，定制化更改，但操作难度较高⚠️"><a href="#最重要的配置信息都集中在-openclaw-openclaw-json文件内，可以通过记事本编辑，定制化更改，但操作难度较高⚠️" class="headerlink" title="最重要的配置信息都集中在~/.openclaw/openclaw.json文件内，可以通过记事本编辑，定制化更改，但操作难度较高⚠️"></a>最重要的配置信息都集中在<code>~/.openclaw/openclaw.json</code>文件内，可以通过记事本编辑，定制化更改，但操作难度较高⚠️</h3><h1 id="🛠️-step3：配置小龙虾的性格、工具、技能，可以取国内的技能镜像下载对应技能，这里推荐一些技能-⭐"><a href="#🛠️-step3：配置小龙虾的性格、工具、技能，可以取国内的技能镜像下载对应技能，这里推荐一些技能-⭐" class="headerlink" title="🛠️ step3：配置小龙虾的性格、工具、技能，可以取国内的技能镜像下载对应技能，这里推荐一些技能 ⭐"></a>🛠️ step3：配置小龙虾的性格、工具、技能，可以取<a href="https://www.skillhub.cn/">国内的技能镜像</a>下载对应技能，这里推荐一些技能 ⭐</h1><h2 id="可以采用对话式的安装-💬"><a href="#可以采用对话式的安装-💬" class="headerlink" title="可以采用对话式的安装 💬"></a>可以采用对话式的安装 💬</h2><table><thead><tr><th><a href="https://www.skillhub.cn/skills/find-skills">Find skill</a></th><th>小龙虾遇到什么问题，可以通过该技能取，寻找是否有解决这个问题的技能，就是说授人以鱼不如授人以渔啦</th></tr></thead><tbody><tr><td><a href="https://www.skillhub.cn/skills/self-improving">Self-Improving + Proactive Agent</a></td><td>这个技能据说是自我反思+自我批评+自我学习+自组织记忆，但总的来说，我自己在使用过程中，并没有体验出有什么变化</td></tr><tr><td><a href="https://www.skillhub.cn/skills/agent-browser">Agent Browser</a></td><td>这个很好用，如果在wsl2中，配置好后结合Selenium+Python、 playwright-browser等工具可以完成许多无需登录的爬取操作 🔍</td></tr></tbody></table><h3 id="注：openclaw迭代很快，可能安装配置的方式会不停更新，如果需要安装服务请联系我"><a href="#注：openclaw迭代很快，可能安装配置的方式会不停更新，如果需要安装服务请联系我" class="headerlink" title="注：openclaw迭代很快，可能安装配置的方式会不停更新，如果需要安装服务请联系我"></a>注：openclaw迭代很快，可能安装配置的方式会不停更新，如果需要安装服务请联系我</h3>]]>
    </content>
    <id>https://ideaforge.icu/2026/04/13/openclaw-setup-tutorial/</id>
    <link href="https://ideaforge.icu/2026/04/13/openclaw-setup-tutorial/"/>
    <published>2026-04-12T16:00:00.000Z</published>
    <summary>一步步教你在 WSL2 环境下安装配置 OpenClaw 数字员工，推荐常用技能</summary>
    <title>OpenClaw 配置安装完整教程</title>
    <updated>2026-04-12T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="工作周报" scheme="https://ideaforge.icu/categories/%E5%B7%A5%E4%BD%9C%E5%91%A8%E6%8A%A5/"/>
    <category term="课题组网站" scheme="https://ideaforge.icu/tags/%E8%AF%BE%E9%A2%98%E7%BB%84%E7%BD%91%E7%AB%99/"/>
    <category term="ai辅助" scheme="https://ideaforge.icu/tags/ai%E8%BE%85%E5%8A%A9/"/>
    <content>
      <![CDATA[<h4 id="llm的本地部署"><a href="#llm的本地部署" class="headerlink" title="llm的本地部署"></a>llm的本地部署</h4><h5 id="如何选择本地大模型的推理框架app？（11月24日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何选择本地大模型的推理框架app？（11月24日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何选择本地大模型的推理框架app？（11月24日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何选择本地大模型的推理框架app？（11月24日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h5><ul><li>最后选择了LM Studio</li></ul><table><thead><tr><th>推理框架的对比</th><th>自己个人理解（缺点）</th><th>优点</th><th>进度</th></tr></thead><tbody><tr><td>vllm推理框架</td><td>采用huggingface下载需要魔法；docker拉取image时也需要魔法；<br>运用较为复杂（推进采用先在本地下载好模型后，挂载的方式，推入到容器中运行）；<br>wsl2的方式来吸取可能导致，硬件的限制</td><td>支持docker部署；模型种类丰富；支持api调用；更适合工业部署；</td><td>成功部署过《mistralai&#x2F;Mistral-7B-v0.1》，但遗憾的是显存爆了</td></tr><tr><td>ollma推理框架</td><td>部署起来也偏简答，运用不复杂；模型较笨</td><td>部署简答使用方便；</td><td>成功安装过deepseek，但是太笨了；<br></td></tr><tr><td>LM Studio推理框架</td><td>模型种类较少、门类较少</td><td>下载模型简单，且在国内下载模型无网络限制；<br>自动检测你的gpu、cpu以及下载好的cuda的驱动；<br></td><td>完成模型的下载好部署，并成功在pycharm中调用api</td></tr></tbody></table><h6 id="如何在本地大模型中加入mcp的服务？（11月26日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何在本地大模型中加入mcp的服务？（11月26日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何在本地大模型中加入mcp的服务？（11月26日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何在本地大模型中加入mcp的服务？（11月26日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>在环境中安装好必要的库后，编辑好mcp.json即可，可以通过询问大模型（支持工具调用的模型）的方式来问它是否能，使用mcp的服务</li></ul><h6 id="ai辅助"><a href="#ai辅助" class="headerlink" title="ai辅助"></a>ai辅助</h6><h6 id="为什么cherry-studio中大语言模型的联网搜索内容不准确？（11月26日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#为什么cherry-studio中大语言模型的联网搜索内容不准确？（11月26日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="为什么cherry_studio中大语言模型的联网搜索内容不准确？（11月26日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>为什么cherry_studio中大语言模型的联网搜索内容不准确？（11月26日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>这与cherry_studio中模型内置的搜索有关，可以优先使用模型自带的联网搜索功能，或者用mcp的搜索服务</li></ul><h4 id="课题组网站"><a href="#课题组网站" class="headerlink" title="课题组网站"></a>课题组网站</h4><h4 id="关于学习的思考"><a href="#关于学习的思考" class="headerlink" title="关于学习的思考"></a>关于学习的思考</h4><h5 id="如何避免在听课（知识输入）太过于关心记录，而造成知识点的略过，产生一种，只见树木不见树林的学习窘境？（11月25日）"><a href="#如何避免在听课（知识输入）太过于关心记录，而造成知识点的略过，产生一种，只见树木不见树林的学习窘境？（11月25日）" class="headerlink" title="如何避免在听课（知识输入）太过于关心记录，而造成知识点的略过，产生一种，只见树木不见树林的学习窘境？（11月25日）"></a>如何避免在听课（知识输入）太过于关心记录，而造成知识点的略过，产生一种，只见树木不见树林的学习窘境？（11月25日）</h5><ul><li>以下两个任务正在完成中<br>[[s5e11]]<br>[[课题组网站]]</li></ul>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/24/202511W4_WeeklyReport/</id>
    <link href="https://ideaforge.icu/2025/11/24/202511W4_WeeklyReport/"/>
    <published>2025-11-23T16:00:00.000Z</published>
    <summary>这是11月第四周所遇到的所有问题以及思考以及解决方案，并在一周结束时将会整理，梳理（不要说说，说到做到！下周上压力，工作和身体上面的）</summary>
    <title>关于11月24日~11月30日中遇到的问题</title>
    <updated>2025-11-23T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="questions" scheme="https://ideaforge.icu/tags/questions/"/>
    <category term="learning" scheme="https://ideaforge.icu/tags/learning/"/>
    <category term="deep_learning" scheme="https://ideaforge.icu/tags/deep-learning/"/>
    <category term="Obsidian" scheme="https://ideaforge.icu/tags/Obsidian/"/>
    <category term="课题组网站" scheme="https://ideaforge.icu/tags/%E8%AF%BE%E9%A2%98%E7%BB%84%E7%BD%91%E7%AB%99/"/>
    <category term="Gaussian" scheme="https://ideaforge.icu/tags/Gaussian/"/>
    <category term="chemoffice" scheme="https://ideaforge.icu/tags/chemoffice/"/>
    <content>
      <![CDATA[<h4 id="Obsidian的笔记同步"><a href="#Obsidian的笔记同步" class="headerlink" title="Obsidian的笔记同步"></a>Obsidian的笔记同步</h4><h6 id="如何利用gitee在不同电脑以及不同平台，同步Obsidian笔记？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何利用gitee在不同电脑以及不同平台，同步Obsidian笔记？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何利用gitee在不同电脑以及不同平台，同步Obsidian笔记？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何利用gitee在不同电脑以及不同平台，同步Obsidian笔记？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><p>但不是很完善，git很多知识等待去学习了解（关于各种分支的验证等等）,成功实现推送，现在就开始验证不同端的拉取。</p><h6 id="关于在同步过程中常常出现分支不一致或者分支推送不知道在哪里的问题？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#关于在同步过程中常常出现分支不一致或者分支推送不知道在哪里的问题？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="关于在同步过程中常常出现分支不一致或者分支推送不知道在哪里的问题？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>关于在同步过程中常常出现分支不一致或者分支推送不知道在哪里的问题？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>查看所有分支<code>git branch -a</code>（星号表示本地，remotes&#x2F;origin表示远程分支</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ git branch -a</span><br><span class="line">* master</span><br><span class="line">  remotes/origin/main</span><br><span class="line">  remotes/origin/obsidian_syn</span><br></pre></td></tr></table></figure><ul><li><p>如何指定push分支（长期）remotes&#x2F;origin&#x2F;main</p></li><li><p>关于问题的ai描述和解决方案</p></li></ul><table><thead><tr><th>内容类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td><strong>AI</strong></td><td>这段 Git 提示的核心意思是：你当前所在的本地分支（local branch）所关联（upstream）的远程分支（remote branch）名字，和你本地分支的名字不一致。因此当你直接执行 <code>git push</code> 时，Git 不知道到底该把本地改动推送到哪个远程分支上。<br><br>提示中给出了两种临时解决办法，和两种长期（配置）方案：<br><br>1.  临时推送到远程的 main 分支（upstream 分支）  <br>   git push origin HEAD:main  <br>   这会把当前本地分支（HEAD）里的提交，推送并合并到远程的 main 分支上。<br><br>2.  临时推送到一个“同名”远程分支  <br>   git push origin HEAD  <br>   相当于 <code>git push origin &lt;your-local-branch&gt;:&lt;your-local-branch&gt;</code>，在远程新建或更新一个和你本地分支同名的分支。<br><br>3.  永久指定默认推送行为  <br>   你可以通过修改 Git 配置，让它以后自动选择其中一种方式：  <br>   – 在命令行里运行 <code>git config --global push.default &lt;模式&gt;</code>  <br>     常用模式有  <br>     • simple：只允许推送当前分支到名字相同的远程分支（安全性更高，Git 2.0+ 默认）  <br>     • upstream：推送到已设置好的上游分支（不关心名字是否相同）  <br>   具体可查看 <code>git help config</code> 中 push.default 的说明。<br><br>4.  避免自动关联“异名”分支  <br>   如果你希望新建分支时就不要把它错误地关联到名字不同的远程分支，可以配置  <br>   git config –global branch.autoSetupMerge simple  <br>   这样只有当本地分支和远程分支同名时，Git 才会自动给它设置上游。<br><br>———<br><br>简单来说，这条提示告诉你：  <br>• 你的本地分支 upstream（上游）指向了一个和它本地名字不一样的远程分支，  <br>• Git 无法猜测你到底是想推送到哪个分支，  <br>• 因此让你手动指定“推向 main”还是“推向同名分支”，或者调整配置让它以后自动选其中一种。</td><td>模型：(openai)：gpt-o4mini<br></td></tr><tr><td><strong>自己理解</strong></td><td></td><td>笔者猪脑</td></tr></tbody></table><ul><li>或者更改本地的分支名 <code>git branch -m new_name</code>使得其与远程分支同名，带到git默认版本模式</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 在主机上（同名分支main）</span></span><br><span class="line">$ git branch -a</span><br><span class="line">* main</span><br><span class="line">  remotes/origin/HEAD -&gt; origin/obsidian_syn</span><br><span class="line">  remotes/origin/main</span><br><span class="line">  remotes/origin/obsidian_syn</span><br><span class="line"></span><br><span class="line"><span class="comment">## 查看同步历史，看见默认备份成功从本地的main到远端的main</span></span><br><span class="line">$ git branch -vv</span><br><span class="line">* main cf68e5c [origin/main] vault backup: 2025-11-17 17:45:18</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在笔记本上（同名分支main）</span></span><br><span class="line">$ git branch -a</span><br><span class="line">* main</span><br><span class="line">  remotes/origin/main</span><br><span class="line">  remotes/origin/obsidian_syn</span><br><span class="line"></span><br><span class="line"><span class="comment">## （观察到同步历史达到一致）</span></span><br><span class="line">$ git branch -vv</span><br><span class="line">* main cf68e5c [origin/main] vault backup: 2025-11-17 17:45:18</span><br></pre></td></tr></table></figure><h6 id="关于git的常见操作-commit、push、pull三种命令的解释？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#关于git的常见操作-commit、push、pull三种命令的解释？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="关于git的常见操作-commit、push、pull三种命令的解释？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>关于git的常见操作-commit、push、pull三种命令的解释？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><p>总结来说，<code>commit</code>是在本地保存你的工作，<code>push</code>是将你的本地工作推送到远程仓库，而<code>pull</code>是从远程仓库获取并合并最新的更改到你的本地仓库。</p><h4 id="课题组网站"><a href="#课题组网站" class="headerlink" title="课题组网站"></a>课题组网站</h4><h6 id="自己的个人blog用的hexo来创建，那么该用什么中介工具来介入课题组网站？（11月17日）"><a href="#自己的个人blog用的hexo来创建，那么该用什么中介工具来介入课题组网站？（11月17日）" class="headerlink" title="自己的个人blog用的hexo来创建，那么该用什么中介工具来介入课题组网站？（11月17日）"></a>自己的个人blog用的hexo来创建，那么该用什么中介工具来介入课题组网站？（11月17日）</h6><ul><li>Labxing这种填空式的网站，总结来说相当丑，所以笔者愚见是采用类似的hexo+github这种方式来进行运作，只要求专注具体内容的本身，而不用花大量时间精力，去重新学习html前端代码知识。<br>可以参考这篇文章所描述<a href="https://blog.csdn.net/zdc1010/article/details/145609864">这篇大佬所展示的方案是HugoBlox+Github托管的方式</a></li></ul><h6 id="hugo如何安装？以及基础的操作命令是什么？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#hugo如何安装？以及基础的操作命令是什么？（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="hugo如何安装？以及基础的操作命令是什么？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>hugo如何安装？以及基础的操作命令是什么？（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>最好的是用hugo-theme上github免费的主题，不建议使用hugo-blox pro主题，太贵了799多（是人搞得起的？）<br>可以参考这份官方的安装文档<a href="https://docs.hugoblox.com/getting-started/install-hugo/">💻 本地编辑你的Hugo网站 |雨果·布洛克斯医生</a></li><li>scoop(win的powershell下安装)，这个是一个win的包管理器<br>在包管理器下安装git go hugo-extended nodejs三个前置条件</li></ul><h6 id="如何找到hugo的主题，并开始制作搭建一个课题组网站？（11月19日）"><a href="#如何找到hugo的主题，并开始制作搭建一个课题组网站？（11月19日）" class="headerlink" title="如何找到hugo的主题，并开始制作搭建一个课题组网站？（11月19日）"></a>如何找到hugo的主题，并开始制作搭建一个课题组网站？（11月19日）</h6><h6 id="如何从json数据集中提取玻璃转化温度，并完成复现工作？（11月20日）"><a href="#如何从json数据集中提取玻璃转化温度，并完成复现工作？（11月20日）" class="headerlink" title="如何从json数据集中提取玻璃转化温度，并完成复现工作？（11月20日）"></a>如何从json数据集中提取玻璃转化温度，并完成复现工作？（11月20日）</h6><ul><li>优化可以把__getitem__</li></ul><h4 id="pytorch的使用-文献复现工作"><a href="#pytorch的使用-文献复现工作" class="headerlink" title="pytorch的使用+文献复现工作"></a>pytorch的使用+文献复现工作</h4><h6 id="怎样读取元数据的格式，并且将其定义解析成pytorch中的data对象-（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#怎样读取元数据的格式，并且将其定义解析成pytorch中的data对象-（11月17日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="怎样读取元数据的格式，并且将其定义解析成pytorch中的data对象?（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>怎样读取元数据的格式，并且将其定义解析成pytorch中的data对象?（11月17日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>成功实现了json中文件的部分数据结构的读取，但后面发现json中的结构不统一，相同json中的sample数据也不统一存在多个分散，较为复杂的局限，通过单纯的定义数据框似乎也可以解决，但工作量较大，逐步框架式的搜索复杂</li></ul><h6 id="借此我们通过引入无幻觉的LLM的api来捕获数据集，如何引入api来捕获对应数据集？（11月18日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵏᵎᵎᵎᵎ"><a href="#借此我们通过引入无幻觉的LLM的api来捕获数据集，如何引入api来捕获对应数据集？（11月18日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵏᵎᵎᵎᵎ" class="headerlink" title="借此我们通过引入无幻觉的LLM的api来捕获数据集，如何引入api来捕获对应数据集？（11月18日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵏᵎᵎᵎᵎ"></a>借此我们通过引入无幻觉的LLM的api来捕获数据集，如何引入api来捕获对应数据集？（11月18日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵏᵎᵎᵎᵎ</h6><ul><li>这种操作的实现，在于客户端的构建、提示词的构建，还蛮简单的。详细可以参考</li></ul><h6 id="如何在pycharm中引入对应llm的api加入编程？（11月19日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何在pycharm中引入对应llm的api加入编程？（11月19日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何在pycharm中引入对应llm的api加入编程？（11月19日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何在pycharm中引入对应llm的api加入编程？（11月19日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>第零步检查所有值得搜索的变量（第一难检查、存在数据种类稀疏、标准不统一的情况）</li><li>第一步将所有需要的变量赋值为None</li><li>第二步将文件下的json读取为txt（改为先提取每个json中的sample，减少输入llm的tokens）</li><li>第三步通过llm的api来填空</li><li>第四步循环完所有单文件</li><li><strong>优化第二步</strong>，通过re筛选包含检索目标性能json的索引列表，在利用llm在对应json中提取目标性能值（进一步减少llm的输出损耗）；</li><li><strong>优化第三步</strong>，先通过pid来构建df索引列，在通过往其中引入对应的值即可</li></ul><p><a href="https://developer.aliyun.com/article/1680875">大模型部署指南：从个人玩转到企业级应用，这4款工具必看！-阿里云开发者社区</a></p><blockquote><p>请注意这个处理数据大了之后，会非常烧钱😭</p></blockquote><h6 id="在pycharm中如何忽略隐私文件数据文件的git上传？（11月19日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#在pycharm中如何忽略隐私文件数据文件的git上传？（11月19日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="在pycharm中如何忽略隐私文件数据文件的git上传？（11月19日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>在pycharm中如何忽略隐私文件数据文件的git上传？（11月19日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>一定要在文件被跟踪前，在.gitignore文件中添加，文件目录或者文件名，这样可以避免隐私信息的上传</li></ul><h4 id="本地大模型的部署——如何启动在本地上安装可以使用openai的api支持的大模型，支持嵌入代码中？（11月21日）"><a href="#本地大模型的部署——如何启动在本地上安装可以使用openai的api支持的大模型，支持嵌入代码中？（11月21日）" class="headerlink" title="本地大模型的部署——如何启动在本地上安装可以使用openai的api支持的大模型，支持嵌入代码中？（11月21日）"></a>本地大模型的部署——如何启动在本地上安装可以使用openai的api支持的大模型，支持嵌入代码中？（11月21日）</h4><h5 id="第零步：对相关模型本地部署的知识进行普及，挑选架构，选用什么推理框架来部署本地大模型？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#第零步：对相关模型本地部署的知识进行普及，挑选架构，选用什么推理框架来部署本地大模型？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="第零步：对相关模型本地部署的知识进行普及，挑选架构，选用什么推理框架来部署本地大模型？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>第零步：对相关模型本地部署的知识进行普及，挑选架构，选用什么推理框架来部署本地大模型？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h5><ul><li>在这里我将采用vllm来部署本地大模型，因为这样可以方便代码api调用，以及获得较高的性能。详细参考文档<a href="https://developer.aliyun.com/article/1680875">大模型部署指南：从个人玩转到企业级应用，这4款工具必看！-阿里云开发者社区</a></li><li>不同推理框架的大模型的对比<a href="https://cloud.tencent.com/developer/article/2589156">2025年本地AI部署完全指南：从Ollama到vLLM的全方位实践教程-腾讯云开发者社区-腾讯云</a></li></ul><h5 id="第一步关于vllm的安装？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#第一步关于vllm的安装？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="第一步关于vllm的安装？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>第一步关于vllm的安装？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h5><ul><li>使用uv来构建pytorch环境和vllm的安装</li></ul><h6 id="win11如何安装uv（理解起来就类似于conda）包、环境管理器？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#win11如何安装uv（理解起来就类似于conda）包、环境管理器？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="win11如何安装uv（理解起来就类似于conda）包、环境管理器？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>win11如何安装uv（理解起来就类似于conda）包、环境管理器？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>参考uv的官方文档<a href="https://uv.doczh.com/getting-started/installation/">安装 | uv 中文文档</a></li></ul><p><strong>uv的介绍</strong>：</p><ul><li><code>uv</code> 是一个由 Rye 或 pip-tools 启发的高性能 Python 包安装器和解析器<br><strong>使用uv创建环境、激活环境</strong>、<strong>退出环境</strong>(在win powershell中)<br><code>uv venv --python 3.12</code>、<code>.venv\Scripts\activate</code>、<code>deactivate</code></li></ul><p><strong>报错版本限制问题</strong>：无法在win powershell中安装vllm</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">PS E:\projects\vllm_rag&gt; uv add torch modelscope vllm</span><br><span class="line">Resolved 163 packages in 5.59s</span><br><span class="line">error: Distribution `nvidia-cutlass-dsl==4.3.0 @ registry+https://pypi.org/simple` can&#x27;t be installed because it doesn&#x27;t have a source distribution or wheel for the current platform</span><br><span class="line"></span><br><span class="line">hint: You&#x27;re on Windows (`win_amd64`), but `nvidia-cutlass-dsl` (v4.3.0) only has wheels for the following platforms: `manylinux_2_28_aarch64`, `manylinux_2_28_x86_64`; consider adding &quot;sys_platform == &#x27;win32&#x27; and platform_machine == &#x27;AMD64&#x27;&quot; to `tool.uv.required-environments` to ensure uv resolves to a version with compatible wheels</span><br></pre></td></tr></table></figure><h6 id="如何解决uv安装vllm兼容性问题，仅支持Linux系统？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何解决uv安装vllm兼容性问题，仅支持Linux系统？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何解决uv安装vllm兼容性问题，仅支持Linux系统？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何解决uv安装vllm兼容性问题，仅支持Linux系统？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li><p>在这里我们使用win的Linux子系统来解决这个问题+docker的方式</p></li><li><p>不在这里我们更改策略，采用docker（<strong>一个比conda、uv、scoop更大的概念，可以叫做系统管理器</strong>）来拉取vllm的镜像来快速部署</p></li></ul><p><strong>具体可以参考：</strong><a href="https://xuanyuan.cloud/blog/vllm-openai-docker">vllm-openai Docker 部署全手册 - 轩辕镜像技术博客</a></p><p><strong>win下安装docker，可以采用docker-desktop+wsl2的方式（完成安装、配置国内镜像源）</strong>，具体可以参考<a href="https://blog.csdn.net/weixin_52286364/article/details/150379121">Windows 环境下安装 Docker 的详细教程（超详细图文）_windows 安装docker-CSDN博客</a></p><h6 id="如何使用docker将vllm推理框架与本地框架隔离，并使得win也可以使用vllm？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何使用docker将vllm推理框架与本地框架隔离，并使得win也可以使用vllm？（11月21日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何使用docker将vllm推理框架与本地框架隔离，并使得win也可以使用vllm？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何使用docker将vllm推理框架与本地框架隔离，并使得win也可以使用vllm？（11月21日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>参考官方vllm文档的docker安装说明<a href="https://docs.vllm.com.cn/en/latest/deployment/docker.html">使用 Docker - vLLM 文档</a></li></ul><h6 id="如何挑选模型和下载到本地，方便vllm挂载启动？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何挑选模型和下载到本地，方便vllm挂载启动？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何挑选模型和下载到本地，方便vllm挂载启动？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何挑选模型和下载到本地，方便vllm挂载启动？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>在国内<a href="https://www.modelscope.cn/models">模型库首页 · 魔搭社区</a>网页中挑选适合自己的模型，<a href="https://huggingface.co/">huggingface.co</a>也可以了解到最新的模型</li></ul><blockquote><p>魔塔社区挺不错，支持很多模型的下载<a href="https://www.modelscope.cn/my/overview">概览 · 魔搭社区</a>，包括<a href="https://huggingface.co/models">Models – Hugging Face</a>（后者是ai界的github）</p></blockquote><ul><li>现在开来主要有三个选择<strong>Llama 3 系列 (Meta)</strong>、<strong>Qwen 系列 (通义千问)</strong>、<strong>Mistral 系列</strong> (Mistral AI)</li></ul><h6 id="如何结合轩辕云下载vllm的docker并运行本地大模型，开启api，并接入代码中？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何结合轩辕云下载vllm的docker并运行本地大模型，开启api，并接入代码中？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何结合轩辕云下载vllm的docker并运行本地大模型，开启api，并接入代码中？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何结合轩辕云下载vllm的docker并运行本地大模型，开启api，并接入代码中？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ol><li>去轩辕云官网查询对应vllm的docker版本利用专属域名，按量计费加速下载<code>docker pull zhuanshuyuming.xuanyuan.run/vllm/vllm-openai:v0.11.2</code><blockquote><p>最新了解到，vllm只是一个运行推理框架，可以选择在本地下载大模型然后采用挂载的方式，所以想要运动大模型，还得下载模型文件</p></blockquote></li><li>下载的方式分为两种，第一种：本地下载大模型后通过挂载卷的方式送入容器内，后利用容器内的vllm推理框架进行运行，第二种：通过共享挂载卷的方式在vllm中使用hf拉取大模型，挂载卷也会同步回主机的存放大模型的空文件夹中；<blockquote><p>这里采用第二种方法，因为采用第一种时，docker容器内部的网络环境与宿主机是win的wsl2不同，win与wsl2又不同，存在多层网络嵌套处理较为麻烦，使用python脚本+魔法+conda环境的方式，利用hf-api来下载到本地的目录，然后挂载到docker</p></blockquote></li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os  </span><br><span class="line"><span class="keyword">from</span> huggingface_hub <span class="keyword">import</span> snapshot_download  </span><br><span class="line">  </span><br><span class="line"><span class="comment"># 你挂载到 Docker 的本地目录  </span></span><br><span class="line">local_cache_dir = <span class="string">&quot;E:/vllm_models&quot;</span>  </span><br><span class="line">  </span><br><span class="line"><span class="comment"># 你要下载的模型  </span></span><br><span class="line">model_name = <span class="string">&quot;mistralai/Mistral-7B-v0.1&quot;</span>  </span><br><span class="line">  </span><br><span class="line"><span class="comment"># 使用你的 Hugging Face Token</span></span><br><span class="line">hf_token = <span class="string">&quot;your_hf_tokens&quot;</span>  </span><br><span class="line">  </span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;开始下载模型 <span class="subst">&#123;model_name&#125;</span> 到 <span class="subst">&#123;local_cache_dir&#125;</span>&quot;</span>)  </span><br><span class="line"></span><br><span class="line"><span class="comment"># 这会使用你主机的网络（包括代理设置）来下载  </span></span><br><span class="line">snapshot_download(  </span><br><span class="line">    repo_id=model_name,  </span><br><span class="line">    cache_dir=local_cache_dir,  </span><br><span class="line">    token=hf_token,  </span><br><span class="line">    resume_download=<span class="literal">True</span>,  </span><br><span class="line">)  </span><br><span class="line">  </span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;模型下载完成！&quot;</span>)</span><br></pre></td></tr></table></figure><ol start="3"><li>成功下载模型mistralai&#x2F;Mistral-7B-v0.1，也成功在docker中运行，但是很不幸的是gpu的显存爆了</li></ol><h4 id="AI辅助"><a href="#AI辅助" class="headerlink" title="AI辅助"></a>AI辅助</h4><h6 id="如何采用mcp来提高ai辅助编程trea的能力？（11月18日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何采用mcp来提高ai辅助编程trea的能力？（11月18日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何采用mcp来提高ai辅助编程trea的能力？（11月18日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何采用mcp来提高ai辅助编程trea的能力？（11月18日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><ul><li>trea给了内置的功能（极大地方便了调用）</li><li>glm4.6+mcp</li></ul><blockquote><p>关于ai使用的心得：ai很笨需要检验，检查理解关键部分！不要盲从，理解代码，慢慢给ai问改。代码运行成本较贵（从时间和金钱上来讲，所以最好一次成功，对各部分检验</p></blockquote><h6 id="如何采用mcp来提高ai助手chatbox集成的能力？（11月18日）"><a href="#如何采用mcp来提高ai助手chatbox集成的能力？（11月18日）" class="headerlink" title="如何采用mcp来提高ai助手chatbox集成的能力？（11月18日）"></a>如何采用mcp来提高ai助手chatbox集成的能力？（11月18日）</h6><ul><li>安装</li></ul><h6 id="如何采用本地知识库的部署，通过ai助手chatbox来强化对文献知识库的理解和检索能力？（11月18日）"><a href="#如何采用本地知识库的部署，通过ai助手chatbox来强化对文献知识库的理解和检索能力？（11月18日）" class="headerlink" title="如何采用本地知识库的部署，通过ai助手chatbox来强化对文献知识库的理解和检索能力？（11月18日）"></a>如何采用本地知识库的部署，通过ai助手chatbox来强化对文献知识库的理解和检索能力？（11月18日）</h6><h4 id="课程任务学习"><a href="#课程任务学习" class="headerlink" title="课程任务学习"></a>课程任务学习</h4><h5 id="基本的高斯程序的使用，基本的高斯计算"><a href="#基本的高斯程序的使用，基本的高斯计算" class="headerlink" title="基本的高斯程序的使用，基本的高斯计算"></a>基本的高斯程序的使用，基本的高斯计算</h5><h6 id="如何使用高斯程序，制作高斯输入文件，并运行查看输出结果？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何使用高斯程序，制作高斯输入文件，并运行查看输出结果？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何使用高斯程序，制作高斯输入文件，并运行查看输出结果？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何使用高斯程序，制作高斯输入文件，并运行查看输出结果？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><p>（结合chemoffice中chemdraw（画好分子图保存为.cdx）——&gt;chem3D（打开后create高斯计算文件.gif）——&gt;Gaussian程序运行即可）</p><h6 id="如何在高斯输出文件中查找对应物理参数以及其意义？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#如何在高斯输出文件中查找对应物理参数以及其意义？（11月23日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="如何在高斯输出文件中查找对应物理参数以及其意义？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>如何在高斯输出文件中查找对应物理参数以及其意义？（11月23日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><p>使用ctrl+F搜索以下关键词</p><ul><li>分子总能量：SCF Done：E &#x3D; object_value</li><li>精确极化率：</li><li>最高轨道占有能(E_home)：多行Alpha  occ. eigenvalues最后一个数字</li><li>最低空轨道能（E_lumo）：多行 Alpha virt. eigenvalues第一个数字</li><li>原子净电荷Mulliken charges:（最正最负）</li><li>偶极矩：Tot&#x3D;</li><li>etc.</li></ul>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/17/202511W3_WeeklyReport/</id>
    <link href="https://ideaforge.icu/2025/11/17/202511W3_WeeklyReport/"/>
    <published>2025-11-16T16:00:00.000Z</published>
    <summary>这是11月第三周所遇到的所有问题以及思考以及解决方案，并在一周结束时将会整理，梳理</summary>
    <title>关于11月17日~11月23日中遇到的问题以及解决方法</title>
    <updated>2025-11-16T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="questions" scheme="https://ideaforge.icu/tags/questions/"/>
    <category term="deep_learning" scheme="https://ideaforge.icu/tags/deep-learning/"/>
    <category term="machine_learning" scheme="https://ideaforge.icu/tags/machine-learning/"/>
    <content>
      <![CDATA[<h1 id="计划始于docker，败于ssh远程（为什么远程使用ssh连接过服务器而连接docker中的容器就失败）"><a href="#计划始于docker，败于ssh远程（为什么远程使用ssh连接过服务器而连接docker中的容器就失败）" class="headerlink" title="计划始于docker，败于ssh远程（为什么远程使用ssh连接过服务器而连接docker中的容器就失败）"></a>计划始于docker，败于ssh远程（为什么远程使用ssh连接过服务器而连接docker中的容器就失败）</h1><h3 id="从conda虚拟环境到docker容器；环境灵活配置提升，可以快速地在别的服务器、不同设备、不通操作系统中，环境管理，然后炼丹跑代码"><a href="#从conda虚拟环境到docker容器；环境灵活配置提升，可以快速地在别的服务器、不同设备、不通操作系统中，环境管理，然后炼丹跑代码" class="headerlink" title="从conda虚拟环境到docker容器；环境灵活配置提升，可以快速地在别的服务器、不同设备、不通操作系统中，环境管理，然后炼丹跑代码"></a>从conda虚拟环境到docker容器；环境灵活配置提升，可以快速地在别的服务器、不同设备、不通操作系统中，环境管理，然后炼丹跑代码</h3><ul><li><p>在家中台式电脑中创建docker环境</p><ul><li><p>docker基本教程（知识）<a href="https://www.runoob.com/docker/docker-container-usage.html">Docker 容器使用 | 菜鸟教程</a></p></li><li><p>Linux操作系统入门（知识）<a href="https://blog.csdn.net/m0_70395069/article/details/145762762">入门 Ubuntu操作系统（超详细，巨简单，小白必看）-CSDN博客</a></p></li><li><p>双系统教程（操作，暂时不用）<a href="https://blog.csdn.net/YIMUleizi/article/details/150263876">Windows 系统下安装 Ubuntu 双系统详细教程（图文指南）_windows安装ubuntu-CSDN博客</a></p><ul><li>等待解决</li></ul></li><li><p>自己电脑上使用的是window子系统功能（知识）<a href="https://blog.csdn.net/Natsuago/article/details/145594631">全网最全Win10&#x2F;11系统下WSL2+Ubuntu20.04的全流程安装指南（两种支持安装至 D 盘方式）_win10安装wsl2-CSDN博客</a></p></li><li><p>Ubuntu lst 版本与普通版有什么区别（知识）<a href="https://www.sysgeek.cn/what-is-ubuntu-lts/">什么是 Ubuntu LTS？和普通版本有什么区别？ - 系统极客</a></p></li><li><p>切换用户权限（操作，已经解决）<a href="https://blog.csdn.net/weixin_51354739/article/details/144693875">【Linux】ubuntu 切换管理员&#x2F;普通用户指令,看这篇就够了！-CSDN博客</a></p></li><li><p>从不同系统中安装docker，既然从Ubuntu系统（window子系统或者用docker desk版）<a href="https://segmentfault.com/a/1190000044606072#item-2-2">『Docker入门指南』- 详细安装与配置教程，助你起航容器化世界！ - 个人文章 - SegmentFault 思否</a></p></li></ul></li><li><p>在conda中打包虚拟环境并在docker部署，如何再开启远端联机，实现本地云端，主机炼丹，优势在于极大的灵活了部署问题，环境不同的问题<a href="https://blog.51cto.com/u_16213450/12773839">https://blog.51cto.com/u_16213450&#x2F;12773839</a></p></li></ul><h3 id="对于自己而言将会常用到的docker命令"><a href="#对于自己而言将会常用到的docker命令" class="headerlink" title="对于自己而言将会常用到的docker命令"></a>对于自己而言将会常用到的docker命令</h3><h4 id="运行进入交互界面-很重要：用于在images使用conda代码，拓展环境第三方库"><a href="#运行进入交互界面-很重要：用于在images使用conda代码，拓展环境第三方库" class="headerlink" title="运行进入交互界面(很重要：用于在images使用conda代码，拓展环境第三方库)"></a>运行进入交互界面(很重要：用于在images使用conda代码，拓展环境第三方库)</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 交互式运行（进入容器内的bash shell）</span></span><br><span class="line">docker run -it --<span class="built_in">rm</span> for_dl_liandan:latest bash</span><br><span class="line"></span><br><span class="line"><span class="comment"># 构建新image</span></span><br><span class="line">docker build -t my_ssh_image .</span><br><span class="line"></span><br><span class="line"><span class="comment"># 交互式运行，用ssh连接docker，将22映射到7092（前面是容器的名字后面是image的名字）</span></span><br><span class="line">docker run -it --name ssh_test -p 7092:22 more_test bash</span><br></pre></td></tr></table></figure><h4 id="在容器中安装的包如何保存到images？（11月10日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#在容器中安装的包如何保存到images？（11月10日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="在容器中安装的包如何保存到images？（11月10日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>在容器中安装的包如何保存到images？（11月10日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h4><p>重构容器就可以，基础用之前的容器</p><h3 id="如何在远程（notebook）ipynb中使用docker的images来跑代码——使用ssh或者notebook？（11月10日）"><a href="#如何在远程（notebook）ipynb中使用docker的images来跑代码——使用ssh或者notebook？（11月10日）" class="headerlink" title="如何在远程（notebook）ipynb中使用docker的images来跑代码——使用ssh或者notebook？（11月10日）"></a>如何在远程（notebook）ipynb中使用docker的images来跑代码——使用ssh或者notebook？（11月10日）</h3><p>出现无法连接，超时等问题</p><h1 id="胎死腹中（11月11日）决定放弃ssh远程连接计划"><a href="#胎死腹中（11月11日）决定放弃ssh远程连接计划" class="headerlink" title="胎死腹中（11月11日）决定放弃ssh远程连接计划"></a>胎死腹中（11月11日）决定放弃ssh远程连接计划</h1><h1 id="开始转变，决定施行conda环境打包（环境同步），git代码托管同步（代码同步），以及对应环境变更安装指令的保存（三段灵活性，成长型同步）"><a href="#开始转变，决定施行conda环境打包（环境同步），git代码托管同步（代码同步），以及对应环境变更安装指令的保存（三段灵活性，成长型同步）" class="headerlink" title="开始转变，决定施行conda环境打包（环境同步），git代码托管同步（代码同步），以及对应环境变更安装指令的保存（三段灵活性，成长型同步）"></a>开始转变，决定施行conda环境打包（环境同步），git代码托管同步（代码同步），以及对应环境变更安装指令的保存（三段灵活性，成长型同步）</h1><blockquote><p>思考感悟：上午搞了三个小时的问题，都不知道咋解决，主要两个问题太前沿的问题，ai不会，因为常常联网搜索的匹配程度太低不准确；问题没有解决的百分99的原因都是因为问的问题不够精准，要多用bing搜索引擎来，精准搜索得到答案。（gpt4-o1更好用一点）</p></blockquote><h1 id="docker-desktop-wsl2-win11-NVIDIA-Container-Toolkit安装-tensorflorw-gpu-docker（快速docker部署容器，并且实现tensorflow-gpu-加速）-jupyter-lab-ssh远程连接、远程控制"><a href="#docker-desktop-wsl2-win11-NVIDIA-Container-Toolkit安装-tensorflorw-gpu-docker（快速docker部署容器，并且实现tensorflow-gpu-加速）-jupyter-lab-ssh远程连接、远程控制" class="headerlink" title="docker_desktop + wsl2 (win11) + NVIDIA Container Toolkit安装 + tensorflorw_gpu_docker（快速docker部署容器，并且实现tensorflow gpu 加速）+jupyter lab +ssh远程连接、远程控制"></a>docker_desktop + wsl2 (win11) + NVIDIA Container Toolkit安装 + tensorflorw_gpu_docker（快速docker部署容器，并且实现tensorflow gpu 加速）+jupyter lab +ssh远程连接、远程控制</h1><h2 id="重点内容（关于wsl2中的代理配置问题）"><a href="#重点内容（关于wsl2中的代理配置问题）" class="headerlink" title="重点内容（关于wsl2中的代理配置问题）"></a>重点内容（关于wsl2中的代理配置问题）</h2><ul><li>想法路线来源于tensorflow的 <a href="https://tensorflow.google.cn/install/gpu?hl=zh-cn">官方教程:为了简化安装并避免库冲突，建议您使用支持 GPU 的 TensorFlow Docker 映像</a></li><li>重点参考<a href="https://blog.csdn.net/TeleostNaCl/article/details/149058218">这位大佬</a></li><li>关于NVIDIA Container Toolkit安装-<a href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html">参考官方教程</a><strong>其实重点在于代理</strong></li></ul><h2 id="重要命令（关于docker的运行，以及重构）"><a href="#重要命令（关于docker的运行，以及重构）" class="headerlink" title="重要命令（关于docker的运行，以及重构）"></a>重要命令（关于docker的运行，以及重构）</h2><ul><li>下面的命令：-p指定容器内的端口向外映射（外部端口:容器内部端口），–gpus指定all可见，-v挂载主机卷到容器内，-d 指定images</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">docker run --gpus all -p 9060:8888 -p 9061:8889 -p 9062:8890 -p 2222:22 -v F:\polymer_ai:/app/pa  -d a73de5acf455</span><br><span class="line"><span class="comment"># 拉取镜像（记得配置国内的镜像）</span></span><br><span class="line">docker pull tensorflow/tensorflow:2.17.0-gpu-jupyter</span><br><span class="line"><span class="comment"># 容器共享宿主机ip</span></span><br><span class="line">docker run --gpus all --net=host -v F:\polymer_ai:/app/pa  -d a73de5acf455</span><br></pre></td></tr></table></figure><h2 id="高版本不兼容，我靠，搞了我一下午-解决容器内tensorflow-gpu加速"><a href="#高版本不兼容，我靠，搞了我一下午-解决容器内tensorflow-gpu加速" class="headerlink" title="高版本不兼容，我靠，搞了我一下午(解决容器内tensorflow_gpu加速)"></a>高版本不兼容，我靠，搞了我一下午(解决容器内tensorflow_gpu加速)</h2><h4 id="关于为什么在docker拉取的tensorflow容器中python-c-import-tensorflow-as-tf-print-tf-config-list-physical-devices-GPU-的gpu检测不到（nvidia-msi、以及nvcc-–version却可以正确输出）？"><a href="#关于为什么在docker拉取的tensorflow容器中python-c-import-tensorflow-as-tf-print-tf-config-list-physical-devices-GPU-的gpu检测不到（nvidia-msi、以及nvcc-–version却可以正确输出）？" class="headerlink" title="关于为什么在docker拉取的tensorflow容器中python -c &quot;import tensorflow as tf; print(tf.config.list_physical_devices(&#39;GPU&#39;))&quot;的gpu检测不到（nvidia-msi、以及nvcc –version却可以正确输出）？"></a>关于为什么在docker拉取的tensorflow容器中<code>python -c &quot;import tensorflow as tf; print(tf.config.list_physical_devices(&#39;GPU&#39;))&quot;</code>的gpu检测不到（nvidia-msi、以及nvcc –version却可以正确输出）？</h4><ul><li>参考官方文档</li></ul><h3 id="高版本容器创建后报错"><a href="#高版本容器创建后报错" class="headerlink" title="高版本容器创建后报错"></a>高版本容器创建后报错</h3><ul><li>步骤1：在容器内运行下面命令，检查cuda和cudnn的版本</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> /usr/local/cuda/lib64/</span><br><span class="line"><span class="built_in">ls</span> /usr/lib/x86_64-linux-gnu/ | grep cuda</span><br><span class="line"><span class="built_in">ls</span> /usr/lib/x86_64-linux-gnu/ | grep cudnn</span><br></pre></td></tr></table></figure><p>例如我的输出：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># cudnn 的版本8.9.6</span></span><br><span class="line">ibcudnn.so.8  </span><br><span class="line">libcudnn.so.8.9.6  </span><br><span class="line">libcudnn_adv_infer.so.8  </span><br><span class="line">libcudnn_adv_infer.so.8.9.6  </span><br><span class="line">libcudnn_adv_train.so.8  </span><br><span class="line">libcudnn_adv_train.so.8.9.6  </span><br><span class="line">libcudnn_cnn_infer.so.8  </span><br><span class="line">libcudnn_cnn_infer.so.8.9.6  </span><br><span class="line">libcudnn_cnn_train.so.8  </span><br><span class="line">libcudnn_cnn_train.so.8.9.6  </span><br><span class="line">libcudnn_ops_infer.so.8  </span><br><span class="line">libcudnn_ops_infer.so.8.9.6  </span><br><span class="line">libcudnn_ops_train.so.8  </span><br><span class="line">libcudnn_ops_train.so.8.9.6</span><br><span class="line"></span><br><span class="line"><span class="comment"># 用nvcc --version查看cuda的实际版本 为12.3</span></span><br><span class="line">nvcc: NVIDIA (R) Cuda compiler driver</span><br><span class="line">Copyright (c) 2005-2023 NVIDIA Corporation</span><br><span class="line">Built on Fri_Nov__3_17:16:49_PDT_2023</span><br><span class="line">Cuda compilation tools, release 12.3, V12.3.103</span><br><span class="line">Build cuda_12.3.r12.3/compiler.33492891_0</span><br></pre></td></tr></table></figure><ul><li>步骤2：在官网查询，对应兼容版本<a href="https://tensorflow.google.cn/install/source">Build from source  |  TensorFlow</a></li></ul><p><img src="/images/duiyinbanben.png" alt="对应版本图"></p><p>如上图所示tensorflow2.17.0 和 2.16.1 可以用</p><ul><li>步骤3：pull 对应版本的tensorflow_docker，hub官网拉取对应版本的docker（需要魔法）<a href="https://hub.docker.com/r/tensorflow/tensorflow/">tensorflow&#x2F;tensorflow - Docker Image | Docker Hub</a></li></ul><h2 id="关于ssh远程连接docker的jupyter"><a href="#关于ssh远程连接docker的jupyter" class="headerlink" title="关于ssh远程连接docker的jupyter"></a>关于ssh远程连接docker的jupyter</h2><h3 id="根据最新的知识面了解到，ssh连接失败可能是不在一个局域网（超时），所以转向内网穿透领域"><a href="#根据最新的知识面了解到，ssh连接失败可能是不在一个局域网（超时），所以转向内网穿透领域" class="headerlink" title="根据最新的知识面了解到，ssh连接失败可能是不在一个局域网（超时），所以转向内网穿透领域"></a>根据最新的知识面了解到，ssh连接失败可能是不在一个局域网（超时），所以转向内网穿透领域</h3><h4 id="步骤1：打通宿主机和容器的网络，直接采用-nest-host网络共用模式"><a href="#步骤1：打通宿主机和容器的网络，直接采用-nest-host网络共用模式" class="headerlink" title="步骤1：打通宿主机和容器的网络，直接采用--nest=host网络共用模式"></a>步骤1：打通宿主机和容器的网络，直接采用<code>--nest=host</code>网络共用模式</h4><h4 id="步骤2：成功实现trea中ipynb直接访问容器，内的jupyter映射出来的内核（直接也可以但是要用到转接技术）"><a href="#步骤2：成功实现trea中ipynb直接访问容器，内的jupyter映射出来的内核（直接也可以但是要用到转接技术）" class="headerlink" title="步骤2：成功实现trea中ipynb直接访问容器，内的jupyter映射出来的内核（直接也可以但是要用到转接技术）"></a>步骤2：成功实现trea中ipynb直接访问容器，内的jupyter映射出来的内核（直接也可以但是要用到转接技术）</h4><h4 id="步骤3：成功实现没有–nest-host的情况下，直接通过ssh命令连接容器内部，并使用root命令-宿主机中win中ssh连接不了，但用win的wsl可以连接"><a href="#步骤3：成功实现没有–nest-host的情况下，直接通过ssh命令连接容器内部，并使用root命令-宿主机中win中ssh连接不了，但用win的wsl可以连接" class="headerlink" title="步骤3：成功实现没有–nest&#x3D;host的情况下，直接通过ssh命令连接容器内部，并使用root命令(宿主机中win中ssh连接不了，但用win的wsl可以连接)"></a>步骤3：成功实现没有–nest&#x3D;host的情况下，直接通过ssh命令连接容器内部，并使用root命令(宿主机中win中ssh连接不了，但用win的wsl可以连接)</h4><h4 id="步骤4：在远程机中安装wsl并尝试，在没有内网穿透下，连接宿主机"><a href="#步骤4：在远程机中安装wsl并尝试，在没有内网穿透下，连接宿主机" class="headerlink" title="步骤4：在远程机中安装wsl并尝试，在没有内网穿透下，连接宿主机"></a>步骤4：在远程机中安装wsl并尝试，在没有内网穿透下，连接宿主机</h4><h4 id="步骤5：实现宿主机与远程机的内网穿透，成功在各自的wsl内通过cpolar穿透，远程机连接到宿主机内部"><a href="#步骤5：实现宿主机与远程机的内网穿透，成功在各自的wsl内通过cpolar穿透，远程机连接到宿主机内部" class="headerlink" title="步骤5：实现宿主机与远程机的内网穿透，成功在各自的wsl内通过cpolar穿透，远程机连接到宿主机内部"></a>步骤5：实现宿主机与远程机的内网穿透，成功在各自的wsl内通过cpolar穿透，远程机连接到宿主机内部</h4><h4 id="步骤6：远程机通过ssh连接到宿主机后，再用docker命令进入容器内交互（这样就实现了，远程控制docker）"><a href="#步骤6：远程机通过ssh连接到宿主机后，再用docker命令进入容器内交互（这样就实现了，远程控制docker）" class="headerlink" title="步骤6：远程机通过ssh连接到宿主机后，再用docker命令进入容器内交互（这样就实现了，远程控制docker）"></a>步骤6：远程机通过ssh连接到宿主机后，再用docker命令进入容器内交互（这样就实现了，远程控制docker）</h4><ul><li><strong>远程控制docker进程</strong></li></ul><h4 id="步骤7-在使用ssh指令时将宿主机的localhost拉过来，成功使用得到"><a href="#步骤7-在使用ssh指令时将宿主机的localhost拉过来，成功使用得到" class="headerlink" title="步骤7:在使用ssh指令时将宿主机的localhost拉过来，成功使用得到"></a>步骤7:在使用ssh指令时将宿主机的localhost拉过来，成功使用得到</h4><ul><li><strong>远程使用docker服务</strong></li></ul><h3 id="重点讲一下6、7步是怎么形成的：docker是一种容器化技术，里面打包了我的机器学习深度学习的环境系统（利用docker（在Linux或者在docker-desktop中的）拉取，tensorflow官方在docker-hub推送的image），并创建一个容器（在创建时使用的关键命令，涉及到启用gpus、启用端口投射将容器端口（冒号后面8888，指在容器内jupyter使用的端口）到宿主机的端口（localhost：9060））；后在用cpolar-ssh的内网穿透技术，指定其他端口过来"><a href="#重点讲一下6、7步是怎么形成的：docker是一种容器化技术，里面打包了我的机器学习深度学习的环境系统（利用docker（在Linux或者在docker-desktop中的）拉取，tensorflow官方在docker-hub推送的image），并创建一个容器（在创建时使用的关键命令，涉及到启用gpus、启用端口投射将容器端口（冒号后面8888，指在容器内jupyter使用的端口）到宿主机的端口（localhost：9060））；后在用cpolar-ssh的内网穿透技术，指定其他端口过来" class="headerlink" title="重点讲一下6、7步是怎么形成的：docker是一种容器化技术，里面打包了我的机器学习深度学习的环境系统（利用docker（在Linux或者在docker_desktop中的）拉取，tensorflow官方在docker hub推送的image），并创建一个容器（在创建时使用的关键命令，涉及到启用gpus、启用端口投射将容器端口（冒号后面8888，指在容器内jupyter使用的端口）到宿主机的端口（localhost：9060））；后在用cpolar+ssh的内网穿透技术，指定其他端口过来"></a>重点讲一下6、7步是怎么形成的：docker是一种容器化技术，里面打包了我的机器学习深度学习的环境系统（利用docker（在Linux或者在docker_desktop中的）拉取，tensorflow官方在docker hub推送的image），并创建一个容器（在创建时使用的关键命令，涉及到启用gpus、启用端口投射将容器端口（冒号后面8888，指在容器内jupyter使用的端口）到宿主机的端口（localhost：9060））；后在用cpolar+ssh的内网穿透技术，指定其他端口过来</h3><ul><li>docker容器创建命令，将容器的jupyter服务8888发到宿主机的9060中</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --gpus all -p 9060:8888 -p 9061:8889 -p 9062:8890 -p 2222:22 -v F:\polymer_ai:/app/pa  -d 容器<span class="built_in">id</span> </span><br></pre></td></tr></table></figure><ul><li>在宿主机上配置好cpolar后，用以下ssh命令，将端口9060又转发到远程机上</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -L localhost:9060:localhost:9060 root@cpolar隧道地址 -p 10954</span><br></pre></td></tr></table></figure><h1 id="炼丹计划终于大成了（2天半）"><a href="#炼丹计划终于大成了（2天半）" class="headerlink" title="炼丹计划终于大成了（2天半）"></a>炼丹计划终于大成了（2天半）</h1><h1 id="第零步："><a href="#第零步：" class="headerlink" title="第零步："></a>第零步：</h1><p>笔记本电脑跑深度学习代码太慢（cpu太低，gpu不够），关于想利用docker容器技术，将代码部署到主机电脑（性能较好）并在主机上运行，实现主机跑代码、笔记本电脑写代码的炼丹大法。<br>于是开始了解并<strong>学习到有关容器docker的技术</strong>【关于为什么会想到docker因为之前电脑玩过deepseek的本地部署，但是后来发现本地部署的太笨了】，<br>并尝试把本地运行conda的虚拟环境的包需求列表导出，并引入<strong>Dockerfile的image构建文件中（学会了Dckerfile的命令句</strong>，以及利用这个文件构建docker的过程），后面发现因为库版本太具体，构建过程中出现问题，开始进入运行的容器内，手动安装需要的包(后面了解到容器暂停运行后并不会保存的image中，<strong>学会了从现有image中重新构建image</strong>)，<br>之后也是成功实现docker环境的配置。问题又来了关于如何使用容器内的代码呢，当你把文件挂载进docker时，代码输出又开不见，且没有jupyter的问题，失去了交互性。<br>之后便开始尝试使用ssh来远程连接docker以及，使用docker内的环境。ssh搞了半天没用（后面发现其实要在一个局域网下才能用ssh来连接，以及docker的网络配置也不知）<br>之后便开始弃用docker，弃用远程连接，炼丹大法开始泡汤，但有趣的事，关于炼丹大法的事情并没有永远沉寂下去………</p><p>在放弃远程炼丹大法之后，由于课题依然要继续推进，便开始着手想着使用远程桌面加U盘的方法。便下载了<strong>Todesk软件</strong>，使用<strong>conda打包一整个环境</strong>传输后到主机电脑上解压展开，之后便成功完成了，在主机电脑相同的codna虚拟环境，之后发现xgboost和lightgbm算法通过简单的参数输入便成功使用上了<strong>gpu加速，代码运行速度直接打骨折</strong>，但运行到ANN（基于tensorflow的人工神经网络）不对了，gpu根本没有跑，运行速度依旧乌龟。于是开始从多途径了解<strong>tensorflow的gpu加速方法</strong>连接到在电脑上安装各种cuda驱动、CUDA、cndnn太麻烦且要考虑版本兼容问题，然后发现在tensorflow的官网上推荐，使用docker来部署tensorflow的gpu加速环境是最简单的。于是便开始<strong>了解docker的部署tensorflow-gpu方案</strong>。炼丹计划重新启动！</p><p>开始拉取tensorflow的镜像，（记得先配置轩辕镜像），这里建议拉取jupyter的版本，拉取之后在容器的交互页面中，发现tensorflow并没有没有找到gpu设备（卡住了半天😭），一直搞啊搞，主要是两个方向的问题：第一：cuda container toolkit下载不下来，curl的时候，一直无法连接，就算用镜像源也没用（后面用了魔法19yuan，也是重新又用上了）第二：安装好了，拉取镜像的时候，依旧不显示GPU，如何一直找原因，终于通过检查cudnn的版本发现兼容性问题(这个我真的没想到啊，想着拉取的tensorflow的docker应该兼容性是好的吧)，开始查询官网的版本对照表，下载后，终于<strong>tensorflow检测到了gpu😎</strong>。</p><p>后面又了解到<strong>ssh内网穿透</strong>，可以远程连接，干脆一不做二不休，开始研究<strong>wsl(windows的linux子系统)</strong>、研究docker的运行命令关于<strong>网络端口的投射</strong>、 关于<strong>cpolar等等一些知识</strong>，后面终于通过重重问题困难，终于练就了炼丹大法，<strong>感谢这几天的自己😎</strong>，没有放弃偷懒🤣。</p><h1 id="总结一下：《炼丹大法》涉及wsl-win下的Linux-基础命令指令、cuda-container-Toolkit的安装、win下docker的安装以及使用docker-desktop的镜像构建以及使用、ssh的命令以及使用、cpolar内网穿透的使用。"><a href="#总结一下：《炼丹大法》涉及wsl-win下的Linux-基础命令指令、cuda-container-Toolkit的安装、win下docker的安装以及使用docker-desktop的镜像构建以及使用、ssh的命令以及使用、cpolar内网穿透的使用。" class="headerlink" title="总结一下：《炼丹大法》涉及wsl(win下的Linux)基础命令指令、cuda container Toolkit的安装、win下docker的安装以及使用docker-desktop的镜像构建以及使用、ssh的命令以及使用、cpolar内网穿透的使用。"></a>总结一下：《炼丹大法》涉及wsl(win下的Linux)基础命令指令、cuda container Toolkit的安装、win下docker的安装以及使用docker-desktop的镜像构建以及使用、ssh的命令以及使用、cpolar内网穿透的使用。</h1><h2 id="第一步：安装wsl，以及Linux的子系统（建议宿主机和远程机都安装），做好对应配置"><a href="#第一步：安装wsl，以及Linux的子系统（建议宿主机和远程机都安装），做好对应配置" class="headerlink" title="第一步：安装wsl，以及Linux的子系统（建议宿主机和远程机都安装），做好对应配置"></a>第一步：安装wsl，以及Linux的子系统（建议宿主机和远程机都安装），做好对应配置</h2><h2 id="第二步：安装docker-desktop，完成一些必要的配置，如确定wsl集成"><a href="#第二步：安装docker-desktop，完成一些必要的配置，如确定wsl集成" class="headerlink" title="第二步：安装docker-desktop，完成一些必要的配置，如确定wsl集成"></a>第二步：安装docker-desktop，完成一些必要的配置，如确定wsl集成</h2><h2 id="第三步：在宿主机上安装cuda，以及利用wsl-魔法安装cuda-container-toolkit"><a href="#第三步：在宿主机上安装cuda，以及利用wsl-魔法安装cuda-container-toolkit" class="headerlink" title="第三步：在宿主机上安装cuda，以及利用wsl+魔法安装cuda container toolkit"></a>第三步：在宿主机上安装cuda，以及利用wsl+魔法安装cuda container toolkit</h2><h2 id="第四步：用docker拉取tensorflow的gpu-jupyter版本的image，并通过命令运行容器"><a href="#第四步：用docker拉取tensorflow的gpu-jupyter版本的image，并通过命令运行容器" class="headerlink" title="第四步：用docker拉取tensorflow的gpu-jupyter版本的image，并通过命令运行容器"></a>第四步：用docker拉取tensorflow的gpu-jupyter版本的image，并通过命令运行容器</h2><h2 id="第五步：用cpolar-ssh打通，宿主机和远程机直接的网络以及端口"><a href="#第五步：用cpolar-ssh打通，宿主机和远程机直接的网络以及端口" class="headerlink" title="第五步：用cpolar+ssh打通，宿主机和远程机直接的网络以及端口"></a>第五步：用cpolar+ssh打通，宿主机和远程机直接的网络以及端口</h2><h2 id="第六步：通过远程机的ssh连接后，用docker命令进入容器交互，下载缺少包环境。利用ssh连接是对应的端口转接，来打开docker容器的jupyter服务。"><a href="#第六步：通过远程机的ssh连接后，用docker命令进入容器交互，下载缺少包环境。利用ssh连接是对应的端口转接，来打开docker容器的jupyter服务。" class="headerlink" title="第六步：通过远程机的ssh连接后，用docker命令进入容器交互，下载缺少包环境。利用ssh连接是对应的端口转接，来打开docker容器的jupyter服务。"></a>第六步：通过远程机的ssh连接后，用docker命令进入容器交互，下载缺少包环境。利用ssh连接是对应的端口转接，来打开docker容器的jupyter服务。</h2><ul><li>具体docker命令如下</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">docker <span class="built_in">exec</span> -it 容器<span class="built_in">id</span> /bin/bash</span><br><span class="line"></span><br><span class="line"><span class="comment"># 转发端口</span></span><br><span class="line">ssh -f -N -L 5672:localhost:5672 用户名@远程服务器地址</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="通过以上的一些步骤便可实现在笔记本电脑上，对台式机上的容器环境进行使用其环境服务，以及变更调整其环境。真正做到快速炼丹的调控。"><a href="#通过以上的一些步骤便可实现在笔记本电脑上，对台式机上的容器环境进行使用其环境服务，以及变更调整其环境。真正做到快速炼丹的调控。" class="headerlink" title="通过以上的一些步骤便可实现在笔记本电脑上，对台式机上的容器环境进行使用其环境服务，以及变更调整其环境。真正做到快速炼丹的调控。"></a>通过以上的一些步骤便可实现在笔记本电脑上，对台式机上的容器环境进行使用其环境服务，以及变更调整其环境。真正做到快速炼丹的调控。</h2>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/10/liandanjihua/</id>
    <link href="https://ideaforge.icu/2025/11/10/liandanjihua/"/>
    <published>2025-11-09T16:00:00.000Z</published>
    <summary>这是解决一个关于笔记本远程连接docker，并使用docker来训练深度学习模型以及机器学习，提高ai代码效率问题的笔记</summary>
    <title>关于机器（深度）学习的炼丹docker部署计划</title>
    <updated>2025-11-09T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="questions" scheme="https://ideaforge.icu/tags/questions/"/>
    <category term="deep_learning" scheme="https://ideaforge.icu/tags/deep-learning/"/>
    <category term="machine_learning" scheme="https://ideaforge.icu/tags/machine-learning/"/>
    <content>
      <![CDATA[<span id="more"></span><h4 id="显示问题"><a href="#显示问题" class="headerlink" title="显示问题"></a>显示问题</h4><h6 id="关于为什么在vsc中显示不了jupyter-notebook中生成ploty图像？（25年11月5日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#关于为什么在vsc中显示不了jupyter-notebook中生成ploty图像？（25年11月5日）٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="关于为什么在vsc中显示不了jupyter notebook中生成ploty图像？（25年11月5日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>关于为什么在vsc中显示不了jupyter notebook中生成ploty图像？（25年11月5日）٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h6><blockquote><p>多用ai来提升问题的解决效率，提高学习的速度（同时要注意提示词给的精准，准意区分真正的解决方案和ai幻觉——靠各种方案去尝试）</p></blockquote><p>关键是插件Jupyter Notebook Renderers没有安装的问题。所以在浏览器中的jupyter可以显示ploty交互式的图像，但是在vsc中却没用。</p><h6 id="如何在博客中自动折叠代码、以及在obsidian中自动折叠代码？（25年11月6日）"><a href="#如何在博客中自动折叠代码、以及在obsidian中自动折叠代码？（25年11月6日）" class="headerlink" title="如何在博客中自动折叠代码、以及在obsidian中自动折叠代码？（25年11月6日）"></a>如何在博客中自动折叠代码、以及在obsidian中自动折叠代码？（25年11月6日）</h6><h4 id="代码运行问题"><a href="#代码运行问题" class="headerlink" title="代码运行问题"></a>代码运行问题</h4><h6 id="在vsc-notebook中如何调试代码-25年11月6日-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ"><a href="#在vsc-notebook中如何调试代码-25年11月6日-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵏᵎᵎᵎᵎ" class="headerlink" title="在vsc-notebook中如何调试代码? (25年11月6日) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ"></a>在vsc-notebook中如何调试代码? (25年11月6日) ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵏᵎᵎᵎᵎ</h6><p>在代码框运行旁边有个debug,可以调试代码代码块.</p><blockquote><p>代码调试和逐句ai辅助理解, 学习代码效率简直拉满. 其实做习惯了, 也可以少一点笔记编辑, 可以直接在理解后, 用自己的语言备注在代码块中.  </p></blockquote><h6 id="如何提高代码的运行效率和时间，外加服务器？（2025年11月7日）"><a href="#如何提高代码的运行效率和时间，外加服务器？（2025年11月7日）" class="headerlink" title="如何提高代码的运行效率和时间，外加服务器？（2025年11月7日）"></a>如何提高代码的运行效率和时间，外加服务器？（2025年11月7日）</h6><p><a href="https://blog.zouaw.com/article/52490.html">如何用阿里云服务器跑深度学习代码？-CLOUD云枢</a></p><h6 id="如何在其他的电脑中使用docker服务器部署，如何在主机中远程连接服务器？开启炼丹炉计划？（11月10日）spider-man"><a href="#如何在其他的电脑中使用docker服务器部署，如何在主机中远程连接服务器？开启炼丹炉计划？（11月10日）spider-man" class="headerlink" title="如何在其他的电脑中使用docker服务器部署，如何在主机中远程连接服务器？开启炼丹炉计划？（11月10日）spider man"></a>如何在其他的电脑中使用docker服务器部署，如何在主机中远程连接服务器？开启炼丹炉计划？（11月10日）spider man</h6><h6 id="如何用conda将包打包后，导入另外一个电脑的环境管理或者docker容器中？-11月11日-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ"><a href="#如何用conda将包打包后，导入另外一个电脑的环境管理或者docker容器中？-11月11日-٩-•̤̀ᵕ•̤́๑-ᵒᵏᵎᵎᵎᵎ" class="headerlink" title="如何用conda将包打包后，导入另外一个电脑的环境管理或者docker容器中？(11月11日)٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ"></a>如何用conda将包打包后，导入另外一个电脑的环境管理或者docker容器中？(11月11日)٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ</h6><ul><li>实现全量打包<a href="https://blog.csdn.net/weixin_42744466/article/details/149482255">【Anaconda】Conda 虚拟环境打包迁移教程_conda打包环境-CSDN博客</a></li></ul>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/05/dlml/</id>
    <link href="https://ideaforge.icu/2025/11/05/dlml/"/>
    <published>2025-11-04T16:00:00.000Z</published>
    <summary>解决问题最好的方式，就是正确的提问，从大问题中拆成小问题（一个个解决），这便是思考学习；鉴于每个人的学习情况不同，可以用全局搜索，是否遇到同一个问题。这是将会是一篇汇总自己在学习ml、dl过程中遇到最想的问题。以及我自己还有ai的回答。仅供参考</summary>
    <title>关于机器（深度）学习的500问/个人版</title>
    <updated>2025-11-04T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学术" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E6%9C%AF/"/>
    <category term="机器学习" scheme="https://ideaforge.icu/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="文献复现" scheme="https://ideaforge.icu/tags/%E6%96%87%E7%8C%AE%E5%A4%8D%E7%8E%B0/"/>
    <category term="高性能材料的设计" scheme="https://ideaforge.icu/tags/%E9%AB%98%E6%80%A7%E8%83%BD%E6%9D%90%E6%96%99%E7%9A%84%E8%AE%BE%E8%AE%A1/"/>
    <category term="文献阅读笔记" scheme="https://ideaforge.icu/tags/%E6%96%87%E7%8C%AE%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/"/>
    <content>
      <![CDATA[<h3 id="标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能"><a href="#标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能" class="headerlink" title="标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能"></a>标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能</h3><h4 id="期刊名称：Advanced-Functional-Materials"><a href="#期刊名称：Advanced-Functional-Materials" class="headerlink" title="期刊名称：Advanced Functional Materials"></a>期刊名称：Advanced Functional Materials</h4><h4 id="文章解读："><a href="#文章解读：" class="headerlink" title="文章解读："></a>文章解读：</h4><h5 id="intrduction：强调背景、抛砖引玉、娓娓道来"><a href="#intrduction：强调背景、抛砖引玉、娓娓道来" class="headerlink" title="intrduction：强调背景、抛砖引玉、娓娓道来"></a>intrduction：强调背景、抛砖引玉、娓娓道来</h5><ul><li>对象：聚酰亚胺Pi，在高频、高温下的需求</li><li>策略：<strong>mag</strong>，先讲传统策略的缺陷，劣势；突出强调mag方法</li><li><strong>mag</strong>：The MGA is a systematic research strategy to accelerate the discovery and optimization of new materials through <strong>high-throughput experimentation, computation, simulation, and data analysis</strong>. The core of MGA is to accurately predict material properties through machine learning (ML) and effectively screen desired materials from candidates.</li><li>举例：其他人用<strong>mag</strong>做出了什么，开始说在Pi领域也有人在用mag做研究。</li><li><strong>However</strong>：（画风一转）However, applying these methods to the design of polyimides still faces numerous challenges, such as the issue of <strong>data sparsity in high-frequency dielectric properties</strong> and <strong>the need for precise representation of polyimide structures</strong>.<br><strong>点明矛盾问题</strong>：高频段数据稀缺；聚亚酰胺的空间结构的精确表达</li><li>工作方法：the classical Havriliak-Negami (H-N) dielectric relaxation dual-parameter model——对于高频段数据稀缺性采用<strong>经典的Havriliak-Negami（H-N）介电弛豫双参数模型</strong>（第一性原理的引入）；<br>developed multi-level descriptors to comprehensively capture the characteristics of the molecular structures of PIs——对于后者空间结构的表征采用的是<strong>多级描述符</strong></li><li>多层神经网络<strong>HNN</strong>进行<strong>多任务学习MTL</strong>——Subsequently, using these data, we employed multi-task learning (MTL) with hierarchical neural networks (HNN) to establish an efficient and accurate machine learning model.</li><li>人工神经网络<strong>ANN</strong>——Meanwhile, an artificial neural network (ANN) model for predicting the glass transition temperature of PIs was developed</li><li><strong>遗传算法</strong>——A genetic algorithm was employed to create a series of PIs exhibiting exceptional high-frequency dielectric properties and heat resistance.</li></ul><h5 id="结果与讨论"><a href="#结果与讨论" class="headerlink" title="结果与讨论"></a>结果与讨论</h5><ul><li>Section 2.1 introduces the <strong>data preparation</strong>, and Section 2.2 details <strong>the workflow of ML model construction</strong>, as shown in Figure 1b. Section 2.3 describes <strong>the structural design of polyimides using genetic algorithms</strong>. In Section 2.4, we validated <strong>the reliability of the MGA method through experiments</strong>. Section 2.5 reveals <strong>potential chemical rules through interpretable feature analysis</strong>.</li></ul><h6 id="2-1数据准备"><a href="#2-1数据准备" class="headerlink" title="2.1数据准备"></a>2.1数据准备</h6><ul><li><p>原始数据：ployinfo总的聚亚酰胺的重复单元、介电性能（指不同频率和温度下的介电常数与介电损耗）、玻璃转化温度等参数；另一部分人工方式提取。</p></li><li><p>对象限制：所以聚酰亚胺均为不可交联型</p></li><li><p>数据拓展：Considering the need for sufficient low-frequency dielectric performance data to obtain the parameters of Equation 1, fitting was performed for 13 kinds of PIs that met the criteria (having at least 5 data points for low-frequency dielectric properties at the same test temperature).对低频拟合，再对高频计算<br>![[..&#x2F;..&#x2F;images&#x2F;Pasted image 20251104140004.png]]</p></li><li><p>分布展示<br>![[..&#x2F;..&#x2F;images&#x2F;Pasted image 20251104140130.png]]</p></li><li><p>关于数据表征：<strong>聚合物表征</strong>——简化的分子输入行条目系统（<strong>SMILES</strong>）<br>空间特征表征（<strong>多级描述符</strong>）：were automatically generated using the Python third-party library <strong>Mordred</strong>。（Python第三方库）<br>另外一种：<strong>RDKit固有的分子描述符</strong>。</p></li><li><p><strong>特征工程</strong>：将描述符数量减少，减少至130、107和170个</p></li><li><p><strong>子结构描述符SD</strong>方法，关键基元，更微小的结构。</p></li><li><p><strong>gspan算法</strong>：基于图的<strong>子结构模式挖掘算法</strong>，来提取<strong>每种聚酰亚胺中与各项性能相关的子结构</strong>，从而<strong>整合不同子结构对目标性能的贡献度</strong></p></li><li><p>结合定量结构-性能关系分析，我们最终分别获得了508、284和1313个特征，用于构建聚酰亚胺结构与介电常数、介电损耗和玻璃化转变温度之间的定量关系模型。</p></li></ul><h6 id="2-2基于机器学习的定量结构-性质关系模型构建"><a href="#2-2基于机器学习的定量结构-性质关系模型构建" class="headerlink" title="2.2基于机器学习的定量结构-性质关系模型构建"></a>2.2基于机器学习的定量结构-性质关系模型构建</h6><ul><li>简单来说<strong>HNN</strong>来多精度问题；<strong>ANN</strong>用来预测缺失的玻璃化转变温度；广泛<strong>使用的高斯过程回归（GPR）模型被确立为基准模型</strong>，用以<strong>评估神经网络模型的性能</strong>。</li><li>Due to the significant impact of the size of the feature set on the performance of ML models, a practical and highly accurate dimensionality reduction method is necessary to reduce redundant information in the features.需要采用一种<strong>实用且高精度的降维方法</strong>，以<strong>减少特征中的冗余信息</strong>。</li><li>We selected three feature reduction methods used in ML, including <strong>LASSO regression</strong>, <strong>ridge regression</strong>, and <strong>recursive feature elimination</strong> (RFE)</li><li>Note that we have taken the logarithm of the dielectric constants and the dielectric losses to guarantee that the final predicted values are all positive.</li></ul><blockquote><p>关于HNN的学习<a href=""></a>和ANN的学习<a href=""></a></p></blockquote><p>未完待续</p><h3 id="数据来源（对应数据结构）"><a href="#数据来源（对应数据结构）" class="headerlink" title="数据来源（对应数据结构）"></a>数据来源（对应数据结构）</h3>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/04/Simulation_and_reproduction_work/</id>
    <link href="https://ideaforge.icu/2025/11/04/Simulation_and_reproduction_work/"/>
    <published>2025-11-03T16:00:00.000Z</published>
    <summary>
      <![CDATA[<h3 id="标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能"><a href="#标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能" class="headerlink" title="标题——数据驱动的高性能聚酰亚胺设计：增强耐热性与介电性能"></a]]>
    </summary>
    <title>复现——Data-Driven Design of High-Performance Polyimides With Enhanced Heat Resistance and Dielectric Properties</title>
    <updated>2025-11-03T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="机器学习" scheme="https://ideaforge.icu/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="kaggle比赛" scheme="https://ideaforge.icu/tags/kaggle%E6%AF%94%E8%B5%9B/"/>
    <category term="函数功能记录" scheme="https://ideaforge.icu/tags/%E5%87%BD%E6%95%B0%E5%8A%9F%E8%83%BD%E8%AE%B0%E5%BD%95/"/>
    <category term="markdown_from_ipynb" scheme="https://ideaforge.icu/tags/markdown-from-ipynb/"/>
    <category term="catboost" scheme="https://ideaforge.icu/tags/catboost/"/>
    <content>
      <![CDATA[<span id="more"></span><h3 id="第三方库导入和数据集的导入，数据集的查看"><a href="#第三方库导入和数据集的导入，数据集的查看" class="headerlink" title="第三方库导入和数据集的导入，数据集的查看"></a>第三方库导入和数据集的导入，数据集的查看</h3><h4 id="第三方库的导入和输出对应的版本编号"><a href="#第三方库的导入和输出对应的版本编号" class="headerlink" title="第三方库的导入和输出对应的版本编号"></a>第三方库的导入和输出对应的版本编号</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</span><br><span class="line"><span class="keyword">import</span> seaborn <span class="keyword">as</span> sns</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"><span class="keyword">from</span> sklearn.model_selection <span class="keyword">import</span> train_test_split, cross_val_score</span><br><span class="line"><span class="keyword">from</span> sklearn.metrics <span class="keyword">import</span> mean_squared_error</span><br><span class="line"><span class="keyword">from</span> catboost <span class="keyword">import</span> CatBoostRegressor</span><br><span class="line"><span class="keyword">from</span> IPython.core.display <span class="keyword">import</span> HTML</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">show_object_columns_info</span>(<span class="params">df</span>):</span><br><span class="line">    <span class="string">&quot;显示DataFrame中所有object类型列的信息，包括列名、唯一值数量和所有唯一值&quot;</span></span><br><span class="line">    object_cols = df.select_dtypes(include=[<span class="string">&#x27;object&#x27;</span>]).columns</span><br><span class="line">    <span class="built_in">print</span>(object_cols)</span><br><span class="line">    <span class="keyword">for</span> col <span class="keyword">in</span> object_cols:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;列名: <span class="subst">&#123;col&#125;</span>&quot;</span>)</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&#x27;object数量: <span class="subst">&#123;df[col].nunique()&#125;</span>&#x27;</span>)</span><br><span class="line">        <span class="built_in">print</span>(df[col].unique())</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(sns.__version__)</span><br><span class="line"><span class="built_in">print</span>(pd.__version__)</span><br><span class="line"><span class="built_in">print</span>(np.__version__)</span><br><span class="line"></span><br></pre></td></tr></table></figure><pre><code>0.13.22.3.31.26.4</code></pre><h4 id="数据的导入，数据集的描述和清洗"><a href="#数据的导入，数据集的描述和清洗" class="headerlink" title="数据的导入，数据集的描述和清洗"></a>数据的导入，数据集的描述和清洗</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">train_path = <span class="string">&quot;../../datasets/competition_datas/Accident_Risk/train.csv&quot;</span></span><br><span class="line">test_path = <span class="string">&quot;../../datasets/competition_datas/Accident_Risk/test.csv&quot;</span></span><br><span class="line"></span><br><span class="line">train_ds = pd.read_csv(train_path) <span class="comment">#ds: dataset</span></span><br><span class="line"><span class="comment">#train_ds.info()</span></span><br><span class="line"><span class="comment">#print(train_ds.shape)</span></span><br><span class="line"><span class="comment">#train_ds.describe()</span></span><br><span class="line">train_ds.head()</span><br><span class="line"><span class="comment"># 使用函数显示object类型列的信息</span></span><br><span class="line"><span class="comment">#show_object_columns_info(train_ds)</span></span><br><span class="line">    </span><br></pre></td></tr></table></figure><div><style scoped>    .dataframe tbody tr th:only-of-type {        vertical-align: middle;    }<pre><code>.dataframe tbody tr th {    vertical-align: top;}.dataframe thead th {    text-align: right;}</code></pre><p></style></p><table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">      <th></th>      <th>id</th>      <th>road_type</th>      <th>num_lanes</th>      <th>curvature</th>      <th>speed_limit</th>      <th>lighting</th>      <th>weather</th>      <th>road_signs_present</th>      <th>public_road</th>      <th>time_of_day</th>      <th>holiday</th>      <th>school_season</th>      <th>num_reported_accidents</th>      <th>accident_risk</th>    </tr>  </thead>  <tbody>    <tr>      <th>0</th>      <td>0</td>      <td>urban</td>      <td>2</td>      <td>0.06</td>      <td>35</td>      <td>daylight</td>      <td>rainy</td>      <td>False</td>      <td>True</td>      <td>afternoon</td>      <td>False</td>      <td>True</td>      <td>1</td>      <td>0.13</td>    </tr>    <tr>      <th>1</th>      <td>1</td>      <td>urban</td>      <td>4</td>      <td>0.99</td>      <td>35</td>      <td>daylight</td>      <td>clear</td>      <td>True</td>      <td>False</td>      <td>evening</td>      <td>True</td>      <td>True</td>      <td>0</td>      <td>0.35</td>    </tr>    <tr>      <th>2</th>      <td>2</td>      <td>rural</td>      <td>4</td>      <td>0.63</td>      <td>70</td>      <td>dim</td>      <td>clear</td>      <td>False</td>      <td>True</td>      <td>morning</td>      <td>True</td>      <td>False</td>      <td>2</td>      <td>0.30</td>    </tr>    <tr>      <th>3</th>      <td>3</td>      <td>highway</td>      <td>4</td>      <td>0.07</td>      <td>35</td>      <td>dim</td>      <td>rainy</td>      <td>True</td>      <td>True</td>      <td>morning</td>      <td>False</td>      <td>False</td>      <td>1</td>      <td>0.21</td>    </tr>    <tr>      <th>4</th>      <td>4</td>      <td>rural</td>      <td>1</td>      <td>0.58</td>      <td>60</td>      <td>daylight</td>      <td>foggy</td>      <td>False</td>      <td>False</td>      <td>evening</td>      <td>True</td>      <td>False</td>      <td>1</td>      <td>0.56</td>    </tr>  </tbody></table></div><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">test_ds = pd.read_csv(test_path)</span><br><span class="line"><span class="comment">#print(test_ds.info())</span></span><br><span class="line">test_ds.head()</span><br></pre></td></tr></table></figure><div><style scoped>    .dataframe tbody tr th:only-of-type {        vertical-align: middle;    }<pre><code>.dataframe tbody tr th {    vertical-align: top;}.dataframe thead th {    text-align: right;}</code></pre><p></style></p><table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">      <th></th>      <th>id</th>      <th>road_type</th>      <th>num_lanes</th>      <th>curvature</th>      <th>speed_limit</th>      <th>lighting</th>      <th>weather</th>      <th>road_signs_present</th>      <th>public_road</th>      <th>time_of_day</th>      <th>holiday</th>      <th>school_season</th>      <th>num_reported_accidents</th>    </tr>  </thead>  <tbody>    <tr>      <th>0</th>      <td>517754</td>      <td>highway</td>      <td>2</td>      <td>0.34</td>      <td>45</td>      <td>night</td>      <td>clear</td>      <td>True</td>      <td>True</td>      <td>afternoon</td>      <td>True</td>      <td>True</td>      <td>1</td>    </tr>    <tr>      <th>1</th>      <td>517755</td>      <td>urban</td>      <td>3</td>      <td>0.04</td>      <td>45</td>      <td>dim</td>      <td>foggy</td>      <td>True</td>      <td>False</td>      <td>afternoon</td>      <td>True</td>      <td>False</td>      <td>0</td>    </tr>    <tr>      <th>2</th>      <td>517756</td>      <td>urban</td>      <td>2</td>      <td>0.59</td>      <td>35</td>      <td>dim</td>      <td>clear</td>      <td>True</td>      <td>False</td>      <td>afternoon</td>      <td>True</td>      <td>True</td>      <td>1</td>    </tr>    <tr>      <th>3</th>      <td>517757</td>      <td>rural</td>      <td>4</td>      <td>0.95</td>      <td>35</td>      <td>daylight</td>      <td>rainy</td>      <td>False</td>      <td>False</td>      <td>afternoon</td>      <td>False</td>      <td>False</td>      <td>2</td>    </tr>    <tr>      <th>4</th>      <td>517758</td>      <td>highway</td>      <td>2</td>      <td>0.86</td>      <td>35</td>      <td>daylight</td>      <td>clear</td>      <td>True</td>      <td>False</td>      <td>evening</td>      <td>False</td>      <td>True</td>      <td>3</td>    </tr>  </tbody></table></div><h4 id="数据的可视化-了解数据，并不是选择特征"><a href="#数据的可视化-了解数据，并不是选择特征" class="headerlink" title="数据的可视化(了解数据，并不是选择特征)"></a>数据的可视化(了解数据，并不是选择特征)</h4><p>由于上述数据并没有缺失值，因此我们不用处理缺失值.直接使用可视化工具进行可视化分析.</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">y = train_ds[<span class="string">&#x27;accident_risk&#x27;</span>]</span><br><span class="line">X = train_ds.drop(columns=[<span class="string">&#x27;accident_risk&#x27;</span>, <span class="string">&#x27;id&#x27;</span>],axis=<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line">X.info()</span><br><span class="line">display(X.head())</span><br><span class="line">X_num = X.select_dtypes(include=[<span class="string">&#x27;int64&#x27;</span>, <span class="string">&#x27;float64&#x27;</span>])</span><br></pre></td></tr></table></figure><pre><code>&lt;class &#39;pandas.core.frame.DataFrame&#39;&gt;RangeIndex: 517754 entries, 0 to 517753Data columns (total 12 columns): #   Column                  Non-Null Count   Dtype  ---  ------                  --------------   -----   0   road_type               517754 non-null  object  1   num_lanes               517754 non-null  int64   2   curvature               517754 non-null  float64 3   speed_limit             517754 non-null  int64   4   lighting                517754 non-null  object  5   weather                 517754 non-null  object  6   road_signs_present      517754 non-null  bool    7   public_road             517754 non-null  bool    8   time_of_day             517754 non-null  object  9   holiday                 517754 non-null  bool    10  school_season           517754 non-null  bool    11  num_reported_accidents  517754 non-null  int64  dtypes: bool(4), float64(1), int64(3), object(4)memory usage: 33.6+ MB</code></pre><div><style scoped>    .dataframe tbody tr th:only-of-type {        vertical-align: middle;    }<pre><code>.dataframe tbody tr th {    vertical-align: top;}.dataframe thead th {    text-align: right;}</code></pre><p></style></p><table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">      <th></th>      <th>road_type</th>      <th>num_lanes</th>      <th>curvature</th>      <th>speed_limit</th>      <th>lighting</th>      <th>weather</th>      <th>road_signs_present</th>      <th>public_road</th>      <th>time_of_day</th>      <th>holiday</th>      <th>school_season</th>      <th>num_reported_accidents</th>    </tr>  </thead>  <tbody>    <tr>      <th>0</th>      <td>urban</td>      <td>2</td>      <td>0.06</td>      <td>35</td>      <td>daylight</td>      <td>rainy</td>      <td>False</td>      <td>True</td>      <td>afternoon</td>      <td>False</td>      <td>True</td>      <td>1</td>    </tr>    <tr>      <th>1</th>      <td>urban</td>      <td>4</td>      <td>0.99</td>      <td>35</td>      <td>daylight</td>      <td>clear</td>      <td>True</td>      <td>False</td>      <td>evening</td>      <td>True</td>      <td>True</td>      <td>0</td>    </tr>    <tr>      <th>2</th>      <td>rural</td>      <td>4</td>      <td>0.63</td>      <td>70</td>      <td>dim</td>      <td>clear</td>      <td>False</td>      <td>True</td>      <td>morning</td>      <td>True</td>      <td>False</td>      <td>2</td>    </tr>    <tr>      <th>3</th>      <td>highway</td>      <td>4</td>      <td>0.07</td>      <td>35</td>      <td>dim</td>      <td>rainy</td>      <td>True</td>      <td>True</td>      <td>morning</td>      <td>False</td>      <td>False</td>      <td>1</td>    </tr>    <tr>      <th>4</th>      <td>rural</td>      <td>1</td>      <td>0.58</td>      <td>60</td>      <td>daylight</td>      <td>foggy</td>      <td>False</td>      <td>False</td>      <td>evening</td>      <td>True</td>      <td>False</td>      <td>1</td>    </tr>  </tbody></table></div><h4 id="目标分布"><a href="#目标分布" class="headerlink" title="目标分布"></a>目标分布</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">plt.figure()</span><br><span class="line">sns.histplot(y, kde=<span class="literal">True</span>, bins=<span class="number">50</span>)</span><br><span class="line">plt.title(<span class="string">&#x27;Distribution of Accident Risk&#x27;</span>)</span><br><span class="line">plt.xlabel(<span class="string">&#x27;Accident Risk&#x27;</span>)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><p><img src="/images/road_rick_new_one_8_0.png" alt="png"></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">X_corr = X_num.corr()</span><br><span class="line">plt.figure()</span><br><span class="line">sns.heatmap(X_corr, annot=<span class="literal">True</span>, cmap=<span class="string">&#x27;viridis&#x27;</span>, center=<span class="number">0</span>, fmt=<span class="string">&#x27;.2f&#x27;</span>)</span><br><span class="line">plt.title(<span class="string">&#x27;Correlation Heatmap&#x27;</span>)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><p><img src="/images/road_rick_new_one_9_0.png" alt="png"></p><h3 id="catboost"><a href="#catboost" class="headerlink" title="catboost"></a>catboost</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#display(X.head())</span></span><br><span class="line"><span class="comment">#display(y.head())</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#print(X.dtypes)</span></span><br><span class="line"><span class="comment"># 将X中的bool类型转化为object(str)类型,除了数值类型</span></span><br><span class="line">X_bool_cols = X.select_dtypes(include=[<span class="string">&#x27;bool&#x27;</span>]).columns</span><br><span class="line"><span class="built_in">print</span>(X_bool_cols)</span><br><span class="line"></span><br><span class="line"><span class="comment">#print(X_bool_cols)</span></span><br><span class="line"><span class="keyword">for</span> col <span class="keyword">in</span> X_bool_cols:</span><br><span class="line">    X[col] = X[col].astype(<span class="built_in">str</span>)</span><br><span class="line">    test_ds[col] = test_ds[col].astype(<span class="built_in">str</span>)</span><br><span class="line">    </span><br><span class="line">cat_features = X.select_dtypes(include=[<span class="string">&#x27;object&#x27;</span>]).columns.tolist()</span><br><span class="line"><span class="built_in">print</span>(cat_features)</span><br><span class="line"><span class="comment">#print(X.dtypes)</span></span><br></pre></td></tr></table></figure><pre><code>Index([&#39;road_signs_present&#39;, &#39;public_road&#39;, &#39;holiday&#39;, &#39;school_season&#39;], dtype=&#39;object&#39;)[&#39;road_type&#39;, &#39;lighting&#39;, &#39;weather&#39;, &#39;road_signs_present&#39;, &#39;public_road&#39;, &#39;time_of_day&#39;, &#39;holiday&#39;, &#39;school_season&#39;]</code></pre><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 分割数据集</span></span><br><span class="line">X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=<span class="number">0.2</span>, random_state=<span class="number">42</span>, shuffle=<span class="literal">True</span>, stratify=y)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(X_train.shape, X_val.shape, y_train.shape, y_val.shape)</span><br><span class="line"></span><br></pre></td></tr></table></figure><pre><code>(414203, 12) (103551, 12) (414203,) (103551,)</code></pre><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">params = &#123;</span><br><span class="line">    <span class="string">&#x27;iterations&#x27;</span>: <span class="number">1000</span>, <span class="comment"># 迭代次数</span></span><br><span class="line">    <span class="string">&#x27;learning_rate&#x27;</span>: <span class="number">0.1</span>, <span class="comment"># 学习率</span></span><br><span class="line">    <span class="string">&#x27;depth&#x27;</span>: <span class="number">6</span>, <span class="comment"># 树的深度</span></span><br><span class="line">    <span class="string">&#x27;cat_features&#x27;</span>: cat_features, <span class="comment"># 分类特征</span></span><br><span class="line">    <span class="string">&#x27;random_seed&#x27;</span>: <span class="number">42</span>, <span class="comment"># 随机种子</span></span><br><span class="line">    <span class="string">&#x27;loss_function&#x27;</span>: <span class="string">&#x27;RMSE&#x27;</span>, <span class="comment"># 损失函数</span></span><br><span class="line">    <span class="string">&#x27;verbose&#x27;</span>: <span class="number">100</span>, <span class="comment"># 每100次迭代打印一次信息</span></span><br><span class="line">    <span class="string">&#x27;early_stopping_rounds&#x27;</span>: <span class="number">50</span>, <span class="comment"># 早停轮数</span></span><br><span class="line">    <span class="string">&quot;task_type&quot;</span>: <span class="string">&quot;GPU&quot;</span>, <span class="comment"># 启用 GPU </span></span><br><span class="line">    <span class="string">&quot;devices&quot;</span>: <span class="string">&quot;0&quot;</span> <span class="comment"># 指定 GPU 设备</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">Catboost_model = CatBoostRegressor(**params)</span><br><span class="line">Catboost_model.fit(X, y, eval_set=(X_val, y_val)) <span class="comment"># eval_set 用于监控模型在验证集上的性能 没有则不会显示性能表现</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><pre><code>0:learn: 0.1523865test: 0.1523846best: 0.1523846 (0)total: 94.3msremaining: 1m 34s100:learn: 0.0564065test: 0.0564811best: 0.0564811 (100)total: 8.16sremaining: 1m 12s200:learn: 0.0561983test: 0.0563075best: 0.0563075 (200)total: 17sremaining: 1m 7s300:learn: 0.0560877test: 0.0562139best: 0.0562139 (300)total: 26sremaining: 1m400:learn: 0.0560011test: 0.0561416best: 0.0561416 (400)total: 34.5sremaining: 51.5s500:learn: 0.0559323test: 0.0560808best: 0.0560808 (500)total: 43.1sremaining: 42.9s600:learn: 0.0558682test: 0.0560278best: 0.0560278 (600)total: 52.6sremaining: 34.9s700:learn: 0.0558153test: 0.0559829best: 0.0559829 (700)total: 1m 1sremaining: 26.2s800:learn: 0.0557594test: 0.0559401best: 0.0559401 (800)total: 1m 10sremaining: 17.4s900:learn: 0.0557073test: 0.0559001best: 0.0559001 (899)total: 1m 19sremaining: 8.72s999:learn: 0.0556659test: 0.0558659best: 0.0558659 (999)total: 1m 29sremaining: 0usbestTest = 0.05586587195bestIteration = 999&lt;catboost.core.CatBoostRegressor at 0x257b5932e50&gt;</code></pre><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Make predictions on validation set </span></span><br><span class="line">y_pred = Catboost_model.predict(X_val)  </span><br><span class="line"><span class="comment"># Calculate RMSE </span></span><br><span class="line">val_rmse = mean_squared_error(y_val, y_pred)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Validation RMSE: <span class="subst">&#123;val_rmse:<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Cross-validation </span></span><br><span class="line">cv_scores = cross_val_score(Catboost_model, X, y, cv=<span class="number">5</span>, scoring=<span class="string">&#x27;neg_mean_squared_error&#x27;</span>)  <span class="comment"># 5折交叉验证 # 计算每个折的 负均方误差</span></span><br><span class="line">cv_rmse = np.sqrt(-cv_scores)  <span class="comment"># 计算每个折的 RMSE 并取平方根</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Cross-validation RMSE: <span class="subst">&#123;cv_rmse.mean():<span class="number">.4</span>f&#125;</span> (+/- <span class="subst">&#123;cv_rmse.std() * <span class="number">2</span>:<span class="number">.4</span>f&#125;</span>)&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure><pre><code>Validation RMSE: 0.00310:learn: 0.1523602total: 74.6msremaining: 1m 14s100:learn: 0.0563163total: 7.29sremaining: 1m 4s200:learn: 0.0560969total: 14.1sremaining: 56.1s300:learn: 0.0559734total: 20.9sremaining: 48.6s400:learn: 0.0558743total: 29.3sremaining: 43.8s500:learn: 0.0557934total: 36.8sremaining: 36.7s600:learn: 0.0557296total: 45.4sremaining: 30.1s700:learn: 0.0556612total: 53sremaining: 22.6s800:learn: 0.0556026total: 1mremaining: 15s900:learn: 0.0555548total: 1m 10sremaining: 7.79s999:learn: 0.0555088total: 1m 32sremaining: 0us0:learn: 0.1524152total: 78.6msremaining: 1m 18s100:learn: 0.0564793total: 10.3sremaining: 1m 31s200:learn: 0.0562581total: 21.2sremaining: 1m 24s300:learn: 0.0561289total: 33.6sremaining: 1m 17s400:learn: 0.0560335total: 44sremaining: 1m 5s500:learn: 0.0559565total: 57.6sremaining: 57.3s600:learn: 0.0558867total: 1m 13sremaining: 48.6s700:learn: 0.0558220total: 1m 26sremaining: 36.9s800:learn: 0.0557681total: 1m 38sremaining: 24.5s900:learn: 0.0557146total: 1m 50sremaining: 12.2s999:learn: 0.0556690total: 2m 4sremaining: 0us0:learn: 0.1523094total: 71.2msremaining: 1m 11s100:learn: 0.0563526total: 11.3sremaining: 1m 40s200:learn: 0.0561467total: 23.4sremaining: 1m 33s300:learn: 0.0560148total: 35.4sremaining: 1m 22s400:learn: 0.0559182total: 49.6sremaining: 1m 14s500:learn: 0.0558331total: 1m 2sremaining: 1m 2s600:learn: 0.0557582total: 1m 16sremaining: 50.5s700:learn: 0.0556941total: 1m 28sremaining: 37.7s800:learn: 0.0556372total: 1m 39sremaining: 24.8s900:learn: 0.0555797total: 1m 50sremaining: 12.2s999:learn: 0.0555314total: 2m 1sremaining: 0us0:learn: 0.1524123total: 80msremaining: 1m 19s100:learn: 0.0563271total: 8.31sremaining: 1m 13s200:learn: 0.0561321total: 19.8sremaining: 1m 18s300:learn: 0.0560138total: 35.6sremaining: 1m 22s400:learn: 0.0559252total: 48.3sremaining: 1m 12s500:learn: 0.0558532total: 59.8sremaining: 59.6s600:learn: 0.0557891total: 1m 11sremaining: 47.2s700:learn: 0.0557296total: 1m 23sremaining: 35.5s800:learn: 0.0556794total: 1m 35sremaining: 23.7s900:learn: 0.0556325total: 1m 45sremaining: 11.6s999:learn: 0.0555885total: 1m 55sremaining: 0us0:learn: 0.1523530total: 80.1msremaining: 1m 19s100:learn: 0.0564252total: 10.3sremaining: 1m 31s200:learn: 0.0562220total: 22.4sremaining: 1m 29s300:learn: 0.0561025total: 31.7sremaining: 1m 13s400:learn: 0.0559980total: 41.2sremaining: 1m 1s500:learn: 0.0559200total: 51.8sremaining: 51.6s600:learn: 0.0558540total: 1m 1sremaining: 40.9s700:learn: 0.0557899total: 1m 14sremaining: 31.9s800:learn: 0.0557331total: 1m 25sremaining: 21.2s900:learn: 0.0556776total: 1m 39sremaining: 11s999:learn: 0.0556246total: 1m 52sremaining: 0usCross-validation RMSE: 0.0561 (+/- 0.0005)</code></pre><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Feature Importance</span></span><br><span class="line">feature_importance = Catboost_model.get_feature_importance()  <span class="comment"># index类型</span></span><br><span class="line"><span class="comment">#print(feature_importance)</span></span><br><span class="line">feature_names = X.columns <span class="comment"># ndarray类型</span></span><br><span class="line"><span class="comment">#print(feature_names)</span></span><br><span class="line">importance_df = pd.DataFrame(&#123;</span><br><span class="line">    <span class="string">&#x27;feature&#x27;</span>: feature_names,</span><br><span class="line">    <span class="string">&#x27;importance&#x27;</span>: feature_importance</span><br><span class="line">&#125;).sort_values(<span class="string">&#x27;importance&#x27;</span>, ascending=<span class="literal">False</span>) <span class="comment"># 按重要性降序排序</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\nTop 10 Most Important Features:&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(importance_df.head(<span class="number">10</span>))</span><br></pre></td></tr></table></figure><pre><code>[2.68670072e-02 5.57111260e-02 1.53970212e+01 3.71319477e+01 3.42504222e+01 9.16493355e+00 2.00611428e-02 4.68708926e-02 2.95851141e-02 5.71107703e-02 1.50494424e-02 3.80441977e+00]Index([&#39;road_type&#39;, &#39;num_lanes&#39;, &#39;curvature&#39;, &#39;speed_limit&#39;, &#39;lighting&#39;,       &#39;weather&#39;, &#39;road_signs_present&#39;, &#39;public_road&#39;, &#39;time_of_day&#39;,       &#39;holiday&#39;, &#39;school_season&#39;, &#39;num_reported_accidents&#39;],      dtype=&#39;object&#39;)Top 10 Most Important Features:                   feature  importance3              speed_limit   37.1319484                 lighting   34.2504222                curvature   15.3970215                  weather    9.16493411  num_reported_accidents    3.8044209                  holiday    0.0571111                num_lanes    0.0557117              public_road    0.0468718              time_of_day    0.0295850                road_type    0.026867</code></pre><h3 id="结果可视化"><a href="#结果可视化" class="headerlink" title="结果可视化"></a>结果可视化</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure><pre><code>C:\Windows\Temp\ipykernel_27588\3889204982.py:3: FutureWarning: Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `y` variable to `hue` and set `legend=False` for the same effect.  sns.barplot(data=importance_df.head(10), x=&#39;importance&#39;, y=&#39;feature&#39;, palette=&#39;viridis&#39;)</code></pre><p><img src="/images/road_rick_new_one_17_1.png" alt="png"></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Plot actual vs predicted values</span></span><br><span class="line">plt.scatter(y_val, y_pred, alpha=<span class="number">0.1</span>, marker=<span class="string">&#x27;.&#x27;</span>, s=<span class="number">5</span>)</span><br><span class="line">plt.plot([y_val.<span class="built_in">min</span>(), y_val.<span class="built_in">max</span>()], [y_val.<span class="built_in">min</span>(), y_val.<span class="built_in">max</span>()], <span class="string">&#x27;r--&#x27;</span>, lw=<span class="number">2</span>)</span><br><span class="line">plt.xlabel(<span class="string">&#x27;Actual Values&#x27;</span>)</span><br><span class="line">plt.ylabel(<span class="string">&#x27;Predicted Values&#x27;</span>)</span><br><span class="line">plt.title(<span class="string">&#x27;Actual vs Predicted Values&#x27;</span>)</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><p><img src="/images/road_rick_new_one_18_0.png" alt="png"></p><h3 id="提交结果"><a href="#提交结果" class="headerlink" title="提交结果"></a>提交结果</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Prepare test data (excluding the id column for prediction)</span></span><br><span class="line"></span><br><span class="line">test_features = test_ds.drop(<span class="string">&#x27;id&#x27;</span>, axis=<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Make predictions on test set</span></span><br><span class="line">test_predictions = Catboost_model.predict(test_features)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Create submission file</span></span><br><span class="line">submission = pd.DataFrame(&#123;</span><br><span class="line">    <span class="string">&#x27;id&#x27;</span>: test_ds[<span class="string">&#x27;id&#x27;</span>],</span><br><span class="line">    <span class="string">&#x27;accident_risk&#x27;</span>: test_predictions</span><br><span class="line">&#125;)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Save submission file</span></span><br><span class="line">submission.to_csv(<span class="string">&#x27;submission.csv&#x27;</span>, index=<span class="literal">False</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Submission shape: <span class="subst">&#123;submission.shape&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\nFirst 5 rows of submission:&quot;</span>)</span><br><span class="line">display(submission.head())</span><br><span class="line"></span><br></pre></td></tr></table></figure><pre><code>Submission shape: (172585, 2)First 5 rows of submission:</code></pre><div><style scoped>    .dataframe tbody tr th:only-of-type {        vertical-align: middle;    }<pre><code>.dataframe tbody tr th {    vertical-align: top;}.dataframe thead th {    text-align: right;}</code></pre><p></style></p><table border="1" class="dataframe">  <thead>    <tr style="text-align: right;">      <th></th>      <th>id</th>      <th>accident_risk</th>    </tr>  </thead>  <tbody>    <tr>      <th>0</th>      <td>517754</td>      <td>0.291503</td>    </tr>    <tr>      <th>1</th>      <td>517755</td>      <td>0.122281</td>    </tr>    <tr>      <th>2</th>      <td>517756</td>      <td>0.187375</td>    </tr>    <tr>      <th>3</th>      <td>517757</td>      <td>0.313193</td>    </tr>    <tr>      <th>4</th>      <td>517758</td>      <td>0.398013</td>    </tr>  </tbody></table></div>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/03/Catboost_road_rick/</id>
    <link href="https://ideaforge.icu/2025/11/03/Catboost_road_rick/"/>
    <published>2025-11-02T16:00:00.000Z</published>
    <summary>这篇笔记基于Kaggle竞赛数据，详细记录了使用CatBoost进行道路风险预测的完整流程，包括第三方库导入与版本查看、数据集导入与清洗、数据可视化分析（目标分布和相关性热力图）、CatBoost模型构建（设置1000次迭代、0.1学习率、6层深度等参数并启用GPU加速）、模型评估（通过RMSE和5折交叉验证）、特征重要性分析（速度限制、光照条件和曲率是最重要的三个特征）、预测结果可视化（实际值vs预测值散点图）以及提交结果生成（创建包含id和accident_risk的submission.csv文件）。</summary>
    <title>CatBoost道路风险预测学习笔记（对应的ipynb的markdown版本）</title>
    <updated>2025-11-02T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学术" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E6%9C%AF/"/>
    <category term="学术讲座" scheme="https://ideaforge.icu/tags/%E5%AD%A6%E6%9C%AF%E8%AE%B2%E5%BA%A7/"/>
    <category term="高分子材料" scheme="https://ideaforge.icu/tags/%E9%AB%98%E5%88%86%E5%AD%90%E6%9D%90%E6%96%99/"/>
    <category term="高性能工程塑料" scheme="https://ideaforge.icu/tags/%E9%AB%98%E6%80%A7%E8%83%BD%E5%B7%A5%E7%A8%8B%E5%A1%91%E6%96%99/"/>
    <content>
      <![CDATA[<h2 id="讲师介绍"><a href="#讲师介绍" class="headerlink" title="讲师介绍"></a>讲师介绍</h2><p>详细见链接<a href="https://zhuanlan.zhihu.com/p/1904787911674672194">蹇锡高院士研究团队:杂萘联苯型聚芳醚高性能树脂及其应用技术</a></p><hr><h4 id="重点："><a href="#重点：" class="headerlink" title="重点："></a>重点：</h4><p>杂萘联苯型聚芳醚高性能树脂及其应用技术</p><blockquote><p>短纤维增强树脂基复合材料</p></blockquote><ul><li>耐磨自润滑复合材料</li><li>航空发动机高速止推轴承</li><li>核主泵动压滑动轴承瓦面TF330</li><li>高铁风源压缩机涡旋动涡卷ppesk<blockquote><p>连续纤维增强热塑性树脂基复合材料</p></blockquote></li></ul><blockquote><p>耐高温、耐辐照绝缘漆</p></blockquote><blockquote><p>功能膜——耐高温RO膜、耐400℃隔热涂料</p></blockquote><p><img src="/images/jxg_ppt.jpg" alt="工程应用方向"></p><hr><h4 id="启发"><a href="#启发" class="headerlink" title="启发"></a>启发</h4><ul><li>机器学习对高性能高分子材料比较适合筛选和实验（对复合材料不友好）</li><li>特征功能性高分子材料也可以加机器学习筛选预测</li></ul><hr><h5 id="前沿研究"><a href="#前沿研究" class="headerlink" title="前沿研究"></a>前沿研究</h5><h6 id="2035发展战略研究，建议发展重点："><a href="#2035发展战略研究，建议发展重点：" class="headerlink" title="2035发展战略研究，建议发展重点："></a>2035发展战略研究，建议发展重点：</h6><ol><li>高性能高分子材料及其复合材料</li><li>特种功能性高分子材料</li><li>通用高分子材料（过剩）高性能化、功能化（解决方法）</li><li>生物基高分子材料、可回收循环利用的高分子材料——笔者课题组所研究的方向（与双碳相关）</li></ol><h6 id="复合材料（无机非金属-金属材料-高分子材料）"><a href="#复合材料（无机非金属-金属材料-高分子材料）" class="headerlink" title="复合材料（无机非金属+金属材料+高分子材料）"></a>复合材料（无机非金属+金属材料+高分子材料）</h6><ul><li><strong>轻质、高强、耐高温（高分子材料的缺陷）、耐腐蚀</strong></li></ul><p>关注开发既<strong>耐高温又可溶解</strong>（固有性质是耐高温溶解差甚至不溶解）的新品种材料，希望实现高性能、低成本、可控设备——<strong>性价比、稳定性</strong>（材料领域）</p><p>例如：DHPZ结构引入，酰亚胺五元氮杂环，使得聚合物也具有扭曲非共平面结构，阻碍结晶，利于溶解。实现既耐高温又可溶<a href="https://baike.baidu.com/item/%E5%90%AB%E4%BA%8C%E6%B0%AE%E6%9D%82%E8%90%98%E9%85%AE%E8%81%94%E8%8B%AF%E7%BB%93%E6%9E%84%E8%81%9A%E8%8A%B3%E9%86%9A%E8%85%88%E7%A0%9C%E5%8F%8A%E5%85%B6%E5%88%B6%E5%A4%87%E6%B3%95/59196417">具体介绍</a></p>]]>
    </content>
    <id>https://ideaforge.icu/2025/11/03/jianxigao_1103/</id>
    <link href="https://ideaforge.icu/2025/11/03/jianxigao_1103/"/>
    <published>2025-11-02T16:00:00.000Z</published>
    <summary>这是一篇关于蹇锡高院士学术讲座的笔记，主题为&quot;新型杂环高性能工程塑料及其加工应用发展进展——杂萘联苯型聚芳醚高性能树脂及其应用技术&quot;。笔记包含讲师介绍链接、重点内容（短纤维增强树脂基复合材料、连续纤维增强热塑性树脂基复合材料、耐高温耐辐照绝缘漆、功能膜等应用领域）、启发（机器学习在高分子材料筛选中的适用性）以及前沿研究（2035发展战略研究建议发展重点和复合材料特性），特别提到关注既耐高温又可溶解的新品种材料开发，如引入DHPZ结构实现既耐高温又可溶的特性。</summary>
    <title>蹇锡高学术讲座——新型杂环高性能工程塑料及其加工应用发展进展——杂萘联苯型聚芳醚高性能树脂及其应用技术</title>
    <updated>2025-11-02T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="机器学习" scheme="https://ideaforge.icu/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="kaggle比赛" scheme="https://ideaforge.icu/tags/kaggle%E6%AF%94%E8%B5%9B/"/>
    <category term="函数功能记录" scheme="https://ideaforge.icu/tags/%E5%87%BD%E6%95%B0%E5%8A%9F%E8%83%BD%E8%AE%B0%E5%BD%95/"/>
    <category term="catboost" scheme="https://ideaforge.icu/tags/catboost/"/>
    <content>
      <![CDATA[<span id="more"></span><h3 id="下面所学知识经验均来自对kaggle竞赛Predicting-Road-Accident-Riskz中的公开Notebook代码的模仿过程"><a href="#下面所学知识经验均来自对kaggle竞赛Predicting-Road-Accident-Riskz中的公开Notebook代码的模仿过程" class="headerlink" title="下面所学知识经验均来自对kaggle竞赛Predicting Road Accident Riskz中的公开Notebook代码的模仿过程"></a>下面所学知识经验均来自对kaggle竞赛Predicting Road Accident Riskz中的公开Notebook<a href="https://www.kaggle.com/code/josephnehrenz/s5e10-predicting-road-accident-risk-w-web-app/notebook">代码</a>的模仿过程</h3><hr><h4 id="数据观察（主要用pandas库）"><a href="#数据观察（主要用pandas库）" class="headerlink" title="数据观察（主要用pandas库）"></a>数据观察（主要用pandas库）</h4><h5 id="读取数据"><a href="#读取数据" class="headerlink" title="读取数据"></a>读取数据</h5><ul><li>读取文件——<strong>pd.read_csv</strong>(“path”)<code>pd.read_csv</code></li></ul><h5 id="数据分析"><a href="#数据分析" class="headerlink" title="数据分析"></a>数据分析</h5><blockquote><p>注意kaggle比赛中，数据已经备好了，从赛者可专注于模型的建立和学习<br>一下较为常用的用粗体表示</p></blockquote><ul><li>df.columns 查看列 <code>df.columns</code></li><li>数据DataFrame的信息——<strong>df.info()</strong>， <code>df.info()</code>输出列名、以及对于列名的数据大小、空值情况、以及对应的数据类型</li><li>df.shape查看数据的形状 <code>df.shape</code></li><li>数据DataFrame的前五行——<strong>df.head()</strong>， <code>df.head()</code>在nb中会自动展示，或者要对比可以print，or display</li></ul><hr><h4 id="EDA"><a href="#EDA" class="headerlink" title="EDA"></a>EDA</h4><blockquote><p>探索性数据分析（Exploratory Data Analysis，简称EDA）是数据科学中的关键步骤，旨在熟悉数据集、揭示变量间的关系并指导后续处理。通过读取数据、数据汇总、总览、缺失值和异常值分析，以及特征分析，我们可以深入了解数据的结构和质量。</p></blockquote><h5 id="目标分布"><a href="#目标分布" class="headerlink" title="目标分布"></a>目标分布</h5><ul><li><code>plt.figure()</code>的作用创建画布</li><li><code>sns.histplot()</code>的参数和功能是什么？bin箱子的数目，kde是否加一条拟合分布的曲线</li></ul><blockquote><p>参考两个教程<a href="https://blog.csdn.net/maizeman126/article/details/135347919">民间教程</a>、<a href="https://seaborn.pydata.org/generated/seaborn.histplot.html">官方教程</a></p></blockquote><h5 id="关联热力图"><a href="#关联热力图" class="headerlink" title="关联热力图"></a>关联热力图</h5><ul><li><p>筛选出数值列<code>df.select_dtypes（include=[&quot;int64&quot;,&quot;float64&quot;]）</code></p></li><li><p><code>df.corr()</code>用来计算各列之间的相关系数的（可以自定义方法用method参数来指定）。这用来做作为<code> sns.heatmap()</code>的输入参数极为方便</p></li></ul><blockquote><p>参考<a href="https://blog.csdn.net/qq_41721951/article/details/109645921">民间教程</a></p></blockquote><ul><li><code>sns.heatmap()</code></li></ul><blockquote><p>参考两个教程<a href="https://blog.csdn.net/weixin_45492560/article/details/106227864">民间教程</a>、<a href="https://seaborn.org.cn/generated/seaborn.heatmap.html">官方教程</a></p></blockquote><hr><h4 id="CatBoost-Model"><a href="#CatBoost-Model" class="headerlink" title="CatBoost Model"></a>CatBoost Model</h4><h5 id="介绍-擅长处理类别特征"><a href="#介绍-擅长处理类别特征" class="headerlink" title="介绍(擅长处理类别特征)"></a>介绍(擅长处理类别特征)</h5><p>CatBoost的全称是<strong>Categorical Boosting</strong>，它是一种由俄罗斯搜索巨头Yandex开发的梯度提升算法库，特别擅长处理类别型特征。</p><p>CatBoost的名称来源于其核心功能，即处理类别型特征（Categorical Features）和梯度提升（Gradient Boosting）。与其他梯度提升算法如XGBoost和LightGBM相比，CatBoost在处理类别型特征方面具有显著优势。</p><p>CatBoost的特点</p><ol><li><strong>类别型特征处理</strong>：CatBoost使用独特的编码方法来处理类别型特征，降低过拟合风险。（<strong>无需对这些特征（分类特征）进行One-Hot编码</strong>）</li><li><strong>克服梯度偏差</strong>：CatBoost采用排序提升的概念，防止目标泄漏和过度拟合。</li><li><strong>高效实现</strong>：支持GPU加速和多GPU训练，提升计算效率。</li><li><strong>鲁棒性</strong>：减少对大量超参数调整的需求，降低过度拟合的机会。<br>CatBoost的应用</li></ol><p>CatBoost在多个领域中表现出色，包括金融风控、推荐系统和生物医学等。例如，在信用卡欺诈检测、商品推荐和基因表达数据分析中，CatBoost能够有效处理类别型特征和缺失值，构建精准的预测模型。</p><p>总之，CatBoost作为一种专为类别型特征优化的梯度提升算法，凭借其独特的处理策略和高效的实现，迅速成为业界广受欢迎的GBDT框架。</p><blockquote><p>详细介绍解释参考<a href="https://zhuanlan.zhihu.com/p/540956200">数据STUDIO, 2022</a>、<a href="https://blog.csdn.net/ai_aijiang/article/details/149075808">CatBoost深度解析</a>、<a href="https://catboost.ai/docs/en/concepts/python-quickstart">官方 CatBoost</a></p></blockquote><h5 id="分类特征（前面对数值类型的特征进行了关联性的分析）"><a href="#分类特征（前面对数值类型的特征进行了关联性的分析）" class="headerlink" title="分类特征（前面对数值类型的特征进行了关联性的分析）"></a>分类特征（前面对数值类型的特征进行了关联性的分析）</h5><p><strong>dtype一般是bool或者object</strong></p><ul><li><p>作者做了一个操作，将bool转化为str，也变成了object对象。关于选择bool值时，<code>df.select_dtypes(include=)</code>进行优化</p></li><li><p>关于具体转化格式的函数方法，作者使用的是<code>df.astype()</code></p></li></ul><blockquote><p>可参考<a href="https://blog.csdn.net/u013172930/article/details/143723145">转化类型</a></p></blockquote><p> 关于<code>from sklearn.model_selection import train_test_split, cross_val_score</code></p><ul><li><code>train_test_split</code>这个函数十分常用在从训练集分割出验证集时。</li></ul><blockquote><p>参考<a href="https://blog.csdn.net/2301_76849908/article/details/149281512">民间教程</a>、<a href="https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html">官方教程</a></p></blockquote><h5 id="模型构建"><a href="#模型构建" class="headerlink" title="模型构建"></a>模型构建</h5><p>使用的是catboost库中的，CatBoostRegressor模型，记得安装</p><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">conda activate your_env</span><br><span class="line"></span><br><span class="line">conda install catboost</span><br></pre></td></tr></table></figure><h5 id="模型参数选择"><a href="#模型参数选择" class="headerlink" title="模型参数选择"></a>模型参数选择</h5><ol><li>iterations 迭代次数（定义了训练过程中提升树的数量）</li><li>learning_rate 学习率（控制每一步梯度提升时模型权重更新的幅度，而迭代）</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">params = &#123;     </span><br><span class="line"><span class="string">&#x27;iterations&#x27;</span>: <span class="number">1000</span>, <span class="comment"># 迭代次数     </span></span><br><span class="line"><span class="string">&#x27;learning_rate&#x27;</span>: <span class="number">0.1</span>, <span class="comment"># 学习率     </span></span><br><span class="line"><span class="string">&#x27;depth&#x27;</span>: <span class="number">6</span>, <span class="comment"># 树的深度     </span></span><br><span class="line"><span class="string">&#x27;cat_features&#x27;</span>: cat_features, <span class="comment"># 分类特征</span></span><br><span class="line"><span class="string">&#x27;random_seed&#x27;</span>: <span class="number">42</span>, <span class="comment"># 随机种子     </span></span><br><span class="line"><span class="string">&#x27;loss_function&#x27;</span>: <span class="string">&#x27;RMSE&#x27;</span>, <span class="comment"># 损失函数     </span></span><br><span class="line"><span class="string">&#x27;verbose&#x27;</span>: <span class="number">100</span>, <span class="comment"># 每100次迭代打印一次信息</span></span><br><span class="line"><span class="string">&#x27;early_stopping_rounds&#x27;</span>: <span class="number">50</span>, <span class="comment"># 早停轮数 </span></span><br><span class="line"><span class="string">&quot;task_type&quot;</span>: <span class="string">&quot;GPU&quot;</span>, <span class="comment"># 启用 GPU</span></span><br><span class="line"><span class="string">&quot;devices&quot;</span>: <span class="string">&quot;0&quot;</span> <span class="comment"># 指定 GPU 设备</span></span><br><span class="line">&#125;  </span><br><span class="line"></span><br><span class="line">Catboost_model = CatBoostRegressor(**params) Catboost_model.fit(X, y, eval_set=(X_val, y_val)) <span class="comment"># eval_set 用于监控模型在验证集上的性能 没有则不会显示性能表现</span></span><br></pre></td></tr></table></figure><ol start="3"><li>损失函数（二元分类Logloss；回归RMSE（均方根误差） or MAE（平均绝对误差；多分类采用Multiclass损失；不平衡数据集（QueryCrossentropy）</li><li>GPU加速，加快训练速度</li></ol><ul><li><code>model.fit()</code> 模型训练，输入X，以及对应的y标签即可。</li></ul><h5 id="模型评估"><a href="#模型评估" class="headerlink" title="模型评估"></a>模型评估</h5><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Make predictions on validation set</span></span><br><span class="line">y_pred = Catboost_model.predict(X_val)   <span class="comment"># Calculate RMSE</span></span><br><span class="line">val_rmse = mean_squared_error(y_val, y_pred) <span class="built_in">print</span>(<span class="string">f&quot;Validation RMSE: <span class="subst">&#123;val_rmse:<span class="number">.4</span>f&#125;</span>&quot;</span>)  </span><br><span class="line"></span><br><span class="line"><span class="comment"># Cross-validation</span></span><br><span class="line">cv_scores = cross_val_score(Catboost_model, X, y, cv=<span class="number">5</span>, scoring=<span class="string">&#x27;neg_mean_squared_error&#x27;</span>) </span><br><span class="line">cv_rmse = np.sqrt(-cv_scores)  </span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Cross-validation RMSE: <span class="subst">&#123;cv_rmse.mean():<span class="number">.4</span>f&#125;</span> (+/- <span class="subst">&#123;cv_rmse.std() * <span class="number">2</span>:<span class="number">.4</span>f&#125;</span>)&quot;</span>)</span><br></pre></td></tr></table></figure><p>这段代码实现了交叉验证（Cross-validation）过程，用于评估CatBoost模型的性能。具体解释如下：</p><ol><li><strong>第一行代码</strong>：<code>cv_scores = cross_val_score(Catboost_model, X, y, cv=5, scoring=&#39;neg_mean_squared_error&#39;)</code></li></ol><ul><li>使用<code>cross_val_score</code>函数执行5折交叉验证</li><li>参数<code>Catboost_model</code>是已经定义好的CatBoost模型</li><li><code>X</code>是特征数据，<code>y</code>是目标变量</li><li><code>cv=5</code>表示将数据集分成5个部分进行交叉验证</li><li><code>scoring=&#39;neg_mean_squared_error&#39;</code>表示使用负均方误差作为评分指标（负值是因为scikit-learn中大多数评分函数追求最大化）</li></ul><ol start="2"><li><strong>第二行代码</strong>：<code>cv_rmse = np.sqrt(-cv_scores)</code></li></ol><ul><li>将负均方误差转换为均方根误差（RMSE）</li><li>首先取负值（因为原始得分是负数），然后开平方</li><li>得到的<code>cv_rmse</code>是一个包含5个元素的数组，每个元素对应一折验证的RMSE（均方根误差）</li></ul><ol start="3"><li><strong>第三行代码</strong>：<code>print(f&quot;Cross-validation RMSE: {cv_rmse.mean():.4f} (+/- {cv_rmse.std() * 2:.4f})&quot;)</code></li></ol><ul><li>输出交叉验证的平均RMSE和标准差</li><li><code>.mean()</code>计算5折RMSE的平均值</li><li><code>.std() * 2</code>计算2倍标准差，表示模型性能的置信区间范围</li><li><code>:.4f</code>表示保留4位小数  这段代码的主要目的是通过交叉验证来评估模型的泛化能力，避免过拟合问题，并提供模型性能的可靠估计。</li><li><code>mean_squared_error()</code> 计算两列的均方根误差</li><li><code>cross_val_score()</code></li></ul><blockquote><p>参考教程<a href="https://blog.csdn.net/weixin_42211626/article/details/100064842">民间教程</a>、<a href="https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html">官方文档</a>、<a href="https://scikit-learn.cn/stable/modules/cross_validation.html">中文官方</a></p></blockquote><h5 id="重要性分析"><a href="#重要性分析" class="headerlink" title="重要性分析"></a>重要性分析</h5><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Feature Importance</span></span><br><span class="line"></span><br><span class="line">feature_importance = Catboost_model.get_feature_importance()  <span class="comment"># index类型</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#print(feature_importance)</span></span><br><span class="line"></span><br><span class="line">feature_names = X.columns <span class="comment"># ndarray类型</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#print(feature_names)</span></span><br><span class="line"></span><br><span class="line">importance_df = pd.DataFrame(&#123;</span><br><span class="line"></span><br><span class="line">    <span class="string">&#x27;feature&#x27;</span>: feature_names,</span><br><span class="line"></span><br><span class="line">    <span class="string">&#x27;importance&#x27;</span>: feature_importance</span><br><span class="line"></span><br><span class="line">&#125;).sort_values(<span class="string">&#x27;importance&#x27;</span>, ascending=<span class="literal">False</span>) <span class="comment"># 按重要性降序排序</span></span><br><span class="line"></span><br><span class="line">  </span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\nTop 10 Most Important Features:&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(importance_df.head(<span class="number">10</span>))</span><br></pre></td></tr></table></figure><p>这里直接用<code>catboost_model.get_feature_importance()</code>方法。</p><ul><li><code>sort_values()</code> 函数，他是一个排序函数</li></ul><blockquote><p>参考<a href="https://yaoweibin.cn/pandas-series%e6%8e%92%e5%ba%8f%e7%a5%9e%e5%99%a8sort_values%e5%85%a8%e9%9d%a2%e8%a7%a3%e6%9e%90%e4%b8%8e%e5%ba%94%e7%94%a8/">民间教程</a></p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Detailed feature importance plot</span></span><br><span class="line"></span><br><span class="line">plt.figure()</span><br><span class="line"></span><br><span class="line">sns.barplot(data=importance_df.head(<span class="number">10</span>), x=<span class="string">&#x27;importance&#x27;</span>, y=<span class="string">&#x27;feature&#x27;</span>, palette=<span class="string">&#x27;viridis&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.title(<span class="string">&#x27;Top 10 Most Important Features&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.xlabel(<span class="string">&#x27;Importance Score&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><p><code>sns.barplot()</code>函数功能，支持df的输入，指定对于xy的列名即可</p><h4 id="可视化结果"><a href="#可视化结果" class="headerlink" title="可视化结果"></a>可视化结果</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Plot actual vs predicted values</span></span><br><span class="line"></span><br><span class="line">plt.scatter(y_val, y_pred, alpha=<span class="number">0.1</span>, marker=<span class="string">&#x27;.&#x27;</span>, s=<span class="number">5</span>)</span><br><span class="line"><span class="comment"># 画出对应的散点图，x为实际，y为预测。所有的散点越靠近完美对角线，就意味着预测效果越好</span></span><br><span class="line">plt.plot([y_val.<span class="built_in">min</span>(), y_val.<span class="built_in">max</span>()], [y_val.<span class="built_in">min</span>(), y_val.<span class="built_in">max</span>()], <span class="string">&#x27;r--&#x27;</span>, lw=<span class="number">2</span>) </span><br><span class="line"><span class="comment"># 第一个参数代表x范围，第二个参数是y的范围，此时默认x=y 画出完美预测线，对角线。</span></span><br><span class="line"></span><br><span class="line">plt.xlabel(<span class="string">&#x27;Actual Values&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.ylabel(<span class="string">&#x27;Predicted Values&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.title(<span class="string">&#x27;Actual vs Predicted Values&#x27;</span>)</span><br><span class="line"></span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure><h4 id="提交结果"><a href="#提交结果" class="headerlink" title="提交结果"></a>提交结果</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Prepare test data (excluding the id column for prediction)</span></span><br><span class="line"></span><br><span class="line">test_features = test_ds.drop(<span class="string">&#x27;id&#x27;</span>, axis=<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Make predictions on test set</span></span><br><span class="line">test_predictions = Catboost_model.predict(test_features)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Create submission file</span></span><br><span class="line"></span><br><span class="line">submission = pd.DataFrame(&#123;</span><br><span class="line">    <span class="string">&#x27;id&#x27;</span>: test_ds[<span class="string">&#x27;id&#x27;</span>],</span><br><span class="line">    <span class="string">&#x27;accident_risk&#x27;</span>: test_predictions</span><br><span class="line">&#125;)</span><br><span class="line"></span><br><span class="line">  </span><br><span class="line"><span class="comment"># Save submission file</span></span><br><span class="line">submission.to_csv(<span class="string">&#x27;submission.csv&#x27;</span>, index=<span class="literal">False</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Submission shape: <span class="subst">&#123;submission.shape&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\nFirst 5 rows of submission:&quot;</span>)</span><br><span class="line">display(submission.head())</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://ideaforge.icu/2025/10/30/Catboost_road_rick_leanring/</id>
    <link href="https://ideaforge.icu/2025/10/30/Catboost_road_rick_leanring/"/>
    <published>2025-10-29T16:00:00.000Z</published>
    <summary>这篇笔记基于Kaggle竞赛&quot;Predicting Road Accident Risk&quot;的公开代码，主要介绍了从数据观察、探索性数据分析(EDA)到CatBoost模型应用的完整流程，包括使用pandas读取和分析数据，通过matplotlib和seaborn进行数据可视化，利用CatBoost算法（特别擅长处理类别特征）构建预测模型并设置GPU加速，通过RMSE和交叉验证评估模型性能，提取特征重要性并可视化，以及按比赛要求准备和输出预测结果。</summary>
    <title>CatBoost道路风险预测学习笔记</title>
    <updated>2025-10-29T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="观点" scheme="https://ideaforge.icu/categories/%E8%A7%82%E7%82%B9/"/>
    <category term="想法" scheme="https://ideaforge.icu/tags/%E6%83%B3%E6%B3%95/"/>
    <category term="观点" scheme="https://ideaforge.icu/tags/%E8%A7%82%E7%82%B9/"/>
    <content>
      <![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="窃取机密失败QAQ..." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">  <script id="hbeData" type="hbeData" data-hmacdigest="acab7b5f8bf6b1a1900e851d689933ef0d5be34356e4b15dc30aa32ec70cbad4">dccefed83fa27a7ad5aaf2d09629528976e37d2b1b2ec508bbe9326c2b8d1c780be92b472d5958c19047d34b42881fb25248fe62ff9abbe53a80248f116632ed4fda1534854660661c3454433b03af84d8aa5d195b921a47729c761b9df0a3442c5ea33340f50fccfcf1b8b334a34865787a1bf897ca134f8ed4442391822c185f4575a53d5b8e34d08ae41ba22b9435ad9194d4982e4d0bf4e4d01e9a02774a322fc09f6e2fa5f6d760a7194051e55e9aed1c6a7238138a395c2c3c5172fedab06b3ac3ab5f5d17c8a59e9eb490504ba2c35d07e0fd5f2a40f2d4031bcffc0489eb6e4aff1013edc58ea83aea76d351c8469547fe267a5b7be6e09dc08138c7bad678602dcfbc9fa1bdd0e03f50037251e5fbba10f46d8fd713616da5c3eb5abfdc92ea12fbe0474e0bbd87362eb21a2f59d00c57477f592192d3d234a33ba0da34d3446d47e3e9d92c727835190bc2a70f07366a07c2e9040d1d64ccc77f28d59c6b8192e9df2cb06c35ad0b659f83dcfa078ee06659541a57f2d729fdaddf2be5e744d99d32733c8ab72a21f7f7f870f22d43236fb4c6e7b5e1fc54362a0f6aef7284d8246d2c334676cc899bffccff36951c4a38b4774913c01169fefc133ce1eff96d48c74f2c1ff59aed29659203f62c1acbca9d5cfde63b797854b920f4d624d188a3e7a386c1901d4ef37125d76b27e26044d76e738850b46e43d29b3ce764f0816cf7e0af6b36ff96b36ab10b006327e2e34400ed9821b7298095a881bd88f4f2f720056a18bf84256d9b9842e5a49a70dd38a0972bfdeb116bfc91bad5d09477cc862295dfd90f26b63c59ae2e4234ee527c950641f7778c18289bbae44b13b0b0cee77cd033e2c3187ba997889db910116fc06b2f1d7e7b2ceb7801a22d0e3d13d74a083a4b6d61cb0ae16b3cc3bb68442639f13b66320818d7eea4e05ce7d7b92c8f95a13b946bd185587df8c23cca824f84b4162c60dfebfc5bd0f7ce79c414d21fe89852a0b5ac85403427471345f2a0949e8e7968c306eb1cde1363635dbaf5b26e1c72129641dc649981c3f3e7cc568dc98e418f326fa45498a787063b0b2dab26eb4c6e2ed918385265eb1b3c3d01bf258c0c67f33f5ad1f379e944d75521bfae44c3c8cf68ccf85a94ed0af87a6aa4e5417e66ec6921211bc672308179db70ed2987eb59662e8987b61dfef8a6b19da702fc06ee2f7ccb0e4a58b2dc22d34ad602d1c593c6285b66417ebec33c7143e01e45d2b1e9274d853642b76049dcee9786ee7ea47904ba6075fddcb0ffa8cd3c1ee4d0fb41dd4e3d13bc3575f89d18c4d1a659bec0561b52d9a48b9b5c424bf3c1f7e1ba3f688db6abfd52c78f1f683da6798fca4ab14b075ae4ef75e7dfbb41b3a68f7ebcecce6b8c78d8dc75f0fb42b8e4987a1cacd6809c7bf8e65312874ff007387a976212ec1f4df5b899462412355a29eb7c476b84aeb654710c283eb5bfd4995395a56dcd4896d44204eab659699c4c3227d4f4b9b6c7793762d08ccb77bc69cace8876a56d40ea7924dee3e713e72250a9abc12cff2df02fe35bd7ff91f282c8b1682405701ee851871dfd494c05cff2a89fe03cb2b43bdedaa8a9ed1cc6308d0720a15e9971e64e7a63e9f53ed69cccfd04dcc08b24cbe27fa1bd4264f48e919fe232af69c594a04ef09c3d07484f3560da8d74e4ffee48782f57180098ad994c94f1982a4ee87b7ac9b2793b9be75f49db433550d4523e95c0ba92cc2d13a8bf743999ee49d4955c9abe046cf16d126838514404a12cd2050f448adad7ffeb572567391eb5a8096cf3dee4eced850b98e0281e233c6001e60890669a0dd9511ff37dda9f45941edf05c745b0aab174e91846cf4c66f462ef2c172df34296da5af94d14b04a31f9f07ecac9859ab19e97eadb3fbea100787c89f787a457701f0a127ee297272c17e4cd28542cd7f8eafe9733325cb9535fbe5e186fa1cc8e84075cfe397c49837b457b9102ea87e1f1568568c50346a1ab091f9191fbb231db82d95d7e9a78d63b7de10322f942f372d442555fea5900a921ccceba6f121f7f8856cae4936960fd6796f409f3019b6ba705a2c7aa393c2e6911015843abe64c243f9b843b9a199253fdd876a50e7a62d2acbe28231c3b0c9ab13448a7ed2be4e5bc1f28f099f1ef9ed36b634e2bbe4b311747b1cd528619167a35e265216f29c4af3f3f427a8d0140a9d21505bc015657938a6ceffe1d90fa9ea00d56ec21c0aa328d3ce3078956c2919c85619ca188126b70e381d33d33e2101b94f6d1b42bf4f33884ba3cfb41e11d1619fdbf11f49306d34e61caee383004bf18d074b910d7c87de78f046fe034d59aa0cbba223388f1046ace871184e9d744ef354253f02d384d6a74e2f3977b5586c9701421a502938487526f794fdd1f3d88ff17b38118ecf7a604335797ead8df23d37cbeb9a96897c577297d1dc2fc91ae595450321e6ce7485178637092f400cc2d2917668a8cc7c61894d8399650df816858d9cbee5bdd4e8ba1f6509e77f5337309e84de68cce2288bf0606761d0c27bd477ae9d25808c1869ef589ea4773c0f7f9233f550841a97e9af164cd5b7d3585451d4982f41a6b933b60d07fc7b74551b66bdca2acc8bc86867c4af86042dc9292a887e5e31cd49ef04dfa05080390e347277319951d16b59fccf654464b47bd56db180384a7b1bf51606614d08347ff6b0a8688b2d8eef4c6d1b341b3426ae7606821132d9e31408a38801aea53f4c1d2635531df4a303295d23a86bb21ce21935e990ce9e0fb380bc9bf7512a91d0a479ef68d183324648b83445a66ff0cbb3e94b470c6180932ba1a960204b545d174be76e5efc7e8082ef943992b0627a9496c4321246b2fe79cd6743d8849fbd57edf6a95862eae85abc453d9a09723ef5cf31ef4a41f47c83b63d08c215ab4e99c9d8581e88a21fdbccf9262e056e6eaef16050ca0e624ca148f0197eda376db19af854df181ace4b5b4d7d4ad5d86297b11ebc5b6f5</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-up">      <input class="hbe hbe-input-field hbe-input-field-up" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-up" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-up">请输入密码查看</span>      </label>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]>
    </content>
    <id>https://ideaforge.icu/2025/10/29/learning_thought/</id>
    <link href="https://ideaforge.icu/2025/10/29/learning_thought/"/>
    <published>2025-10-28T16:00:00.000Z</published>
    <summary>不给看</summary>
    <title>ml_learning_thought</title>
    <updated>2025-10-28T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学习" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E4%B9%A0/"/>
    <category term="blog_learning" scheme="https://ideaforge.icu/tags/blog-learning/"/>
    <category term="域名" scheme="https://ideaforge.icu/tags/%E5%9F%9F%E5%90%8D/"/>
    <content>
      <![CDATA[<p>域名购买<a href="https://cloud.tencent.com/">腾讯云</a><br><img src="/images/yuminghouxu.png" alt="域名购买"><br>等待时间 1-2天</p><p>域名绑定以及解析，参考大佬的教程<a href="https://blog.csdn.net/qq_34902437/article/details/140298754">(码的艺术家，2024)</a></p><p>域名备案(最后一步，域名备案，云服务器还要购买，呜呜呜)<br>云服务器暂且搁置</p>]]>
    </content>
    <id>https://ideaforge.icu/2025/10/27/yuming/</id>
    <link href="https://ideaforge.icu/2025/10/27/yuming/"/>
    <published>2025-10-27T06:40:46.000Z</published>
    <summary>
      <![CDATA[<p>域名购买<a href="https://cloud.tencent.com/">腾讯云</a><br><img src="/images/yuminghouxu.png" alt="域名购买"><br>等待时间 1-2天</p>
<p>域名绑定以及解析，参考大佬的教程<a]]>
    </summary>
    <title>域名配置</title>
    <updated>2025-10-27T06:40:46.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="观点" scheme="https://ideaforge.icu/categories/%E8%A7%82%E7%82%B9/"/>
    <category term="想法" scheme="https://ideaforge.icu/tags/%E6%83%B3%E6%B3%95/"/>
    <category term="观点" scheme="https://ideaforge.icu/tags/%E8%A7%82%E7%82%B9/"/>
    <id>https://ideaforge.icu/2025/10/27/thoughts/</id>
    <link href="https://ideaforge.icu/2025/10/27/thoughts/"/>
    <published>2025-10-27T06:36:49.000Z</published>
    <title>thoughts</title>
    <updated>2025-10-27T06:36:49.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>月明</name>
    </author>
    <category term="学术" scheme="https://ideaforge.icu/categories/%E5%AD%A6%E6%9C%AF/"/>
    <category term="机器学习" scheme="https://ideaforge.icu/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <content>
      <![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="窃取机密失败QAQ..." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">  <script id="hbeData" type="hbeData" data-hmacdigest="71c8bf7212203e7846d3a7bf656fb6f12cb1ce5060a2f8af6f7f5d399af41eb0">dccefed83fa27a7ad5aaf2d0962952897e2eac05819bcc21e675ce1cdc4aba5bff28ab5366c0082d3d01afa8266b2dacef3e8eb80ba325b8acc136cbeb108b2c454e602c9a9f740b2827934a89803342bc04ccd631b0782fa124ea7bb373b86c2dea7a22cd5a6b0d2348797feec3366ae8b8f209fcd7f2a6a550fab04a206d18b7219c82ed4db1f9125a9755e75b5634656d3d4b9bf2698c88a9f2603538da83848bfb0333fd3d850acefac9fb39e6414ba447d71e7aeb9d7b8a758800f0a3504a395c2ff2b470b875cdd375ab8a683d764ad81eec8f5328ef44a818f7ba3bea4ed1af70bc6550780f4b8a6c1faafe1ceabc13c9cd1081f54dc5454ebe92c7987391a2d7646907612723f487a3527d9401bdd52bfc3bc7d026da77fb61811f7ef12f65b60214fafcc30302359bf25f8f59ecd0e291ddbc9e67aba6ea082e5e48934b4f8f9ade062ba83a80e4428b86a6d539c23fe7ae9fdcb75853f1360ec871735fbd5109301d92ac8888dafb61d6b138a4792f3a049b517186454030d317a9729f9a9ad62ac8931a38735c967c9eb423959284f9659ad117f5135e5304818fb297c0bb25a408eec8f3e9425597e96f92899252f8d6224bf1382efe6bbffd1b9ecc2fd712e30bb048654372a1d16652ba4203ec1715c183ce6a6f3f6a5046d43ffc995a092b51206ea4b6fab71fad7a98ff15ba119c73dc8b17ff65063b2f9228d56ec552f56405b7b69f8d84586766340ad670cc727ca40ac87501dea9d7f0b1f13f4e0003dd9559449a5b26bf9c108dba0ba09ba785025f4b3d4430b99f0c218eb56cb9e600ae92bbb878858a773c52db3531b06c94e971dd923880a47104279a09359d7bf0f25974ce6bb63b663a05d86300e0bd537b0759fbdd56445262be65a081a9d340528890256f255f3c3927274904a3caf0f16e9c68f8b41f70f4</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-up">      <input class="hbe hbe-input-field hbe-input-field-up" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-up" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-up">请输入密码查看</span>      </label>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]>
    </content>
    <id>https://ideaforge.icu/2025/10/22/machine_learning/</id>
    <link href="https://ideaforge.icu/2025/10/22/machine_learning/"/>
    <published>2025-10-21T16:00:00.000Z</published>
    <summary>这是一篇加密文章，请输入密码查看</summary>
    <title>机器学习进展</title>
    <updated>2025-10-21T16:00:00.000Z</updated>
  </entry>
</feed>
