
sklearn 把数学公式、损失计算、梯度下降、迭代优化、评估指标全部底层封装你只调用高层 API不用手写求导、循环迭代。不用手动写二元交叉熵、MSE 损失不用手动写梯度下降更新权重不用手写 K-Means 距离求和、PCA 特征分解 全部藏在.fit()内部自动执行。下面分 4 套代码逐段拆解每一行代码底层在做什么、封装内部逻辑一并讲清。公共导入统一说明python运行import numpy as np import pandas as pd import matplotlib.pyplot as plt import joblib from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_splitnumpy/pandas数值、表格数据处理matplotlib可视化joblib保存训练后的模型 / 预处理工具保存学到的权重、均值方差StandardScaler标准化封装类内部实现 x′σx−μtrain_test_split数据集划分封装随机打乱、分层抽样逻辑内置任务 1二分类逻辑回归逐行全解析python运行from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # 1. 加载内置数据集封装好的数据集读取接口 data load_breast_cancer() X, y data.data, data.target # X样本特征矩阵 [569,30] 30项体检指标 # y标签 0良性1恶性监督学习必备真实标签 # 2. 划分训练集、测试集封装抽样逻辑 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state2026, stratifyy ) # test_size0.330%做测试集70%训练 # stratifyy分层划分保证训练/测试良恶性比例一致 # random_state固定随机种子结果可复现 # 底层随机打乱索引切割数据封装完成不用自己写循环划分 # 3. 标准化预处理封装均值方差计算 scaler StandardScaler() X_train scaler.fit_transform(X_train) X_test scaler.transform(X_test) # fit()仅在训练集计算每个特征均值μ、标准差σ底层遍历全部样本统计 # transform()套用μ、σ缩放数据 # fit_transform fit transform 合并一步 # 关键点测试集绝对不能fit防止数据泄露 # 4. 实例化模型只是创建空模型还没学习权重 model LogisticRegression(max_iter1000) # 内部封装线性组合zwxb sigmoid激活输出0~1概率 # max_iter1000最大迭代次数防止训练没收敛 # 5. 核心训练接口 fit()【封装全部学习逻辑】 model.fit(X_train, y_train) # fit内部自动循环执行整套学习流程全部封装你看不见 # 1. 前向计算wxb → sigmoid 得到预测概率y_hat # 2. 计算二元交叉熵损失内置损失公式 # 3. 求梯度梯度下降更新权重w、偏置b # 4. 反复迭代直到损失收敛或达到max_iter # 你只需要调用一行不用手写循环、损失、梯度 # 6. 预测接口 predict/predict_proba封装推理计算 y_pred model.predict(X_test) # predict内部阈值0.5概率0.5输出1否则0输出类别0/1 # model.predict_proba(X_test) 输出 [良性概率,恶性概率] # 7. 评估指标封装公式计算 print(二分类评估) print(f准确率{accuracy_score(y_test, y_pred):.3f}) # accuracy_score封装公式 正确样本/总样本 print(混淆矩阵\n, confusion_matrix(y_test, y_pred)) # 封装统计TP TN FP FN四类样本数量 print(classification_report(y_test, y_pred)) # 封装精确率、召回率、F1分数全套计算 # 8. 模型持久化保存训练学到的w、b、scaler均值方差 joblib.dump(model, binary_cls.pkl) joblib.dump(scaler, scaler_binary.pkl) # 推理新数据必须先用同一个scaler标准化再丢模型 new_sample scaler.transform([X_test[0]]) res model.predict(new_sample)[0] print(单样本预测, 恶性 if res 1 else 良性)任务 2回归线性回归逐行解析python运行from sklearn.datasets import load_diabetes from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score # 1. 加载回归数据集y是连续数值血糖指标 data load_diabetes() X, y data.data, data.target # 2. 划分训练、测试集回归不用分层stratify X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state2026 ) # 3. 标准化 scaler StandardScaler() X_train scaler.fit_transform(X_train) X_test scaler.transform(X_test) # 4. 实例线性回归模型 reg LinearRegression() # 封装公式 y_hat w1x1 w2x2 ... b # 5. fit训练内部封装MSE损失最小二乘法求解权重 reg.fit(X_train, y_train) # 底层直接解析解求解最优w、b无需梯度迭代同样封装完成 # 6. 预测连续数值 y_pred reg.predict(X_test) # 7. 评估指标全部封装 print(\n回归评估) mse mean_squared_error(y_test, y_pred) # 封装MSE损失公式1/n Σ(y-y_hat)² rmse np.sqrt(mse) r2 r2_score(y_test, y_pred) # R²封装衡量模型拟合程度 # 8. 保存模型推理 joblib.dump(reg, reg_model.pkl) joblib.dump(scaler, scaler_reg.pkl) new_x scaler.transform([X_test[0]]) print(预测数值, reg.predict(new_x)[0])任务 3KMeans 聚类无监督无标签 y逐行解析python运行from sklearn.datasets import load_iris from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score # 1. 聚类无标签只需要特征X iris load_iris() X iris.data # 2. 标准化距离类算法必须 scaler StandardScaler() X_scaled scaler.fit_transform(X) # 3. 实例KMeans指定分3簇 kmeans KMeans(n_clusters3, random_state2026) # 4. fit_predict 训练同时输出聚类标签封装迭代优化 cluster_label kmeans.fit_predict(X_scaled) # fit内部封装完整聚类逻辑 # 1. 随机初始化簇中心 # 2. 计算每个样本到各中心欧式距离封装距离公式 # 3. 分配样本到最近簇 # 4. 更新簇中心最小化总距离等价损失函数 # 5. 循环直到簇中心不再变化 # 5. 轮廓系数评估封装聚类效果计算公式 score silhouette_score(X_scaled, cluster_label) print(\n聚类评估) print(f轮廓系数{score:.3f}) # 6. 新样本预测属于哪一簇 joblib.dump(kmeans, kmeans.pkl) joblib.dump(scaler, scaler_kmeans.pkl) new_x scaler.transform([X[0]]) print(新样本所属簇, kmeans.predict(new_x)[0])任务 4PCA 降维无监督逐行解析python运行from sklearn.datasets import load_iris from sklearn.decomposition import PCA # 1. 数据 iris load_iris() X, y iris.data, iris.target # 2. PCA对尺度敏感必须标准化 scaler StandardScaler() X_scaled scaler.fit_transform(X) # 3. 实例PCA降到2维 pca PCA(n_components2) # 4. fit_transform训练投影矩阵降维转换 X_pca pca.fit_transform(X_scaled) # fit内部封装特征值分解寻找方差最大投影方向 # 目标函数最小重构误差等价损失全部底层封装 # 5. 评估方差解释率封装计算每个维度保留信息占比 print(\nPCA降维信息) print(各维度方差占比, pca.explained_variance_ratio_) print(总保留信息, sum(pca.explained_variance_ratio_)) # 6. 可视化降维后数据 plt.scatter(X_pca[:,0], X_pca[:,1], cy) plt.title(PCA 2维可视化) plt.show() # 7. 保存降维器新数据直接transform joblib.dump(pca, pca.pkl) joblib.dump(scaler, scaler_pca.pkl) new_x scaler.transform([X[0]]) print(降维后2维向量, pca.transform(new_x)[0])