业务分析

SQL数据查询

基本查询语句表达式

1
2
3
4
5
6
7
8
9
10
SELECT
{*|<字段列表>}
FROM<1>, <2>
WHERE<表达式>
[GROUP BY <group by definition>]
[HAVING <expression>[[<operator><expression>)...]]
[ORDER BY <order by definition>]
[LIMIT [<offset>,]<row count>]
]

示例SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT  r.xm as "username",
r.lx as "type",
r.scrq as "date",
r.cs as "times"
FROM user_record r
WHERE r.lx IN ('娱乐', '时事', '名声')

// 时间
// 七天前
where r.scrq >= date_sub(curdate(), interval 7 day)
and r.scrq <= curdate()

// 七天后
where r.scrq <= date_add(curdate(), interval 7 day)
and r.scrq >= curdate()

智能训练

模型训练与评估

划分数据集(必背)

1
2
3
4
5
6
7
8
# 获取特征
X = data['预估购买'] # 如果特征多,就用 X = data.drop(columns=['是否会购买'])
# 获取标签
y = data['是否会购买']

# 按8:2的比例划分训练集和测试集
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)

导入模型并训练(必背)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 逻辑回归
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)

# 随机森林
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 决策树
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

# K近邻
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier()
model.fit(X_train, y_train)

# 朴素贝叶斯
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)

输出模型预测值与准确度(必背)

1
2
3
4
5
6
7
# 预测值
y_pred = model.predict(X_test)
print(y_pred)

# 准确度
acc = model.score(X_test, y_test)
print(acc)

标准化处理(以 age 为例)

1
2
3
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data['age'] = scaler.fit_transform(data[['age']])

热力图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 构建 DataFrame
data = pd.DataFrame(
[[0.1, 0.2, 0.3],
[0.5, 0.6, 0.9],
[0.8, 0.4, 0.2]],
columns=['A', 'B', 'C'],
index=['X', 'Y', 'Z']
)

# 第一题,画热力图
plt.figure(figsize=(6, 4)) # 自定义尺寸
sns.heatmap(data, annot=True, cmap='coolwarm', cbar=True)
plt.title("Labeled Heatmap")
plt.show()


# 第二题,画决策树
# 设置全局中文字体(比如黑体 SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决坐标轴负号显示问题
plt.rcParams['axes.unicode_minus'] = False

# 标签 y = 行索引(映射成数字)
y = pd.Categorical(data.index).codes # X,Y,Z -> 0,1,2
# 训练决策树
clf = DecisionTreeClassifier(max_depth=2)
clf.fit(data, y)

plot_tree(
clf,
feature_names=data.columns.tolist(), # ['A','B','C']
class_names=data.index.tolist(), # ['X','Y','Z']
filled=True,
rounded=True
)
plt.show()

分箱处理

1
2
3
4
5
import numpy as np
import pandas as pd
bins = [0, 5, 10, np.inf]
labels = ['0-5', '6-10', '>10']
data['num'] = pd.cut(data['num'], bins=bins, labels=labels)

查缺失值、填充缺失值

加载数据

1
df = pd.read_csv('customer_behavior.csv')

检查缺失值

1
print(df.isnull().sum())

填充缺失值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 用中位数填充
df['age'].fillna(df['age'].median(), inplace=True)

# 用均值填充
df['age'].fillna(df['age'].mean(), inplace=True)

# 分组中位数填充
df['age'] = df.groupby('gender')['age'].transform(lambda x: x.fillna(x.median()))

# 众数填充
df['gender'].fillna(df['gender'].mode()[0], inplace=True)

# 直接删除并返回新DataFrame,不改变原df
df_dropped = df.dropna()

# 如果要直接在原DataFrame上修改,使用 inplace=True
df.dropna(inplace=True)

鸢尾花数据集(多分类)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 鸢尾花数据集
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target

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)

from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier()
model.fit(x_train, y_train)

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

红酒数据集(多分类)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
wine = datasets.load_wine()

# 转为 DataFrame
df = pd.DataFrame(data=wine.data, columns=wine.feature_names)
df['target'] = wine.target # 加上标签列


X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.2, random_state=42)
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
print(classification_report(y_test, pred))

培训与指导

请列出人数据标注培训大纲(必背)

本答案可以有代入多种问题的变种,比如问数据清洗的培训大纲等,替换下字眼就可。

1
2
3
4
5
6
7
8
9
10
1. 数据标注的概述
- 了解数据标注的定义,行业发展的趋势
2. 数据标注的分类
- 文本标注
- 图像标注
- 视频标注
- 语音标注
3. 数据标注的过程及管理
4. 数据标注质量管理
5. 数据标注实战

请列出人工智能培训内容大纲

1
2
3
4
5
6
7
8
9
1. 人工智能概论
2. 数据采集
3. 数据处理
4. 数据标注
5. 业务流程
6. 人机交互设计与应用
7. 数据分析
8. 机器学习
9. 数据标注实战

请列出数据处理的流程

1
2
3
4
5
1. 数据加载、存储  
2. 数据清洗和准备
3. 数据概览和类型转换
4. 处理缺失数据
5. 处理重复数据

数据采集可能出现什么问题,怎么解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1. 数据缺失
原因:接口异常、网络断连

解决:添加重试机制、记录失败日志、支持补采

2. 数据结构变动
原因:网页/接口字段变更

解决:使用结构校验、自动告警、适配器模式解耦解析逻辑

3. 采集频率过高被封 IP
原因:访问过快触发反爬机制

解决:设置延时、使用代理池、IP轮换

4. 采集数据重复或遗漏
原因:分页处理错误、时间窗口不准

解决:加入去重逻辑、完善分页策略、使用唯一键校验

5. 系统资源瓶颈
原因:线程/内存/带宽不足

解决:使用异步采集、分布式架构、限流与监控

数据处理可能出现什么问题,怎么解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1. 脏数据(错误、重复、异常值)
原因:源数据质量差、采集错误

解决:数据清洗(去重、填充、纠错),加入校验规则

2. 格式不统一
原因:字段单位、日期格式、编码方式不一致

解决:统一标准格式,写入规范化转换逻辑

3. 缺失值处理不当
原因:部分字段缺失,处理策略不一致

解决:根据业务选择填充、删除或标记缺失值

4. 计算逻辑错误
原因:处理公式、字段映射、分组维度配置错误

解决:增加单元测试、人工抽样验证结果

5. 数据延迟或处理失败
原因:资源瓶颈、任务调度失败

解决:设置超时重试、任务监控、分布式处理

数据标注可能出现什么问题,怎么解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1. 标注不一致(多标注员结果冲突)
原因:理解偏差、主观判断不同

解决:制定统一标注规范,设置交叉验证和质检流程

2. 标签错误或漏标
原因:人工失误、界面操作问题

解决:引入审核机制,使用预标注辅助,高频错误自动提示

3. 样本类别分布不均
原因:采样策略不合理

解决:按类别配额采样,进行欠/过采样处理,提升长尾样本占比

4. 标注效率低下
原因:工具不友好、操作复杂

解决:优化标注工具 UI,加入快捷键、自动标注建议等功能

5. 标注数据格式混乱或无法用
原因:导出格式错误、不符合训练输入要求

解决:统一输出格式规范,加导出校验工具,设置导出模板

附录:常用指令

Pandas 基础结构

术语 描述 例子
DataFrame 类似于表格的数据结构(二维)
Series 一堆带索引的数据结构
read_csv() 用于读取CSV格式文件并生成DataFrame df = pd.read_csv(‘a.csv’)
value_counts() 统计Series中各个值出现的频次
groupby() 按某列分组,常配合.apply()、.agg()
cut() 按区间将数值列离散化分类
mean() 平均值,配合条件筛选时常用于比例计算
sum 计算总和
fillna 前向或后向补数据,method=’ffill’前向,前往后补,method=’bfill’ 从后往前补
drop() 删除列 data.drop(columns=”是否会购买”)
to_csv() 保存文件
drop_duplicates() 删除所有列完全相同的行 # 删除所有列完全相同的行
df.drop_duplicates(inplace=True)
isnull 是否为空 data.isnull()
dropna 丢弃所有包含缺失值的数据 dta.dropna()
duplicated 检测是否有重复 # 返回布尔Series,标记是否为重复行
df.duplicated()

# 只检查指定列是否重复
df.duplicated(subset=[‘列名1’, ‘列名2’])

# 统计总重复行数
df.duplicated().sum()
head 前5行 data.head()
tail 后5行 data.tail()
astype 数据格式转换
mean 平均值
std 方差
sort_index 排序
~ 取反值,相反的意思
agg 聚合,对每组分别应用多个聚合函数,可以是mean,std,max
dtypes 显示每一列的数据类型 data.dtypes
info 查看数据概况 data.info()
describe 描述性统计信息 data.describe()
shape 获取数据规模 data.shape