数据炼金术:机器学习背后的“脏活”与特征工程

音频机器学习入门:从声波物理到梅尔特征的工程解码 音频机器学习并非语音识别或音乐检索的子集,而是研究如何将连续模拟声波可靠转化为适合统计学习的数字特征表示的基础学科。其核心原理植根于采样定理、时频分析与人类听觉生理特性,技术价值在于建立可复现、可泛化、可解释的声学表征能力。典型应用场景涵盖工业设备声纹故障诊断、野外生物声学监测、助听器实时降噪等对物理保真度要求严苛的领域。本文聚焦Audio ML中两个关键热词——梅尔频谱图与短时傅里叶变换(STFT),深入剖析其背后的信号处理逻辑、分辨率权衡机制及在真实硬件约束下的工程取舍。 阅读详情

前言:
在上一篇博客中,我们见证了机器学习的神奇:几行代码,一条直线,就能预测房价。但现实往往比教程残酷得多。如果你直接拿真实的业务数据去跑那个 model.fit(),大概率会得到一个糟糕透顶的结果,甚至直接报错。

业界流传着一句至理名言:“数据和特征决定了模型的上限,而算法只是在逼近这个上限。”

这意味着,无论你用多先进的深度学习模型,如果输入的数据是垃圾,输出的一定也是垃圾(Garbage In, Garbage Out)。本篇作为“机器学习实战四部曲”的第二篇,我们将深入机器学习的“后厨”,揭秘那些占据数据科学家 80% 时间的核心工作:数据预处理与特征工程。这里没有高大上的神经网络,只有清洗、转换和提炼的“脏活累活”,但这正是让模型从“人工智障”变“人工智能”的关键一步。


🕵️‍♂️ 一、为什么原始数据不能直接用?

想象一下,你要训练一个模型来预测用户是否会购买某款产品。你拿到的原始数据表可能是这样的:

用户ID年龄收入性别注册时间是否购买
U0012512000男2023-01-01是
U002?8000女2023/02/15否
U003150-5000M2023-03-10是
U004309500.5女性Jan 20, 2023?

一眼望去,全是坑:

  1. 缺失值:U002 的年龄是空的,U004 的标签未知。
  2. 异常值:U003 的年龄是 150 岁?收入是负数?这显然是录入错误。
  3. 格式不统一:日期格式有的用 -,有的用 /,有的用英文单词;性别有的写“男”,有的写“M”,有的写“女性”。
  4. 非数值型数据:机器学习模型(如线性回归、 SVM)本质上是在做矩阵运算,它们看不懂“男/女”或“2023-01-01”,只认识数字。

如果不处理这些直接扔给模型,后果不堪设想。因此,我们需要一套标准化的“清洗流水线”。


🛠️ 二、数据清洗:给数据“洗澡”

1. 处理缺失值 (Missing Values)

数据缺失是常态。处理方法主要有两种策略:

  • 删除法:如果缺失比例极高(比如某列 80% 都是空),或者该样本其他关键信息也缺失,直接丢弃该行或该列。
  • **填充法 **(Imputation):保留数据,用合理的值填补空缺。
    • 数值型:通常用均值(Mean)或中位数(Median)。中位数对异常值不敏感,更稳健。
    • 类别型:通常用众数(Mode,出现最多的值)或填充为“未知”。
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer

# 构造一个有缺失值的简单数据集
data = {'age': [25, 30, np.nan, 45, 20],
        'income': [5000, 6000, 5500, np.nan, 4800]}
df = pd.DataFrame(data)

print("原始数据:")
print(df)

# 策略:用中位数填充 age,用均值填充 income
imputer_age = SimpleImputer(strategy='median')
imputer_income = SimpleImputer(strategy='mean')

df['age'] = imputer_age.fit_transform(df[['age']])
df['income'] = imputer_income.fit_transform(df[['income']])

print("\n填充后的数据:")
print(df)
# 输出中,age 的 NaN 会被替换为剩余年龄的中位数 (25, 20, 30, 45 -> 排序 20,25,30,45 -> 中位数 27.5)

image-20260317184644008

2. 处理异常值 (Outliers)

像那个"150 岁”的数据,会严重拉偏模型的拟合线。

  • 检测方法:常用 3σ原则(超过均值 3 个标准差)或 箱线图(IQR,四分位距)。
  • 处理手段:
    • 直接删除该样本。
    • 将其修正为边界值(例如,把 150 岁强行改为最大合理值 90 岁)。
    • 取对数转换,压缩极端值的范围。

🔢 三、特征编码:让机器听懂“人话”

计算机只认识数字。对于“性别”、“城市”、“颜色”这类类别特征(Categorical Features),我们必须把它们转化为数字。

1. 标签编码 (Label Encoding)

简单粗暴地给每个类别分配一个整数 ID。

  • 男 -> 0, 女 -> 1
  • 北京 -> 0, 上海 -> 1, 广州 -> 2
  • 缺点:引入了错误的“大小关系”。模型可能会误以为 广州(2) > 北京(0),或者 上海是北京的 1 倍大。这在逻辑上是不通的。
  • 适用场景:有序类别(如:低->0, 中->1, 高->2)。

2. 独热编码 (One-Hot Encoding) —— 推荐

将每个类别展开成一个新的二进制列(0 或 1)。

  • 原数据:[北京,上海,广州]
  • 转换后:
    • 是北京?[1, 0, 0]
    • 是上海?[0, 1, 0]
    • 是广州?[0, 0, 1]
      这样就没有大小之分了,每个城市都是平等的维度。
from sklearn.preprocessing import OneHotEncoder

# 假设这是城市列
cities = np.array([['北京'], ['上海'], ['广州'], ['北京'], ['上海']])

encoder = OneHotEncoder(sparse_output=False) # sparse_output=False 表示返回密集数组
result = encoder.fit_transform(cities)

print("独热编码结果:")
print(encoder.get_feature_names_out(['city']))
print(result)
# 输出将是三列,分别代表 is_北京,is_上海,is_广州

image-20260317222312278

⚖️ 四、特征缩放:让所有特征站在同一起跑线

这是一个新手最容易忽略,但影响巨大的步骤。
假设我们要预测房价,有两个特征:

  1. 面积:50 ~ 200 (平米)
  2. 价格:3,000,000 ~ 10,000,000 (元)

如果你画个图,会发现“价格”轴的刻度跨度是“面积”的几万倍。在使用基于距离的算法(如 KNN、K-Means)或基于梯度下降的算法(如线性回归、神经网络)时,数值大的特征会主导整个计算过程,导致模型完全忽略数值小的特征。

解决方案:

  1. **归一化 **(Min-Max Scaling):把数据压缩到 [0, 1] 区间。
    image-20260317223243019
  2. **标准化 **(Standardization / Z-Score):把数据变成均值为 0,标准差为 1 的分布。
    image-20260317223249672
    这是最常用的方法,因为它对异常值不那么敏感,且符合很多算法的假设。
from sklearn.preprocessing import StandardScaler

# 构造两个量级差异巨大的特征
X = np.array([[100, 5000000],
              [120, 6000000],
              [80,  4000000]])

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

print("原始数据第一列均值:", X[:, 0].mean())
print("标准化后第一列均值:", X_scaled[:, 0].mean()) # 应该非常接近 0
print("标准化后的数据:\n", X_scaled)

image-20260317222633488

经过这一步,面积和价格就在同一个数量级上“公平竞争”了,模型的收敛速度会快得多,效果也会更好。


🎯 五、特征工程:从“数据”到“洞察”

清洗和编码只是基础,真正的**特征工程 **(Feature Engineering) 是利用领域知识创造新特征的过程。这是区分普通工程师和顶级专家的分水岭。

案例:从“注册时间”挖掘价值
原始数据只有一个 2023-01-15 14:30:00。
直接把这个字符串转成数字(时间戳)意义不大。但如果我们拆解它:

  • 特征 A:是周末吗?(0/1) -> 周末用户购买意愿可能更高
  • 特征 B:是白天还是晚上?(0/1) -> 深夜用户可能更冲动
  • 特征 C:距离现在过去了多少天? -> 新用户 vs 老用户
# 简单的特征构造示例
df['register_date'] = pd.to_datetime(['2023-01-15', '2023-02-20', '2023-03-10'])
df['is_weekend'] = df['register_date'].dt.dayofweek.apply(lambda x: 1 if x >= 5 else 0)
df['user_tenure_days'] = (pd.Timestamp.now() - df['register_date']).dt.days

print(df[['register_date', 'is_weekend', 'user_tenure_days']])

你看,原本无用的时间戳,变成了两个极具业务含义的特征。模型利用这些特征,能更精准地捕捉用户行为模式。


📉 六、过拟合与欠拟合:模型的“度”

在处理完数据准备训练前,必须理解两个核心概念,它们贯穿机器学习始终:

  1. **欠拟合 **(Underfitting):

    • 表现:模型太简单,连训练数据都学不会。就像学生没好好读书,考试不及格。
    • 原因:特征太少、模型复杂度不够。
    • 对策:增加特征、换更复杂的模型。
  2. **过拟合 **(Overfitting):

    • 表现:模型在训练集上表现完美(准确率 99%),但在测试集上一塌糊涂。就像学生死记硬背了课本答案,题目稍微一变就不会了。
    • 原因:模型太复杂,把数据里的“噪声”也当成了规律学进去了。
    • 对策:
      • 更多数据:让模型见多识广。
      • 减少特征:去掉无关干扰。
      • **正则化 **(Regularization):在损失函数中加惩罚项,限制模型参数不要太大(后续篇章详解)。
      • 交叉验证:更科学地评估模型。

🔮 下一篇预告:算法的核心——训练、评估与调优

至此,我们已经拥有了干净、规范、富含信息量的数据集。万事俱备,只欠东风。
在第三篇博客中,我们将正式进入算法的深水区:

  • 训练集与测试集:为什么要切分数据?如何科学地划分?
  • 核心算法详解:深入剖析逻辑回归、决策树、随机森林等经典算法的内部原理(不再只是调用库)。
  • 评估指标:准确率(Accuracy)真的可靠吗?什么是精确率(Precision)、召回率(Recall)和 F1 分数?ROC 曲线又是什么?
  • 超参数调优:如何利用网格搜索(Grid Search)找到模型的最佳配置?

数据已经准备好,接下来,让我们看看算法是如何在这些数据上“施展魔法”,以及我们如何客观地评判这个魔法的好坏。敬请期待!

SEED-IV数据集深度解析:从脑电信号到情绪识别的完整流程 本文深度解析SEED-IV数据集,系统阐述了从脑电信号采集、预处理、特征提取到情绪识别模型构建的完整技术流程。文章详细探讨了基于EEG信号的情绪识别方法,包括传统机器学习与深度学习模型的应用,并分析了当前面临的挑战与未来多模态融合等前沿方向,为相关领域研究者提供了实践指南。 阅读详情

相关推荐

LinkedIn职位搜索背后的向量匹配架构解析

向量检索是现代语义搜索的核心技术,它将文本、行为、结构化数据映射为高维空间中的稠密表示,通过余弦相似度实现超越关键词的语义匹配。其原理依赖嵌入模型对多源异构特征的联合编码与跨模态对齐,技术价值在于显著提升召回相关率与冷启动能力,广泛应用于招聘匹配、商品推荐、内容分发等场景。本文深入拆解LinkedIn工业级职位搜索系统中Embedding Architecture的设计逻辑,涵盖多塔结构选型、CNN-GNN混合编码、技能知识图谱构建及困难负样本挖掘等关键实践,聚焦真实工程落地中的性能权衡与线上稳定性保障。

weixin_30458043的博客 427

机器学习特征工程实战:数据预处理全流程解析与避坑指南

在机器学习项目中,特征工程是连接原始数据与模型性能的关键桥梁,而数据预处理则是特征工程的首要且至关重要的环节。其核心原理在于通过一系列系统化的技术手段,将原始、杂乱、不一致的“脏数据”转化为干净、一致、适合模型训练的格式,从而为后续建模奠定坚实基础。从技术价值看,高质量的数据预处理能显著提升模型性能与稳定性,是决定模型效果上限的关键因素,其重要性往往超过算法本身。在实际应用场景中,数据预处理广泛作用于金融风控、推荐系统、计算机视觉等各类机器学习任务,是数据科学工作流中不可或缺的通用基础步骤。本文聚焦于数据预

weixin_34130389的博客 319

AI去噪器:用信号处理思想重构数据清洗

数据清洗是数据科学中基础却高成本的环节,传统方法依赖规则或统计填充,难以应对高维、时序与多模态数据中的复杂噪声。AI去噪器(Denoiser)并非大模型补全,而是继承香农信息论与维纳滤波思想,将数据建模为‘真实信号+噪声’,通过深度学习端到端学习信号先验分布,实现物理/业务一致的修复。其技术价值在于保留长程依赖、规避特征工程偏差、支持跨域迁移,在工业传感器、金融时序、OCR文档等场景显著提升下游任务指标(如F1值、PSNR、业务AUC)。本文聚焦U-Net、CNN自编码器与扩散模型等主流架构的选型逻辑、噪声

wyjvip333的专栏 391

AI与机器学习九大商业应用场景:从数据处理到客户价值预测

人工智能与机器学习作为数据炼金术,其核心原理是通过算法模型从海量数据中自动学习规律与模式,实现从感知到决策的智能化。这项技术的核心价值在于将数据转化为可行动的洞察与自动化决策,从而解决企业面临的效率、增长与风控等核心问题。其应用场景广泛渗透于商业逻辑的各个环节,例如在数据处理环节,通过自然语言处理和计算机视觉技术实现非结构化数据的自动化理解与标注;在客户运营环节,利用预测性分析模型对客户终身价值进行精准量化,指导精细化资源分配。本文通过一线实践者的视角,深入剖析了包括智能数据处理、电商推荐、预测性分析在内的

weixin_33925615的博客 382

L1与L2正则化实战指南:模型瘦身、稳态控制与稀疏可解释性

正则化是机器学习中控制模型复杂度、缓解过拟合的基础技术。其核心原理是在优化过程中引入对参数规模的约束,迫使模型在拟合精度与简洁性之间取得平衡。L1正则化(Lasso)通过绝对值惩罚诱导稀疏解,实现自动特征选择,提升模型可解释性;L2正则化(Ridge)通过平方惩罚平滑收缩权重,增强泛化稳定性与抗扰能力。二者在金融风控、工业预测、推荐系统等真实场景中承担不同工程角色:L1适用于高维稀疏筛选,L2适用于多重共线性抑制与线上鲁棒部署。当单一策略受限时,Elastic Net融合二者优势,成为兼顾稀疏性与稳定性的实

weixin_34268579的博客 429

构建智能体分层记忆系统:从向量检索到持久化人格

在人工智能领域,智能体(Agent)的长期记忆能力是实现自然、连贯人机交互的核心挑战。传统基于有限上下文窗口的对话模型存在‘记忆短暂’问题,无法形成持续的用户认知。其技术原理在于通过外部记忆管理系统,将记忆按重要性分层存储:会话缓存保障实时响应,向量数据库实现语义检索,长期归档满足数据持久化。这一架构的价值在于使智能体能够跨越会话保持状态,从而支撑个性化服务与长期关系构建。在应用场景上,分层记忆编排是构建智能客服、个人助手、游戏NPC等持久化智能体的关键技术基础。本文聚焦于分层记忆编排的实现,详细解析了从记

weixin_34341117的博客 368

超越利用率监控:基于硬件性能计数器的ML系统异常检测实践

在分布式系统与高性能计算领域,系统监控是保障服务稳定与资源效率的基石。传统监控主要关注CPU、内存等资源利用率,但高利用率往往掩盖了硬件降级、资源争用等深层性能瓶颈。其原理在于,硬件性能计数器(PMCs)和低层操作系统指标能揭示指令效率、缓存行为、内存延迟等微观状态,这是利用率指标无法提供的。这项技术的核心价值在于,将可观测性从“服务是否存活”提升到“计算为何低效”,实现性能问题的早期预警与根因定位。在应用场景上,它尤其适用于对计算效率敏感的大规模机器学习训练、科学计算等任务,能有效诊断由内存带宽饱和、GP

weixin_31971181的博客 276

损失函数与优化器:从「梯度是怎么被造出来的」到「梯度是怎么被用掉的」

本文揭示损失函数与优化器本质一体:优化器仅依赖损失产生的梯度,而损失决定梯度的方向、尺度与噪声特性。错误的损失选择(如分类用MSE)会导致梯度失衡,使优化器失效;不同损失(如Huber、Focal)通过调控梯度分布影响优化过程。实测表明,归约方式、标签结构与损失配对直接决定梯度行为,进而影响收敛性与泛化。核心观点:选对损失,才是让优化器“看得懂”的前提。

reset2021的博客 325

健康AI实战:从真实医疗数据清洗到临床可解释建模

健康数据科学不是传统机器学习的简单迁移,而是融合医学逻辑、隐私合规与系统异构性的交叉工程。其核心在于理解电子病历(EMR)、可穿戴时序数据与非结构化医嘱文本背后的临床语义与采集约束;关键技术价值体现在通过指南驱动特征工程、锚点事件时间对齐、临床归因式清洗等方法,将原始数据转化为医生可理解、模型可信赖、监管可审计的高质量特征矩阵;典型应用场景包括慢病风险预测、用药合理性评估与基层随访智能预警;本文即基于一次48小时健康数据马拉松(Health Datathon)的全程复盘,深入解析真实世界中数据‘脏’的根源与

weixin_34301132的博客 361

航班延误预测实战:从数据清洗到LightGBM模型调优全解析

机器学习中的分类预测是数据科学的核心应用之一,其原理是通过算法从历史数据中学习规律,从而对未知事件进行判断。这项技术的价值在于能将复杂的业务问题转化为可量化的预测任务,广泛应用于金融风控、医疗诊断、推荐系统等领域。以航班延误预测为例,这是一个典型的二分类问题,其应用场景直接关联航空运营效率和旅客体验。在解决此类问题时,特征工程和模型调优是关键环节。通过创造性地构造时间、机场、航路等特征,并利用LightGBM等高效算法进行训练与调优,可以显著提升预测性能。本文基于一个真实的比赛项目,详细拆解了从数据清洗、特

weixin_32025789的博客 297

S32DS IDE调试技巧:如何用条件断点精准捕获汽车电子MCU的硬件状态变化

本文详细介绍了S32DS IDE中条件断点功能在汽车电子MCU开发中的应用技巧。通过精准捕获硬件状态变化,工程师可以高效调试外设寄存器异常、时序敏感型交互等复杂场景,大幅提升汽车电子系统的开发效率。文章还提供了多种实战案例和性能优化建议,帮助开发者充分利用S32DS的调试功能。

CAT789的专栏 208

AI工程化生存指南:从实验室到工业级落地的九条硬核经验

AI工程化是指将机器学习模型稳定、可靠、可维护地部署到真实生产环境的过程,其核心在于平衡算法能力与系统韧性。它不仅涉及模型精度优化,更强调数据闭环、硬件协同、混合建模与可解释性等工程实践原理。技术价值体现在降低迭代成本、提升长尾场景泛化能力、构建可持续演进的数据资产体系。典型应用场景覆盖自动驾驶、工业质检、机器人控制与智能硬件边缘推理等对安全性、实时性与鲁棒性要求严苛的领域。本文基于特斯拉AI Day深度拆解与一线AI系统落地经验,聚焦HydraNets解耦架构、影子模式数据闭环、物理引导的混合建模等关键方

aebe49167的博客 411

Abaqus 导出单元刚度矩阵和全局刚度矩阵

Abaqus 导出单元刚度矩阵和全局刚度矩阵

科技芯风 1万+

销售预测不是画折线图:可解释、可干预、可执行的决策引擎构建

销售预测本质上是业务流的数字孪生,而非单纯的时间序列建模任务。其核心原理在于将时间轴转化为可归因的业务事件链——从订单、促销、天气到竞品动作,均需映射为有语义、可审计、可干预的特征信号。技术价值体现在打破‘黑箱预测’困局,通过数据探针、特征手术、模型沙盒与决策翻译四层架构,实现偏差5分钟定位与责任闭环。典型应用场景覆盖快消补货调度、SaaS客户预算响应、新消费品牌促销ROI预判等高动态业务决策。本文聚焦Time Series在真实商业环境中的落地重构,尤其强调可解释性断点控制与业务事件总线两大关键实践。

weixin_30701575的博客 400

西门子S7-1200/1500 PLC编程与应用技巧

西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2674

Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv)

本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。

weixin_29063979的博客 147

低温ECR-MOCVD生长(002)GaN:椭偏仪测厚与电学性能

本研究用ECR-MOCVD在Si(111)和蓝宝石衬底上低温生长GaN薄膜,蓝宝石1.0SCCM、2h样品呈完全(002)择优取向,椭偏仪测厚32.81nm,迁移率10.42cm²/(V·s)。文章梳理了生长温度、TMGa流量与生长时间对结晶取向、膜厚、粗糙度、光学带隙和电学性能的影响。

Flexfilm_的博客 364

手把手教你从入门到精通C# Modbus通信

本文是《Modbus通信从入门到精通》的导读,本专栏将会详细介绍ModusRTU 、ModbusASCII、ModbusTCP这三种协议的C#实现,由一个高级工程师多年实战经验总结而成,绝对干货!

qq_34059233的博客 1万+

从认识人工智能到理解机器学习:我的 AI 入门第一课

正式开始学习人工智能之前,我对 AI 的认识其实比较模糊:知道 ChatGPT、知道大模型,也知道现在很多岗位都在谈 AI,但如果有人问我“人工智能到底是什么”“机器是怎么学会识别一只猫的”,我未必能从头到尾讲清楚。上午的课程更偏向行业全景:人工智能的发展、研究方向、NLP、岗位分工、学习路线和 AI Coding 工具。下午的课程更偏向技术基础:机器学习的原理、有监督学习、深度学习、模型训练和评估方法。

chh563的博客 441

【XCharts插件】5-2、从Excel中读取数据并更新图表案例(v3.0)

XCharts插件是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。【Unity3D插件】XCharts插件完全教程《全网最全》-专栏文章目录【XCharts插件】5-1、从Json中读取数据并更新图表案例(v3.0)介绍了如何从Json文件中读取数据,并更新表格,这篇文章就介绍如何从Excel中读取数据,并更新图表吧。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1274

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

Applitools是一款基于人工智能的视觉验证测试工具,专门用于自动化和验证应用程序的用户界面(UI);Applitools使用视觉回归测试来检测应用程序界面的变化,确保 UI 在不同版本之间的一致性;Applitools的核心功能是通过视觉比较,检测 UI 元素的差异,而无需手动编写复杂的界面检查代码;通过集成Applitools,测试人员可以轻松捕捉和验证界面中的视觉差异,无论是在Web移动端或桌面应用的测试环境;

blues_C的博客 2922

Hugging Face:成为机器学习界的“Github”

以下文章来源于OneFlow,作者OneFlow社区五年前,AI领域的知名研究者Andrej Karpathy发文称,传统人工编程属于“软件1.0”,“软件2

2601_96798011的博客 135

YOLOv8【第九章:模型部署篇·第2节】一文搞懂,模型剪枝与压缩技术!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1528

机器学习基础|监督学习、标签、回归

网约车预估等待时长依赖监督学习中的回归任务。平台利用历史订单数据,以司机实际到达耗时为标签,通过上车点、时间、运力、路况等特征训练模型。模型不断优化预测值与真实耗时的误差,最终对新订单输出连续的预估等待时间,实现精准预测。

weixin_43971465的博客 253

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

机器学习——混淆矩阵(待更新)

二元: true表示真实==预测,positive表示预测值=1.

m0_61175448的博客 164

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

机器学习必修课:经典算法与Python实战

《机器学习必修课:经典算法与Python实战》是一门系统性与实战性兼顾的课程,旨在帮助学习者从零基础掌握机器学习核心算法与Python编程应用。

2601_96797912的博客 54

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 机器学习启航:从数据直觉到模型构建的第一块基石
下一篇: 算法的试金石:模型训练、评估与调优的艺术
Yardon_Official
博客等级 码龄5年 800粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yardon_Official

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值