sklearn库
训练数据集 datasets
生成数据集
make_regression():随机生成用于回归训练的数据集。
参数
1、n_samples = 100【int】:生成样本的总数。
2、n_features = 100【int】:每个样本的总特征数量。

  • 必须 n_features ≥ n_informative。
  • 注意:高维特征(n_features >> n_samples)可用于测试正则化回归(如 Ridge、Lasso)。

3、n_informative = 10【int】:对目标变量有实际贡献的信息特征数量。

  • 这些特征的系数非零,其余特征系数为零(即不参与生成 y)。
  • 必须满足 0 ≤ n_informative ≤ n_features。
  • 注意:控制问题的有效复杂度;n_informative 越小,稀疏性越强。

4、n_targets = 1【int】:回归目标的数量(即输出维度)。

  • 若为 1,y 为一维数组(形状 (n_samples,))。
  • 若 >1,y 为二维数组(形状 (n_samples, n_targets)),每列是一个独立目标。
  • 注意:多目标回归中,各目标共享相同的特征矩阵 X,但具有独立的系数和噪声。

5、bias = 0.0【float】:目标变量的全局偏置项(即截距)。

  • 生成公式为:y = X @ coef + bias + noise。

6、effective_rank = None【int | None】:控制特征矩阵 X 的近似秩(即内在维度)。

  • 若为 None(默认),X 的各特征相互独立(满秩)。
  • 若为 int,则通过低秩矩阵近似生成 X,使其具有指定的有效秩(使用奇异值衰减)。
  • 注意:用于模拟特征间存在线性相关性的现实数据;会降低 X 的条件数,影响回归稳定性。

7、tail_strength = 0.5【float】:当 effective_rank 非 None 时,控制奇异值衰减的“尾部强度”。

  • 值越小,非主成分的奇异值衰减越快(矩阵更接近严格低秩)。
  • 值越大(趋近于1),奇异值分布越平坦。
  • 仅在 effective_rank 被指定时生效。
  • 注意:与 effective_rank 共同决定 X 的协方差结构。

8、noise = 0.0【float】:添加到目标变量 y 中的高斯噪声标准差。

  • noise=0.0 表示无噪声,y 完全由线性模型生成。
  • noise>0(如 1.0)表示加入均值为0、标准差为 noise 的独立高斯噪声。
  • 注意:噪声越大,回归任务越困难;常用于评估模型抗噪能力。

9、shuffle = True【bool】:是否在返回前打乱样本顺序。

  • 注意:打乱不影响 X 与 y 的对应关系,仅改变行顺序。

10、coef = False【bool】:是否返回真实的回归系数(ground-truth coefficients)。

  • 若为 False(默认),仅返回 (X, y)。
  • 若为 True,返回 (X, y, coef),其中 coef 形状为 (n_features,) 或 (n_features, n_targets)。
  • 注意:返回的 coef 中,仅有前 n_informative 个元素非零(其余为0),且符号和大小由内部随机生成。

11、random_state = None【int | RandomState | None】:控制随机数生成器的种子。
make_classification():随机生成用于分类训练的数据集
参数
1、n_samples = 100【int】:生成样本的总数。
2、n_features = 20【int】:每个样本的总特征数量。

3、n_informative = 2【int】:对分类有判别力的信息特征数量。

  • 必须满足 1 ≤ n_informative ≤ min(n_features, n_classes × n_clusters_per_class)。
  • 这些特征是从高斯分布中生成并用于构造类别边界。
  • 注意:若设置过高,可能导致数据过于容易分类;过低则任务太难。

4、n_redundant = 2【int】:由信息特征线性组合生成的冗余特征数量。

  • 必须满足 n_informative + n_redundant + n_repeated ≤ n_features。
  • 冗余特征不增加新信息,但可能影响模型性能(如多重共线性)。
  • 注意:若 n_informative = 0,则无法生成冗余特征,会报错。

5、n_repeated = 0【int】:从信息特征和冗余特征中随机复制得到的重复特征数量。

  • 用于模拟真实数据中的重复测量或冗余变量。
  • 取值范围:0 ≤ n_repeated ≤ n_features - n_informative - n_redundant。
  • 注意:重复特征完全相同,可用于测试特征选择算法。

6、n_classes = 2【int】:目标变量的类别数量,必须 ≥ 2。

  • 注意:类别数越多,生成的数据结构越复杂,需确保 n_informative 足够支撑多类分离。

7、n_clusters_per_class = 2【int】:每个类别包含的簇(cluster)数量。

  • 每个簇代表该类别中的一个局部高密度区域。
  • 总簇数 = n_classes × n_clusters_per_class。
  • 注意:簇越多,类内结构越复杂;若设为1,则每类为单峰分布。

8、weights = None【ArrayLike | None】:各类别的先验概率(或样本比例)。

  • 若为 None,则各类别样本数大致相等。
  • 若指定(如 [0.7, 0.3]),则按比例分配样本,且长度必须等于 n_classes。
  • 注意:实际样本数受 n_samples 和随机性影响,可能略有偏差;若比例之和不为1,会自动归一化。

9、flip_y = 0.01【float】:随机翻转标签的比例(引入噪声)。

  • 取值范围 [0.0, 1.0]。0.0 表示无噪声;0.1 表示约 10% 的标签被随机打乱,用于模拟现实中的标注错误。
  • 翻转后的标签在所有类别中均匀随机分配(包括原类别)。
  • 注意:flip_y > 0 会降低数据可分性,适合测试鲁棒性。

10、class_sep = 1【float】:类别之间的分离程度。

  • 值越大,类别间距离越远,分类越容易。

11、hypercube = True【bool】:是否将类别中心放置在超立方体的顶点上。

  • 若为 True,类别中心位于 [-class_sep, class_sep]^n_informative 的顶点,结构更规则。
  • 若为 False,类别中心随机分布在球体内。
  • 注意:设为 False 可增加数据多样性,但可能降低类别可分性。

12、shift = 0【ArrayLike | float | None】:对所有特征整体平移的偏移量。

  • 若为 float,所有特征统一加上该值。
  • 若为 ArrayLike(长度 = n_features),每个特征分别平移。
  • 若为 None,则不进行平移。
  • 注意:平移不影响分类难度,但可模拟非零均值特征。

13、scale = 1【ArrayLike | float | None】:对所有特征进行缩放的比例因子。

  • 若为 float(如 2.0),所有特征乘以该值。
  • 若为 ArrayLike(长度 = n_features),每个特征独立缩放。
  • 若为 None,则不缩放。
  • 注意:缩放改变特征量纲,可能影响基于距离的算法(如KNN、SVM)。

14、shuffle = True【bool】:是否在返回前打乱样本顺序

  • 注意:通常应保持 True 以避免引入人为顺序偏差。

15、random_state = None【int | RandomState | None】:控制随机数生成器的种子
make_bolbs():生成聚类的数据集,返回数据X和标签y。
参数
1、n_samples = 100【int | ArrayLike】:生成样本的总数或每个簇的样本数量。

  • 若为 int,总样本数均匀分配给各簇(除非 centers 指定不等权重)。
  • 若为 ArrayLike(如 [50, 100, 150]),则分别指定每个簇的样本数;长度必须等于 centers 的数量。
  • 注意:当与 weights 同时使用时,weights 会被忽略;实际行为由 n_samples 的类型决定。

2、centers = 3【int | ArrayLike】:簇(中心点)的数量或具体坐标。

  • 若为 int,则随机生成该数量的中心点(在 [-10, 10] 范围内)。
  • 若为 ArrayLike(如 [[0,0], [2,2], [-2,2]]),则直接使用这些坐标作为簇中心;此时 n_features 自动推断为坐标的维度。
  • 注意:若提供 centers 为数组,则 n_features 必须与其中心点维度一致,且不能同时指定与之冲突的 n_features。

3、cluster_std = 1.0【float | ArrayLike】:每个簇的标准差(控制簇的紧密程度)。

  • 若为 float(如 0.5),所有簇使用相同标准差。
  • 若为 ArrayLike(如 [0.5, 1.0, 1.5]),则分别为每个簇指定标准差;长度必须等于 centers 数量。
  • 取值越大,簇越分散;过大会导致簇重叠,增加聚类难度。
  • 注意:标准差作用于每个特征维度,假设各维度独立同分布。

4、center_box = (-10.0, 10.0)【tuple[float, float]】:当 centers 为 int 时,随机生成中心点的边界框(最小值, 最大值)。

  • 默认在 [-10, 10] 区间内均匀采样中心坐标,若如center_box=(-5.0, 5.0) 将中心限制在更小区域,可能增加簇重叠风险。
  • 注意:仅当 centers 为整数时生效;若 centers 为数组,则此参数被忽略。

5、shuffle = True【bool】:是否在返回前打乱样本顺序。

  • 若为 False,样本按簇顺序排列(先簇0,再簇1,依此类推)。

6、random_state = None【int | RandomState | None】:控制随机数生成器的种子。

  • 注意:影响中心点生成(当 centers 为 int)、样本扰动(由 cluster_std 决定)和 shuffle 行为。

7、return_centers = False【bool】:是否同时返回真实的簇中心坐标。

  • 若为 False(默认),仅返回 (X, y),即样本和标签。
  • 若为 True,返回 (X, y, centers),便于评估聚类算法对中心的估计精度。
  • 注意:当 centers 参数本身是数组时,返回的 centers 与输入一致;若 centers 是 int,则返回实际生成的中心坐标。
    - make_classification:生成用于分类的高维人工数据集(含信息特征、冗余特征等)。
  • make_regression:生成用于回归的人工数据集(可控制噪声、特征相关性等)。
  • make_blobs:生成聚类中心明确的各向同性高斯分布簇(常用于聚类可视化)。
  • make_moons:生成两个交错半圆形状的二分类数据(非线性可分)。
  • make_circles:生成同心圆形状的二分类数据(非线性可分)。
  • make_friedman1/2/3:生成基于 Friedman 公式的回归数据集。
  • make_hastie_10_2:生成二分类数据(Hastie et al. 提出的 10 维问题)。
  • make_sparse_coded_signal:生成稀疏编码信号。
  • make_low_rank_matrix:生成低秩矩阵。
  • make_s_curve / make_swiss_roll:生成流形学习用的 S 形曲线或瑞士卷数据。
    内置训练集
    【波士顿房价预测(被弃用)】
  • load_breast_cancer:加载乳腺癌威斯康星州数据集(二分类)。
  • load_iris:加载鸢尾花数据集(多分类)。
  • load_wine:加载葡萄酒识别数据集(多分类)。
  • load_digits:加载手写数字图像数据集(0–9,8x8 像素)。
  • load_linnerud:加载 Linnerud 多输出回归数据集。
  • load_diabetes:加载糖尿病数据集(回归任务)。
  • fetch_20newsgroups:获取 20 类新闻组文本数据集(原始文本或向量化)。
  • fetch_20newsgroups_vectorized:直接返回 TF-IDF 向量化的 20newsgroups 数据。
  • fetch_california_housing:获取加州房价回归数据集。
  • fetch_covtype:获取森林覆盖类型分类数据集(大型)。
  • fetch_kddcup99:获取 KDD Cup 1999 网络入侵检测数据集。
  • fetch_lfw_pairs / fetch_lfw_people:获取 Labeled Faces in the Wild 人脸数据。
    数据预处理 preprocessing
    编码
    标签编码 LabelEncoder【仅接受y,y为1维数组】
    方法
    fit(y):训练。对标签按种类0,1,2,...顺序编码
    transform(y):输出编码
    fit_transform(y):合并fit和transform
    inverse_transform(y_encoded):将0,1,..编码还原为字符标签
    属性
    classes_->list:编码顺序对应的标签
    有序编码 OrdinalEncoder【X为2维数组,,接受DF】
    方法
    fit(X, y=None):训练。对标签按种类0,1,2,...顺序编码
    transform(X):返回编码后 2-D ndarray(或 DataFrame 若 X 是 DataFrame)
    fit_transform(X):合并
    inverse_transform(X_encoded):将0,1,..编码还原为字符标签
    属性
    categories_ -> list of array:每列的类别【可设置】
    feature_names_in_ -> array:特征名
    n_features_in_ -> int:特征数
    独热编码 OneHotEncoder
    多项式扩展 PolynominalFeatures
    参数
    1、degree = 2【int | tuple[int, int]】:多项式的最高阶数。
  • 若为 int(如 3),生成从 0 阶到该阶的所有交叉项(默认包含低阶)。
  • 若为 tuple(如 (2, 3)),则仅生成指定范围内的阶数(scikit-learn ≥ 1.5 支持;旧版本仅支持 int)。
  • 注意:degree 越高,特征数量呈组合爆炸增长(尤其当 n_features 较大时);例如 n_features=10, degree=3 会产生 286 个特征。

2、interaction_only = False【bool】:是否仅生成交互项(即不含单个特征的高次幂)。

  • 若为 False(默认),生成所有多项式项,包括 x₁², x₂³ 等纯幂项。
  • 若为 True,则只保留不同特征的乘积项(如 x₁x₂, x₁x₂x₃),且每个特征在单项中最多出现一次。
  • 示例:原始特征 [x₁, x₂],degree=2 时:
    • interaction_only=False → [1, x₁, x₂, x₁², x₁x₂, x₂²]
    • interaction_only=True → [1, x₁, x₂, x₁x₂]
  • 注意:设为 True 可显著减少特征数量并避免过拟合,适用于关注特征间协同效应的场景。

3、include_bias = True【bool】:是否包含全1的偏置列(即 0 次项,对应常数项 1)。

  • 若为 True(默认),输出矩阵第一列为 1(对应截距项)。
  • 注意:若后续使用 LinearRegression(fit_intercept=True),通常可设 include_bias=False 以避免冗余;但若 fit_intercept=False,则需保留 bias 列以建模常数项。

4、order = 'C'【str】:输出数组的内存布局顺序。

  • 可选 'C'(行优先,C-style)或 'F'(列优先,Fortran-style),默认为 'C',与 NumPy 默认一致。

  • 注意:一般用户无需修改;仅在特定性能优化或与底层库交互时才需调整。
    标准化
    标准缩放器 StandardScaler【z-score标准化】

      	最小最大缩放器 MinMaxScaler鲁棒缩放器 RobustScaler【对异常值不敏感】数据归一化 Normalizer【每个样本范数为1】参数Normalizer():用于对**每个样本(即数据矩阵的每一行)**进行独立的范数归一化,使其具有单位长度(unit norm),常用于文本挖掘、聚类或需要消除样本尺度影响的场景(如使用余弦相似度时)。
    

1、norm = 'l2'【str】:指定使用的范数类型。

  • 若为 'l2'(默认),将每个样本缩放为欧几里得范数(L2 范数)为 1,即 ( \frac{x}{|x|_2} )。
  • 若为 'l1',将每个样本缩放为 L1 范数(绝对值之和)为 1,即 ( \frac{x}{|x|_1} )。
  • 若为 'max',将每个样本缩放为最大绝对值为 1(也称 L∞ 归一化),即 ( \frac{x}{|x|_\infty} )。
  • 注意:归一化是按进行的(axis=1),与 StandardScaler 等按列(特征)标准化不同。

2、copy = True【bool】:是否在变换时创建输入数据的副本。
分箱离散化 KBinsDiscretizer
参数
KBinsDiscretizer():用于将连续特征离散化为若干个分箱(bin),将数值型数据转换为类别型表示,适用于提升模型对非线性关系的鲁棒性、减少异常值影响或适配仅支持离散输入的算法。
1、n_bins = 5【int | ArrayLike】:每个特征的分箱数量。

  • 若为 int,所有特征使用相同的分箱数。
  • 若为 ArrayLike(如 [5, 10, 3]),则分别为每个特征指定分箱数;长度必须等于特征数量(n_features)。
  • 取值必须 ≥ 2。
  • 注意:分箱数越多,保留的原始信息越精细,但可能引入噪声;过少则丢失细节。某些策略(如 'quantile')在样本不足时可能无法生成指定数量的有效分箱。

2、encode = 'onehot'【str】:离散化后的编码方式。

  • 若为 'onehot'(默认),输出稀疏的 one-hot 编码矩阵(每个 bin 对应一个二元特征)。
  • 若为 'onehot-dense',输出稠密的 one-hot 编码矩阵(NumPy 数组而非稀疏矩阵)。
  • 若为 'ordinal',输出每个样本所属的 bin 索引(整数,从 0 开始),形状与输入相同。
  • 注意:'onehot' 适合大多数分类模型;'ordinal' 适用于树模型(如 DecisionTree)或需保持维度紧凑的场景。

3、strategy = 'quantile'【str】:分箱策略,决定如何划分区间。

  • 若为 'uniform',将特征值范围等宽划分(即每个 bin 的宽度相同)。
    • 对异常值敏感:若数据分布偏斜,可能导致某些 bin 样本极少甚至为空。
  • 若为 'quantile'(默认),按分位数划分,使每个 bin 包含大致相等数量的样本。
    • 更鲁棒于偏态分布;但若存在大量重复值,可能导致 bin 边界重合。
  • 若为 'kmeans',使用一维 KMeans 聚类中心确定 bin 边界,最小化 bin 内方差。
    • 能更好地适应数据局部密度,但计算开销略高。
  • 注意:所有策略均在 fit 阶段基于训练数据计算 bin 边界,transform 阶段直接映射;测试集中的值若超出训练范围,会被分配到最近的 bin(不会报错)。

4、dtype = None【type | None】:输出数据的数据类型。

  • 若为 None(默认),根据 encode 自动选择:
    • 'onehot' / 'onehot-dense' → np.float64
    • 'ordinal' → np.float64(即使 bin 索引为整数)
  • 若显式指定(如 np.int32),仅在 encode='ordinal' 时生效;对于 one-hot 编码,dtype 必须为浮点型(因稀疏矩阵限制)。
  • 注意:scikit-learn 推荐保留默认行为;手动设置 dtype 需确保兼容性。

5、subsample = 200_000【int | None】:用于 'quantile' 或 'kmeans' 策略时的采样数量上限。

  • 为加速分位数或 KMeans 计算,当 n_samples > subsample 时,会随机采样子集进行 bin 边界估计。
  • 若为 None,则使用全部样本。
  • 默认 200,000 在精度与效率间取得平衡。
  • 注意:仅影响 fit 阶段的计算速度,不影响最终 transform 的确定性(若 random_state 固定)。

6、random_state = None【int | RandomState | None】:控制 subsample 采样的随机状态。
不平衡数据处理 imblearn
过采样 over_sampling
ADASYN
SMOTE
定义
SMOTE():Synthetic Minority Over-sampling Technique(合成少数类过采样技术),用于解决分类任务中的类别不平衡问题。通过对少数类样本在其近邻之间插值,生成新的合成样本,从而增加少数类的代表性,改善模型对少数类的识别能力。
参数
1、sampling_strategy = 'auto'【float | str | dict | callable】:指定重采样策略,控制目标类别比例。

  • 若为 'auto'(默认),对所有少数类进行过采样,使其数量等于多数类(即 1:1)。
  • 若为 float(如 0.5),仅适用于二分类,表示少数类 / 多数类 的目标比例(必须 ∈ (0, 1])。
  • 若为 dict(如 {0: 200, 1: 300}),显式指定每个类别的最终样本数(仅对键中包含的类执行过采样)。
  • 若为 callable,接收 y 值并返回目标采样策略字典。
  • 注意:SMOTE 只对少数类进行过采样,不会减少多数类;若需同时欠采样,应结合如 SMOTETomek 等组合方法。

2、random_state = None【int | RandomState | None】:控制随机数生成器的种子。

3、k_neighbors = 5【int | object】:用于为每个少数类样本寻找近邻的 KNN 参数。

  • 若为 int(默认 5),表示使用 k=5 的 KNeighborsClassifier 查找同类近邻。
  • 若为 KNeighborsMixin 实例(如自定义的 NearestNeighbors 对象),则直接使用该对象进行近邻搜索。
  • 注意:k_neighbors 必须小于少数类样本数;若少数类样本太少(如 <6),需减小该值,否则会报错。

4、n_jobs = None【int | None】:并行计算时使用的 CPU 核心数。
注意事项
- SMOTE 要求输入特征为数值型,不支持类别型特征(需先编码)。

  • 生成的新样本位于少数类样本与其近邻之间的连线上(通过线性插值)。
  • 在高维或稀疏数据中,SMOTE 效果可能下降(“维度灾难”导致近邻无意义)。
  • 不适用于噪声大或类别边界模糊的数据,可能生成跨越决策边界的无效样本。
    欠采样 under_sampling
    RandomUnderSampler
    TomekLinks
    组合采样 combine
    SMOTETomek
    特征工程 feature_selection
    特征选择
    过滤法
    方差过滤 VarianceThreshold
    参数
    1、threshold = 0.0【float】:特征保留的方差阈值,剔除所有方差 ≤ threshold 的特征。
  • 默认为 0.0,表示移除在所有样本中完全不变的特征(即方差为 0)。
  • 注意:该方法仅适用于数值型特征;类别型特征需先编码,且对未标准化的不同量纲特征敏感(例如,以“米”和“毫米”为单位的同一物理量方差差异巨大)。
    定义
    VarianceThreshold():用于特征选择,通过移除低方差的特征(即在所有样本中几乎不变的特征)来简化数据集。假设特征值为数值型且已适当缩放,方差越小说明该特征提供的信息越少。
    注意事项
    - VarianceThreshold 是一种无监督的过滤式(filter)特征选择方法,不依赖目标变量 y。
  • 在 fit 阶段计算每个特征的方差;在 transform 阶段仅保留方差 > threshold 的列。
  • 对稀疏矩阵支持良好,计算高效。
  • 常用于预处理流水线的第一步,尤其适用于高维数据(如文本 TF-IDF 矩阵)中去除恒定词项。
    筛选K个最佳 SelectKBest
    定义
    SelectKBest():一种基于单变量统计检验的过滤式(filter)特征选择方法,通过计算每个特征与目标变量之间的统计得分(如卡方、F值、互信息等),保留得分最高的 k 个特征,适用于降维和提升模型效率。
    参数
    1、score_func = f_classif【callable】:用于评估特征重要性的评分函数。
  • 必须是一个可调用对象,接收 X(特征矩阵)和 y(目标变量),返回 (scores, pvalues) 或仅 scores。
  • 常见选项:
    • 分类任务
      • f_classif(默认):ANOVA F 值,适用于连续特征与类别标签。
      • chi2:卡方检验,要求特征非负(如词频、TF-IDF)。
      • mutual_info_classif:互信息,能捕捉非线性关系。
    • 回归任务
      • f_regression:F 值,基于特征与目标的相关性。
      • mutual_info_regression:互信息回归版本。
  • 注意:必须根据任务类型和数据特性选择合适的 score_func;错误选择(如对负值使用 chi2)会导致异常。

2、k = 10【int | str】:要选择的特征数量。

  • 若为 'all',保留所有特征(相当于不进行选择)。
  • k 必须满足 1 ≤ k ≤ n_features(当为 int 时)。
  • 注意:若 k 大于特征总数,会自动调整为 n_features;若数据中存在相同得分,选择顺序可能不稳定(除非固定随机状态,但本方法本身无随机性)。
    注意事项
    - SelectKBest 是有监督方法,必须提供 y 进行 fit。
  • 在 fit 阶段计算每个特征的得分并排序;在 transform 阶段返回 top-k 特征对应的列。
  • 不改变特征原始值,仅做子集选择。
  • 常用于 pipeline 中作为预处理步骤,尤其适用于高维稀疏数据(如文本)的初步筛选。
    包装法
    递归特征消除 RFE
    定义
    RFE():Recursive Feature Elimination(递归特征消除),一种包装式(wrapper)特征选择方法,通过反复训练模型并剔除最不重要特征,最终保留指定数量的最优特征子集。适用于提升模型性能、降低过拟合风险和增强可解释性。
    参数
    1、estimator【object】:用于评估特征重要性的基础估计器(必须实现 fit 方法,并提供 coef_ 或 feature_importances_ 属性)。
  • 常见选择:LinearRegression、LogisticRegression、SVC(需设置 probability=True 或使用 kernel='linear' 以支持 coef_)、RandomForestClassifier 等。
  • 注意:若 estimator 不具备特征权重属性(如 KNeighborsClassifier),会报错。

2、n_features_to_select = None【int | float | None】:最终保留的特征数量。

  • 若为 float(如 0.5),表示保留总特征数的该比例(向下取整)。
  • 若为 None(默认),则保留总特征数的一半(即 n_features // 2)。
  • 注意:必须满足 1 ≤ n_features_to_select ≤ n_features。

3、step = 1【int | float】:每轮迭代中剔除的特征数量或比例。

  • 若为 float(如 0.1),每轮移除当前剩余特征的该比例(至少剔除1个)。
  • 较小的 step 提高精度但增加计算开销;较大的 step 加速过程但可能跳过更优子集。
  • 注意:step 必须 > 0 且 < 当前特征数。

4、verbose = 0【int】:控制输出日志的详细程度。

  • 0(默认):不输出。
  • ≥1:显示每轮消除的特征数量等信息。
  • 注意:主要用于调试或监控长时间运行的特征选择过程。

5、importance_getter = 'auto'【str | callable】:指定如何从 estimator 获取特征重要性。

  • 若为 'auto'(默认),自动检测 estimator 是否有 coef_ 或 feature_importances_。
  • 若为 str(如 'coef_' 或 'feature_importances_'),显式指定属性名。
  • 若为 callable,接收 estimator 并返回形状为 (n_features,) 的重要性数组。
  • 注意:对于多输出模型(如 MultiOutputRegressor),重要性需聚合为一维;某些模型(如 SVM with RBF kernel)不提供 coef_,不可用于 RFE。
    注意事项
    - RFE 是有监督方法,需在 fit 时提供 y。
  • 每轮训练 estimator → 获取特征重要性 → 剔除最不重要特征 → 重复直至达到目标特征数。
  • 支持 get_support()、get_feature_names_out() 等方法获取选中的特征索引或名称。
  • 计算成本较高(需多次训练模型),适用于中小规模数据集或作为最终精调步骤。
    嵌入法
    基于模型的特征选择 SelectFromModel
    定义
    SelectFromModel():一种基于模型特征重要性的特征选择方法,通过设定阈值自动选择重要性高于该阈值的特征。适用于任何提供 coef_ 或 feature_importances_ 属性的监督学习估计器,常用于嵌入式(embedded)特征选择。
    参数
    1、estimator【object】:用于评估特征重要性的基础估计器。
  • 必须是已拟合(fitted)的模型,或在调用 fit 时能被自动拟合。
  • 必须具备 coef_(如 LinearRegression、LogisticRegression)或 feature_importances_(如 RandomForest、GradientBoosting)属性。
  • 注意:若 estimator 未训练且未提供 y,会报错;对于多输出模型,重要性需可聚合为一维。

2、threshold = None【str | float | None】:特征重要性的选择阈值。

  • 若为 float(如 0.1),保留重要性 ≥ 该值的特征。
  • 若为 None(默认),使用 estimator 的默认阈值(通常为重要性均值)。
  • 若为 'median' 或 'mean',分别使用重要性数组的中位数或均值作为阈值。
  • 若为字符串 'X * mean'(如 '1.25*mean'),表示均值的倍数(scikit-learn ≥ 0.24 支持)。
  • 注意:阈值过低会导致保留过多特征,过高则可能剔除有用特征;可通过交叉验证调优。

3、prefit = False【bool】:指示 estimator 是否已预先拟合。

  • 若为 False(默认),SelectFromModel 会在 fit 阶段自动调用 estimator.fit(X, y)。
  • 若为 True,则跳过拟合步骤,直接使用传入的已训练 estimator。
  • 注意:当 prefit=True 时,调用 fit() 不需要 y;否则必须提供 y。

4、norm_order = 1【int】:当 estimator.coef_ 为多维(如多分类逻辑回归)时,用于计算特征重要性范数的阶数。

  • 默认为 1(L1 范数),即对每个特征在所有类别上的系数取绝对值之和。
  • 可设为 2(L2 范数)或其他正整数。
  • 仅当 coef_ 形状为 (n_classes, n_features) 时生效。
  • 注意:此参数不影响 feature_importances_ 类型的模型(如树模型)。

5、max_features = None【int | None】:最多保留的特征数量(即使超过 threshold 的特征更多)。

  • 若为 int(如 20),最多选择前 max_features 个最重要特征(按重要性降序)。
  • 若为 None(默认),不限制数量,仅由 threshold 决定。
  • 注意:当与 threshold 联用时,先按 threshold 筛选,再按 max_features 截断;若 threshold 过高导致候选特征不足,则以实际数量为准。

6、importance_getter = 'auto'【str | callable】:指定如何从 estimator 获取特征重要性。

  • 若为 'auto'(默认),自动检测使用 coef_ 还是 feature_importances_。
  • 若为 str(如 'coef_'),显式指定属性路径。
  • 若为 callable,接收 estimator 并返回形状为 (n_features,) 的重要性数组。
  • 注意:对于复杂模型(如 Pipeline),可使用属性路径如 'named_steps.clf.feature_importances_'。
    注意事项
    - SelectFromModel 是有监督方法(除非 prefit=True 且 estimator 已训练)。
  • 支持稀疏矩阵输入(若 estimator 支持)。
  • 常用于 pipeline 中,实现“训练+特征选择”一体化流程。
  • 相比 RFE,计算开销更低(仅训练一次模型),但可能不如 RFE 精细(因未递归优化子集)。
    函数
    f_classif
    mutual_info_classif
    chi2
    RFECV
    参数
    -estimator:指定模型训练
    -step:每次删除特征数量
    -cv:交叉验证次数
    -n_jobs:多线程执行
    -scoring:模型评估方式。{"r2",...}
    训练
    rfecv.fit(X,y)
    rfecv.transform(X):获取最佳数据X
    属性
    rfecv.n_features_:最佳特征数量
    rfecv.estimator_:获取训练好的最佳模型
    rfecv.ranking_:获得特征评级(1为保留,其余数字删掉的,且越大越不重要)
    rfecv.support_:获取特征是否被保留的bool列表
    rfecv.cv_results_:每次交叉验证获取的得分字典{"mean_test_score",""}
    特征提取 feature_extraction
    文本特征提取 feature_extraction.text
    词频 CountVectorizer
    TF-IDF TfidfVectorizer
    字典特征提取 DictVectorizer
    监督学习 Supervised Learning
    neighbors
    K近邻回归 KNeighborsRegressor
    KNN(K近邻法) KNeighborsClassifier
    参数
    1、n_neighbors = 5【int】:用于投票的邻居数量 k。
  • 较小的 k(如 1)对噪声敏感但能捕捉局部结构;较大的 k 可平滑决策边界但可能忽略局部模式。
  • 注意:k 不应大于训练样本总数;通常建议为奇数以避免二分类中的平票。

2、weights = 'uniform'【str | callable】:预测时邻居的权重策略。

  • 若为 'uniform',所有邻居权重相等。
  • 若为 'distance',权重与距离成反比(即 weight = 1 / distance),近邻影响更大。
  • 若为 callable,需提供一个函数,接收距离数组并返回权重数组,例如 lambda d: 1 / (d + 1e-8)。
  • 注意:使用 'distance' 可提升对不均衡分布或噪声的鲁棒性;自定义函数需处理零距离情况。

3、algorithm = 'auto'【str】:用于计算最近邻的算法。

  • 可选值:'auto'、'ball_tree'、'kd_tree'、'brute'。
  • 'auto':根据数据特征自动选择最优算法(通常对小数据用 brute,高维用 brute,低维中等规模用 kd_tree 或 ball_tree)。
  • 'kd_tree':适用于低维连续数据(维度 < 20)。
  • 'ball_tree':适用于非均匀分布或高维数据,支持任意距离度量。
  • 'brute':暴力搜索,适用于小数据集或无法构建树结构的距离(如 precomputed)。
  • 注意:若 metric='precomputed',必须使用 algorithm='brute'。

4、leaf_size = 30【int】:树类算法(kd_tree 或 ball_tree)中叶节点的最大样本数。

  • 影响构建树的时间和查询速度;较小值加快查询但增加树深度和内存消耗。
  • 对 brute 算法无效。
  • 注意:通常无需调整,默认 30 在大多数场景下表现良好。

5、p = 2【int】:Minkowski 距离的幂参数。

  • 当 metric='minkowski' 时生效。
  • p=1 表示曼哈顿距离(L1);p=2 表示欧氏距离(L2);p≥1 为有效 Minkowski 距离。
  • 注意:若 metric 不是 'minkowski',此参数可能被忽略(除非 metric 显式依赖 p)。

6、metric = 'minkowski'【str | callable】:计算样本间距离的度量方式。

  • 常见字符串选项:'euclidean'、'manhattan'、'chebyshev'、'minkowski'、'cosine' 等(详见 sklearn.neighbors.VALID_METRICS)。
  • 若为 'precomputed',则 X 在 fit 时必须是方阵(n_samples × n_samples),表示预先计算好的距离矩阵。
  • 若为 callable,需接受两个一维数组作为输入并返回一个标量距离值。
  • 注意:某些 metric(如 'cosine')对稀疏矩阵支持有限;'precomputed' 要求特殊输入格式。

7、metric_params = None【dict | None】:传递给距离度量函数的额外关键字参数。

  • 例如,若使用 'mahalanobis' 距离,需通过 metric_params={'V': covariance_matrix} 提供协方差矩阵。
  • 多数常用 metric(如 euclidean)不需要此参数。
  • 注意:参数必须与所选 metric 兼容,否则会报错。

8、n_jobs = None【int | None】:并行计算时使用的 CPU 核心数

  • 注意:仅在预测(predict、predict_proba 等)阶段加速;fit 阶段通常不并行(因只需存储数据)。
    方法
    knn.predict_proba(X_test)
    linear_model线性训练模型
    线性回归 LinearRegression
    参数
    1、fit_intercept = True【bool】:是否计算模型的截距项(即偏置项 b,使得模型为 y = Xw + b)。
  • 若为 False,则强制模型通过原点(b = 0),即 y = Xw。
  • 注意:当数据已中心化(各特征均值为0)或理论要求无截距时,可设为 False;否则通常应保留 True。

2、copy_X = True【bool】:是否在拟合前复制输入特征矩阵 X。

  • 若为 True(默认),原始 X 不会被修改。
  • 若为 False,则可能对 X 进行原地操作(例如中心化时),以节省内存。
  • 注意:仅当 fit_intercept=True 且 X 为 array-like 时才可能修改 X;对稀疏矩阵无效(始终复制)。

3、n_jobs = None【int | None】:用于计算的并行任务数(仅在多输出回归时生效)

  • 注意:单输出回归(y 为一维)时此参数无效;仅当 y 为二维(多个目标变量)时并行加速才起作用。

4、positive = False【bool】:是否强制回归系数(权重 w)为非负值。

  • 若为 False(默认),系数可正可负。
  • 若为 True,则求解带非负约束的最小二乘问题(使用 scipy.optimize.nnls)。
  • 注意:启用后计算开销增大;适用于物理意义要求系数非负的场景(如光谱分解、成分分析)。
    正则化线性回归
    岭回归 Ridge
    Lasso回归 Lasso
    弹性网络 ElasticNet
    逻辑斯蒂回归 LogisticRegression
    参数
    参数:
    1、penalty = 'l2'【str】:正则化类型。
  • 可选值:'l1'、'l2'、'elasticnet'、'none'。
  • 'l2'(默认):Ridge 正则化,对所有系数施加平方惩罚,保持所有特征但缩小其权重。
  • 'l1':Lasso 正则化,可将部分系数压缩至 0,实现稀疏性和特征选择。
  • 'elasticnet':L1 与 L2 的混合,需配合 l1_ratio 使用。
  • 'none':无正则化(仅当 solver 支持时可用,如 'saga'、'lbfgs' 等)。
  • 注意:不同 solver 对 penalty 的支持不同(见 solver 参数说明)。

2、dual = False【bool】:是否使用对偶形式求解(仅适用于 penalty='l2' 且 solver='liblinear')。

  • 若为 True,求解对偶问题;通常仅在 n_samples < n_features 时更高效。
  • 默认 False,推荐保持默认,除非明确知道对偶形式更适合当前数据规模。
  • 注意:当 penalty ≠ 'l2' 或 solver ≠ 'liblinear' 时,此参数无效且必须为 False。

3、tol = 1e-4【float】:优化算法的收敛容忍度。

  • 当损失函数变化小于 tol 时,认为已收敛。
  • 注意:不同 solver 的收敛行为略有差异,但 tol 普遍适用。

4、C = 1.0【float】:正则化强度的倒数(即 λ = 1/C)。

  • 必须 > 0。
  • C 越大,正则化越弱,模型越复杂(可能过拟合);C 越小,正则化越强,模型越简单(可能欠拟合)。
  • 注意:与 sklearn 中其他正则化模型(如 SVC)一致,C 是“逆正则强度”。

5、fit_intercept = True【bool】:是否计算截距项(偏置 b)。

  • 若为 True(默认),模型包含 b,即决策函数为 Xw + b。
  • 若为 False,则强制 b = 0。
  • 注意:当数据已中心化或理论要求无截距时可设为 False。

6、intercept_scaling = 1.0【float】:仅在 solver='liblinear' 且 fit_intercept=True 时生效。

  • 为提升数值稳定性,将截距视为一个额外特征,其值固定为 intercept_scaling。
  • 默认为 1.0;若正则化过强导致截距被过度压缩,可适当增大该值(如 100)。
  • 注意:对其他 solver 无效。

7、class_weight = None【dict | str | None】:类别权重,用于处理不平衡分类。

  • 若为 None(默认),所有类别权重相等。
  • 若为 'balanced',自动按类别频率反比设置权重:w_c = n_samples / (n_classes * n_samples_c)。
  • 若为 dict(如 {0: 1, 1: 10}),显式指定每个类别的权重。
  • 注意:高权重类别在损失函数中贡献更大,有助于提升少数类召回率。

8、random_state = None【int | RandomState | None】:控制随机性的种子。

  • 仅当 solver 为 'sag'、'saga' 或 'liblinear' 且 warm_start=False 时影响结果(用于打乱数据或初始化)。
  • 若为 int(如 42),确保结果可复现。
  • 注意:'lbfgs' 和 'newton-cg' 为确定性算法,不受 random_state 影响。

9、solver = 'lbfgs'【str】:用于优化的算法。

  • 可选值及支持情况:
    • 'lbfgs'(默认):支持 'l2'、'none';适用于中小数据集;多分类使用 one-vs-rest(OvR)或 multinomial。
    • 'liblinear':支持 'l1'、'l2';仅支持 OvR 多分类;适合小数据集。
    • 'newton-cg':支持 'l2'、'none';适合多分类 multinomial。
    • 'sag':支持 'l2'、'none';适合大数据集(随机平均梯度)。
    • 'saga':支持 'l1'、'l2'、'elasticnet'、'none';是 'sag' 的改进版,支持非光滑 L1。
  • 注意:对于大规模数据,推荐 'saga';对于多分类且需 multinomial 损失,避免 'liblinear'。

10、max_iter = 100【int】:最大迭代次数。

  • 若未在 max_iter 内收敛,会抛出 ConvergenceWarning。
  • 注意:不同 solver 的迭代成本不同,'sag'/'saga' 每次迭代更快。

11、multi_class = 'auto'【str】:多分类策略。

  • 'ovr'(One-vs-Rest):为每个类别训练一个二分类器。
  • 'multinomial':使用 softmax 损失直接优化多类概率(需 solver 支持)。
  • 'auto'(默认):当 solver='liblinear' 时用 'ovr';否则若类别数 > 2 则用 'multinomial',否则 'ovr'。
  • 注意:'multinomial' 通常性能更好,但计算开销略高。

12、verbose = 0【int】:日志输出级别(仅对 'liblinear' 和 'lbfgs' 有效)。

13、warm_start = False【bool】:是否使用前一次拟合的解作为初始化。

  • 若为 True,可在增量学习中复用已有系数。
  • 注意:仅部分 solver(如 'lbfgs'、'sag'、'saga')支持;'liblinear' 不支持。

14、n_jobs = None【int | None】:并行任务数。

15、l1_ratio = None【float | None】:Elastic-Net 混合比例(仅当 penalty='elasticnet' 时有效)。

  • 取值范围 [0, 1]。
  • l1_ratio=0 等价于 L2;l1_ratio=1 等价于 L1。
  • 默认 None;若 penalty='elasticnet' 但未设置 l1_ratio,会报错。
  • 注意:仅 'saga' solver 支持 elasticnet。
    梯度下降 SGDRegressor
    参数:
    1、loss = 'squared_error'【str】:待最小化的损失函数类型。
  • 'squared_error'(默认):普通最小二乘损失(L2 损失),即 (y - y_pred)²。
  • 'huber':Huber 损失,对异常值鲁棒;需配合 epsilon 参数。
  • 'epsilon_insensitive':ε-不敏感损失,用于支持向量回归(SVR)风格;预测误差小于 epsilon 时不惩罚。
  • 'squared_epsilon_insensitive':ε-不敏感损失的平方版本。
  • 注意:不同损失函数适用于不同噪声结构;'squared_error' 最常用,'huber' 适合含异常值数据。

2、penalty = 'l2'【str】:正则化项类型。

  • 'l2'(默认):Ridge 正则化(权重平方和)。
  • 'l1':Lasso 正则化(权重绝对值和),可产生稀疏解。
  • 'elasticnet':L1 与 L2 的组合,需配合 l1_ratio 使用。
  • 'none':无正则化。

3、alpha = 0.0001【float】:正则化强度(λ),必须 ≥ 0。

  • 值越大,正则化越强,系数越小(甚至为零)。默认值较小,适用于大多数场景;可通过交叉验证调优。
  • 注意:与 LogisticRegression 不同,此处 alpha 直接对应正则强度(而非其倒数)。

4、l1_ratio = 0.15【float】:Elastic-Net 中 L1 正则所占比例(仅当 penalty='elasticnet' 时有效)。

  • 取值范围 [0, 1]。l1_ratio=0 → 纯 L2;l1_ratio=1 → 纯 L1。若 penalty ≠ 'elasticnet',此参数被忽略。

5、fit_intercept = True【bool】:是否拟合截距项(偏置 b)。

  • 注意:当特征已中心化时可设为 False。

6、max_iter = 1000【int】:最大迭代次数(即遍历数据的最大轮数)。

  • SGD 通常需要多轮遍历才能收敛。若未收敛,会抛出 ConvergenceWarning;可适当增加。
  • 注意:实际更新次数 = max_iter × n_samples。

7、tol = 1e-3【float | None】:收敛容忍度。

  • 若连续两次迭代的损失变化 < tol,则提前停止。
  • 设为 None 可禁用早停,强制运行 max_iter 轮。
  • 注意:tol 过小可能导致不必要的长时间训练。

8、shuffle = True【bool】:每轮迭代前是否打乱训练数据。

9、verbose = 0【int】:日志输出级别。

10、epsilon = 0.1【float】:用于 'huber'、'epsilon_insensitive' 和 'squared_epsilon_insensitive' 损失的阈值。

  • 在 Huber 损失中,误差 ≤ epsilon 时使用平方损失,否则使用线性损失。
  • 在 ε-不敏感损失中,误差 ≤ epsilon 时不计入损失。
  • 必须 > 0。
  • 注意:需根据目标变量 y 的尺度合理设置(如 y 在 [0,100],epsilon=1.0 可能更合适)。

11、random_state = None【int | RandomState | None】:控制随机性的种子
12、learning_rate = 'invscaling'【str】:学习率调度策略。

  • 'constant':使用 eta = learning_rate(需通过 eta0 设置)。
  • 'optimal':动态计算最优学习率(基于 t 和 alpha)。
  • 'invscaling'(默认):eta = eta0 / t^power_t,随迭代次数衰减。
  • 'adaptive':当 loss 停止下降时,将 eta 减半(需配合 early stopping)。
  • 注意:不同策略影响收敛速度和稳定性;'optimal' 通常表现良好。

13、eta0 = 0.01【float】:初始学习率。

  • 对 'constant'、'invscaling'、'adaptive' 有效。
  • 默认 0.01;若 loss 震荡不收敛,可尝试减小(如 0.001)。
  • 注意:'optimal' 策略忽略 eta0。

14、power_t = 0.25【float】:'invscaling' 学习率策略中的指数参数。

  • 学习率衰减公式:eta = eta0 / t^power_t。
  • 值越大,衰减越快。
  • 默认 0.25,适用于多数场景。

15、early_stopping = False【bool】:是否启用早停。

  • 若为 True,保留一部分训练数据作为验证集,当验证损失不再改善时提前停止。
  • 验证集比例由 validation_fraction 控制。
  • 注意:启用后实际训练样本减少,但可防止过拟合。

16、validation_fraction = 0.1【float】:用于早停的验证集比例(仅当 early_stopping=True 时有效)。

  • 必须 ∈ (0, 1)。
  • 默认 10% 数据用于监控验证损失。
  • 注意:仅在训练开始时划分一次,不参与模型训练。

17、n_iter_no_change = 5【int】:早停或 'adaptive' 学习率中“无改进”的容忍轮数。

  • 若连续 n_iter_no_change 轮验证损失未改善,则停止训练。
  • 默认 5;可增大以避免过早停止。

18、warm_start = False【bool】:是否使用前次训练的系数作为初始化。

  • 若为 True,可在新数据上继续训练(适用于在线学习)。
  • 注意:需确保新数据特征维度与之前一致。

19、average = False【bool | int】:是否使用 averaged SGD(ASGD)。

  • 若为 True 或正整数,启用 ASGD:对权重进行滑动平均,提升泛化能力。
    • 若为 int(如 10),表示从第 10 次更新开始平均。
  • 注意:ASGD 通常更稳定,尤其在小学习率下。
    支持向量机(Support Vector Machine) SVM
    分类器
    SVC
    C=1.0:惩罚参数,控制误分类的惩罚程度
    kernel='rbf':核函数{'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}
    degree=3:多项式核的次数
    gamma='scale':核系数,对于'rbf', 'poly'和'sigmoid'
    coef0=0.0
    shrinking=True
    probability=False:是否启用概率估计
    tol=0.001
    cache_size=200
    class_weight=None
    verbose=False
    max_iter=-1
    decision_function_shape='ovr':多分类策略{'ovr','ovo'}
    break_ties=False
    random_state=None
    LinearSVC
    penalty='l2'
    loss='squared_hinge'
    dual=True
    tol=0.0001
    C=1.0
    multi_class='ovr'
    fit_intercept=True
    intercept_scaling=1
    class_weight=None
    verbose=0
    random_state=None
    max_iter=1000
    回归器
    SVR
    LinearSVR
    朴素贝叶斯 naive_bayes
    分类朴素贝叶斯 CategoricalNB
    定义
    CategoricalNB():朴素贝叶斯分类器的一种变体,专为离散型(类别型)特征设计,假设每个特征的取值来自有限的分类集合(如 {0, 1, 2} 或 {'red', 'green', 'blue'}),并基于多项分布建模特征条件概率。适用于文本分类(如词袋模型)、调查问卷分析等场景。
    属性
    category_count_ -> list of array:每个特征每个类别各个值出现次数
    class_count_ -> array:标签频数

class_log_prior_ -> list:标签出现概率【自然对数】
feature_log_prob_ -> list of array:各特征类别出现概率【+平滑因子的自然对数】

feature_names_in_ ->-list:各特征名称
n_categories_ -> list:各特征种类数量
n_features_in_ -> list:标签种类数量
方法
参数
1、alpha = 1.0【float】:拉普拉斯平滑(Laplace smoothing)参数,用于避免零概率问题。
2、fit_prior = True【bool】:是否学习类别的先验概率 P(y)。
3、class_prior = None【ArrayLike | None】:显式指定类别的先验概率。

4、min_categories = None【int | ArrayLike | None】:每个特征的最小类别数(用于确保概率表维度一致)。

  • 若为 None(默认),自动从训练数据推断每个特征的类别数。
  • 若为 int(如 5),所有特征至少有该数量的类别(缺失类别视为概率为0但经平滑后非零)。
  • 若为 ArrayLike(如 [3, 5, 4]),分别为每个特征指定最小类别数;长度必须等于 n_features。
  • 注意:此参数可防止测试时出现训练未见的新类别索引超出范围(但不能处理真正的新类别值);实际中更推荐使用 OrdinalEncoder 配合固定 categories。
    注意事项
    - CategoricalNB 要求输入 X 为整数编码的类别型数据,且每个特征的取值必须是 0 到 K−1 的连续整数(K 为该特征的类别数)。
  • 不支持负值或浮点数(即使表示类别);需预先通过 LabelEncoder 或 OrdinalEncoder 编码。
  • 每个特征独立建模条件概率 P(x_j = k | y = c),符合“朴素”条件独立假设。
  • 拟合后可通过 .category_count_ 查看每个类别下各特征取值的频次,.feature_log_prob_ 获取对数条件概率。
  • 与 MultinomialNB 不同:CategoricalNB 允许每个特征有独立的类别空间(如特征1有3类,特征2有5类),而 MultinomialNB 假设所有特征共享同一词汇表(常用于文档词频)。
    高斯朴素贝叶斯 GaussianNB
    定义
    MultinomialNB():朴素贝叶斯分类器的一种,专为离散计数型特征(如词频、TF-IDF、直方图)设计,假设特征服从多项分布。广泛应用于文本分类(如垃圾邮件检测、情感分析)等场景,其中每个样本是词汇表中词项的出现次数。
    参数
    1、alpha = 1.0【float】:加法平滑(Laplace/Lidstone smoothing)参数,用于避免零概率。
    2、fit_prior = True【bool】:是否从训练数据中学习类别的先验概率 P(y)。
    3、class_prior = None【ArrayLike | None】:显式指定类别的先验概率。
    注意事项
    - MultinomialNB 要求输入 X 为非负整数或浮点数(如词频、TF-IDF 权重),但内部将其视为计数。
  • 不适用于负值特征(如标准化后的数据);若需处理实数值,可考虑 GaussianNB 或先离散化。
  • 假设所有特征共享同一“词汇表”(即每个特征代表一个词项),且样本是这些词项的频次向量。
  • 与 CategoricalNB 的区别:
    • MultinomialNB:特征是频次/计数,所有样本共享特征空间(如文档-词矩阵)。
    • CategoricalNB:特征是类别标签,每个特征可有独立类别集(如颜色、尺寸等属性)。
  • 拟合后可通过 .feature_log_prob_ 获取 log P(x_i | y=c),.class_log_prior_ 获取 log P(y=c)。
  • 对稀疏矩阵(如 scipy.sparse)高效支持,适合高维文本数据。
    多项式朴素贝叶斯 MultinomialNB
    定义
    MultinomialNB():基于多项分布假设的朴素贝叶斯分类器,专为处理非负离散特征(如词频、计数、TF-IDF 权重等)而设计,广泛应用于文本分类任务(如新闻分类、情感分析、垃圾邮件识别),其核心思想是利用贝叶斯定理结合“特征条件独立”假设进行高效概率建模。
    属性
    class_conut_:每个类别的频数
    feature_count_:每个样本为1的频数
    参数
    1、alpha = 1.0【float】:平滑参数(Lidstone 或 Laplace 平滑),用于避免训练集中未出现的特征-类别组合导致零概率。
    2、fit_prior = True【bool】:是否从训练数据中估计类别的先验概率 P(y)。
    3、class_prior = None【ArrayLike | None】:显式指定每个类别的先验概率。
    注意事项
    - 输入要求:X 必须为非负数值矩阵(整数或浮点数),常见于词袋模型(Bag-of-Words)、n-gram 计数或 TF-IDF 表示。不支持负值(如标准化后的数据)。
  • 概率模型:假设给定类别 y=c 下,特征向量 x 服从多项分布,即
    ( P(x|y=c) \propto \prod_{i=1}^{n_features} P(x_i|y=c)^{x_i} )。
  • 与 CategoricalNB 的区别
    • MultinomialNB:适用于频次型特征(如“单词出现次数”),所有样本共享同一特征空间(如固定词汇表)。
    • CategoricalNB:适用于类别型特征(如“颜色=红/绿/蓝”),每个特征可有独立取值集合。
  • 输出:支持 predict() 返回类别标签,predict_proba() 返回后验概率。
  • 高效性:对稀疏矩阵(如 scipy.sparse.csr_matrix)高度优化,适合高维文本数据。
  • 拟合后属性
    • feature_log_prob_:形状 (n_classes, n_features),存储 log P(x_i | y=c);
    • class_log_prior_:形状 (n_classes,),存储 log P(y=c);
    • n_features_in_:输入特征数量。
      互补朴素贝叶斯 ComplementNB【优化】
      定义
      变量X为频数【大于等于0的浮点数】,计算y=0,1的总频数,计算不为y!=0时xi!=0的概率
      伯努利朴素贝叶斯 BernoulliNB
      定义
      BernoulliNB():基于伯努利分布假设的朴素贝叶斯分类器,专为二值特征(0/1)设计,适用于每个特征表示“是否出现”(如词项在文档中是否存在)的场景。与 MultinomialNB 不同,它不仅考虑特征为 1 的情况,也显式建模特征为 0 的概率,因此对短文本或稀疏二值数据表现更佳。
      参数
      1、alpha = 1.0【float】:平滑参数(Laplace 平滑),用于避免零概率。
      2、binarize = 0.0【float | None】:用于将连续或计数型输入转换为二值特征的阈值。
  • 若为 float(如 0.5),则 X 中 ≥ binarize 的值转为 1,否则为 0。
  • 若为 None,则假定输入 X 已为二值(0/1),不进行转换。
  • 默认 0.0:适用于原始计数数据(如词频),将“出现过”(>0)视为 1,“未出现”(=0)视为 0。
  • 注意:若输入已是二值数据,建议设 binarize=None 以避免冗余操作。

3、fit_prior = True【bool】:是否从训练数据中学习类别先验概率 P(y)。
4、class_prior = None【ArrayLike | None】:显式指定类别的先验概率。
注意事项
- 适用场景:文本分类中使用“词项存在性”而非“词频”时(如短文本、关键词匹配);也可用于任意二值特征数据集。

  • 与 MultinomialNB 的区别
    • BernoulliNB 显式建模 P(x_i=0 | y=c) 和 P(x_i=1 | y=c),适合二值特征
    • MultinomialNB 假设特征为非负计数,仅建模出现次数,忽略未出现特征的概率细节。
  • 输入要求:X 应为数值型;若 binarize 不为 None,可接受非负实数(如 TF-IDF、原始计数);若 binarize=None,则应为严格 0/1。
  • 概率模型
    ( P(x|y=c) = \prod_{i=1}^{n_features} P(x_i=1|y=c)^{x_i} \cdot P(x_i=0|y=c)^{1 - x_i} )
  • 拟合后属性
    • feature_log_prob_:形状 (n_classes, n_features),存储 log P(x_i=1 | y=c);
    • 注意:P(x_i=0 | y=c) = 1 − P(x_i=1 | y=c),无需单独存储。
  • 注意事项:对高维稀疏二值数据高效;不适用于连续特征(除非先二值化)。
    属性
    feature_count_:出现次数
    class_log_prior_:类别概率【对数形式】
    feature_log_prob_:每个特征不同类别为1的概率【经过平滑因子】
    局部异常因子 LocalOutlierFactor
    决策树 tree
    BaseDecisionTree()
    分类任务
    DecisionTreeClassifier
    定义
    DecisionTreeClassifier():基于决策树算法的分类器,通过递归地选择最优特征和切分点,构建一棵树形结构模型,用于对样本进行分类。具有无需特征缩放、可解释性强、能自动处理特征交互和非线性关系等优点,广泛应用于规则提取、基学习器(如随机森林)及快速原型开发。
    注意事项
    - 输入要求:支持数值型特征;类别型特征需预先编码(如 OrdinalEncoder)。不支持缺失值(NaN)。
  • 输出:支持 predict() 返回类别标签,predict_proba() 返回类别概率(基于叶节点中各类别比例)。
  • 拟合后属性
    • feature_importances_:各特征的重要性(基于不纯度减少总量归一化);
    • tree_:底层 Tree 对象,包含所有节点信息;
    • classes_:类别标签列表;
    • n_classes_:类别数量。
  • 优点:可解释性强(可可视化)、无需特征缩放、自动处理特征交互。
  • 缺点:易过拟合(方差高)、对数据扰动敏感;通常作为集成方法(如 RandomForest、GradientBoosting)的基学习器使用效果更佳。
  • 注意:决策树本身不保证全局最优解,其结构依赖于贪心分割策略。
    参数
    1、criterion = 'gini'【str】:衡量分割质量的函数。
  • 'gini'(默认):使用基尼不纯度(Gini impurity),计算快,适合大多数场景。
  • 'log_loss'(旧称 'entropy'):使用信息增益(基于香农熵),倾向于生成更平衡但更深的树。
  • 注意:两者在实践中性能差异通常不大;'gini' 略快,'log_loss' 对概率估计可能更平滑。

2、splitter = 'best'【str】:每个节点选择分割策略的方式。

  • 'best'(默认):遍历所有特征和所有可能切分点,选择最优分割(计算开销大但效果好)。
  • 'random':在每个节点随机选择一个特征子集,并从中选最佳切分点(引入随机性,常用于集成方法如 ExtraTrees)。
  • 注意:'random' 可加速训练并增加树的多样性,适用于大数据或作为集成基学习器。

3、max_depth = None【int | None】:树的最大深度。

  • 若为 None(默认),不限制树的生长,节点会持续分裂直至所有叶子纯净或满足 min_samples_split/min_samples_leaf。
  • 注意:是控制模型复杂度的关键参数;小值导致欠拟合,大值易过拟合。

4、min_samples_split = 2【int | float】:内部节点再分裂所需的最小样本数,超过该值时继续分裂。

  • 若为 float,表示占总样本的比例(向下取整,至少为 2)。
  • 注意:增大该值可抑制过拟合,尤其在噪声数据中。

5、min_samples_leaf = 1【int | float】:叶节点所需的最小样本数。

  • 若为 float,表示比例(至少为 1)。
  • 注意:增大可平滑决策边界,提升泛化能力。

6、min_weight_fraction_leaf = 0.0【float】:叶节点所需最小权重总和占总权重的比例。

  • 仅当样本有权重(sample_weight)时生效。
  • 默认 0.0 表示无限制。
  • 注意:与 min_samples_leaf 互斥(若同时设置,以有效样本数为准)。

7、max_features = None【int | float | str | None】:寻找最佳分割时考虑的特征数量。

  • 若为 int,固定数量。
  • 若为 float,按比例选取。
  • 若为 'sqrt' 或 'auto',等价于 sqrt(n_features)。
  • 若为 'log2',等价于 log2(n_features)。
  • 若为 None(默认),使用全部特征。
  • 注意:减小 max_features 可降低方差、提升泛化,是随机森林的核心机制之一。

8、random_state = None【int | RandomState | None】:控制随机性的种子。

  • 影响 splitter='random' 时的特征选择、max_features < n_features 时的特征子集采样,以及多输出问题中的输出排序。
  • 注意:当 splitter='best' 且 max_features=None 时,模型完全确定,random_state 无效。

9、max_leaf_nodes = None【int | None】:最大叶节点数。

  • 若为 int,以最优方式生长树,但不超过指定叶节点数(使用贪心 best-first 策略)。
  • 若为 None(默认),不限制。
  • 注意:提供另一种控制树大小的方式,与 max_depth 互补。

10、min_impurity_decrease = 0.0【float】:分裂所需的最小不纯度减少量。

  • 若某次分裂导致不纯度减少量 ≥ 该值,则允许分裂。
  • 默认 0.0 表示只要能减少不纯度就分裂。
  • 增大该值可提前停止分裂,防止过拟合。
  • 注意:替代了旧版的 min_impurity_split(已弃用)。

11、class_weight = None【dict | str | list | None】:类别权重,用于处理不平衡数据。

  • 若为 None(默认),所有类别权重相等。
  • 若为 'balanced',自动按类别频率反比设置权重:w_c = n_samples / (n_classes * n_samples_c)。
  • 若为 dict(如 {0: 1, 1: 5}),显式指定每个类别的权重。
  • 若为 list of dicts(多输出),为每个输出指定权重字典。
  • 注意:高权重类别在分裂时更具影响力,有助于提升少数类召回率。

12、ccp_alpha = 0.0【float】:最小成本复杂度剪枝(Minimal Cost-Complexity Pruning)的 alpha 参数。

  • ≥0 的值会触发后剪枝,移除对整体代价贡献小于 alpha 的子树。
  • 默认 0.0 表示不剪枝。
  • 增大 alpha 会生成更小、更简单的树。
  • 注意:可通过交叉验证选择最优 ccp_alpha,实现自动剪枝。
    决策树回归 DecisionTreeRegressor
    集成学习 ensemble
    分类器
    GBM梯度提升分类器 GradientBoostingClassifier
    XGBoost极端梯度提升 HistGradientBoostingClassifier
    VotingClassifier
    StackingClassifier
    GBDT(梯度提升决策树,Grandient Boosted Decision Trees)
    AdaBoost
    分类任务 AdaBoostClassifier
    回归任务
    Bagging
    回归任务
    分类任务
    Stacking
    回归任务
    分类任务
    Random Forest
    回归任务
    随机森林回归 RandomForestRegressor
    分类任务
    随机森林分类器 RandomForestClassier
    参数:
    1、n_estimators = 100【int】:森林中决策树的数量。

2、criterion = 'gini'【str】:衡量分割质量的函数。

  • 'gini'(默认):使用基尼不纯度。
  • 'log_loss'(旧称 'entropy'):使用信息增益(香农熵)。
  • 注意:两者对最终性能影响通常较小;'gini' 计算略快。

3、max_depth = None【int | None】:每棵决策树的最大深度。

  • 若为 None(默认),节点持续分裂直至叶子纯净或满足 min_samples_split/min_samples_leaf。
  • 若为 int(如 10),限制树深度,防止过拟合。
  • 注意:浅树可提升泛化能力,尤其在噪声数据中。

4、min_samples_split = 2【int | float】:内部节点再分裂所需的最小样本数。

  • 若为 int(如 5),至少为 2,表示绝对数量。
  • 若为 float(如 0.05),表示占总样本的比例(向下取整,至少为 2)。
  • 注意:增大该值可抑制过拟合。

5、min_samples_leaf = 1【int | float】:叶节点所需的最小样本数。

  • 若为 int(如 2),表示绝对数量。
  • 若为 float(如 0.01),表示比例(至少为 1)。
  • 默认 1 允许单样本叶节点,易导致过拟合。
  • 注意:增大可平滑决策边界,提升稳定性。

6、min_weight_fraction_leaf = 0.0【float】:叶节点所需最小权重总和占总权重的比例。

  • 仅当样本有权重(sample_weight)时生效。
  • 默认 0.0 表示无限制。
  • 注意:与 min_samples_leaf 互斥(若同时设置,以有效样本数为准)。

7、max_features = 'sqrt'【int | float | str | None】:寻找最佳分割时考虑的特征数量。

  • 若为 int(如 10),固定数量。
  • 若为 float(如 0.5),按比例选取。
  • 若为 'sqrt' 或 'auto'(默认),等价于 sqrt(n_features)。
  • 若为 'log2',等价于 log2(n_features)。
  • 若为 None,使用全部特征(退化为普通 bagging)。
  • 注意:此参数是“随机性”的核心来源之一;减小可降低树间相关性,提升泛化。

8、max_leaf_nodes = None【int | None】:每棵树的最大叶节点数。

  • 若为 int(如 50),以最优方式生长树,但不超过指定叶节点数。
  • 若为 None(默认),不限制。
  • 注意:提供另一种控制树复杂度的方式,与 max_depth 互补。

9、min_impurity_decrease = 0.0【float】:分裂所需的最小不纯度减少量。

  • 若某次分裂导致不纯度减少量 ≥ 该值,则允许分裂。
  • 默认 0.0 表示只要能减少不纯度就分裂。
  • 增大该值可提前停止分裂,防止过拟合。
  • 注意:替代了旧版的 min_impurity_split(已弃用)。

10、bootstrap = True【bool】:是否使用自助采样(bootstrap)构建每棵树。

  • 若为 True(默认),每棵树使用有放回抽样生成训练子集(约 63.2% 原始样本)。
  • 若为 False,则每棵树使用全部训练数据(此时 oob_score 不可用)。
  • 注意:bootstrap 是集成多样性的关键机制之一。

11、oob_score = False【bool】:是否使用袋外(Out-Of-Bag, OOB)样本估计泛化精度。

  • 若为 True,利用未被某棵树采样的样本(OOB 样本)评估模型,无需单独验证集。
  • 若为 False(默认),不计算 OOB 分数。
  • 注意:仅当 bootstrap=True 时有效;拟合后可通过 oob_score_ 和 oob_decision_function_ 访问结果。

12、n_jobs = None【int | None】:并行运行的作业数(即同时训练的树的数量)。
13、random_state = None【int | RandomState | None】:控制随机性的种子。
14、verbose = 0【int】:控制训练过程的日志输出级别。

15、warm_start = False【bool】:是否复用前次训练的树并在此基础上继续添加新树。

  • 若为 True,可在已有森林上增量增加 n_estimators。
  • 若为 False(默认),每次 fit 重新训练整个森林。
  • 注意:适用于逐步调优树数量或在线学习场景。

16、class_weight = None【dict | str | list | None】:类别权重,用于处理不平衡分类。

  • 若为 None(默认),所有类别权重相等。
  • 若为 'balanced',自动按类别频率反比设置权重:w_c = n_samples / (n_classes * n_samples_c)。
  • 若为 dict(如 {0: 1, 1: 5}),显式指定每个类别的权重。
  • 若为 list of dicts(多输出),为每个输出指定权重字典。
  • 注意:高权重类别在每棵树的分裂中更具影响力。

17、ccp_alpha = 0.0【float】:最小成本复杂度剪枝(Minimal Cost-Complexity Pruning)的 alpha 参数。

  • ≥0 的值会对每棵树进行后剪枝,移除对整体代价贡献小于 alpha 的子树。
  • 默认 0.0 表示不剪枝。
  • 增大 alpha 会生成更小、更简单的树。
  • 注意:可结合交叉验证选择最优 ccp_alpha,提升泛化能力。

18、max_samples = None【int | float | None】:每棵树 bootstrap 采样时抽取的样本数量。

  • 若为 int(如 1000),表示绝对数量。
  • 若为 float,表示占总样本的比例。
  • 若为 None(默认),使用全部样本进行 bootstrap(即标准行为)。
  • 注意:当数据集很大时,可设为较小值以加速训练并引入额外随机性。

补充说明:

  • 输入要求:支持数值型特征;类别型特征需预先编码;不支持缺失值(NaN)。
  • 输出:支持 predict() 返回类别标签,predict_proba() 返回类别概率(基于所有树中各类别投票比例)。
  • 拟合后属性
    • feature_importances_:各特征的重要性(基于所有树中该特征引起的平均不纯度减少量);
    • estimators_:包含所有训练好的 DecisionTreeClassifier 实例的列表;
    • classes_:类别标签数组;
    • n_classes_:类别数量;
    • oob_score_(若启用):袋外准确率;
    • oob_decision_function_(若启用):袋外样本的决策函数值。
  • 优点:抗过拟合能力强、无需特征缩放、可处理高维数据、提供特征重要性、对异常值鲁棒。
  • 缺点:模型可解释性低于单棵决策树;预测速度随树数量增加而下降;内存占用较大。
  • 注意:随机森林本身不保证全局最优,但通过集成显著提升了稳定性和泛化性能;常作为 baseline 模型或特征选择工具。
    极端随机树(Extremely Randomized Trees)是随机森林的一种变体,通过在构建每棵决策树时不仅对样本进行自助采样,还对特征分割点进行完全随机选择(而非搜索最优切分),从而进一步增加树之间的多样性、降低方差,并显著提升训练速度。适用于高维数据、快速原型开发及作为集成模型的基学习器。
    分类器 ExtraTreesClassifier
    参数
    参数:
    1、n_estimators = 100【int】:森林中决策树的数量。

2、criterion = 'gini'【str】:衡量分割质量的函数(仅用于计算不纯度,不影响分割点选择)。

  • 'gini'(默认):基尼不纯度。
  • 'log_loss':信息增益(香农熵)。
  • 注意:与 RandomForestClassifier 不同,此处 criterion 不用于选择最佳分割点(因分割点完全随机),仅影响 feature_importances_ 的计算。

3、max_depth = None【int | None】:每棵树的最大深度。

  • 若为 None(默认),节点持续分裂直至叶子纯净或满足 min_samples_split/min_samples_leaf。
  • 若为 int(如 10),限制树深度,防止过拟合。
  • 注意:浅树可提升泛化能力,尤其在噪声数据中。

4、min_samples_split = 2【int | float】:内部节点再分裂所需的最小样本数。

  • 若为 int,至少为2,表示绝对数量。
  • 若为 float(如 0.05),表示占总样本的比例(向下取整,至少为 2),
  • 注意:增大该值可抑制过拟合。

5、min_samples_leaf = 1【int | float】:叶节点所需的最小样本数。

  • 若为 int,表示绝对数量。
  • 若为 float(如 0.01),表示比例(至少为 1)。
  • 注意:增大可平滑决策边界。

6、min_weight_fraction_leaf = 0.0【float】:叶节点所需最小权重总和占总权重的比例。

  • 仅当样本有权重(sample_weight)时生效。
  • 默认 0.0 表示无限制。
  • 注意:与 min_samples_leaf 互斥(以有效样本数为准)。

7、max_features = 'sqrt'【int | float | str | None】:寻找分割时考虑的特征数量。

  • 若为 int(如 10),固定数量。
  • 若为 float(如 0.5),按比例选取。
  • 若为 'sqrt' 或 'auto'(默认),等价于 sqrt(n_features)。
  • 若为 'log2',等价于 log2(n_features)。
  • 若为 None,使用全部特征。
  • 注意:此参数控制每棵树在随机选择特征子集时的大小;是多样性的关键来源之一。

8、max_leaf_nodes = None【int | None】:每棵树的最大叶节点数。

  • 若为 int,以最优方式生长树,但不超过指定叶节点数。
  • 若为 None(默认),不限制。
  • 注意:提供另一种控制树复杂度的方式。

9、min_impurity_decrease = 0.0【float】:分裂所需的最小不纯度减少量。

  • 若某次分裂导致不纯度减少量 ≥ 该值,则允许分裂。
  • 默认 0.0 表示只要能减少不纯度就分裂。
  • 增大该值可提前停止分裂。
  • 注意:尽管分割点随机,仍会检查是否满足此条件(若不满足则不分裂)。

10、bootstrap = False【bool】:是否使用自助采样(bootstrap)构建每棵树。

  • 若为 False(默认),所有树使用完整的训练集(无放回抽样)。
  • 若为 True,则每棵树使用 bootstrap 样本(约 63.2% 原始样本)。
  • 注意:与 RandomForestClassifier 默认使用 bootstrap 不同,ExtraTrees 默认不使用,因其随机性已足够强。

11、oob_score = False【bool】:是否使用袋外(OOB)样本估计泛化精度。

  • 仅当 bootstrap=True 时有效。
  • 若为 True,利用未被某棵树采样的样本评估模型。
  • 注意:因默认 bootstrap=False,通常 oob_score 不可用,除非显式启用 bootstrap。

12、n_jobs = None【int | None】:并行运行的作业数。
13、random_state = None【int | RandomState | None】:控制随机性的种子。
14、verbose = 0【int】:控制训练过程的日志输出级别。

15、warm_start = False【bool】:是否复用前次训练的树并在此基础上继续添加新树。

  • 若为 True,可在已有森林上增量增加 n_estimators。
  • 若为 False(默认),每次 fit 重新训练整个森林。
  • 注意:适用于逐步调优树数量。

16、class_weight = None【dict | str | list | None】:类别权重,用于处理不平衡分类。

  • 若为 None(默认),所有类别权重相等。
  • 若为 'balanced',自动按类别频率反比设置权重。
  • 若为 dict(如 {0: 1, 1: 5}),显式指定每个类别的权重。
  • 若为 list of dicts(多输出),为每个输出指定权重字典。
  • 注意:高权重类别在叶节点统计中占比更高。

17、ccp_alpha = 0.0【float】:最小成本复杂度剪枝(Minimal Cost-Complexity Pruning)的 alpha 参数。

  • 默认 0.0 表示不剪枝。≥0 的值会对每棵树进行后剪枝。
  • 增大 alpha 会生成更小、更简单的树。
  • 注意:可结合交叉验证选择最优 ccp_alpha。

18、max_samples = None【int | float | None】:每棵树 bootstrap 采样时抽取的样本数量(仅当 bootstrap=True 时有效)。

  • 若为 int,表示绝对数量。
  • 若为 float,表示占总样本的比例。
  • 若为 None(默认),使用全部样本进行 bootstrap。
  • 注意:当 bootstrap=False 时,此参数被忽略。
    补充说明:
  • 核心区别:与 RandomForestClassifier 相比,ExtraTreesClassifier 在每个候选特征上不搜索最优分割点,而是从该特征的取值范围内随机选择一个分割阈值,极大减少了计算开销。
  • 优点:训练速度极快、对高维数据鲁棒、方差低、不易过拟合。
  • 缺点:单棵树偏差可能略高(因分割点非最优),但集成后整体性能通常优异。
  • 适用场景:快速建模、高维稀疏数据、作为 stacking 的基模型、特征重要性初筛。
    拟合后属性
    - feature_importances_:基于不纯度减少量计算的特征重要性;
    • estimators_:所有训练好的决策树列表;
    • classes_n_classes_:类别信息;
    • oob_score_(若启用):袋外准确率。
      优缺点
      Boosting
      回归任务
      分类任务
      Voting
      回归任务
      分类任务
      回归器
      梯度提升回归 GradientBoostingRegressor
      异常检测
      隔离森林 IsolationForest
      神经网络 neural_network
      回归器
      MLP多层感知回归器 MLPRegressor
      分类器
      MLP多层感知分类器 MLPClassifier
      无监督学习
      聚类 cluster
      K-Means聚类 KMeans
      参数
      1、n_clusters = 8【int】:要形成的簇(聚类)数量 k。
  • 是 KMeans 最关键的超参数,通常需通过肘部法则(Elbow Method)、轮廓系数(Silhouette Score)或领域知识确定。
  • 注意:若设置过大,可能导致过拟合;过小则欠拟合。

2、init = 'k-means++'【str | ArrayLike】:初始化簇中心的方法。

  • 若为 'k-means++'(默认),使用智能初始化策略:第一个中心随机选,后续中心按与已有中心距离的概率分布选择,有效避免坏的局部最优。
  • 若为 'random',从数据中随机选择 k 个样本作为初始中心。
  • 若为 ArrayLike(形状 (n_clusters, n_features)),直接指定初始中心坐标。
  • 注意:'k-means++' 通常收敛更快、结果更优;自定义 init 需确保维度匹配。

3、n_init = 'auto'【int | str】:使用不同初始中心运行算法的次数(取损失函数最优的一次作为最终结果)。

  • 若为 'auto'(默认,sklearn ≥ 1.4),当 init='k-means++' 时自动设为 1(因 k-means++ 已很稳定);当 init='random' 时设为 10。
  • 注意:增大 n_init 可提升结果稳定性,但增加计算开销;配合 random_state 可复现结果。

4、max_iter = 300【int】:单次运行的最大迭代次数。

  • 每次迭代更新簇分配和中心位置。

5、tol = 1e-4【float】:收敛判定的相对容差。

  • 当簇中心位移的 Frobenius 范数小于 tol 时,认为已收敛。

6、verbose = 0【int】:日志输出级别。

7、random_state = None【int | RandomState | None】:控制随机性的种子。

8、copy_x = True【bool】:是否在聚类前复制输入数据 X。

  • 若为 False,则可能对 X 进行原地中心化操作(仅当 algorithm='elkan' 且 X 为稠密数组时)。
  • 注意:对稀疏矩阵无效(始终复制);通常建议保持 True 以避免副作用。

9、algorithm = 'lloyd'【str】:使用的 KMeans 算法变体。

  • 'lloyd'(默认,旧称 'elkan' 在早期版本中为另一实现):标准 EM 风格迭代,适用于大多数场景。
  • 'elkan':利用三角不等式加速,仅适用于稠密数据和欧氏距离,但在某些情况下反而更慢(sklearn ≥ 1.1 后已弃用,实际回退到 'lloyd')。
  • 'auto':自动选择(当前等同于 'lloyd')。
  • 注意:目前推荐使用默认 'lloyd';'elkan' 已基本不再维护。
    注意事项
    - KMeans 假设簇是凸形且各向同性的,对非球形簇或尺度差异大的特征效果不佳(建议先标准化)。
  • 使用欧氏距离(L2),对异常值敏感。
  • 支持稀疏矩阵输入(自动使用高效实现)。
  • 拟合后可通过 .cluster_centers_ 获取中心坐标,.labels_ 获取簇标签,.inertia_ 获取总簇内平方和(WCSS)。
    小批次K-Means聚类 MiniBatchKMeans
    层次聚类 AgglomerativeClustering
    DBSCAN聚类 DBSCAN
    OPTICS聚类 OPTICS
    混合模型 mixture
    GMM高斯混合模型 GaussianMixture
    模型选择与评估 metrics
    pairwise_distances_
    分类评估指标
    auc
    precision_recall_curve
    ROC曲线 roc_curve
    ROC AUC分数(二分类) roc_auc_score
    准确率 accuracy_score
    F1分数 f1_score
    召回率 recall_score
    精确率 precision_score
    混淆矩阵 confusion_matrix
    分类报告 classification_report
    回归评估
    MSE均方误差 mean_squared_error
    均方根误差np.sqrt(mse)
    MAE平均绝对误差 mean_absolute_error
    R²分数 r2_score【与线性回归模型自带的score方法计算方式一致】
    聚类评估指标
    轮廓系数 silhouette_score【不需要真实标签】
    Davies-Bouldin指数 davies_bouldin_score
    Calinski-Harabasz指数 calinski_harabasz_score
    调整兰德指数 adjusted_rand_score【需要真实标签】
    归一化互信息 normalized_mutual_info_score【需要真实标签】
    model_selection
    切分数据集 train_test_split
    参数
    -X,y
    -train_size/test_size
    -shuffle=True
    -random_state
    数据切分:若所有数据都进行训练,则难以再次获取数据进行预测评估
    洗牌:数据顺序可能会影响到数据分布,因此需要洗牌。
    随机种子:设定种子用于操作重现
    RepeatedStratifiedKFold
    多指标交叉验证 cross_validate
    交叉验证
    K折交叉验证
    K折交叉验证 KFold
    分层K折交叉验证 StratifiedKFold【保持类别比例】
    交叉验证评估模型 cross_val_score
    留一法 LeaveOneOut
    留P法 LeavePOut
    随机分割交叉验证 ShuffleSplit
    时间序列交叉验证 TimeSeriesSplit
    超参数调优
    网格搜索 GridSearchCV
    定义
    GridSearchCV():用于系统性地遍历指定的超参数组合,通过交叉验证评估每组参数的性能,从而自动选择最优超参数配置。是模型调优的核心工具,适用于任何符合 scikit-learn 接口的估计器。
    定义参数空间
    param_dist = {"超参数":[待选参数列表]}
    参数
    1、estimator【object】:待调优的估计器。
  • 必须实现 fit 方法,并兼容 scoring 指标。
  • 可为单个模型或包含预处理步骤的 Pipeline。
  • 注意:GridSearchCV 会在内部对 estimator 的副本进行训练,不会修改原始对象。

2、param_grid【dict | list[dict]】:要搜索的超参数网格。

  • 若为 dict(如 {'C': [0.1, 1, 10], 'penalty': ['l1', 'l2']}),通过笛卡尔积组合定义单个搜索空间。
  • 若为 list[dict](如 [{'kernel': ['linear'], 'C': [1, 10]}, {'kernel': ['rbf'], 'C': [1, 10], 'gamma': [0.001, 0.01]}]),支持不同参数组合(例如不同 kernel 对应不同参数)。
  • 键必须是 estimator 的有效参数名(支持双下划线嵌套,如 'clf__C' 用于 Pipeline)。
  • 注意:参数组合总数 = 各参数取值数量的乘积;过大可能导致计算不可行。

3、scoring = None【str | callable | list | dict | None】:模型评估指标。

  • 若为 None(默认),使用 estimator 的默认评分方法(如分类器用 score() 即准确率,回归器用 R²)。
  • 若为 str(如 'accuracy'、'f1'、'roc_auc'、'neg_mean_squared_error'),使用 sklearn 内置指标(注意回归指标通常带 neg_ 前缀,因 GridSearchCV 默认最大化得分)。
  • 若为 callable,需接受 (y_true, y_pred) 或 (y_true, y_pred_proba) 并返回 scalar 分数。
  • 若为 list 或 dict,可同时评估多个指标(但 refit 必须指定一个主指标)。
  • 注意:务必根据任务类型选择合适指标(如不平衡分类慎用 accuracy)。

4、n_jobs = None【int | None】:并行运行的作业数。

  • 注意:每个 CV 折叠和参数组合可并行;大幅加速搜索过程,但内存消耗随 n_jobs 增加。

5、refit = True【bool | str】:是否在全部交叉验证结束后,使用最优参数在整个训练集上重新训练最终模型。

  • 若为 True(默认),自动选择 scoring 最高的参数重训,并使 best_estimator_ 可用。
  • 若为 False,则不重训,无法直接调用 predict 等方法。
  • 若为 str(如 'f1'),当 scoring 为多指标时,指定用于 refit 的主指标。
  • 注意:refit=True 是常规用法,确保最终模型利用全部数据。

6、cv = None【int | iterable | CV splitter】:交叉验证策略。

  • 若为 int,使用 StratifiedKFold(分类)或 KFold(回归)进行 k 折交叉验证。
  • 若为 None,默认 5 折(sklearn ≥ 0.22)。
  • 若为可迭代对象(如 [[train_idx, val_idx], ...]),提供自定义划分。
  • 若为 CV splitter 对象(如 StratifiedShuffleSplit()),使用其 split 方法。
  • 注意:分类任务默认分层抽样(保持类别比例),回归任务则均匀划分。

7、verbose = 0【int】:控制输出详细程度。

  • ≥1:显示每次参数组合的完成进度。
  • ≥2:显示每次 CV 折叠的得分。
  • ≥3:显示调试信息。

8、pre_dispatch = '2*n_jobs'【int | str】:控制并行任务预分发数量。

  • 用于限制内存使用,避免一次性生成过多任务。
  • 默认 '2*n_jobs' 在大多数场景下平衡效率与资源。
  • 注意:一般用户无需修改。

9、error_score = np.nan【'raise' | numeric】:当某组参数训练失败时的处理方式。

  • 若为 'raise'(默认行为在旧版),抛出异常终止搜索。
  • 若为 numeric(如 np.nan 或 0.0),将该参数组合的得分设为此值并继续。
  • 注意:建议设为 np.nan 以容忍个别无效参数(如 C=0 对 SVM 无效),避免整个搜索中断。

10、return_train_score = False【bool】:是否在 cv_results_ 中包含训练得分。

  • 若为 False(默认),仅返回验证得分,节省计算和存储。
  • 若为 True,额外计算并存储训练得分,可用于诊断过拟合。
  • 注意:训练得分计算会增加约一倍时间开销,通常仅在调试时启用。
    注意事项
    - 拟合后可通过 best_params_ 获取最优参数,best_score_ 获取最优 CV 得分,best_estimator_ 获取重训后的模型。
  • 所有中间结果存储在 cv_results_ 字典中,便于分析和可视化。
  • 与 Pipeline 结合使用时,可统一调优预处理和模型参数(如 {'pca__n_components': [5, 10], 'clf__C': [1, 10]})。
  • 计算复杂度高(参数组合 × CV 折数 × 模型训练成本),适用于中小规模调优;大规模搜索推荐 RandomizedSearchCV。
    随机搜索 RandomizedSearchCV
    定义参数空间
    *param_dist =

from scipy.stats import uniform,randint

		贝叶斯优化 BayesSearchCV定义参数空间*search_spaces = {
'C': Real(0.1, 10, prior='log-uniform'),
'gamma': Real(0.001, 0.1, prior='log-uniform'),
'kernel': Categorical(['rbf'])

search_spaces = {

'C': Real(0.1, 10, prior='log-uniform'),
'gamma': Real(0.001, 0.1, prior='log-uniform'),
'kernel': Categorical(['rbf'])时间序列 TimeSeriesSplit
pipelinePipeline流水线参数1、steps【list[tuple[str, object]]】:定义流水线中的步骤序列。
  • 每个元素为 (name, transformer/estimator) 的元组。
  • 除最后一个步骤外,其余必须实现 fit 和 transform 方法(或 fit_transform)。
  • 最后一个步骤必须实现 fit,且通常为预测器(如分类器、回归器),但也可仅为转换器(此时 Pipeline 行为类似 FeatureUnion)。
  • 名称(name)必须唯一且为有效 Python 标识符(不能包含双下划线 __)。
  • 示例:[('scaler', StandardScaler()), ('clf', LogisticRegression())]
  • 注意:可通过 set_params(name__param=value) 访问子组件参数(双下划线语法)。

2、memory = None【str | object | None】:启用步骤缓存以避免重复计算。

  • 若为 None(默认),不缓存。
  • 若为 str(如 './cache_dir'),指定缓存目录路径(使用 joblib.Memory)。
  • 若为 joblib.Memory 实例,则直接使用该缓存管理器。
  • 注意:仅对具有 deterministic 行为且输入不变的步骤有效;适用于耗时转换(如特征选择、多项式展开)在交叉验证中的加速。

3、verbose = False【bool】:是否在执行每个步骤时打印日志。
定义
Pipeline():用于将多个数据转换器(transformers)和一个最终估计器(estimator)串联成一个统一的工作流,实现“预处理 → 特征工程 → 模型训练/预测”的端到端自动化。支持 fit、predict、transform 等方法的链式调用,并确保训练与测试阶段的数据处理一致性,避免数据泄露
方法
pipe.set_params(步骤名__参数=值):对指定步骤的estimator修改参数,因此要求steps中步骤名以变量名规则设置
注意事项
- Pipeline 在 fit 阶段依次调用各步骤的 fit_transform(前 n−1 步)和最后一步的 fit。

  • 在 predict/transform 阶段,依次应用所有步骤的 transform(包括最后一步的 predict 或 transform)。
  • 支持 get_params() 和 set_params(),可无缝集成 GridSearchCV 进行超参数调优。
  • 所有中间数据传递均在内存中完成,无需手动管理中间变量。
  • 推荐用于任何涉及多步预处理的机器学习任务,是 sklearn 最佳实践的核心组件。
  • 简略代码而非加快运行速度。
  • 继承steps最后一个元素的etimator评估器对象的所有属性和方法。
    缺失值处理 impute
    简单填充 SimpleImpute
    参数
    strategy="mean",{'mean', 'median','most_frequent', 'constant'}
    KNN近邻填充 KNNImputer
    参数
    n_neighbors=5
    多任务学习 multioutput
    多标签分类 MultiOutputClassifier
    多输出回归 MultiOutputRegressor
    stats统计量模块
    pearsonr相关系数
    两向量间线性相关度
    流行学习 manifold
    t-SNE降维 TSNE
    MDS降维 MDS
    Isomap降维 Isomap
    SpectralEmbedding
    局部线性嵌入 LocallyLinearEmbedding
    PCA降维 decomposition
    PCA降维 PCA
    主成分解释方差比 TruncatedSVD
    核PCA KernelPCA
    可视化
    metrics
    ConfusionMatrixDisplay
    from_estimator():混淆矩阵
    参数:
    -model
    -X_test
    -Y_test
    -display_labels:可以改为["负例","正例"]
    -cmap:我觉得plt.cm.Blues好看
    RocCurveDisplay
    from_estimator():ROC曲线【自动计算AUC】
    参数:
    -model
    -X_test
    -Y_test
    -display_labels:可以改为["负例","正例"]
    -cmap:我觉得plt.cm.Blues好看
    PrecisionRecallDisplay
    from_estimator():P-R曲线【自动计算AP】
    参数:
    -model
    -X_test
    -Y_test
    -display_labels:可以改为["负例","正例"]
    -cmap:我觉得plt.cm.Blues好看
    inspection
    分类决策面 DecisionBoundaryDisplay
    from_estimator
    参数
    1、estimator【object】:已训练的分类器(必须实现 predict 方法)。
  • 必须是拟合后的estimator。
  • 支持任意 scikit-learn 兼容的分类器(包括 Pipeline)。
  • 注意:若 estimator 未训练,调用时会报错。

2、X【array-like】:用于确定绘图范围的原始特征数据(通常为训练集 X)。

  • 仅使用前两个特征(或由 feature_indices 指定的两个特征)来定义绘图平面。
  • 注意:X 本身不参与预测,仅用于自动推断坐标轴范围。

3、features = [0, 1]【list[int] | tuple[int, int]】:使用两个特征【索引】绘制决策边界。

  • 注意:若特征经过预处理(如 PCA),需确保索引对应最终输入 estimator 的特征维度。

4、grid_resolution = 100【int】:网格分辨率,即每个维度上的采样点数。

  • 总网格点数为 grid_resolution × grid_resolution。
  • 值越大,边界越平滑,但计算和绘图开销越高。

5、response_method = 'auto'【str】:指定从 estimator 获取预测的方式。

  • 'auto'(默认):优先使用 predict_proba(若存在),否则回退到 decision_function,最后使用 predict。
  • 'predict':直接使用类别标签(边界可能不连续)。
  • 'decision_function':使用决策函数值(适用于 SVM、LogisticRegression 等)。
  • 'predict_proba':使用正类概率(仅二分类有效;多分类需指定 class_id)。
  • 注意:不同方法影响颜色映射的连续性;'predict' 会产生块状区域,其余方法产生渐变。

6、plot_method = 'contourf'【str】:绘图方法。

  • 'contourf'(默认):填充等高线图(色块区域)。
  • 'pcolormesh':使用像素网格着色,渲染更快,适合高分辨率。
  • 注意:两者视觉效果相似;'pcolormesh' 在大型网格下性能更优。

7、ax = None【Matplotlib Axes | None】:绘图目标子图。
8、xlabel = None【str | None】:x 轴标签。
9、ylabel = None【str | None】:y 轴标签。
10、cmap = None【str | Colormap | None】:颜色映射表。

11、boundary_vmin, boundary_vmax = None, None【float | None】:决策函数或概率的显示范围裁剪。

  • 仅当 response_method 为 'decision_function' 或 'predict_proba' 时生效。
  • 用于限制颜色映射的动态范围,突出关键区域。
  • 注意:一般保持默认即可。

12、surface_cmap = None【str | Colormap | None】:已弃用(deprecated)参数。

  • 在 scikit-learn ≥ 1.1 中被 cmap 替代,保留仅为向后兼容,建议使用 cmap。
  • 注意:设置此参数会触发 FutureWarning。

13、scatter = True【bool】:是否在决策边界上叠加原始数据点的散点图。
14、scatter_alpha = 0.8【float】:散点图的透明度。
15、**kwargs【dict】:传递给底层绘图函数(如 contourf 或 pcolormesh)的额外关键字参数。
注意事项
- 该方法是静态方法(@classmethod),必须通过 DecisionBoundaryDisplay.from_estimator() 调用。

  • 仅支持二维特征空间的可视化;高维数据需先降维(如 PCA、SelectKBest)或选择两个关键特征。
  • 返回 DecisionBoundaryDisplay 对象,可通过 .plot() 二次绘制或 .surface_ 访问预测网格。
  • 不适用于回归模型或无 predict 方法的转换器。
    保留模型
    使用joblib保存和加载模型
    导出:joblib.dump(model, 'model.joblib')
    导入:loaded_model = joblib.load('model.joblib')
    使用pickle保存和加载模型
    导出:with open('model.pkl', 'wb') as f:
    pickle.dump(model, f)
    导入:with open('model.pkl', 'rb') as f:
    loaded_model = pickle.load(f)