一、基础概念:数据分析 & 数据挖掘

数据分析:用统计方法处理已有数据,描述数据、提取有效信息。

数据挖掘 (DM):从海量数据通过算法挖掘隐藏规律,常用任务:回归、分类、聚类、关联规则,挖掘数据商业价值。

通用建模流程:数据采集→数据读取→数据探索→数据预处理→建模→模型评估。

 

 

二、Pandas 数据读取与基础操作
1、csv/excel 读取
pd.read_csv()关键参数:
filepath_or_buffer:文件路径;header:首行是否为列名;names:自定义列名;index_col:指定索引;usecols:选定读取列;encoding:编码格式。
常用查看函数
  
方法    作用

info()       查看字段类型、非空数量

describe()   统计描述(均值、最值、分位数等)

head(n)/tail(n)     查看前 / 后 n 行,默认 5 行

sample(n)       随机抽取 n 行


3、数据选取
df.loc[标签]:标签索引,前闭后闭;
df.iloc[整数]:数字索引,前闭后开;
支持行列组合筛选:loc[行标签,列名]。
4、缺失值查询方法
isnull()/isna():单元格是否缺失;notnull():非缺失;
isnull().sum():按列统计缺失数量;isnull().sum(1):按行统计缺失;
df.loc[df.isna().any(1)]:筛选含缺失的行。

5、数据合并三类方式
堆叠合并 concat:纵向上下拼接、横向左右拼接;

concat:堆叠合并,axis=0纵向/上下,axis=1横向/左右

merge:主键合并,on  找相同字段连接  ,how指定连接方式

combine_first:重叠合并,用一张表有效值填充另一张表空缺

 

 

三、数据探索(EDA:数据校验 + 特征分析)

数据探索:通过检验数据集的数据质量、绘制图表、计算某些特征量等手段,对样本数据集的结构和规律进行分析的过程就是数据探索。

 探索性数据分析,简称EDA

 数据探索有助于选择合适的数据预处理和建模方法,甚至可以完成一些数据挖掘解决的问题。

 数据探索的2个角度:数据校验(质量分析)和数据特征分析

(一)数据质量校验:缺失值 + 异常值

缺失值分析:统计缺失数量、缺失率;处理方案:删除、插补、不处理。

异常值(离群点)三种判别方法

1)3σ 准则(正态分布):数值与均值差值>3 倍标准差即为异常;

2)箱线图 / IQR 四分位准则

Q1 (下四分位) 位置 =(n+1)/4,

Q2 中位数 =(n+1)/2,

Q3 上四分位 = 3 (n+1)/4

IQR=Q3-Q1;

上界 = Q3+1.5IQR,

下界 = Q1-1.5IQR,超出边界为异常。

3)简单统计量分析

(二)数据特征分析六大类

1.分布分析

定量数据:计算极差、分组距、绘制频率直方图;

定性数据:饼图、条形图展示分类占比。

2.统计量分析

集中趋势:均值 (易受极值)、中位数、众数;

离散趋势:极差、方差、标准差、变异系数 = 标准差 / 均值。

3.周期性分析:按年 / 季 / 月 / 日分析数据时序波动。

4.贡献度分析(帕累托 2/80 法则):80% 收益来自 20% 产品,抓核心样本。

5.对比分析:多组别数据横向 / 纵向对比。

6.相关性分析(三类相关系数)

Pearson皮尔逊相关系数(线性相关,连续正态数据)

适用条件

   两个连续数值变量、服从正态分布、仅衡量线性关系,易受异常值干扰。

标准计算步骤

   列出所有x、y原始数据,统计样本总数n;

​  分别计算:\sum x、\sum y、\sum xy、\sum x^2、\sum y^2;

​   计算分子:n\sum xy-\sum x \sum y;

   ​分别计算x、y分母项:S_x=\sqrt{n\sum x^2-(\sum x)^2},S_y=\sqrt{n\sum y^2-(\sum y)^2};

           总分母 = S_x \times S_y;

           r = 分子 \div 总分母;

    根据|r|大小判断相关强弱。

判定标准

      |r|>0.8高度相关;0.5<|r|≤0.8中度;0.3<|r|≤0.5低度;|r|≤0.3几乎无线性相关。

 

Spearman斯皮尔曼等级相关系数(单调相关,等级/非正态数据)

适用条件

       有序等级数据、数据不满足正态、存在异常值;衡量单调增减关系,不要求线性。

计算公式

        d_i:同一样本x等级与y等级的差值;

         n样本量

标准计算步骤

        分别对x列、y列数据从小到大排序,给每个数据分配排名(等级);

        逐行计算每组数据的等级差 d_i = rank_x - rank_y;

​         对每个差值平方,再全部相加得到\sum d_i^2;

         代入公式算出r_s;

判定标准和Pearson完全相同。

 

Kendall肯德尔τ相关系数(有序评分、小样本排序一致性)

 适用条件

           两组有序分类评分、小样本;衡量两组数据排序同步程度。

计算公式

           \tau = \frac{C-D}{C+D}

             C:一致序对;D:不一致序对

 标准计算步骤

             将数据按x变量升序排列;

​              遍历所有两两样本组合:

​                    一致对C:x变大,对应y也变大;

                    不一致对D:x变大,对应y变小;

​               统计总一致对数C、总不一致对数D;

代入公式计算τ;

​\tau=1完全同向排序;\tau=-1完全反向;\tau=0无排序关联。

 

 

四、数据预处理

数据预处理四大任务:清洗、集成、变换、规约

原始数据存在的问题:测量存在误差;数据收集错误;

1、缺失值处理

删除缺失样本、固定值填充、均值 / 中位数 / 众数填充、临近值填充、回归填充、拉格朗日插值。

2、异常值处理

删除记录、视作缺失值填充、均值修正、保留不处理。

3、数据规范化(消除量纲,数据变换)

最小 - 最大标准化 [0,1]:

             x ∗= x−min/max−min;

零均值标准化 (Z-score):

             x ∗= x−μ/σ(均值 0,标准差 1,最常用);

小数定标:移动小数点,数据落在 [-1,1]。

4、连续数据离散化

等宽 cut ():区间宽度一致,数据分布不均时效果差;

等频 qcut ():每个区间样本数量一致;

独热编码 OneHotEncoder:分类特征数字化,解决无序分类数值误导模型。

       转换规则

       看这一列有多少个不同类别,就生成多少列

       每个类别独占一列

       样本属于哪个类别,哪一列写 1,其他全写 0

       最终结果:只有 0 和 1

       import pandas as pd # 一键生成独热编码 

       pd.get_dummies(数据, columns=['要编码的列名'])

五、机器学习模型(应用题核心考点)

1、线性回归(监督、连续值预测)

最小二乘法 OLS:最小化预测值与真实值平方误差,求解系数 (截距 intercept_)、(系数 coef_)

模型评估::拟合优度,越靠近 1 拟合越好;

sklearn:LinearRegression,fit 训练、predict 预测、score 返回 。

import numpy as np

from sklearn.linear_model import LinearRegression

X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])

y = [5,7,9,10]

reg = LinearRegression().fit(X, y)

reg.coef_ #表达的含义?

reg.intercept_ #表达的含义?

y i:真实观测值(原始实际数据)

yˉ:y 全部样本平均值(一条水平平均线)

y^i:回归预测值(回归直线上的点)

1、三个公式定义

离差:yi− yˉ 

真实值 − 平均值:数据整体和平均线的差距(总波动)

回归差:y^i − yˉ

预测值 − 平均值:回归直线和平均线的差距(模型能解释的波动),又叫回归偏差

残差:y i − y^i

真实值 − 预测值:真实点到回归直线的垂直距离(模型解释不了的剩余误差)

恒等式:y i − yˉ =( y^i − yˉ)+(y i − y^i )

离差 = 回归差 + 残差

数字实例(一眼看懂)

    设一组数据:真实值 

      y i=10,yˉ=6,y^i =8

离差:10−6=4

回归差:8−6=2

残差:10−8=2

验算:4=2+2

拟合问题:欠拟合(模型简单)    过拟合(模型复杂)

2、逻辑回归(分类模型,二分类为主)

原理 = 线性回归 + sigmoid 函数,输出概率 [0,1],阈值 0.5 划分 0/1 类别;

数据集拆分:train_test_split 划分训练集 / 测试集,random_state 固定随机种子;

sklearn:LogisticRegression,penalty (L1/L2 正则防过拟合),C 为正则系数倒数;multi_class:ovr二分类,multinomial多分类,auto自动选择

模型评价:混淆矩阵

TP:真阳

TN:真阴

FP:假阳

FN:假阴

准确率 = 总预测正确 / 总样本

精确率 = TP/(TP+FP)

召回率 = TP/(TP+FN)

3、决策树(分类 + 回归)

经典算法:ID3(信息熵,离散特征)、C4.5、CART(基尼系数,可回归可分类);

ID3 核心:信息熵 + 信息增益,优先选择信息增益最大的特征作为划分节点;

信息熵:衡量数据集混乱程度;信息增益 = 原熵 - 分组后加权熵,增益越大分类效果越好;

sklearn:DecisionTreeClassifier(分类,criterion='entropy/gini')、DecisionTreeRegressor(回归);max_depth 限制树深防过拟合

信息熵、信息增益极简举例(ID3 考点)

数据集:是否出去玩(标签:去 = 1,不去 = 0)

信息增益极简举例(ID3 考点)

数据集:是否出去玩(标签:去 = 1,不去 = 0)

天气            外出

晴                 去

晴               不去

雨               不去

雨                 不去

n=4

去:1个,不去:3个

信息熵H=-1/4log1/4-3/4log3/4

按天气拆分

晴:2     1去1不去

h=-1/2log1/2-1/2log1/2=1

雨:2       全不去

h=-1log1=0

E=2/4×1+2/4×0=0.5

G=H-E=0.811-0.5=0.311


熵越大越混乱,增益越大,特征分类效果越好,优先选该特征分叉


ID3 算法三大得分要点

步骤 1:全属性算增益

对当前数据集,逐一计算全部特征的信息增益。

步骤 2:选最大增益特征分裂

挑选信息增益最大的特征作为分裂节点;按该特征不同取值,拆分生成若干子数据集。

步骤 3:递归终止判定

① 终止:子样本全为同一标签 → 生成叶子节点,标注类别;

② 递归:子样本仍含多类标签 → 对子数据集重复 1、2 步骤,迭代建树。


一句话核心考点

ID3 择优规则:信息增益最大优先作为分裂特征,递归生成决策树。


4、K-Means 聚类(无监督学习,无标签)

分类 vs 聚类:分类 = 监督有标签;聚类 = 无监督无标签,自动分组;

距离公式:欧式距离、曼哈顿、切比雪夫、闵可夫斯基;

K-Means 步骤:①选 K 个初始中心点 (kmeans++ 优选初始中心)→②样本归到最近簇→③重新更新簇中心→④迭代至中心不变;

肘部法则:遍历不同 K,根据 inertia_(簇内平方误差) 拐点确定最优 K,拐点即肘部;

轮廓系数:遍历不同K,计算整体平均轮廓系数,系数峰值对应的K即为最优聚类数

取值[-1,1],数值越接近1,聚类效果越好;靠近0簇重叠;小于0聚类失效。

代码:silhouette_score(X, kmeans.labels_)计算平均轮廓系数。

搭配肘部法则共同确定最佳K值。

肘部+轮廓系数搭配选K:

肘部法则粗筛:遍历K,inertia下降变缓拐点,圈出候选K区间(如K=2、3、4); 2. 轮廓系数精确定K:候选K里选轮廓系数最大的K; 

3. 二者结果一致优先采纳,不一致综合业务场景敲定最优聚类数。

实战:RFM/D 客户分群(最近消费 R、消费频次 F、消费金额 M、停留时长 D)。


5、Apriori 关联规则(购物篮挖掘)

三大指标

支持度:A、B 同时出现概率;

置信度:A 出现前提下 B 出现概率;

强关联规则:同时满足最小支持度 + 最小置信度;

Apriori 两步:

①逐层搜索生成频繁项集(连接 + 剪枝:非频繁子集→全集必非频繁);

②由频繁项集生成强关联规则;

计算流程:

1 项集→筛选频繁 1 项→拼接候选 2 项→筛频繁 2 项… 迭代至无新频繁项。


PCA降维

1. 作用:线性无监督降维,去除特征冗余,压缩维度;

2. 核心流程:标准化→求协方差矩阵→特征值分解→按累计方差贡献率选k维主成分→投影映射;

3. 判断维度k:累计方差贡献率≥85%/90%;

4. 局限:仅适配线性数据、可解释性弱、依赖标准化、易受异常值干扰;

5. 适用场景:特征多、特征高度相关、建模前数据预处理降维

代码

     from sklearn.decomposition import PCA

     from sklearn.preprocessing import StandardScaler

     import pandas as pd

# 数据标准化

     scaler = StandardScaler()

     X_std = scaler.fit_transform(X)

# 创建PCA,指定保留90%信息

     pca = PCA(n_components=0.9)

     X_pca = pca.fit_transform(X_std)

# 查看各主成分方差贡献率

    print(pca.explained_variance_ratio_)

# 查看累计方差贡献率

    print(pca.explained_variance_ratio_.cumsum())

 

 

 

 

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐