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

01机器学习中的一些基本概念(重点)

机器学习基础概念详解:特征、样本与标签

核心概念定义

1. 特征(Features)

定义:描述数据属性的变量,是模型学习的输入变量(X)

特点

  • 可以是数值型、类别型或文本型
  • 特征质量直接影响模型性能
  • 需要进行特征工程处理(归一化、编码等)

示例

# 房价预测的特征示例
features = {'area': 120,        # 面积(平方米)- 数值型'rooms': 3,         # 房间数 - 数值型  'location': '海淀区', # 地理位置 - 类别型'built_year': 2010  # 建造年份 - 数值型
}

2. 样本(Sample/Instance)

定义:数据集中的独立个体,由一组特征值组成

特点

  • 在数据集中通常以行的形式存储
  • 每个样本代表一个完整的观察对象
  • 样本数量决定数据集规模

示例

# 两个样本的数据表示
samples = [# 样本1:120㎡, 3室, 海淀区, 2010年建[120, 3, '海淀区', 2010],# 样本2:80㎡, 2室, 朝阳区, 2015年建  [80, 2, '朝阳区', 2015]
]

3. 标签(Label/Target)

定义:监督学习中的目标变量,是模型需要预测的正确答案(Y)

特点

  • 仅存在于监督学习中
  • 可以是连续值(回归)或离散类别(分类)
  • 标签质量直接影响模型学习效果

示例

# 对应上述样本的标签(房价)
labels = [6500000, 4800000]  # 单位:元

数据关系结构

数据表格表示

样本特征1(面积)特征2(房间数)特征3(位置)标签(房价)
样本1120㎡3室海淀区650万元
样本280㎡2室朝阳区480万元
样本3150㎡4室西城区820万元

数学表示

对于有 n 个样本、m 个特征的数据集:

特征矩阵 X

X = [[x₁₁, x₁₂, ..., x₁ₘ],  # 样本1的特征[x₂₁, x₂₂, ..., x₂ₘ],  # 样本2的特征  ...[xₙ₁, xₙ₂, ..., xₙₘ]]  # 样本n的特征

标签向量 y

y = [y₁, y₂, ..., yₙ]  # 对应每个样本的标签

不同学习类型的差异

监督学习

特点:特征 + 标签

# 监督学习数据格式
X_train = [[特征1, 特征2, ...], ...]  # 训练特征
y_train = [标签1, 标签2, ...]         # 训练标签

应用场景

  • 分类:垃圾邮件检测、图像识别
  • 回归:房价预测、销量预测

无监督学习

特点:只有特征,没有标签

# 无监督学习数据格式
X = [[特征1, 特征2, ...], ...]  # 只有特征数据

应用场景

  • 聚类:客户分群、异常检测
  • 降维:数据可视化、特征提取

实际应用示例

示例1:房价预测(结构化数据)

import pandas as pd
from sklearn.model_selection import train_test_split# 创建数据集
data = {'area': [120, 80, 150, 90, 200],      # 特征:面积'rooms': [3, 2, 4, 2, 5],            # 特征:房间数'location_encoded': [1, 2, 3, 2, 1], # 特征:地理位置编码'price': [650, 480, 820, 520, 950]   # 标签:房价(万元)
}df = pd.DataFrame(data)# 划分特征和标签
X = df[['area', 'rooms', 'location_encoded']]  # 特征矩阵
y = df['price']                                # 标签向量print("特征矩阵形状:", X.shape)    # (5, 3)
print("标签向量形状:", y.shape)    # (5,)

示例2:图像分类(非结构化数据)

from tensorflow.keras.datasets import mnist
import numpy as np# 加载MNIST手写数字数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()print("训练集特征形状:", X_train.shape)  # (60000, 28, 28) - 60000个28x28图像
print("训练集标签形状:", y_train.shape)  # (60000,) - 60000个数字标签
print("测试集特征形状:", X_test.shape)   # (10000, 28, 28)
print("测试集标签形状:", y_test.shape)   # (10000,)# 查看单个样本
sample_image = X_train[0]    # 特征:28x28像素矩阵
sample_label = y_train[0]    # 标签:数字类别(0-9)

示例3:客户分群(无监督学习)

import pandas as pd
from sklearn.cluster import KMeans# 客户数据(只有特征,无标签)
customer_data = {'age': [25, 35, 45, 30, 40, 28, 50],'annual_income': [30, 45, 60, 35, 55, 32, 70],       # 年收入(万)'spending_score': [85, 40, 25, 75, 35, 90, 15]      # 消费评分
}df = pd.DataFrame(customer_data)
X = df[['age', 'annual_income', 'spending_score']]  # 只有特征# 使用K-means聚类(无监督学习)
kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(X)print("聚类结果:", clusters)  # 自动发现的客户分组

数据划分策略

训练集/测试集划分

from sklearn.model_selection import train_test_split# 常见划分比例
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,      # 测试集占20%random_state=42     # 随机种子,确保可重复性
)print(f"训练集: {X_train.shape[0]} 个样本")
print(f"测试集: {X_test.shape[0]} 个样本")

推荐划分比例

数据规模训练集测试集验证集
小数据 (<1000样本)70%30%-
中数据 (1000-10000)80%20%-
大数据 (>10000)70%15%15%

特征工程重要性

特征处理示例

from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.impute import SimpleImputer# 1. 处理缺失值
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)# 2. 类别特征编码
encoder = LabelEncoder()
X_encoded = encoder.fit_transform(categorical_features)# 3. 数值特征标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_imputed)print("原始特征形状:", X.shape)
print("处理后的特征形状:", X_scaled.shape)

常见误区澄清

❌ 错误理解

  1. “特征和标签可以随意选择”
  2. “样本越多越好,不需要质量”
  3. “所有特征都对预测有用”
  4. “无监督学习不需要标签,所以更简单”

✅ 正确理解

  1. 特征选择:需要领域知识和数据分析
  2. 数据质量:质量比数量更重要
  3. 特征相关性:需要特征选择和降维
  4. 无监督学习:虽然不需要标签,但评估更复杂

总结要点

  1. 特征(X):模型的输入,描述数据属性
  2. 样本:数据的基本单位,由特征组成
  3. 标签(y):监督学习的目标输出
  4. 数据划分:训练集用于学习,测试集用于评估
  5. 特征工程:数据预处理对模型性能至关重要
http://www.dtcms.com/a/593774.html

相关文章:

  • TDengine 字符串函数 FIND_IN_SET 用户手册
  • FastAPI × SQLAlchemy 2.0 Async:从“能跑”到“可压测”的完整工程实践
  • 伪装图像生成之——GAN与Diffusion
  • 分布式系统中的CAP理论和BASE理论
  • 做网站建设的怎么赢利网站建设多少费用
  • Python字典--第1关:元组使用:这份菜单能修改吗?
  • 【S2ANet】Align Deep Features for Oriented Object Detection 译读笔记
  • 二维数组及经典案例
  • 【VMware Workstation】虚拟机网络配置流程+MobaXterm连接步骤
  • 西安微网站建设wordpress视频预览插件
  • CodeBuddy + GLM-4.6:儿童诗词宝典全栈开发实战
  • PSU过程11.2.0.4.250415
  • Nanopb基本概念
  • 微网站开发平台 知乎东家乐装修公司简介
  • 基于交替方向乘子法(ADMM)的RPCA MATLAB实现
  • redis删除一个键用del还是unlink
  • 用vue.js做网站百度区域代理
  • 好人一生平安网站哪个好抖音代运营培训
  • 前端基础面试题(Css,Html,Js,Ts)
  • 使用c#强大的SourceGenerator现对象的深克隆
  • 企业移动网站建设网站文件夹命名规则
  • 【动态链接库】一、VS下基本制作与使用
  • 百度网站排名规则长春百度快速优化
  • xpert AI工作流工具本地部署
  • SP30N06NK 30V N沟道MOSFET技术解析与应用指南
  • 深圳建站公司推荐国内平台有哪些
  • 使用DFSDM模拟看门狗做过流保护以及封波应用 LAT1612
  • 远程传输大文件的软件有哪些?
  • 北京建设官方网站渠道网络大厦
  • 鸿蒙 Next 如何使用 AVRecorder 从0到1实现视频录制功能(ArkTS)