本文基于《深入浅出数据科学:Python编程》书记,归纳总结的学习笔记,仅用于个人学习,如有侵权请联系。

一、数据处理与探索(pandas)

1)读入与概览

  • 读取数据:pd.read_csv(...)
  • 快速统计描述:df.describe()(均值、标准差、分位数等)

2)选择与分组

  • 子集选择:df.loc[...](按标签选择行/列)
  • 分组汇总:df.groupby(...)(按某列取值分组,再做 mean/sum/count 等聚合)
二、可视化与相关性分析

1)常用库

  • matplotlib(底层绘图)
  • seaborn(统计可视化,更高层)

2)常见图形与用途

  • 散点图 scatter:看两个变量关系、线性趋势、离群点
  • 箱线图 boxplot:看分布、中位数、离群点
  • 直方图 histplot:看分布形状(偏态、峰度、是否多峰)
  • 配对图 pairplot:一次性查看多变量两两关系与单变量分布

3)相关性

  • 正相关/负相关:变量同向/反向变化(strong/weak correlation)
  • 皮尔逊相关系数:df.corr()(pandas 默认常用 Pearson)
  • 相关性矩阵:多变量相关系数表
  • 热力图:用颜色可视化相关矩阵或分布/关系(常配合 seaborn.heatmap
三、特征工程:日期列的处理
  • 先拆分:年/月/日/星期/是否周末/是否节假日等
  • 类别部分(如星期几、月份)可再做 one-hot
    • 直接对“完整日期”one-hot 往往维度爆炸,除非日期取值非常少且稳定。
四、预测模型:线性回归(sklearn)

1)基本概念

  • 模型参数:截距(intercept)与斜率(coef)

  • 形式:

    • 单变量线性回归(1 个自变量)
    • 多变量线性回归(多个自变量)
    • “三角函数拟合”可理解为加入 sin/cos 等特征做回归(本质仍是线性模型在特征空间里拟合)

2)训练与评估

  • 划分训练集/测试集:避免只在训练数据上“自嗨”

  • 常见误差指标:

    • MAE(平均绝对误差)
    • RMSE(均方根误差)
  • 过拟合与噪声:

    • 通过对比训练/测试表现判断是否过拟合
    • 可尝试不同模型/正则化/特征选择;异常点或噪声样本需要识别与处理(但“确定哪些样本为噪声”通常不是靠换模型自动完成,而是数据诊断+规则/鲁棒方法)
五、统计学与假设检验

1)总体与样本

  • 总体:所有可能观测对象;样本:从总体抽取的一部分
  • “至少 30 个样本”更像经验法则(依赖分布、效应大小、方差、目标功效等)

2)中心极限定理(CLT)

  • 在一定条件下,样本均值的分布会趋近正态(常用于推断与置信区间/检验的合理性)

3)p 值与零假设(H₀)

  • H₀:通常设为“无差异/无效应”
  • p 值:在 H₀ 为真时,得到当前或更极端结果的概率(不是“假设为真的概率”)
  • 显著性水平 α:常设 0.05
  • p < 0.05 认为“统计显著”,从而拒绝 H₀(也要结合研究设计与多重比较等问题)

4)t 检验(scipy 可用)

  • 参数检验方法之一
  • 区分:独立样本 t 检验 vs 配对样本 t 检验(相关样本)
六、A/B 测试(实验设计要点)

1)核心结构

  • 分组(A/B) + 设定零假设 H₀(两组无差异) + 选择指标(转化率、点击率等)

2)关键注意点

  • 样本量与统计功效(power):样本太小会“检验不出来”
  • 显著性水平 α 与检验方法要预先设定
  • 随机分配/组间可比:确保组间除了“处理因素”外尽量一致,否则混杂(confounding)导致结论不可信
  • “冠军/挑战者”框架:用现有版本(冠军)对比新方案(挑战者),驱动迭代决策

3)效应量与功效

  • Cohen’s d:用标准差标准化后的差异,常用阈值 0.2/0.5/0.8 表示小/中/大效应(经验尺度)
  • 统计功效:在真实存在效应时,正确拒绝 H₀ 的概率(1 - β)

4)“泰曼定律”

  • 数据质量/实验设计/统计误用导致的假象

统计功效的计算方式:

  • TTestIndPower
  • 参数列表:alpha(p值),nobs(A/B组的样本数量),effect-size(预估效应值,用Cohen’s d进行量化)
  • 一般计算出来的统计功效超过80%才能进行A/B测试
  • 还可以采用solve_power计算达到特定功效所需的观测样本数(nobs)

5)方法补充与伦理考量

  • 适用场景对比:A/B 测试适用于大样本场景;贝叶斯方法更适合小样本及期望动态调整的场景
  • 探索与利用:实际决策中需平衡“尝试新方案(探索)”与“使用当前最优(利用)”,本质类似多臂老虎机(Multi-Armed Bandit)的决策问题
  • 伦理前提:测试前必须明确测试的目的、价值与潜在风险,确保实验符合伦理规范
七、线性概率模型与逻辑回归

1)基本概念与流程

  • 线性概率模型(LPM):用线性回归描述特征与二分类结果之间的关系,输出值视为事件发生的概率
  • 分类策略:基于预测概率,通过中位数阈值划分(二分类),或取 Top k 作为高风险人群/样本
  • 评估指标:
    • 回归误差:RMSE(均方根误差)、MAE(平均绝对误差)
    • 分类性能:混淆矩阵及衍生指标
      • 精确率(Precision):真阳性 / 所有预测为阳的样本(TP/(TP+FP))
      • 召回率(Recall):真阳性 / 所有实际为阳性的样本(TP/(TP+FN))

2)多变量扩展与局限

  • 多变量 LPM:可同时纳入多个特征或构造工程特征提升预测力(但可能牺牲部分解释性)
  • 模型缺陷:线性假设可能导致预测概率超出 [0,1] 的合理区间(如预测值 >100% 或 <0%)

3)逻辑回归改进

  • 核心思想:采用逻辑曲线(Logistic/Sigmoid 函数)拟合,将输出压缩至 (0,1) 区间,避免直线拟合导致的概率越界问题
  • 工具实现:sklearn 提供 LogisticRegression 等对应方法
八、非线性模型与无监督学习基础

1)非线性映射与k近邻算法(KNN)

  • 非线性必要性:现实世界中变量关系常呈非线性,需借助区域化方法捕捉复杂映射规律
  • KNN核心逻辑:回归任务:对目标点 p,选取距离最近的 k 个样本,以其目标变量均值作为 p 的预测值(注:修正原笔记“特征均值”歧义)分类任务:取 k 个邻居中出现频次最高的类别作为预测结果距离计算:基于样本特征向量(如欧氏距离);numpy.argsort 可对距离排序,高效定位近邻
  • sklearn实现:KNeighborsRegressor / KNeighborsClassifier补充:KNN 中“回归器”仅为任务类型命名(预测连续值),算法本质是邻域聚合,不涉及参数化回归过程,与线性回归目标相似但机制迥异

2)其他主流非线性模型

  • 决策树:节点基于特征阈值分支判断,需设定最大深度等参数防过拟合优势:结构直观、可解释性强
  • 随机森林:集成数十至数百棵决策树(每棵树基于随机样本与特征子集训练)。回归取均值,分类取投票;提升精度但牺牲可解释性
  • 神经网络(多层感知机):结构:输入层 → 隐藏层(含权重、偏置、非线性激活函数如 ReLU)→ 输出层。通过层叠非线性变换拟合高度复杂关系

3)模型评估与数据划分策略

  • 评估指标:回归任务沿用 MAE/RMSE(与第四章呼应);分类任务参考第七章指标体系
  • 数据划分:train_test_split(随机划分,适用于非时序数据)时序数据:严格按时间顺序,历史数据训练、未来数据测试,避免信息泄露。模型扩展视角:单变量 → 多变量:引入更多特征可提升拟合能力(需平衡过拟合风险)。sklearn 为 KNN/决策树/随机森林/神经网络均提供 Regressor 与 Classifier 双接口

4)无监督学习简介

  • 核心思想:无需标签,直接基于样本特征探索内在结构(如聚类、异常检测)
  • 典型应用:客户分群、离群点识别(偏离聚类中心的样本)
  • 与监督学习区别:目标非“预测”,而是“发现模式”或“简化表示”

5)多变量统计描述(聚类基础补充)

  • 单变量分布:正态分布:均值(μ,中心位置)、方差(σ²,离散程度)、标准差(σ = √σ²)众数:分布中局部峰值对应的值(多峰分布含多个众数)多变量关系:协方差:量化两变量协同变化趋势(正/负相关)协方差矩阵:n 维数据的 n×n 对称矩阵(对角线为方差,非对角线为两两协方差)
  • 聚类关联:K-Means 等算法中,簇中心即该簇样本在各维度上的均值向量,协方差矩阵可描述簇的形状与方向

6)聚类算法对比与选择

  • EM聚类(高斯混合模型,GMM)基于期望最大化(EM)算法迭代优化,数学上保证收敛(对数似然函数单调不减)输出软聚类结果(样本属于各簇的概率),需估计均值、协方差矩阵与混合系数适用场景:数据分布近似高斯混合、需概率化归属时
    • K-Means聚类仅基于欧氏距离与簇内样本均值更新中心,计算高效与EM对比:不涉及协方差计算,假设簇为凸形且尺度相近;需预设簇数 ksklearn实现:KMeans(n_clusters=k)
    • DBSCAN(Density-Based Spatial Clustering)基于密度:自动识别任意形状簇(非球形/非凸形),有效标记噪声点核心参数:邻域半径 eps + 最小样本数 min_samples;无需预设簇数量适用:含噪声、簇密度差异大的数据(如地理热点检测)
    • 层次聚类构建树状图(dendrogram):凝聚式(自底向上合并)或分裂式(自顶向下分割)无需预设簇数,可通过切割树状图灵活确定簇粒度;计算复杂度较高(O(n²)~O(n³))
  • 选型参考:已知簇数+球形分布 → K-Means;未知簇数+噪声/不规则形状 → DBSCAN;需层次结构/探索性分析 → 层次聚类;需概率归属+高斯分布假设 → GMM(EM聚类)
九、网络数据爬取技术

1)法律与伦理前提

  • 严格遵守网站 robots.txt 协议、服务条款;
  • 优先使用官方API;
  • 避免高频请求;
  • 注意数据隐私与版权(合规是底线)

2)requests库(HTTP基础请求)

  • 基础用法:response = requests.get(url, headers=…, timeout=…)
  • 局限:仅获取静态HTML,无法处理JavaScript动态渲染内容

3)正则表达式(re库)

  • 核心方法:re.search()(首次匹配)、re.finditer()(迭代所有匹配,适合批量提取)

  • 常用模式:量词:+(1+次)、*(0+次)、?(0/1次)转义:\d(数字)、\D(非数字)、\s(空白符)、\w(字母数字下划线)注意:HTML结构复杂时正则易失效,仅推荐用于简单文本提取

  • Beautiful Soup(bs4)优势:通过标签/属性/CSS选择器精准定位,代码可读性高,维护成本低依赖:需安装 bs4 与解析器(如 lxml)基础流程:

    from bs4 import BeautifulSoup  
    soup = BeautifulSoup(html_content, 'lxml')  
    

4)提取表格:遍历tr行与td单元格

  • 动态网页处理Selenium:模拟浏览器操作(等待JS渲染、点击交互),需配置WebDriver(如ChromeDriver)更优方案:通过浏览器开发者工具分析XHR/Fetch请求,直接调用数据接口(常返回JSON,高效且合规)

  • 反爬应对与最佳实践常见限制:IP封禁、验证码、请求频率限制合规策略:设置合理请求间隔(time.sleep)、添加User-Agent、使用经授权的代理池(注意法律风险)黄金准则:优先使用网站公开API(如Twitter API、政府开放数据平台),稳定性高且完全合规

  • 数据流转衔接提取数据 → 转为 pandas.DataFrame → 接入第一部分“数据处理与探索”流程(清洗、分析、可视化)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐