一、数据处理与准备
(一)数据加载
- 内置数据集:Sklearn 自带一些经典数据集,如鸢尾花数据集(load_iris)、波士顿房价数据集(load_boston)等。这些数据集方便初学者快速上手实践,可直接用于算法测试与学习,了解数据的基本特征与分布情况。例如,通过加载鸢尾花数据集,可以直观地看到花瓣与花萼的长度、宽度等特征数据。
- 外部数据读取:能够读取常见格式的外部数据,如 CSV 文件(可使用 pandas 库先读取再转换为 sklearn 适用格式)。在读取过程中,需注意数据的编码格式,避免出现乱码导致数据读取错误。同时,要正确识别数据中的特征列与目标列,确保数据划分准确,比如在处理一个销售数据 CSV 文件时,准确区分产品特征与销售金额目标列。
- 数据格式转换:将原始数据转换为适合 sklearn 算法处理的格式,通常是二维数组或稀疏矩阵形式。对于文本数据,可能需要进行独热编码(One-Hot Encoding)等操作,将分类变量转换为数值型。例如,将颜色类别变量转换为独热编码后,每个颜色类别对应一个二进制向量,便于机器学习模型处理。
(二)数据预处理
- 缺失值处理:可采用删除含有缺失值的样本或特征(如 dropna 函数),或者填充缺失值(如使用均值、中位数填充,SimpleImputer 类)的方法。在选择处理方式时,要考虑数据的特点与缺失值的比例。若数据量较大且缺失值比例较小,删除可能影响不大;若缺失值较多,填充可能更合适,例如在处理一份含有少量缺失年龄值的用户数据时,可根据整体年龄分布情况填充中位数。
- 标准化与归一化:标准化(StandardScaler)可使数据特征服从标准正态分布,而归一化(MinMaxScaler)将数据缩放到特定区间,如 [0, 1]。标准化有助于基于梯度下降的算法收敛更快,归一化在某些特定算法或数据可视化场景中有优势。比如在图像数据处理中,归一化可使像素值在合适区间,便于后续操作。
- 特征编码:对分类特征进行编码,除了独热编码,还有 OrdinalEncoder 可将分类特征转换为有序数值。在处理具有顺序关系的分类变量时,如产品等级(高、中、低),OrdinalEncoder 能保留这种顺序信息,使模型更好地学习特征与目标之间的关系。
(三)特征选择
- 过滤式方法:基于特征的统计量或相关性等指标进行选择,如卡方检验(chi2)选择与目标变量相关性高的特征。这种方法计算速度相对较快,不依赖于具体的机器学习模型。例如在文本分类中,通过卡方检验筛选出与不同类别相关性强的词汇特征,减少特征维度。
- 包裹式方法:将特征选择视为一个搜索问题,以模型的性能评估指标为指导进行特征子集的搜索,如递归特征消除(RFE)。它与具体的机器学习模型紧密结合,能选择出对模型性能提升最有帮助的特征组合。比如在支持向量机模型中,使用 RFE 逐步剔除不重要的特征,找到最优特征子集。
- 嵌入式方法:将特征选择融入到模型的训练过程中,如 Lasso 正则化(LassoCV),在优化目标函数时对特征系数进行约束,使一些不重要的特征系数变为 0,从而实现特征选择。这种方法在训练模型的同时完成特征选择,避免了额外的搜索过程,在处理高维数据时较为有效。
(四)数据划分
- 训练集、测试集划分:通常使用 train_test_split 函数按照一定比例(如 70% 训练集,30% 测试集)将数据集划分为训练集和测试集。划分时要注意数据的随机性,确保训练集和测试集都能代表原始数据的分布,避免因划分不合理导致模型评估结果偏差较大。例如在一个不平衡的数据集划分中,要保证训练集和测试集中各类别样本的比例相近。
- 交叉验证:除了简单的单次划分,还可采用交叉验证(如 KFold、StratifiedKFold)来更全面地评估模型性能。将数据集划分为 K 个折叠,依次将每个折叠作为测试集,其余作为训练集进行训练和评估,最后取平均结果。这种方法能有效利用数据,减少因单次划分带来的随机性影响,尤其在数据量较小时更为适用。
- 分层抽样划分:对于分类问题中类别不平衡的数据集,StratifiedKFold 等分层抽样方法可确保每个折叠中各类别的比例与原始数据集相同。这样在模型评估时,能更准确地反映模型对不同类别样本的处理能力,例如在医学疾病诊断数据集中,保证训练集和测试集中患病与未患病样本的合理比例。
(五)数据降维
- 主成分分析(PCA):通过线性变换将原始数据投影到低维空间,保留数据的主要方差信息。在降维过程中,可根据累计方差贡献率确定保留的主成分数量,既能减少数据维度,又能在一定程度上保留数据的特征信息。例如在图像处理中,PCA 可将高维的图像像素特征降维,降低计算复杂度。
- 奇异值分解(SVD):可用于数据降维与矩阵分解,与 PCA 有一定联系。它能将一个矩阵分解为三个矩阵的乘积,在数据压缩、推荐系统等领域有应用。例如在推荐系统中,SVD 可分解用户 - 物品评分矩阵,提取出潜在特征,实现推荐预测。
- 线性判别分析(LDA):与 PCA 不同,LDA 是一种有监督的降维方法,它试图找到一个投影方向,使得同类样本尽可能靠近,不同类样本尽可能远离,从而在低维空间中更好地进行分类。在多分类问题中,LDA 可有效提取分类特征,提高分类模型的性能。
二、模型构建与训练
(一)分类模型
- 决策树分类器:通过构建树状结构对数据进行分类,基于特征的划分条件逐步将数据集划分成不同的类别区域。其优点是可解释性强,能直观地看到分类的决策过程,但容易出现过拟合。例如在判断水果种类时,根据水果的颜色、形状等特征构建决策树,逐步判断是苹果、香蕉还是橙子等。
- 支持向量机(SVM):寻找一个最优超平面将不同类别的样本分隔开来,通过最大化间隔来提高模型的泛化能力。对于线性不可分的数据,可使用核函数(如线性核、多项式核、高斯核等)将数据映射到高维空间使其线性可分。在文本分类、图像识别等领域有广泛应用,例如在手写数字识别中,SVM 可有效区分不同数字的图像特征。
- 朴素贝叶斯分类器:基于贝叶斯定理和特征条件独立假设进行分类。计算简单,对大规模数据集有较好的处理能力,在文本分类(如垃圾邮件识别)领域表现出色。例如在判断一封邮件是否为垃圾邮件时,根据邮件中出现的词汇频率,结合先验概率计算后验概率,确定邮件类别。
- 逻辑回归分类器:虽然名为 “回归”,但常用于二分类问题。通过将线性回归的结果映射到 Sigmoid 函数上,得到样本属于某一类别的概率。可通过调整阈值来控制分类结果,在医学诊断、信用风险评估等领域有应用。例如在预测患者是否患病时,根据患者的症状、检查指标等特征进行逻辑回归分析,得出患病概率。
- 随机森林分类器:由多个决策树组成,通过集成学习的方式提高分类性能。每个决策树基于随机选取的样本和特征进行训练,最后综合多个决策树的投票结果确定样本类别。能有效减少过拟合风险,提高模型的准确性和稳定性。例如在森林植被分类中,随机森林可综合多个决策树对不同植被类型的判断结果,得出更可靠的分类。
- 梯度提升树(GBDT):以决策树为基学习器,通过梯度提升的方式依次训练多个决策树,每个决策树拟合前一个模型的残差,不断优化模型。在数据挖掘竞赛中表现优异,对复杂数据有较好的拟合能力,但计算相对复杂。例如在预测电商商品销量时,GBDT 可逐步修正预测误差,提高销量预测的准确性。
- K 近邻分类器:根据样本周围的 K 个最近邻样本的类别来确定该样本的类别。简单直观,无需训练模型参数,但计算量较大,对数据的局部结构敏感。例如在图像识别中,根据图像像素特征,找到与待识别图像最相似的 K 个图像,以它们的类别确定待识别图像的类别。
- 神经网络分类器:利用多层神经元构建模型,通过反向传播算法训练模型参数。在深度学习中广泛应用,对复杂数据有很强的学习能力,但需要较多的训练数据和计算资源,模型解释性相对较差。例如在人脸识别中,神经网络可学习人脸的各种特征,实现高精度的身份识别。
- 集成学习方法:除了随机森林和 GBDT,还有如 Adaboost 等集成学习方法。Adaboost 通过不断调整样本权重和基学习器权重,将多个弱分类器组合成一个强分类器。在提升模型性能方面有独特优势,可应用于多种分类场景。例如在异常检测中,Adaboost 可整合多个简单检测模型的结果,提高异常检测的准确率。
- 模型评估指标:对于分类模型,常用的评估指标有准确率(Accuracy)、召回率(Recall)、F1 值、精确率(Precision)等。准确率表示正确分类的样本比例,召回率反映了实际正样本中被正确分类的比例,F1 值综合考虑了精确率和召回率,精确率则是正确分类的正样本占预测为正样本的比例。这些指标可全面评估分类模型的性能,在不同的应用场景中,可根据需求重点关注某一指标。例如在癌症诊断中,召回率更为重要,尽量减少漏诊;而在垃圾邮件过滤中,精确率更受关注,减少误判正常邮件为垃圾邮件。
(二)回归模型
- 线性回归:假设特征与目标变量之间存在线性关系,通过最小二乘法拟合直线或超平面,使预测值与真实值的误差平方和最小。简单直观,可解释性强,但对于非线性关系的数据拟合效果较差。例如在预测房价时,根据房屋面积、房龄等线性特征建立线性回归模型,预测房价走势。
- 岭回归(Ridge):在普通线性回归的基础上添加 L2 正则化项,用于解决线性回归中的过拟合问题,尤其是当特征之间存在多重共线性时。正则化参数可控制正则化的强度,通过调整该参数可在模型拟合效果和泛化能力之间取得平衡。例如在经济预测中,面对多个相关的经济指标特征,岭回归可防止模型因过拟合而导致的不稳定预测。
- 套索回归(Lasso):采用 L1 正则化项,不仅能防止过拟合,还具有特征选择的功能,可使部分不重要的特征系数变为 0。在高维数据中,可有效降低特征维度,简化模型。例如在基因数据与疾病关系的研究中,Lasso 回归可筛选出与疾病相关的关键基因特征,建立简约的回归模型。
- 弹性网络回归(ElasticNet):结合了 L1 和 L2 正则化项,综合了岭回归和套索回归的优点。在实际应用中,可通过调整 L1 和 L2 正则化参数的比例,适应不同的数据特点和建模需求。例如在分析复杂的市场销售数据时,弹性网络回归可根据数据的特征相关性和稀疏性,灵活地构建回归模型。
- 决策树回归:与决策树分类器类似,通过构建树状结构对连续的目标变量进行预测。将数据集根据特征的划分条件逐步划分成不同的区域,每个区域内的样本采用该区域的均值或中位数作为预测值。决策树回归模型可处理非线性关系,但容易出现过拟合,需要进行剪枝等处理。例如在预测气温变化时,根据日期、天气状况等特征构建决策树回归模型,预测气温值。
- 随机森林回归:基于多个决策树的集成学习方法,每个决策树基于随机选取的样本和特征进行训练,最后综合多个决策树的预测结果得到最终的回归预测值。能有效减少过拟合风险,提高模型的稳定性和准确性。例如在预测股票价格波动时,随机森林回归可综合多个决策树对不同影响因素的分析结果,进行股票价格的预测。
- 梯度提升回归树(GBRT):类似于 GBDT 在分类问题中的应用,通过梯度提升的方式依次训练多个决策树,每个决策树拟合前一个模型的残差,逐步优化回归模型。在处理复杂的非线性回归问题时有较好的表现,但计算复杂度较高。例如在电力负荷预测中,GBRT 可不断修正预测误差,提高对电力负荷变化的预测精度。
- 支持向量机回归(SVR):通过寻找一个最优超平面,使尽可能多的样本落在超平面周围的特定区域内,该区域的宽度由参数控制。对于离群点较为敏感,可通过调整参数来平衡模型的拟合效果和对离群点的容忍度。例如在预测产品质量指标时,SVR 可根据产品的相关特征构建回归模型,预测质量指标值。
- 神经网络回归:利用多层神经元构建回归模型,通过反向传播算法训练模型参数。在处理复杂的非线性回归问题时具有强大的学习能力,但需要较多的训练数据和计算资源,模型解释性较差。例如在预测交通流量时,神经网络可学习交通流量与时间、天气、节假日等多种因素之间的复杂关系,进行流量预测。
- 模型评估指标:回归模型常用的评估指标有均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、R 平方值(R-squared)等。MSE 衡量预测值与真实值的平均平方误差,RMSE 是 MSE 的平方根,MAE 表示预测值与真实值的平均绝对误差,R-squared 反映了模型对数据的拟合程度,越接近 1 表示拟合效果越好。这些指标可从不同角度评估回归模型的性能,在实际应用中,根据数据的特点和需求选择合适的指标。例如在工程质量控制中,RMSE 可直观地反映预测值与实际值的偏差程度,便于评估模型的准确性。
(三)聚类模型
- K-Means 聚类:基于距离度量将数据点划分到 K 个簇中,通过不断更新簇中心和数据点所属簇,使簇内数据点的距离之和最小。简单高效,但需要预先指定簇的数量 K,且对初始簇中心敏感。例如在市场细分中,根据客户的消费行为特征(如消费金额、消费频率等),使用 K-Means 聚类将客户划分为不同的群体,以便进行针对性营销。
- 层次聚类:构建数据点的层次结构,有凝聚式(自底向上)和分裂式(自顶向下)两种方式。不需要预先指定簇的数量,但计算复杂度较高,结果的可视化呈现较为直观。例如在生物分类学中,根据生物的特征相似性,通过层次聚类构建生物的分类体系,从物种到属、科、目等不同层次进行划分。
- DBSCAN 聚类:基于密度的聚类方法,将数据点分为核心点、边界点和噪声点。能够发现任意形状的簇,不需要预先知道簇的数量,但对数据的密度分布有一定要求,在数据密度不均匀时可能出现聚类效果不佳的情况。例如在地理信息系统中,根据地理区域内的人口密度、建筑物密度等特征,使用 DBSCAN 聚类划分不同的功能区域。
- 高斯混合模型(GMM):假设数据是由多个高斯分布混合而成,通过估计每个高斯分布的参数(均值、协方差等)来实现聚类。可用于处理具有复杂分布的数据,并且能够给出每个数据点属于各个簇的概率。例如在语音识别中,根据语音信号的特征分布,利用 GMM 聚类将不同语音类别区分开来,为后续的语音识别提供基础。
- 谱聚类:基于图论和矩阵运算,将数据点构建成图,通过计算图的拉普拉斯矩阵的特征值和特征向量来进行聚类。对数据的形状和分布适应性强,能够处理非凸形状的簇,但计算量较大,尤其是在大规模数据上。例如在图像分割中,谱聚类可根据图像像素的特征关系,将图像分割成不同的区域,如前景与背景的划分。
- 聚类评估指标:常用的聚类评估指标有轮廓系数(Silhouette Coefficient)、Calinski-Harabasz 指数、Davies-Bouldin 指数等。轮廓系数衡量每个数据点与其所属簇内其他点的紧密程度以及与其他簇的分离程度,越接近 1 表示聚类效果越好;Calinski-Harabasz 指数通过计算簇间方差与簇内方差的比值来评估聚类效果,比值越大越好;Davies-Bouldin 指数则综合考虑了簇内距离和簇间距离,值越小表示聚类效果越好。这些指标可帮助选择合适的聚类模型和确定最佳的聚类参数,例如在客户聚类分析中,通过轮廓系数评估不同 K 值下 K-Means 聚类的效果,选择最优的 K 值。
- 聚类结果可视化:可使用 matplotlib 等库进行聚类结果的可视化,将不同簇的数据点用不同颜色或标记表示,直观地展示聚类效果。对于二维或三维数据,可视化效果较为清晰,可帮助理解数据的分布和聚类情况。例如在数据挖掘项目中,将聚类后的客户数据在二维平面上进行可视化,观察不同客户群体的分布特征,为进一步的市场策略制定提供依据。