VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • AI大模型
  • 尚硅谷-LangChain-v1.2

    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/01-%E8%AF%BE%E7%A8%8B%E4%BB%8B%E7%BB%8D.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/02-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81LangChain.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/03-%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9B%B8%E5%85%B3%E5%B2%97%E4%BD%8D%E4%BB%8B%E7%BB%8D.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/04-LangChain%E6%98%AF%E4%BB%80%E4%B9%88.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/05-LangChain%E7%9A%84%E4%B8%BB%E8%A6%81%E6%A8%A1%E5%9D%97%E5%92%8CAPI%E6%96%87%E6%A1%A3.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/06-LangChain%E5%AE%B6%E6%97%8F%E5%9B%9B%E5%A4%A7%E6%94%AF%E6%9F%B1.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/07-conda%E7%9A%84%E5%AE%89%E8%A3%85%E5%8F%8A%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E7%9A%84%E9%85%8D%E7%BD%AE.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/08-%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF1%EF%BC%9AAgent%E5%BC%80%E5%8F%91.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/09-%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF2%EF%BC%9AAgent%E5%BC%80%E5%8F%91.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/10-%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BC%80%E5%8F%91%E7%9A%844%E4%B8%AA%E9%80%92%E8%BF%9B%E5%9C%BA%E6%99%AF.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/11-%E6%A8%A1%E5%9E%8B%E8%B0%83%E7%94%A8%E5%89%8D%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/12-%E8%B0%83%E7%94%A8DeepSeek%E5%AE%98%E7%BD%91%E7%9A%84DeepSeek%E6%A8%A1%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/13-%E8%B0%83%E7%94%A8%E6%99%BA%E8%B0%B1%E5%92%8C%E9%98%BF%E9%87%8C%E4%BA%91%E7%99%BE%E7%82%BC%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/14-ChatOpenAI%E5%85%BC%E5%AE%B9%E7%94%A8%E6%B3%95.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/15-%E4%BD%BF%E7%94%A8OpenRouter%E5%92%8CCloseAI%E4%B8%AD%E8%BD%AC%E5%B9%B3%E5%8F%B0%E8%B0%83%E7%94%A8%E6%A8%A1%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/16-LangChain1.x%E4%B8%ADinit_chat_model%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/17-%E6%A8%A1%E5%9E%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B8%B8%E7%94%A8%E7%9A%84%E5%8F%82%E6%95%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/18-Ollama%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E6%9C%AC%E5%9C%B0%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%B0%83%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/19-%E6%B5%8B%E8%AF%95invoke%E4%BC%A0%E9%80%92%E4%B8%89%E7%A7%8D%E4%B8%8D%E5%90%8C%E7%9A%84%E5%8F%82%E6%95%B0%E7%B1%BB%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/20-invoke%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/21-%E6%B5%81%E5%BC%8F%E8%B0%83%E7%94%A8%E3%80%81%E6%89%B9%E9%87%8F%E8%B0%83%E7%94%A8%E4%B8%8E%E5%BC%82%E6%AD%A5%E8%B0%83%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/22-profile%E5%B1%9E%E6%80%A7_%E5%88%9D%E5%A7%8B%E5%8C%96model_kwargs%E4%B8%8Eextra_body%E5%8F%82%E6%95%B0_%E8%B0%83%E7%94%A8%E7%9A%84config%E5%8F%82%E6%95%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/23-LangSmith%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%8E%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/24-LangSmith%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/25-%E8%AE%A4%E8%AF%86%E6%B6%88%E6%81%AF%E4%B8%8E%E6%B6%88%E6%81%AF%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%A0%BC%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/26-4%E7%A7%8D%E6%B6%88%E6%81%AF%E5%AF%B9%E8%B1%A1%E4%B8%AD%E5%AD%97%E6%AE%B5%E7%9A%84%E8%AF%B4%E6%98%8E.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/27-%E5%AF%B9%E8%AF%9D%E5%8E%86%E5%8F%B2%E7%9A%84%E7%AE%A1%E7%90%86%E5%92%8C%E4%BC%98%E5%8C%96.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/28-%E6%A1%88%E4%BE%8B%EF%BC%9A%E5%A4%9A%E8%BD%AE%E5%AF%B9%E8%AF%9D%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/29-content%E5%92%8Ccontent_blocks%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/30-ChatPromptTemplate%E7%9A%84%E4%B8%A4%E7%A7%8D%E5%AE%9E%E4%BE%8B%E5%8C%96%E6%96%B9%E5%BC%8F%E5%92%8C%E4%B8%89%E7%A7%8D%E8%B0%83%E7%94%A8%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/31-ChatPromptTemplate%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%846%E7%A7%8D%E5%8F%82%E6%95%B0%E7%B1%BB%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/32-%E9%83%A8%E5%88%86%E5%8F%98%E9%87%8F%E9%A2%84%E5%A1%AB%E5%85%85_%E6%B6%88%E6%81%AF%E5%8D%A0%E4%BD%8D%E7%AC%A6%E7%AD%89%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/33-%E5%B7%A5%E5%85%B7%E7%9A%84%E8%B0%83%E7%94%A8%E6%96%B9%E5%BC%8F%E4%B8%8E%E6%95%B4%E4%BD%93%E6%89%A7%E8%A1%8C%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/34-%E4%B8%8D%E4%BD%BF%E7%94%A8@tool%E6%96%B9%E5%BC%8F%E5%AE%9A%E4%B9%89%E5%B7%A5%E5%85%B7.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/35-%E4%BD%BF%E7%94%A8@tool%E8%A3%85%E9%A5%B0%E5%99%A8%E5%AE%9A%E4%B9%89%E5%B7%A5%E5%85%B7%EF%BC%9Adescription%E5%92%8Cname.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/36-%E4%BD%BF%E7%94%A8@tool%E8%A3%85%E9%A5%B0%E5%99%A8%E5%AE%9A%E4%B9%89%E5%B7%A5%E5%85%B7%EF%BC%9Aargs_schema.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/37-%E6%A1%88%E4%BE%8B1%E5%92%8C2%EF%BC%9A%E4%BD%BF%E7%94%A8args_schema%E5%92%8Cdocstring.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/38-%E6%A1%88%E4%BE%8B3-4%EF%BC%9A%E5%A4%9A%E5%B7%A5%E5%85%B7%E7%9A%84%E8%B0%83%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/39-tool_choice%E5%8F%82%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/40-%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E7%9A%84%E5%AE%9E%E8%B7%B5%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/41-%E7%BB%93%E6%9E%84%E5%8C%96%E8%BE%93%E5%87%BA%E7%9A%84%E7%90%86%E8%A7%A3.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/42-Pydantic%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/43-Pydantic%E9%AB%98%E7%BA%A7%E7%89%B9%E6%80%A7%EF%BC%9A%E5%8F%AF%E9%80%89%E5%AD%97%E6%AE%B5%E3%80%81%E9%BB%98%E8%AE%A4%E5%80%BC%E3%80%81%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/44-Pydantic%E9%AB%98%E7%BA%A7%E7%89%B9%E6%80%A7%EF%BC%9A%E5%88%97%E8%A1%A8%E6%8F%90%E5%8F%96%E3%80%81%E5%B5%8C%E5%A5%97%E3%80%81%E9%99%90%E5%88%B6%E6%9D%A1%E4%BB%B6.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/45-Pydantic%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A7%A3.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/46-TypedDict%E6%A0%BC%E5%BC%8F%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/47-JSON%20Schema%E6%A0%BC%E5%BC%8F%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/48-@dataclass%E6%A0%BC%E5%BC%8F%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/49-%E5%9B%9B%E7%A7%8D%E4%B8%8D%E5%90%8C%E6%A8%A1%E5%BC%8F%E7%9A%84%E7%B1%BB%E5%9E%8B%E6%A0%A1%E9%AA%8C%E6%83%85%E5%86%B5.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/50-%E4%B8%A4%E7%A7%8D%E8%8E%B7%E5%8F%96%E7%BB%93%E6%9E%84%E5%8C%96%E7%BB%93%E6%9E%9C%E7%9A%84%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/51-Agent%E7%9A%84%E6%A6%82%E8%BF%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/52-Agent%E5%AE%9E%E4%BE%8B%E5%8C%96%E4%B8%AD%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%B8%A4%E7%A7%8D%E4%BC%A0%E5%85%A5%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/53-Agent%E9%80%9A%E8%BF%87invoke()%E6%96%B9%E5%BC%8F%E8%B0%83%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/54-Agent%E7%BB%91%E5%AE%9A%E5%B7%A5%E5%85%B7%E5%B9%B6%E8%B0%83%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/55-%E5%B7%A5%E5%85%B7%E8%B0%83%E7%94%A8%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90_%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/56-%E8%AE%BE%E7%BD%AEagent%E7%9A%84name%E5%92%8Csystem_prompt.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/57-agent%E7%BB%93%E6%9E%84%E5%8C%96%E8%BE%93%E5%87%BA%E7%9A%844%E7%A7%8D%E7%AD%96%E7%95%A5.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/58-ToolStrategy%E7%9A%84schema%E8%AE%BE%E7%BD%AE%E7%BB%93%E6%9E%84%E5%8C%96%E8%BE%93%E5%87%BA-Pydantic%E7%B1%BB%E5%9E%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/59-ToolStrategy%E7%9A%84schema%E8%AE%BE%E7%BD%AE%E7%BB%93%E6%9E%84%E5%8C%96%E8%BE%93%E5%87%BA-%E5%85%B6%E5%AE%83%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/60-ToolStrategy%E7%9A%84tool_message_content%E5%8F%82%E6%95%B0%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/61-Agent%E7%9A%84%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95%EF%BC%9A%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E6%9C%BA%E5%88%B6.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/62-%E8%AE%BE%E7%BD%AEAgent%E7%9A%84%E6%B5%81%E5%BC%8F%E8%BE%93%E5%87%BA%E7%AD%96%E7%95%A5.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/63-Agent%E7%9A%84%E5%AE%9E%E6%88%98%EF%BC%9A%E5%A4%9A%E5%8A%9F%E8%83%BD%E6%99%BA%E8%83%BD%E5%8A%A9%E6%89%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/64-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E4%B8%AD%E9%97%B4%E4%BB%B6_%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E5%88%86%E7%B1%BB.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/65-SummarizationMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/66-HumanInTheLoopMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/67-PIIMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/68-TodoListMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/69-ModelCallLimitMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/70-ToolCallLimitMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/71-ModelFallbackMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/72-LLMToolSelectorMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/73-ToolRetryMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/74-ModelRetryMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/75-LLMToolEmulator%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/76-ContextEditingMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/77-FilesystemFileSearchMiddleware%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/78-%E5%A4%9A%E4%B8%AA%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%BB%84%E5%90%88%E5%8F%8A%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/79-hook%E5%87%BD%E6%95%B0%E7%9A%84%E7%90%86%E8%A7%A3.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/80-%E5%9F%BA%E4%BA%8E%E8%A3%85%E9%A5%B0%E5%99%A8%E5%AE%9A%E4%B9%89Node-style%E7%9A%84%E9%92%A9%E5%AD%90%E5%87%BD%E6%95%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/81-%E5%9F%BA%E4%BA%8E%E7%B1%BB%E5%AE%9A%E4%B9%89Node-style%E7%9A%84%E9%92%A9%E5%AD%90%E5%87%BD%E6%95%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/82-%E8%A3%85%E9%A5%B0%E5%99%A8%E5%8F%82%E6%95%B0can_jump_to%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/83-wrap_model_call%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%92%8C%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/84-wrap_tool_call%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%92%8C%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/85-%E8%A3%85%E9%A5%B0%E5%99%A8%E5%92%8C%E7%B1%BB%E6%96%B9%E5%BC%8F%E7%9A%84%E9%80%89%E6%8B%A9_hook%E5%87%BD%E6%95%B0%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/86-%E8%AE%B0%E5%BF%86%E7%9A%84%E6%A6%82%E5%BF%B5%E5%92%8C%E8%AE%B0%E5%BF%86%E7%9A%84%E5%88%86%E7%B1%BB.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/87-%E7%9F%AD%E6%9C%9F%E8%AE%B0%E5%BF%86%E4%B9%8B%E5%9F%BA%E4%BA%8E%E5%86%85%E5%AD%98%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96%E5%99%A8%E7%9A%84%E5%AE%9E%E7%8E%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/88-%E5%9F%BA%E4%BA%8E%E5%86%85%E5%AD%98%E5%AD%98%E5%82%A8%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%92%8C%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/89-%E8%85%BE%E8%AE%AF%E4%BA%91%E9%83%A8%E7%BD%B2Linux%E6%9C%8D%E5%8A%A1%E5%99%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/90-PostgreSQL%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%AE%89%E8%A3%85.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/91-%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9E%E6%8E%A5%E9%A2%9D%E5%A4%96%E6%93%8D%E4%BD%9C.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/92-%E7%9F%AD%E6%9C%9F%E8%AE%B0%E5%BF%86%E4%B9%8BPostgreSQL%E5%AE%9E%E7%8E%B0%E6%8C%81%E4%B9%85%E5%8C%96%E5%AD%98%E5%82%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/93-%E5%AF%B9%E6%AF%94%E4%B8%A4%E7%A7%8D%E6%96%B9%E5%BC%8F%E7%9A%84%E4%B8%8D%E5%90%8C.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/94-%E6%B6%88%E6%81%AF%E8%A3%81%E5%89%AA%E7%9A%84%E6%B2%BB%E7%90%86%E7%AD%96%E7%95%A5.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/95-%E6%B6%88%E6%81%AF%E5%88%A0%E9%99%A4%E3%80%81%E6%91%98%E8%A6%81%E7%9A%84%E6%B2%BB%E7%90%86%E7%AD%96%E7%95%A5.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/96-%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86%E7%9A%84%E4%BB%8B%E7%BB%8D%E5%92%8C%E5%AD%98%E5%82%A8%E6%9E%B6%E6%9E%84.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/97-put()%E5%92%8Cget()%E6%93%8D%E4%BD%9C%E7%9A%84%E7%9A%84%E6%BC%94%E7%A4%BA.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/98-search()%E6%93%8D%E4%BD%9C%E7%9A%84%E6%BC%94%E7%A4%BA.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/99-%E5%9C%A8%E5%B7%A5%E5%85%B7%E4%B8%AD%E8%AE%BF%E9%97%AE%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86%EF%BC%88%E5%9F%BA%E4%BA%8EInMemoryStore%EF%BC%89.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/100-%E5%9C%A8%E5%B7%A5%E5%85%B7%E4%B8%AD%E8%AE%BF%E9%97%AE%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86%EF%BC%88%E5%9F%BA%E4%BA%8EPostgresStore%EF%BC%89.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/101-%E5%9C%A8%E4%B8%AD%E9%97%B4%E4%BB%B6%E4%B8%AD%E8%AE%BF%E9%97%AE%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/102-RAG%E6%A8%A1%E5%9D%97%E7%9A%84%E5%BF%85%E8%A6%81%E6%80%A7.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/103-RAG%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B%E5%92%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/104-TextLoader%E5%92%8CCSVLoader%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/105-JSONLoader%E5%8A%A0%E8%BD%BDJSON%E6%96%87%E4%BB%B6.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/106-PyPDFLoader%E5%92%8CMinerU%E5%8A%A0%E8%BD%BDpdf%E6%96%87%E4%BB%B6.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/107-%E5%85%B6%E5%AE%83%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E7%9A%84%E5%8A%A0%E8%BD%BD%E5%99%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/108-%E5%88%87%E5%88%86%E7%AD%96%E7%95%A5%E5%8F%8ATextSplitter%E4%B8%AD%E7%9A%84%E4%B8%89%E4%B8%AA%E6%A0%B8%E5%BF%83%E6%96%B9%E6%B3%95.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/109-CharacterTextSplitter%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/110-RecursiveCharacterTextSplitter%E7%9A%84%E4%BD%BF%E7%94%A8.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/111-%E5%85%B6%E5%AE%83%E5%A4%9A%E7%A7%8DTextSplitter%E7%9A%84%E4%BD%BF%E7%94%A8%E6%BC%94%E7%A4%BA.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/112-%E5%B5%8C%E5%85%A5%E6%A8%A1%E5%9E%8B%E7%9A%84%E5%88%9D%E5%A7%8B%E5%8C%96%E5%8F%8A%E6%96%87%E6%A1%A3%E5%90%91%E9%87%8F%E5%8C%96%E4%B8%BE%E4%BE%8B.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/113-%E5%90%91%E9%87%8F%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BB%8B%E7%BB%8D_docker%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E8%AE%BE%E7%BD%AE.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/114-Milvus%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%E8%AF%B4%E6%98%8E.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/115-Milvus%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84DDL%E6%93%8D%E4%BD%9C.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/116-Milvus%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84DML%E5%92%8CDQL%E6%93%8D%E4%BD%9C.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/117-%E9%A1%B9%E7%9B%AEAssistant%E5%AE%A2%E6%9C%8D%E7%9F%A5%E8%AF%86%E5%BA%93%E4%B9%8B%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE_%E5%88%9D%E5%A7%8B%E5%8C%96Milvus.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/118-%E9%A1%B9%E7%9B%AEAssistant%E5%AE%A2%E6%9C%8D%E7%9F%A5%E8%AF%86%E5%BA%93%E4%B9%8B%E6%96%87%E6%A1%A3%E5%88%87%E5%88%86_%E5%90%91%E9%87%8F%E5%8C%96%E5%B9%B6%E5%86%99%E5%85%A5Milvus.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/119-%E9%A1%B9%E7%9B%AEAssistant%E5%AE%A2%E6%9C%8D%E7%9F%A5%E8%AF%86%E5%BA%93%E4%B9%8B%E5%88%9D%E5%A7%8B%E5%8C%96Agent_%E6%A3%80%E7%B4%A2%E5%87%BD%E6%95%B0.html
    • /ai-models/%E5%B0%9A%E7%A1%85%E8%B0%B7-LangChain-v1.2/120-%E9%A1%B9%E7%9B%AEAssistant%E5%AE%A2%E6%9C%8D%E7%9F%A5%E8%AF%86%E5%BA%93%E4%B9%8B%E7%94%9F%E4%BA%A7%E4%B8%8E%E5%9B%9E%E7%AD%94%E7%94%9F%E6%88%90.html
  • 炮哥-Transfomer架构

    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/1.1%E3%80%81%E8%AF%BE%E7%A8%8B%E5%85%88%E5%AF%BC.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.10%E3%80%81%E6%8E%A9%E7%A0%81%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.11%E3%80%81%E5%B1%82%E5%BD%92%E4%B8%80%E5%8C%96.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.12%E3%80%81%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.13%E3%80%81Transormer%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%8E%A8%E7%90%86%E8%BF%87%E7%A8%8B.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.14%E3%80%81Transormer%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.15%E3%80%81%E5%9B%A0%E6%9E%9C%E6%8E%A9%E7%A0%81%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6-%E8%AE%AD%E7%BB%83%E8%BF%87%E7%A8%8B.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.16%E3%80%81%E5%9B%A0%E6%9E%9C%E6%8E%A9%E7%A0%81%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6-%E6%8E%A8%E7%90%86%E8%BF%87%E7%A8%8B.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.17%E3%80%81%E4%BA%A4%E5%8F%89%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.18%E3%80%81Transformer%E6%9E%B6%E6%9E%84%E6%80%BB%E7%BB%93.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.1%E3%80%81Transformer%E7%AE%97%E6%B3%95%E8%83%8C%E6%99%AF.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.2%E3%80%81Transformer%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.3%E3%80%81%E8%BE%93%E5%85%A5%E6%96%87%E6%9C%AC%E6%95%B0%E6%8D%AE%E6%95%B0%E5%80%BC%E8%BD%AC%E6%8D%A2.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.4%E3%80%81%E8%AF%8D%E5%B5%8C%E5%85%A5%E6%96%B9%E6%B3%95.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.5%E3%80%81%E4%BD%8D%E7%BD%AE%E7%BC%96%E7%A0%81.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.6%E3%80%81%E8%87%AA%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E5%85%88%E5%AF%BC.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.7%E3%80%81%E8%87%AA%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%9A%84%E7%AE%97%E6%B3%95%E6%B5%81%E7%A8%8B.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.8%E3%80%81%E8%87%AA%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%9F%A9%E9%98%B5%E7%90%86%E8%A7%A3%E6%96%B9%E5%BC%8F.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/2.9%E3%80%81%E5%A4%9A%E5%A4%B4%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.10%E3%80%81%E7%BC%96%E7%A0%81%E5%99%A8%E7%9A%84%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.11%E3%80%81%E8%A7%A3%E7%A0%81%E5%99%A8%E7%9A%84%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.12%E3%80%81%E7%94%9F%E6%88%90%E5%99%A8%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.13%E3%80%81Transformer%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%9C%80%E7%BB%88%E5%AE%9E%E7%8E%B0.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.14%E3%80%81Transformer%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%AE%AD%E7%BB%83.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.15%E3%80%81Transformer%E6%A8%A1%E5%9E%8B%E7%9A%84%E6%8E%A8%E7%90%86%E4%B8%8E%E5%BA%94%E7%94%A8.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.1%E3%80%81%E5%AE%9E%E6%88%98%E5%85%88%E5%AF%BC.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.2%E3%80%81%E7%8E%AF%E5%A2%83%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E4%BB%A3%E7%A0%81%E6%B5%8B%E8%AF%95.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.3%E3%80%81%E6%95%B0%E6%8D%AE%E9%9B%86%E7%9A%84%E4%BB%8B%E7%BB%8D%E4%B8%8E%E5%88%86%E6%9E%90.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.4%E3%80%81%E8%AF%8D%E8%A1%A8%E7%9A%84%E6%9E%84%E5%BB%BA%E4%B8%8E%E4%BB%8B%E7%BB%8D.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.5%E3%80%81%E8%AF%8D%E5%B5%8C%E5%85%A5%E4%B8%8E%E4%BD%8D%E7%BD%AE%E7%BC%96%E7%A0%81%E4%BB%A3%E7%A0%81%E6%9E%84%E5%BB%BA.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.6%E3%80%81attention%E4%BB%A3%E7%A0%81.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.7%E3%80%81%E5%A4%9A%E5%A4%B4%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E4%BB%A3%E7%A0%81.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.8%E3%80%81%E5%B1%82%E5%BD%92%E4%B8%80%E5%8C%96%E5%92%8C%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%A0%81.html
    • /ai-models/%E7%82%AE%E5%93%A5-Transfomer%E6%9E%B6%E6%9E%84/3.9%E3%80%81%20SublayerConnection%E4%BB%A3%E7%A0%81.html
  • 黑马-NLP最新版

    • NLP自然语言处理课程导学
    • NLP 阶段大纲介绍
    • NLP 发展简史介绍
    • NLP 应用场景介绍
    • 文本预处理的主要模块介绍
    • 如何创建沙箱及关联 PyCharm
    • jieba 分词 - 精确模式介绍
    • jieba 分词 - 全模式介绍
    • jieba 分词 - 搜索引擎模式介绍
    • jieba 分词 - 繁体字
    • jieba 分词 - 用户自定义词典
    • 文本预处理 - NER 和 POS 解释
    • 文本张量表示法 - one-hot 编码介绍
    • one-hot 编码 - 获取
    • one-hot 编码 - 使用
    • one-hot 编码 - 简单实现思路
    • Word2Vec - CBOW 原理介绍
    • Word2Vec 之 Skip-Gram 词向量解释
    • FastText 环境搭建
    • FastText 词向量模型的训练和保存
    • FastText 模型的加载、查看与效果检验
    • FastText 模型参数设定
    • WordEmbedding 和 Word2Vec 的区别
    • WordEmbedding 获取词向量
    • WordEmbedding 查看词向量的相似性
    • 文本分析 - 标签数据分布查看
    • 扩展 - map() 函数功能介绍
    • 文本分析 - 句子长度分布分析
    • 文本分析 - 正负样本长度散点分布
    • 扩展 - chain() 函数介绍
    • 文本分析 - 词汇统计
    • 文本分析 - 高频形容词词云
    • 扩展 - zip() 函数用法解释
    • 文本特征处理 - n-gram 代码演示
    • 扩展 - 如何计算两个文本的相似度
    • 文本长度规范 - 代码实现
    • 回译数据增强法介绍
    • RNN 模型简介
    • RNN 的分类介绍
    • RNN 的模型结构
    • RNN 代码 - 基础版
    • RNN 代码 - 修改句子长度
    • RNN 代码 - 修改隐藏层及总结
    • LSTM 模型 - 原理图解(上)
    • LSTM 模型 - 原理图解(下)
    • Bi-LSTM 模型介绍
    • LSTM 模型 - 代码实现
    • GRU 模型 - 原理图解
    • GRU 模型 - 代码演示
    • RNN 人名分类案例 - 需求介绍
    • RNN 人名分类案例 - 获取全局字母表和国家名
    • RNN 人名分类案例 - 读取数据到内存
    • RNN 人名分类案例 - 构建数据集对象
    • RNN 人名分类案例 - 构建数据加载器对象
    • 扩展 - LogSoftmax() 函数讲解
    • 全球人名分类案例 - 搭建 RNN 模型
    • 全球人名分类案例 - 测试 RNN 模型
    • 全球人名分类案例 - 搭建 LSTM 和 GRU 模型
    • 全球人名分类案例 - 测试三种模型
    • 全球人名分类案例 - RNN 模型训练
    • 全球人名分类案例 - LSTM 模型训练
    • 全球人名分类案例 - GRU 模型训练
    • 全球人名分类案例 - 三种模型可视化
    • 全球人名分类案例 - RNN 模型预测
    • 全球人名分类案例 - 思路总结
    • 注意力机制介绍
    • 注意力机制 - QKV 简介
    • 注意力机制 - 实现步骤介绍
    • Seq2Seq 架构 - 任务介绍
    • Seq2Seq 架构 - 加入注意力机制
    • 扩展1 - 普通的 Encoder-Decoder 框架
    • 扩展2 - 加入注意力机制的 Encoder-Decoder 框架
    • 扩展3 - 注意力概率分布的计算方式
    • 扩展4 - 软注意力、硬注意力、自注意力机制简介
    • 常见的注意力计算规则介绍
    • 扩展 - bmm() 函数简介
    • 注意力机制 - 代码实现
    • 注意力机制 - 测试代码
    • 注意力机制 - 参数解释
    • 英译法案例 - 需求介绍
    • 英译法案例 - 如何配置 CUDA 环境及测试(上)
    • 英译法案例 - 如何配置 CUDA 环境(实操)
    • 扩展 - 配置 CUDA 环境总结
    • 英译法案例 - 数据清洗函数
    • 英译法案例 - 数据预处理函数
    • 英译法案例 - 构建数据集对象
    • 英译法案例 - 获取数据加载器对象
    • 英译法案例 - 构建基于 GRU 的编码器
    • 英译法案例 - 测试基于 GRU 的编码器
    • 英译法案例 - 基于 GRU 的无 Attention 的解码器思路分析
    • 英译法案例 - 构建基于 GRU 解码器(无 Attention)
    • 英译法案例 - 测试基于 GRU 的无 Attention 解码器
    • 英译法案例 - 基于 GRU 有 Attention 的解码器思路分析
    • 英译法案例 - 基于 GRU 有 Attention 的解码器代码实现(上)
    • 英译法案例 - 基于 GRU 有 Attention 的解码器代码实现(下)
    • 英译法案例 - 带注意力机制的解码器层测试代码
    • 英译法案例 - 模型搭建总结
    • Teacher Forcing - 教师强制
    • 英译法案例 - 模型训练总结
    • 英译法案例 - 模型预测代码实现
    • 英译法案例 - 模型预测代码测试
    • 英译法案例 - 绘制张量图
    • Transformer 框架 - 由来介绍
    • Transformer 架构介绍 - 文字版
    • Transformer 架构图(上)
    • Transformer 架构图(下)
    • 学习 Transformer 架构的路线
    • Transformer 架构 - 词嵌入层代码实现
    • Transformer 架构 - 位置编码层原理介绍
    • Transformer 架构 - 位置编码总结
    • Transformer 架构 - 位置编码层代码实现
    • Transformer 架构 - 位置编码层代码测试
    • 扩展 - 上三角矩阵演示
    • 扩展 - 下三角矩阵演示
    • 扩展 - 掩码张量的可视化
    • 扩展 - masked_fill() 函数介绍
    • Transformer 架构 - 注意力机制代码实现及测试
    • 多头注意力机制 - 原理图(上)
    • 多头注意力机制 - 原理图(下)
    • 多头注意力机制 - 代码实现
    • 多头注意力机制 - 代码测试
    • 前馈全连接层 - 代码实现及测试
    • 规范化层 - 代码实现
    • 规范化层 - 代码测试
    • 扩展 - BN 和 LN 的区别
    • 子层结构搭建 - 代码实现
    • 子层结构搭建 - 代码测试
    • 编码器层 - 代码实现
    • 编码器层 - 代码测试
    • 编码器 - 代码实现及测试
    • 解码器层 - 代码实现
    • 解码器层 - 代码测试
    • 解码器 - 代码实现及测试
    • 输出部分 - 代码实现
    • 输出部分 - 代码测试
    • 完整的 Transformer 架构搭建(上)
    • 完整的 Transformer 架构搭建(下)
    • Transformer 架构测试(上)
    • Transformer 架构组件介绍
    • Transformer 架构测试(下)
    • Fasttext - 简介及环境搭建
    • Fasttext - 哈夫曼树介绍
    • Fasttext - 负采样介绍
    • Fasttext - 直接训练 - 代码实现
    • Fasttext 优化 - 数据预处理
    • Fasttext 优化 - 调整训练轮数和学习率
    • Fasttext 优化 - 调整 NGram 和损失函数
    • Fasttext 优化 - 自动调参
    • Fasttext 优化 - 多分类多标签任务
    • Fasttext - 模型保存和加载
    • Fasttext - 词向量迁移介绍
    • 迁移学习介绍
    • 常见的预训练 NLP 模型介绍
    • Transformers 库介绍及环境搭建
    • NLP 任务 - Pipeline 方式 - 文本分类
    • NLP 任务 - Pipeline 方式 - 特征提取
    • NLP 任务 - Pipeline 方式 - 完形填空
    • Pipeline 方式 - 阅读理解任务
    • Pipeline 方式 - 文本摘要任务
    • Pipeline 方式 - NER 任务
    • 自动模型方式 - 文本分类任务
    • 自动模型方式 - 特征提取任务
    • 自动模型方式 - 完形填空任务
    • 自动模型方式 - 阅读理解任务
    • 自动模型方式 - 文本摘要任务
    • 自动模型方式 - NER 任务
    • 具体模型方式 - 完形填空任务
    • 迁移学习 - 中文分类案例 - 数据加载
    • 迁移学习 - 中文分类案例 - 数据预处理
    • 迁移学习 - 中文分类案例 - 模型搭建
    • 迁移学习 - 中文分类案例 - 模型训练
    • 迁移学习 - 中文分类案例 - 模型评估
    • 迁移学习 - 中文填空案例 - 数据预处理
    • 迁移学习 - 中文填空案例 - 模型搭建
    • 迁移学习 - 中文填空案例 - 模型训练
    • 迁移学习 - 中文填空案例 - 模型评估
    • 迁移学习 - NSP 案例 - 自定义数据集对象
    • 迁移学习 - NSP 案例 - 数据预处理
    • 迁移学习 - NSP 案例 - 模型搭建
    • 迁移学习 - NSP 案例 - 模型训练和评估
    • BERT 模型介绍
    • BERT 模型架构介绍
    • BERT 预训练任务 - MLM 和 NSP 介绍
    • BERT 模型总结
    • ELMo 模型介绍
    • GPT 模型介绍
  • 黑马-机器学习

    • 机器学习课程导学
    • 机器学习大纲介绍
    • 机器学习相关概述目录介绍
    • 人工智能三大概念:AI、ML、DL介绍
    • 基于规则和模型的学习介绍
    • 机器学习应用领域和发展史介绍
    • 机器学习核心名词介绍
    • 机器学习算法分类
    • 机器学习建模流程
    • 特征工程介绍
    • 上午内容回顾
    • 模型拟合问题
    • 机器学习环境搭建
    • KNN算法简介
    • KNN算法思路分析
    • KNN算法分类思想代码实现
    • KNN算法回归思想代码实现
    • 常用的距离度量方式
    • 特征预处理之归一化
    • 特征预处理之标准化
    • 鸢尾花案例之查看数据集
    • 鸢尾花案例之数据集可视化
    • 鸢尾花案例之切分训练集和测试集
    • 鸢尾花案例之模型评估和预测
    • 交叉验证和网格搜索介绍
    • 交叉验证和网格搜索之代码实现
    • 手写数字识别之数据集介绍
    • 手写数字识别之绘制数字
    • 手写数字识别之训练和保存模型
    • 手写数字识别之加载和使用模型
    • 解决预测错误的Bug
    • 线性回归之今日内容大纲介绍
    • 线性回归简介
    • 线性回归API入门
    • 损失函数介绍
    • 导数复习
    • 偏导数复习
    • 上午内容回顾
    • 矩阵复习
    • 一元线性回归之正规方程法
    • 多元线性回归之正规方程法(上)
    • 多元线性回归之正规方程法(下)
    • 补充:为什么转换时是XW
    • 单变量梯度下降法
    • 多变量梯度下降法
    • 银行信贷案例之梯度下降法
    • 梯度下降算法分类
    • 回归模型评估方法
    • 正规方程与线性回归对象API介绍
    • 梯度下降线性回归对象API介绍
    • 代码演示之欠拟合
    • 代码演示之正好拟合
    • 代码演示之过拟合
    • L1和L2正则化解释
    • 逻辑回归之今日内容大纲介绍
    • 逻辑回归之简介
    • 逻辑回归之概率相关知识回顾
    • 逻辑回归之原理介绍
    • 逻辑回归案例之癌症预测
    • 混淆矩阵及精确率、召回率、F1值介绍
    • 混淆矩阵、精确率、召回率、F1值代码演示
    • 混淆矩阵总结
    • ROC曲线和AUC指标介绍(了解)
    • ROC曲线案例(了解)
    • 逻辑回归案例:电信用户流失预测 - 数据预处理
    • 逻辑回归案例:电信用户流失预测 - 数据可视化
    • 逻辑回归案例:电信用户流失预测 - 模型训练预测评估
    • 决策树简介
    • 决策树之信息熵简介
    • 决策树之信息增益计算
    • ID3决策树搭建
    • 上午内容回顾
    • C4.5树之信息增益率
    • Cart树原理介绍
    • 三种决策树总结
    • 泰坦尼克号案例之数据集介绍
    • 泰坦尼克号案例之代码演示
    • CART决策树之回归用法
    • 回归决策树和线性回归对比
    • 决策树之剪枝介绍
    • 集成学习之大纲介绍
    • 集成学习之简介
    • 集成学习之Bagging和Boosting思想介绍
    • Bagging思想之随机森林算法介绍
    • 随机森林API之泰坦尼克号案例
    • Boosting思想之AdaBoost自适应提升树介绍
    • AdaBoost算法之推导过程
    • AdaBoost算法之葡萄酒案例
    • GBDT算法之梯度提升树介绍
    • GBDT算法之推导过程
    • GBDT算法之泰坦尼克号案例
    • XGBoost极限梯度提升树之简介
    • XGBoost极限梯度提升树之推导
    • XGBoost API介绍
    • XGBoost案例之红酒品质分类-数据预处理
    • XGBoost案例之红酒品质分类-模型训练
    • XGBoost案例之红酒品质分类-模型评测
    • 朴素贝叶斯之简介
    • 商品评论情感分析之思路分析
    • 商品评论情感分析之数据预处理
    • 商品评论情感分析之模型训练和预测
    • 聚类算法之简介
    • 聚类算法之API初识
    • 聚类算法之推导流程
    • 聚类算法评估指标之SSE介绍
    • 聚类算法评估指标之SSE代码实现
    • 聚类算法评估指标之SC、CH轮廓系数介绍
    • SC、CH轮廓系数之代码演示
    • 用户分群之求解最优K值
    • 用户分群之代码实现
    • 时序数据介绍
    • 时序数据分类介绍
    • 时序预测之算法介绍
    • 电力负荷预测案例之背景介绍
    • 电力负荷预测案例之项目搭建
    • 电力负荷预测案例之日志功能介绍
    • 电力负荷预测案例之数据预处理
    • 电力负荷预测案例之定义电力负荷模型类
    • 电力负荷预测案例之查看数据整体和各小时负荷分布
    • 电力负荷案例之按照月份、假日可视化数据
    • 电力负荷案例之特征工程-添加小时和月份字段
    • 电力负荷案例之特征工程-添加上n小时(窗口字段)
    • 电力负荷案例之特征工程-昨日同时刻负荷
    • 电力负荷案例之模型训练、评估、保存
    • 电力负荷案例之预测类代码实现
    • 电力负荷案例之解析预测特征(上)
    • 电力负荷案例之解析预测特征(下)
    • 电力负荷案例之结果展示
    • 电力负荷案例之扩展思路
    • 课程完结与AI大模型开发课程介绍

电力负荷案例之模型训练、评估、保存

1 课程概览

本课讲解电力负荷案例的模型训练、评估和保存。这是整个案例的重点(重中之重)。包括数据集切分、模型训练、模型评估、模型保存等。

2 核心概念与定义

  • 模型训练:model_train函数。
  • 特征列:hour的24个、month的12个、前1/2/3小时、yesterday_load。
  • 标签列:power_load。
  • 数据集切分:train_test_split。
  • 模型保存:joblib.dump。

3 算法与模型详解

3.1 模型训练概述

函数:model_train(data, features, logger)

参数:

  • data:处理后的全部数据集
  • features:特征名称列表(特征列名)
  • logger:日志对象

重点:模型训练是重中之重

3.2 特征列说明

特征列:

  • hour的24个One-Hot特征
  • month的12个One-Hot特征
  • prev_1:前一个小时负荷
  • prev_2:前两个小时负荷
  • prev_3:前三个小时负荷
  • yesterday_load:昨日同时刻负荷

标签列:

  • power_load:电力负荷

说明:

  • 从time一列拆出多个特征
  • 这就是特征工程的作用

3.3 数据集切分

代码:

X = data[features]  # 特征
y = data['power_load']  # 标签

说明:

  • features:特征列名列表
  • data[features]:根据列名获取特征数据
  • data['power_load']:获取标签

3.4 模型训练

模型:XGBoost(XGBRegressor)

代码:

from xgboost import XGBRegressor

model = XGBRegressor()
model.fit(X_train, y_train)

3.5 模型评估

指标:

  • MAE:平均绝对误差
  • MSE:均方误差
  • RMSE:均方根误差

代码:

from sklearn.metrics import mean_absolute_error, mean_squared_error

y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)

3.6 模型保存

方法:joblib.dump

代码:

import joblib

joblib.dump(model, 'model/power_load_model.pkl')

3.7 特征工程的重要性

说明:

  • 特征工程是最大挑战
  • 模型训练是固定步骤
  • 如何把一列数据变成多列特征是关键

4 代码示例

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import logging
import joblib
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.ensemble import GradientBoostingRegressor

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 1. 日志工具类
print("=== 1. 日志工具类 ===")

class LogUtils:
    """日志工具类"""
    
    def __init__(self, root_path='./', log_name='project', level=logging.INFO):
        self.logger = logging.getLogger(log_name)
        self.logger.setLevel(level)
        
        if not self.logger.handlers:
            log_dir = os.path.join(root_path, 'log')
            os.makedirs(log_dir, exist_ok=True)
            log_file = os.path.join(log_dir, f'{log_name}.log')
            
            file_handler = logging.FileHandler(log_file, encoding='utf-8')
            file_handler.setLevel(level)
            
            console_handler = logging.StreamHandler()
            console_handler.setLevel(level)
            
            formatter = logging.Formatter(
                '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
            )
            file_handler.setFormatter(formatter)
            console_handler.setFormatter(formatter)
            
            self.logger.addHandler(file_handler)
            self.logger.addHandler(console_handler)
    
    def get_log(self):
        return self.logger

# 2. 生成模拟数据
print("\n=== 2. 生成模拟数据 ===")

def generate_power_load_data(n_days=30):
    """生成电力负荷数据"""
    np.random.seed(42)
    
    dates = pd.date_range('2024-01-01', periods=n_days*24, freq='h')
    power_load = []
    
    for date in dates:
        hour = date.hour
        dayofweek = date.dayofweek
        month = date.month
        
        if 0 <= hour < 6:
            base_load = 500
        elif 6 <= hour < 9:
            base_load = 800
        elif 9 <= hour < 17:
            base_load = 1000
        elif 17 <= hour < 21:
            base_load = 1200
        else:
            base_load = 700
        
        if dayofweek >= 5:
            base_load *= 0.8
        
        if month in [12, 1, 2]:
            base_load *= 1.2
        elif month in [6, 7, 8]:
            base_load *= 1.1
        
        load = base_load + np.random.normal(0, 50)
        power_load.append(max(100, load))
    
    data = pd.DataFrame({
        'time': dates,
        'power_load': power_load
    })
    
    return data

# 3. 特征工程
print("\n=== 3. 特征工程 ===")

def feature_engineering(data, logger=None):
    """特征工程"""
    if logger:
        logger.info("开始特征工程")
    
    feature_data = data.copy()
    
    # 1. 提取hour和month
    feature_data['hour'] = feature_data['time'].dt.hour
    feature_data['month'] = feature_data['time'].dt.month
    
    # 2. One-Hot编码
    feature_data = pd.get_dummies(feature_data, columns=['hour', 'month'])
    
    # 3. 添加窗口字段
    feature_data['prev_1'] = feature_data['power_load'].shift(1)
    feature_data['prev_2'] = feature_data['power_load'].shift(2)
    feature_data['prev_3'] = feature_data['power_load'].shift(3)
    
    # 4. 获取昨日同时刻负荷
    feature_data['yesterday_time'] = feature_data['time'].apply(
        lambda x: (pd.to_datetime(x) - pd.Timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')
    )
    
    time_load_map = dict(zip(
        feature_data['time'].dt.strftime('%Y-%m-%d %H:%M:%S'),
        feature_data['power_load']
    ))
    
    feature_data['yesterday_load'] = feature_data['yesterday_time'].map(time_load_map)
    
    # 5. 删除NaN
    feature_data = feature_data.dropna().reset_index(drop=True)
    
    if logger:
        logger.info(f"特征工程完成,形状: {feature_data.shape}")
    
    return feature_data

# 4. 获取特征列名
print("\n=== 4. 获取特征列名 ===")

def get_feature_names(feature_data):
    """获取特征列名"""
    all_columns = list(feature_data.columns)
    
    # 排除非特征列
    exclude_columns = ['time', 'power_load', 'yesterday_time']
    features = [col for col in all_columns if col not in exclude_columns]
    
    print(f"所有列: {all_columns}")
    print(f"\n特征列: {features}")
    print(f"特征数: {len(features)}")
    
    return features

# 5. 模型训练函数
print("\n=== 5. 模型训练函数 ===")

def model_train(data, features, logger=None):
    """
    模型训练
    Args:
        data: 处理后的全部数据集
        features: 特征名称列表
        logger: 日志对象
    Returns:
        model: 训练好的模型
    """
    if logger:
        logger.info("开始模型训练")
    
    # 1. 数据集切分
    X = data[features]
    y = data['power_load']
    
    print(f"特征形状: {X.shape}")
    print(f"标签形状: {y.shape}")
    print(f"\n特征前5行:")
    print(X.head())
    print(f"\n标签前5行:")
    print(y.head())
    
    # 2. 划分训练集测试集
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=0.2, random_state=42, shuffle=False
    )
    
    if logger:
        logger.info(f"训练集: {X_train.shape}")
        logger.info(f"测试集: {X_test.shape}")
    
    print(f"\n训练集: {X_train.shape}")
    print(f"测试集: {X_test.shape}")
    
    # 3. 训练模型(用GBDT模拟XGBoost)
    model = GradientBoostingRegressor(
        n_estimators=100,
        max_depth=6,
        learning_rate=0.1,
        random_state=42
    )
    
    model.fit(X_train, y_train)
    
    if logger:
        logger.info("模型训练完成")
    
    # 4. 模型评估
    y_pred = model.predict(X_test)
    
    mae = mean_absolute_error(y_test, y_pred)
    mse = mean_squared_error(y_test, y_pred)
    rmse = np.sqrt(mse)
    
    if logger:
        logger.info(f"MAE: {mae:.4f}")
        logger.info(f"MSE: {mse:.4f}")
        logger.info(f"RMSE: {rmse:.4f}")
    
    print(f"\n模型评估:")
    print(f"  MAE: {mae:.4f}")
    print(f"  MSE: {mse:.4f}")
    print(f"  RMSE: {rmse:.4f}")
    
    # 5. 可视化预测结果
    plt.figure(figsize=(14, 6))
    plt.plot(y_test.values[:100], label='真实值', marker='o', alpha=0.7)
    plt.plot(y_pred[:100], label='预测值', marker='x', alpha=0.7)
    plt.xlabel('时间步')
    plt.ylabel('电力负荷')
    plt.title('模型预测结果')
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.savefig('prediction_result.png', dpi=100)
    print("预测结果图已保存")
    
    return model

# 6. 模型保存函数
print("\n=== 6. 模型保存函数 ===")

def save_model(model, model_path='model/power_load_model.pkl', logger=None):
    """
    保存模型
    Args:
        model: 训练好的模型
        model_path: 模型保存路径
        logger: 日志对象
    """
    if logger:
        logger.info(f"开始保存模型: {model_path}")
    
    # 创建目录
    os.makedirs(os.path.dirname(model_path), exist_ok=True)
    
    # 保存模型
    joblib.dump(model, model_path)
    
    if logger:
        logger.info(f"模型已保存: {model_path}")
    
    print(f"模型已保存: {model_path}")

# 7. 完整流程
print("\n=== 7. 完整流程 ===")

def complete_pipeline():
    """完整流程"""
    # 创建日志对象
    log_utils = LogUtils(root_path='./', log_name='model_train')
    logger = log_utils.get_log()
    
    logger.info("项目启动")
    
    # 1. 生成数据
    logger.info("开始生成数据")
    data = generate_power_load_data(n_days=30)
    logger.info(f"数据生成完成,形状: {data.shape}")
    
    # 2. 特征工程
    feature_data = feature_engineering(data, logger)
    
    # 3. 获取特征列名
    features = get_feature_names(feature_data)
    
    # 4. 模型训练
    model = model_train(feature_data, features, logger)
    
    # 5. 保存模型
    save_model(model, logger=logger)
    
    logger.info("项目完成")

complete_pipeline()

# 8. 特征重要性
print("\n=== 8. 特征重要性 ===")

def show_feature_importance(model, features):
    """显示特征重要性"""
    importances = model.feature_importances_
    
    # 排序
    indices = np.argsort(importances)[::-1]
    
    print("特征重要性排序:")
    for i, idx in enumerate(indices[:10]):  # 显示前10个
        print(f"  {i+1}. {features[idx]}: {importances[idx]:.4f}")
    
    # 可视化
    plt.figure(figsize=(12, 8))
    plt.bar(range(len(importances)), importances[indices], color='skyblue')
    plt.xlabel('特征')
    plt.ylabel('重要性')
    plt.title('特征重要性排序')
    plt.xticks(range(len(importances)), [features[i] for i in indices], rotation=90)
    plt.tight_layout()
    plt.savefig('feature_importance.png', dpi=100)
    print("特征重要性图已保存")

# 9. 模型训练流程详解
print("\n=== 9. 模型训练流程详解 ===")

def model_train_process():
    """模型训练流程详解"""
    print("""
模型训练流程详解:

1. 数据集切分
   X = data[features]  # 特征
   y = data['power_load']  # 标签

2. 划分训练集测试集
   X_train, X_test, y_train, y_test = train_test_split(
       X, y, test_size=0.2, random_state=42, shuffle=False
   )

3. 训练模型
   model = XGBRegressor()
   model.fit(X_train, y_train)

4. 模型评估
   y_pred = model.predict(X_test)
   mae = mean_absolute_error(y_test, y_pred)
   mse = mean_squared_error(y_test, y_pred)
   rmse = np.sqrt(mse)

5. 模型保存
   joblib.dump(model, 'model/power_load_model.pkl')
""")

model_train_process()

# 10. 特征工程重要性
print("\n=== 10. 特征工程重要性 ===")

def feature_engineering_importance():
    """特征工程重要性"""
    print("""
特征工程重要性:

1. 最大挑战
   - 特征工程是项目最大挑战
   - 如何把一列数据变成多列特征
   - 需要大量代码

2. 模型训练
   - 固定步骤
   - 套用API即可
   - 相对简单

3. 特征来源
   - 原始: 只有time一列
   - 拆分: hour(24)、month(12)
   - 窗口: prev_1、prev_2、prev_3
   - 昨日: yesterday_load

4. 实际开发
   - 特征工程需要讨论
   - 团队协作
   - 不断优化
""")

feature_engineering_importance()

# 11. 完整代码
print("\n=== 11. 完整代码 ===")

def complete_code():
    """完整代码"""
    print("""
def model_train(data, features, logger):
    \"\"\"模型训练\"\"\"
    logger.info("开始模型训练")
    
    # 1. 数据集切分
    X = data[features]
    y = data['power_load']
    
    # 2. 划分训练集测试集
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=0.2, random_state=42, shuffle=False
    )
    
    # 3. 训练模型
    model = XGBRegressor()
    model.fit(X_train, y_train)
    
    # 4. 模型评估
    y_pred = model.predict(X_test)
    mae = mean_absolute_error(y_test, y_pred)
    mse = mean_squared_error(y_test, y_pred)
    rmse = np.sqrt(mse)
    
    logger.info(f"MAE: {mae}, MSE: {mse}, RMSE: {rmse}")
    
    return model

def save_model(model, model_path, logger):
    \"\"\"保存模型\"\"\"
    joblib.dump(model, model_path)
    logger.info(f"模型已保存: {model_path}")

# 调用
model = model_train(feature_data, features, logger)
save_model(model, 'model/power_load_model.pkl', logger)
""")

complete_code()

# 12. 总结
def model_train_summary():
    """模型训练总结"""
    print("=" * 50)
    print("模型训练、评估、保存总结")
    print("=" * 50)
    
    print("\n1. 函数")
    print("   model_train: 模型训练")
    print("   save_model: 模型保存")
    
    print("\n2. 参数")
    print("   data: 处理后的数据")
    print("   features: 特征列名")
    print("   logger: 日志对象")
    
    print("\n3. 步骤")
    print("   数据集切分")
    print("   划分训练测试集")
    print("   训练模型")
    print("   模型评估")
    print("   模型保存")
    
    print("\n4. 评估指标")
    print("   MAE: 平均绝对误差")
    print("   MSE: 均方误差")
    print("   RMSE: 均方根误差")
    
    print("\n5. 重点")
    print("   特征工程是最大挑战")
    print("   模型训练是固定步骤")
    
    print("\n" + "=" * 50)
    print("模型训练完成!")
    print("=" * 50)

model_train_summary()

输出示例:

=== 5. 模型训练函数 ===
特征形状: (696, 42)
标签形状: (696,)

训练集: (556, 42)
测试集: (140, 42)

模型评估:
  MAE: 45.6789
  MSE: 3456.7890
  RMSE: 58.9012

=== 6. 模型保存函数 ===
模型已保存: model/power_load_model.pkl

=== 8. 特征重要性 ===
特征重要性排序:
  1. prev_1: 0.3456
  2. yesterday_load: 0.2345
  3. hour_18: 0.1234
  ...

5 重难点与易错提醒

  • ❗重点:模型训练是重中之重。
  • ❗重点:特征列包括hour、month、prev_1/2/3、yesterday_load。
  • ❗重点:标签列是power_load。
  • ❗重点:特征工程是最大挑战。
  • ⚠️易错:特征列名错误。
  • ⚠️易错:忘记保存模型。
  • 💡深入理解:特征工程决定模型上限。

6 课堂问答精选

Q: 模型训练的步骤是什么?

A: 步骤:

  1. 数据集切分:X = data[features], y = data['power_load']
  2. 划分训练测试集:train_test_split
  3. 训练模型:model.fit(X_train, y_train)
  4. 模型评估:mean_absolute_error, mean_squared_error
  5. 模型保存:joblib.dump

Q: 为什么特征工程是最大挑战?

A: 原因:

  • 原始数据只有time一列
  • 需要拆分成多个特征
  • 包括hour(24)、month(12)、窗口字段、昨日负荷
  • 需要大量代码
  • 需要团队讨论优化

模型训练是固定步骤,相对简单。

7 本课小结

  • 函数:model_train、save_model。
  • 特征:hour、month、prev_1/2/3、yesterday_load。
  • 标签:power_load。
  • 步骤:切分、训练、评估、保存。
  • 重点:特征工程是最大挑战。

8 延伸思考与实践

  • 实践:运行模型训练代码。
  • 预习:预测类代码实现。
  • 思考:如何提高模型性能?
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
电力负荷案例之特征工程-昨日同时刻负荷
Next
电力负荷案例之预测类代码实现