考前上机知识点 速查 · 万能模板

40 题 · 20 编程 + 20 简答

总览题型分布与策略

组别题数类型核心技术策略
1.1.x5编程pandas 数据清洗背模板 80% 是固定句式
2.1.x5编程数据预处理标准流程
2.2.x5编程训练 ML 模型 + 评估
3.2.x5编程ONNX 模型推理六步万能
1.2.x5简答业务模块痛点+优化背万能答案 列点+套句
3.1.x5简答硬件数据分析报告
4.1.x5简答培训学习大纲
4.2.x5简答数据采集处理方案

pandas1. 数据清洗速查

类比 pandas 就是代码版的 Excel:DataFrame 是整张表, Series 是一列。每个操作要么"改这张表",要么"从中查/统计"。
Name Age BMI DaysInHospital Alice3422.15 Bob 6728.412 Carol2917.93 ↑ 一整张表 = DataFrame    单独一列(比如 Age) = Series

1.1 读数据 / 看数据

import pandas as pd
import numpy  as np

data = pd.read_csv('patient_data.csv')                # 普通 csv
data = pd.read_csv('医疗.csv', encoding='gbk')       # ★ 中文 csv 必加 encoding=gbk(2.1.4)
data = pd.read_excel('数据集.xlsx')                  # excel(2.1.2 / 2.2.4)

print(data.head())          # 看前 5 行
print(data.info())          # 每列类型 + 非空数
print(data.isnull().sum())  # ★ 每列缺失值统计
举例 data.head() = 像在 Excel 里"按 Ctrl+Home 看前几行"。
data.isnull().sum() = "每一列里有几个空格子",输出像:
Age              0
Income           3
LoanAmount      12

1.2 清洗三件套:缺失值 · 重复 · 异常

data = data.dropna()                                # 删除含空值的行(简单粗暴)
data = data.dropna(subset=['Age'])                  # 只看 Age 列的空就删
data = data.drop_duplicates()                       # 删除完全重复的行

# 类型转换
data['Age']   = data['Age'].astype(int)
data['Speed'] = data['Speed'].astype(float)
data['horsepower'] = pd.to_numeric(data['horsepower'], errors='coerce')
# ★ to_numeric + errors='coerce' = 转不了的塞 NaN,再 dropna 最稳

# 异常值过滤(布尔筛选)
data = data[
    (data['Age'].between(18, 70)) &
    (data['Speed'].between(0, 200))
]
类比 data[条件] 像 Excel 的"筛选":括号里写"哪些行要留下"。 & 是"并且", | 是"或者"。
易错 中文 csv 必须encoding='gbk' 否则乱码报错; 布尔筛选每个条件必须用圆括号包起来,否则优先级出错。

1.3 标准化 vs 归一化(高频考点)

方法公式结果范围类比用在
StandardScaler
标准化
(x − 均值) / 标准差均值 0,方差 1"排名分数化",离平均多远算多少分2.1.1 / 2.1.2 / 2.2.2
MinMaxScaler
归一化
(x − min) / (max − min)0 ~ 1"百分比化",最低 0 分、最高 1 分2.1.3 / 2.1.4
LabelEncoder
标签编码
"高/中/低" → 2/1/0整数给类别贴号2.1.5
from sklearn.preprocessing import StandardScaler, MinMaxScaler

scaler = StandardScaler()
data[['A', 'B']] = scaler.fit_transform(data[['A', 'B']])
为什么 "年龄(18~70)"和"收入(2000~200000)"放一起,模型会被大数压住。 标准化让它们站在同一起跑线。

1.4 区间分桶 pd.cut(1.1.1 / 1.1.4 必考)

bins   = [0, 18.5, 24, 28, np.inf]
labels = ['偏瘦', '正常', '超重', '肥胖']
data['BMIRange'] = pd.cut(data['BMI'], bins=bins, labels=labels, right=False)
举例 BMI=22.5 → 落在 [18.5, 24) 区间 → 贴上 "正常"标签。
right=False = 左闭右开 [a, b)np.inf = "以上,无上限"。

1.5 分组统计 groupby(高频)

data['Gender'].value_counts()                                  # 每个性别多少人
data.groupby('Gender')['Amount'].mean()                       # 按性别求金额均值
data.groupby('AgeGroup').agg({'Speed':'mean', 'Dist':'sum'})  # 多列多聚合
类比 groupby 就是 Excel "数据透视表": ①先 groupby('某列') 选行标签 → ②再 ['另一列'] 选要算的值 → ③再 .mean()/.sum()/.count()
举例 data.groupby('Gender')['Amount'].mean() 输出:
Gender
F    580.3
M    712.5

1.6 新列 & 条件赋值

# np.where(条件, A, B) 相当于 Excel 的 IF(...)
data['RiskLevel'] = np.where(data['DaysInHospital'] > 7, '高风险', '低风险')

# 字符串 → 日期(才能做日期减法)
data['就诊日期'] = pd.to_datetime(data['就诊日期'])
data['诊断延迟'] = (data['诊断日期'] - data['就诊日期']).dt.days

1.7 保存

data.to_csv('cleaned_data.csv', index=False)   # ★ index=False 不要多余索引列

ML2. 机器学习训练五步

类比 训练模型 = 考前刷题X 是题目,y 是答案, fit() 是学,predict() 是考。
data 读 csv X (特征) y (目标) train_test _split 80% 训练 / 20% 测试 fit() 学习 预测

2.1 万能五步公式

from sklearn.model_selection import train_test_split

X = data.drop(columns=['目标列'])
y = data['目标列']

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

model = 某模型(...)
model.fit(X_train, y_train)        # 训练
y_pred = model.predict(X_test)      # 预测
小贴士 random_state=42 = 固定洗牌种子,每次跑出来一样,方便对答案。
test_size=0.2 = 测试集占 20%(几乎所有题都这样)。

2.2 五种模型 一句话区分

模型用途一句话理解出题在
LinearRegression数值预测画一条直线最贴合数据点2.2.2 / 2.2.4
LogisticRegression二分类直线 + 概率压到 0~12.2.1
DecisionTreeRegressor数值/分类"二十问":身高>170?是→… 否→…2.2.5
RandomForestRegressor数值/分类一群决策树投票,更稳2.2.2 / 2.2.3
XGBRegressor数值/分类一棵树补一棵树的错,越来越准2.2.4

2.3 流水线 Pipeline(2.2.2)

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('linreg', LinearRegression())
])
pipeline.fit(X_train, y_train)
类比 把"标准化"和"训练"装进一根管道,数据从一头进、模型从另一头出, 避免忘了对测试集做同样的标准化。

2.4 评估指标

from sklearn.metrics import classification_report      # 分类
from sklearn.metrics import mean_squared_error, r2_score # 回归

print(classification_report(y_test, y_pred))   # 精确率/召回率/F1
print(mean_squared_error(y_test, y_pred))      # MSE 越小越好
print(r2_score(y_test, y_pred))                # R² 越接近 1 越好
R² 为负 = 模型比"瞎猜均值"还差(2.2.5 答案就是这种反例)。 此时该重做特征工程或换模型。

2.5 不平衡 SMOTE / 类别哑变量

# 类别多寡极不平衡时(比如 1000 个正样本只有 20 个负样本)
from imblearn.over_sampling import SMOTE
smote = SMOTE(random_state=42)
X_res, y_res = smote.fit_resample(X_train, y_train)

# 类别变量(性别/学历...)转为数字
X = pd.get_dummies(X)                # "红/绿/蓝" → 3 列 0/1
X = pd.get_dummies(X, drop_first=True)  # 防多重共线性
举例 get_dummies 把一列 Color 变成 Color_红 / Color_绿 / Color_蓝 三列, 红色那行就 [1, 0, 0],模型才能算。

2.6 保存 / 加载模型

import pickle, joblib
pickle.dump(model, open('m.pkl', 'wb'))   # 经典写法
joblib.dump(model, 'm.pkl')                  # 大模型更快

ONNX3. 模型推理(3.2.x 一套到底)

类比 ONNX = "预制菜":别人训练好的模型, 你只负责 加热(加载)→ 装盘(预处理)→ 上桌(推理)

3.1 万能六步(几乎一字不改)

import onnxruntime as ort
import numpy as np
from PIL import Image

# ① 加载模型
session = ort.InferenceSession('xxx.onnx')

# ② 读图(灰度 'L' / 彩色 'RGB')
img = Image.open('img_test.png').convert('L')

# ③ 预处理:resize → numpy → 加维度
img = img.resize((28, 28))
arr = np.array(img, dtype=np.float32)
arr = np.expand_dims(arr, axis=0)   # 加 batch 维 → (1, H, W)
arr = np.expand_dims(arr, axis=0)   # 加 channel 维 → (1, 1, H, W)

# ④ 拿到输入/输出名
input_name  = session.get_inputs()[0].name
output_name = session.get_outputs()[0].name

# ⑤ 推理
out = session.run([output_name], {input_name: arr})[0]
# 或 out = session.run(None, {input_name: arr})  # None = 全部输出

# ⑥ 解码结果
pred_class = np.argmax(out[0])

3.2 维度 NCHW 图解

N = 1 batch 一次几张 C = 1 或 3 channel 灰度/RGB H = 28 height W = 28 width arr.shape = (N, C, H, W) = (1, 1, 28, 28) 每个 expand_dims(axis=0) 在最前面加一维 ↑
题目模型convert形状
3.2.1 ResNet 图像分类resnet.onnx'RGB'(1, 3, 224, 224)
3.2.2 MNIST 手写数字mnist.onnx'L'(1, 1, 28, 28)
3.2.3 情感识别emotion-ferplus.onnx'L'(1, 1, 64, 64)
3.2.4 花朵识别flower-detection.onnx'RGB'(1, 3, 224, 224)
3.2.5 人脸检测version-RFB-320.onnx多框 + NMS(1, 3, 240, 320)

3.3 softmax → 取 top-K → 翻译标签

import scipy.special
probs = scipy.special.softmax(out, axis=-1)        # 原始分 → 概率(加起来=1)
top5_idx  = np.argsort(probs[0])[-5:][::-1]      # 排序取末尾 5 个,倒序

# 把数字索引翻成"猫/狗"
labels = [line.strip() for line in open('labels.txt')]
print(labels[top5_idx[0]])
举例 模型输出 [2.1, 0.3, 5.6, -1.2] → softmax 后 [0.05, 0.01, 0.93, 0.01]argmax = 2(第三类),翻译就是 labels[2]。
三大必出错
  1. 忘了 astype(np.float32) → onnxruntime 报类型错
  2. 维度顺序错:RGB 是 (C, H, W),需 np.transpose(arr, (2, 0, 1))
  3. 灰度 / 彩色搞反:MNIST 必须 convert('L'),ResNet 必须 convert('RGB')

简答4. 万能答案模板

通用心法 简答题分数大头在"列点 + 解释",每点 2 分。
只要 ①列够数量 ②每点带 2~3 句解释 ③包含关键词 ④结尾给数字预期效果,基本满分。

4.1 业务模块痛点(1.2.x):四大万能病根

不管什么系统(智能音箱/医疗/金融/数智人),都从下面四个里挑 2~3 个写:

万能问题关键词影响体验
① 准确性不高识别不准 / 误诊 / 误判 / 偏差信任崩塌、决策失误
② 响应速度慢等待时间长 / 延迟 / 效率低错过最佳时机 / 用户流失
③ 缺乏个性化千篇一律 / 不记忆偏好降低粘性 / 不被重视感
④ 界面不友好步骤多 / 操作复杂 / 难找功能放弃使用 / 浪费时间
套用模板 问题:[系统名] 在 [功能模块] 方面存在 [准确性/响应/个性化/界面] 不足。
用户为什么不满:[影响决策 / 浪费时间 / 误导消费 / 操作困难]。
影响体验:[降低信任 / 流失用户 / 错失时机 / 体验差]。

4.2 优化方案(1.2.x 后半 / 3.1.x):四大角度

角度具体动作常用关键词
① 算法/模型优化收集标注更多数据 / 引入深度学习/NLP / 持续迭代数据增强、模型微调、训练优化
② 硬件/网络升级GPU 集群 / 边缘计算 / 并发架构 / 预加载缓存提升算力、降低延迟、并行处理
③ 个性化服务用户画像 / 历史行为分析 / 推荐算法 / 自定义场景千人千面、定制化、推荐系统
④ UI / 交互优化简化流程 / 突出关键信息 / 可视化反馈 / 一键操作易用性、人性化、扁平化
必加结尾(预期效果)
  • 识别准确率提升至 95% 以上
  • 响应时间缩短至 2 秒以内 / 异常预警秒级
  • 用户满意度 / 忠诚度提升 10~20%
  • 操作步骤减少 40% 以上

4.3 数据采集与处理方案(4.2.x):六段式

四道题(零售/医疗影像/安防/自动驾驶/文化遗产)结构高度一致:

序号段落必写内容
1数据源 / 采集方法POS、API 接口、传感器/IoT、摄像头、问卷、社交媒体
2数据预处理清洗(去重、补缺、纠错)、标准化(归一化、编码)、整合
3数据安全与合规加密传输、访问控制、脱敏处理、GDPR / HIPAA
4数据存储与管理云存储(AWS/Azure)、备份恢复、数据库选型
5模型训练与应用深度学习、交叉验证、可视化仪表板、报告
6持续优化与升级反馈循环、数据集更新、跟踪 AI 前沿技术

4.4 培训学习大纲(4.1.x):每节"目标 + 内容"模板

通用模板 学习目标:了解/掌握 [XX] 的概念、类型 / 方法、实践操作技巧。
内容:概念介绍 → 工具简介 → 实践操作 → 项目案例。

动词四件套(按深浅排序):了解掌握熟悉综合运用

4.5 硬件分析报告(3.1.x):四段式

段落内容
① 用户使用习惯最常 / 最少使用的功能、使用频率排名
② 响应时间分析响应较长 / 适中 / 较短的功能,延迟瓶颈
③ 优化方向组合写 3~4 条:网络/硬件、个性化、可靠性、识别精度
④ 解决方案对应给具体技术:边缘计算 / ML 推荐 / 预加载 / 自我诊断

避坑5. 易踩坑清单(考前 5 分钟扫一遍)

  1. pd.cut 漏写 right=False → 边界值被分错桶
  2. 中文 csv 漏写 encoding='gbk' → 直接乱码报错(2.1.4)
  3. ONNX 输入忘 astype(np.float32) → 类型错误
  4. RGB 维度错:必须 np.transpose(arr, (2, 0, 1)) 把 HWC 变 CHW
  5. random_state=42 漏写 → 结果对不上答案
  6. X = data.drop(['y'], axis=1) 必须先把目标列移出 X,否则作弊
  7. 布尔筛选每个条件用圆括号包,& 而不是 and
  8. 简答题:列点数量不够,记得每段配 2~3 句解释 + 数字效果
  9. 文件命名严格按要求:1.1.2-1.JPG3.2.4-1.jpg(大小写、连字符)
  10. 保存 csv 加 index=False,否则多一列索引
考前最后一句 编程题:把"读 csv → 清洗 → 标准化 → split → fit/predict → 保存"流程背到能默写。
ONNX:记住六步 + (N, C, H, W) 维度 + astype(float32)
简答题:痛点 4 病根 + 优化 4 角度 + 数字效果。
祝考试顺利! 🎯