当前位置: 首页 > article >正文

机器学习基础算法

机器学习基础算法1. 技术分析1.1 机器学习概述机器学习是数据科学的核心机器学习类型 监督学习: 有标签数据 无监督学习: 无标签数据 半监督学习: 部分标签 强化学习: 交互学习 学习任务: 分类: 离散输出 回归: 连续输出 聚类: 分组1.2 监督学习算法监督学习算法 线性模型: 线性回归、逻辑回归 树模型: 决策树、随机森林 集成学习: XGBoost、LightGBM 支持向量机: SVM 神经网络: Deep Learning 算法选择: 数据规模 特征类型 任务类型1.3 算法对比算法适用任务复杂度可解释性线性回归回归低高逻辑回归分类低高决策树分类/回归中高随机森林分类/回归中中XGBoost分类/回归高中2. 核心功能实现2.1 线性回归import numpy as np class LinearRegression: def __init__(self, learning_rate0.01, iterations1000): self.learning_rate learning_rate self.iterations iterations self.weights None self.bias None def fit(self, X, y): n_samples, n_features X.shape self.weights np.zeros(n_features) self.bias 0 for _ in range(self.iterations): y_pred np.dot(X, self.weights) self.bias dw (1 / n_samples) * np.dot(X.T, (y_pred - y)) db (1 / n_samples) * np.sum(y_pred - y) self.weights - self.learning_rate * dw self.bias - self.learning_rate * db def predict(self, X): return np.dot(X, self.weights) self.bias def score(self, X, y): y_pred self.predict(X) ss_res np.sum((y - y_pred) ** 2) ss_tot np.sum((y - np.mean(y)) ** 2) return 1 - (ss_res / ss_tot)2.2 逻辑回归class LogisticRegression: def __init__(self, learning_rate0.01, iterations1000): self.learning_rate learning_rate self.iterations iterations self.weights None self.bias None def _sigmoid(self, z): return 1 / (1 np.exp(-z)) def fit(self, X, y): n_samples, n_features X.shape self.weights np.zeros(n_features) self.bias 0 for _ in range(self.iterations): z np.dot(X, self.weights) self.bias y_pred self._sigmoid(z) dw (1 / n_samples) * np.dot(X.T, (y_pred - y)) db (1 / n_samples) * np.sum(y_pred - y) self.weights - self.learning_rate * dw self.bias - self.learning_rate * db def predict_proba(self, X): z np.dot(X, self.weights) self.bias return self._sigmoid(z) def predict(self, X, threshold0.5): return (self.predict_proba(X) threshold).astype(int) def accuracy(self, X, y): predictions self.predict(X) return np.mean(predictions y)2.3 决策树class DecisionTree: def __init__(self, max_depthNone, min_samples_split2): self.max_depth max_depth self.min_samples_split min_samples_split self.tree None def _entropy(self, y): _, counts np.unique(y, return_countsTrue) probabilities counts / len(y) return -np.sum(probabilities * np.log2(probabilities)) def _information_gain(self, X, y, feature_idx, threshold): left_mask X[:, feature_idx] threshold right_mask ~left_mask if len(y[left_mask]) 0 or len(y[right_mask]) 0: return 0 parent_entropy self._entropy(y) left_entropy self._entropy(y[left_mask]) right_entropy self._entropy(y[right_mask]) weight_left len(y[left_mask]) / len(y) weight_right len(y[right_mask]) / len(y) return parent_entropy - (weight_left * left_entropy weight_right * right_entropy) def _best_split(self, X, y): best_gain -1 best_feature None best_threshold None for feature_idx in range(X.shape[1]): thresholds np.unique(X[:, feature_idx]) for threshold in thresholds: gain self._information_gain(X, y, feature_idx, threshold) if gain best_gain: best_gain gain best_feature feature_idx best_threshold threshold return best_feature, best_threshold, best_gain def _build_tree(self, X, y, depth0): if len(np.unique(y)) 1 or len(y) self.min_samples_split: return np.bincount(y).argmax() if self.max_depth is not None and depth self.max_depth: return np.bincount(y).argmax() feature, threshold, gain self._best_split(X, y) if gain 0: return np.bincount(y).argmax() left_mask X[:, feature] threshold right_mask ~left_mask left_tree self._build_tree(X[left_mask], y[left_mask], depth 1) right_tree self._build_tree(X[right_mask], y[right_mask], depth 1) return { feature: feature, threshold: threshold, left: left_tree, right: right_tree } def fit(self, X, y): self.tree self._build_tree(X, y) def _predict_sample(self, x, tree): if not isinstance(tree, dict): return tree if x[tree[feature]] tree[threshold]: return self._predict_sample(x, tree[left]) else: return self._predict_sample(x, tree[right]) def predict(self, X): return np.array([self._predict_sample(x, self.tree) for x in X])2.4 随机森林class RandomForest: def __init__(self, n_trees100, max_depthNone, min_samples_split2): self.n_trees n_trees self.max_depth max_depth self.min_samples_split min_samples_split self.trees [] def fit(self, X, y): n_samples X.shape[0] for _ in range(self.n_trees): indices np.random.choice(n_samples, n_samples, replaceTrue) X_sample X[indices] y_sample y[indices] tree DecisionTree(max_depthself.max_depth, min_samples_splitself.min_samples_split) tree.fit(X_sample, y_sample) self.trees.append(tree) def predict(self, X): predictions np.array([tree.predict(X) for tree in self.trees]) return np.array([np.bincount(preds).argmax() for preds in predictions.T])3. 性能对比3.1 监督学习算法对比算法训练速度预测速度精度线性回归快快中逻辑回归快快中决策树中快中随机森林慢中高XGBoost慢中很高3.2 算法选择指南数据规模推荐算法原因小数据(1万)决策树/RF稳定中等数据(1万-100万)XGBoost平衡大数据(100万)LightGBM高效3.3 模型评估指标任务指标说明分类准确率正确预测比例分类F1分数平衡精确率和召回率回归RMSE均方根误差回归R²解释方差比例4. 最佳实践4.1 算法选择流程def choose_algorithm(X, y, task_typeclassification): n_samples, n_features X.shape if n_samples 1000: if task_type classification: return LogisticRegression else: return LinearRegression elif n_samples 100000: return XGBoost else: return LightGBM4.2 模型训练流程def train_model(X_train, y_train, X_test, y_test, model): model.fit(X_train, y_train) y_pred_train model.predict(X_train) y_pred_test model.predict(X_test) if hasattr(model, predict_proba): train_proba model.predict_proba(X_train)[:, 1] test_proba model.predict_proba(X_test)[:, 1] print(f训练集准确率: {np.mean(y_pred_train y_train):.4f}) print(f测试集准确率: {np.mean(y_pred_test y_test):.4f}) return model5. 总结机器学习算法是数据科学的核心线性模型简单、可解释树模型处理非线性关系集成学习提高准确性算法选择根据数据规模和任务类型对比数据如下XGBoost是分类任务的首选线性模型可解释性最强随机森林稳定性好推荐从简单模型开始逐步尝试理解算法原理有助于更好地应用和调优模型。

相关文章:

机器学习基础算法

机器学习基础算法 1. 技术分析 1.1 机器学习概述 机器学习是数据科学的核心: 机器学习类型监督学习: 有标签数据无监督学习: 无标签数据半监督学习: 部分标签强化学习: 交互学习学习任务:分类: 离散输出回归: 连续输出聚类: 分组1.2 监督学习算法 监督学习算法线性模…...

为什么你的 Agent 总是“偷懒”?大模型惰性与激励提示词研究

为什么你的 Agent 总是“偷懒”?大模型惰性与激励提示词研究 各位知识工作者、AI 产品经理、大模型开发者、编程爱好者——如果你正在开发或使用基于大语言模型(LLMs)的智能体(Agent),或者只是在日常用 ChatGPT、Claude、文心一言这类工具时,肯定遇到过这类令人抓狂的场…...

统计分析方法与假设检验

统计分析方法与假设检验 1. 技术分析 1.1 统计分析概述 统计分析是数据科学的基础方法: 统计分析类型描述统计: 数据概括推断统计: 假设检验回归分析: 变量关系时间序列: 时序数据统计方法:参数检验: t检验、方差分析非参数检验: Mann-Whitney、卡方检验相关性分…...

Claude API文档不是说明书,而是契约:用Swagger UI+Postman Collection+TypeScript SDK三件套构建零歧义协作协议

更多请点击: https://kaifayun.com 第一章:Claude API文档不是说明书,而是契约 Claude API 文档的本质并非操作指南或功能速查手册,而是一份具有技术约束力的**双向契约**——它明确定义了客户端与 Anthropic 服务之间在请求结构…...

NVIDIA Vera Rubin 平台如何解决 Agentic AI 的 Scale-up 难题

NVIDIA Vera Rubin 平台如何解决 Agentic AI 的 Scale-up 难题 [外链图片转存中…(img-5hHDDlgn-1779546321135)] Agentic AI 改变了推理系统的负载形态。传统推理通常可以理解为一次请求、一次生成;Agentic inference 则会展开成非确定性轨迹:Agent 做…...

五轴联动机床:什么叫真正做出来了,什么叫组装贴牌

机床厂的数量从来不是问题。打开任何一份机床企业名录,数以千计的厂商密密麻麻排在那里,官网上都写着"五轴联动"“高精度数控”“航空级加工”。但做五轴联动整机与自主数控系统的工厂,放到整个行业里只是极小的一部分;…...

boss app sig/sp/响应体 unidbg分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 侵权通过头像私信或名字简介叫我删除博…...

根据lab1.pdf总结的知识点

第一题:简单的应用程序(Hello.java)类与主方法:Java程序入口必须是public static void main(String args[]),public表示该方法能被JVM访问,static表示无需创建对象即可调用,void表示无返回值&am…...

仓储海量货物人车混跑,无感定位并发能力碾压UWB上限瓶颈技术白皮书方案

仓储海量货物人车混跑,无感定位并发能力碾压UWB上限瓶颈技术白皮书方案一、方案概述随着现代智能仓储向高密度、高周转、无人化、集约化模式快速迭代,立体仓储库区普遍形成海量货物堆叠、多叉车穿梭、人员高频作业、人车密集混跑的复杂动态工况。仓储作业…...

大白话拆解AI黑话!从LLM到Agent,一篇扫盲无压力

前言:别再被AI名词劝退了 有没有一种感觉:现在刷技术文章、看AI项目、聊行业趋势,满屏都是 LLM、Token、上下文、RAG、Agent、幻觉…… 每个词都似懂非懂,搜完解释看完就忘,想用的时候依旧一头雾水。 其实所有AI名词&a…...

内网渗透之横向移动实战

在红队渗透测试中,当我们通过 Web 渗透拿到边界服务器的权限后,往往不会止步于此 —— 内部网络中还隐藏着更多的核心资产,比如存储着企业所有账号信息的域控制器。而横向移动,就是我们从边界主机出发,一步步渗透到内网…...

Harness与Agent SDK的边界划分:最佳实践

Harness与Agent SDK的边界划分:最佳实践 引言 在云原生软件交付的下半场,企业面临的核心矛盾已经从「有没有工具链」变成了「能不能把工具链用出价值」。作为全球领先的软件交付平台(SDP),Harness凭借开箱即用的CI/CD、Feature Flag、混沌工程、合规治理等能力,已经成为…...

08-系统技术架构师必备——分布式系统理论与数据一致性

关键词:分布式系统、CAP定理、BASE理论、Paxos、Raft、分布式事务、TCC、Saga、一致性算法 分布式系统 CAP定理 分布式事务 一致性算法 Paxos Raft TCC Saga 系统技术架构师必备——分布式系统理论与数据一致性 摘要 分布式系统是系统技术架构师必须跨越的"分水岭"…...

Keil µVision库模块选择问题解决方案

1. 问题现象解析在Keil Vision IDE 4.53.06版本中,当用户为C51/C251/C166工具链项目添加库文件时,可以通过Options for File对话框选择需要链接的特定模块。这个功能本应记住用户的选择,使得下次打开对话框时保持相同的模块选中状态。但实际使…...

5分钟搞定视频号批量下载:开源工具让效率提升20倍

5分钟搞定视频号批量下载:开源工具让效率提升20倍 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否还在为下…...

ES 模块:JavaScript 模块化的标准方案

ES 模块:JavaScript 模块化的标准方案 什么是 ES 模块? ES 模块(ES Modules,简称 ESM)是 ECMAScript 2015(ES6)引入的官方模块化规范。 ES 模块 vs CommonJS 特性CommonJSES Modules加载方式同步…...

Python异步编程深度解析:从asyncio到实战应用

Python异步编程深度解析:从asyncio到实战应用 引言 异步编程是现代Python后端开发中不可或缺的技能。作为从Python转向Rust的后端开发者,我发现Python的异步生态非常成熟,尤其是asyncio库提供了强大的异步编程能力。本文将深入探讨Python异步…...

CI/CD最佳实践:构建高效可靠的持续集成和部署流程

CI/CD最佳实践:构建高效可靠的持续集成和部署流程 一、CI/CD最佳实践概述 1.1 CI/CD最佳实践的定义 CI/CD最佳实践是指在持续集成和持续部署过程中遵循的一系列指导原则和方法。它通过自动化、标准化和可重复的流程,提高软件开发和部署的效率和可靠性。 …...

CSS Grid布局深入解析:掌握现代布局技术

CSS Grid布局深入解析:掌握现代布局技术 引言 CSS Grid布局是CSS3引入的强大布局系统,它提供了一种二维网格布局方式,可以轻松实现复杂的页面布局。本文将深入探讨Grid布局的核心概念、高级技巧和最佳实践。 一、Grid布局基础 1.1 Grid容器与…...

回归模型.

...

小波分析多尺度数据融合算法应用【附算法】

✨ 长期致力于小波分析、多尺度数据融合、MEMS陀螺、Allan方差研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)小波域多尺度融合定理证明与算法框架&a…...

鸿蒙PC:鸿蒙electron跨端框架PC链接雷达实战:把本地收藏夹升级成可巡检的链接管理面板

前言 欢迎加入鸿蒙PC开发者社区,共同打造开发者工具生态:鸿蒙PC开发者社区 :https://harmonypc.csdn.net/ 项目开源地址:https://AtomGit.com/lqjmac/ele_lianjieleida 浏览器收藏夹能保存链接,但不擅长保存判断。 …...

Python数据库设计模式:从ORM到数据层架构

Python数据库设计模式:从ORM到数据层架构 引言 数据库设计是后端开发的核心环节。作为从Python转向Rust的后端开发者,我发现Python的数据库生态非常成熟,尤其是SQLAlchemy提供了强大的ORM能力。本文将深入探讨Python数据库设计模式&#xff0…...

数据科学实践案例与项目管理

数据科学实践案例与项目管理 1. 技术分析 1.1 数据科学项目管理概述 数据科学项目管理是确保项目成功的关键: 项目生命周期问题定义: 明确目标数据收集: 获取数据数据处理: 清洗转换模型开发: 构建模型评估验证: 评估效果部署上线: 生产环境项目管理要素:目标设定进…...

大气层Atmosphere系统深度解析:解锁Switch潜能的终极技术指南

大气层Atmosphere系统深度解析:解锁Switch潜能的终极技术指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable Atmosphere大气层系统作为Nintendo Switch最稳定、功能最丰富的定…...

Mootdx架构深度解析:Python金融数据接口的工程化实践

Mootdx架构深度解析:Python金融数据接口的工程化实践 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在金融科技快速发展的今天,数据获取的便捷性与稳定性成为量化分析的基…...

大模型从0训练LLaMA全流程实战——基于昇腾910B集群

用昇腾集群从零训练一个 LLaMA-7B,走完数据准备、代码修改、分布式配置、启动训练、监控调优的全流程。中间踩过的坑都标注在对应步骤里。 1. 硬件与环境确认(训练前必做) 训练大模型对环境的稳定性要求极高,任何一项不达标都可能导致训练中途崩溃。 #!/bin/bash # 训练前…...

2026技术复盘:告别“易碎”代码,实在Agent重塑企业自动化底座

在2026年的数字化转型浪潮中,企业对于“提效”的追求已从单纯的工具引入转向深度的架构治理。 曾被寄予厚望的固定规则自动化脚本,在经历了数年的规模化应用后,其弊端正集中爆发。 许多企业发现,那些耗费巨资编写的脚本&#xff0…...

前缀和与差分进阶总结 | 技巧归纳与实战应用

前缀和与差分进阶总结 | 技巧归纳与实战应用 引言 前缀和与差分是数组处理中两种重要且互补的技术。它们看似简单,却在 LeetCode 和实际工程中有着广泛的应用。前缀和将区间查询从 O(n) 优化到 O(1),差分将区间更新从 O(n) 优化到 O(1)。两者的结合使用可…...

LeetCode 1314:矩阵区域和 | 二维前缀和

LeetCode 1314:矩阵区域和 | 二维前缀和 引言 矩阵区域和(Matrix Block Sum)是 LeetCode 第 1314 题,难度为 Medium。题目要求计算矩阵中以每个元素为中心、KK 子矩阵区域的元素和。这道题是二维前缀和的经典应用,展…...