数据科学基础(持续更新..)
本文基于《深入浅出数据科学: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 → 接入第一部分“数据处理与探索”流程(清洗、分析、可视化)
更多推荐
所有评论(0)