Scikit-learn 1.5实战3行代码完成K-Means聚类与逻辑回归分类在数据科学领域Scikit-learn作为Python最受欢迎的机器学习库之一以其简洁的API设计和高效的算法实现著称。本文将聚焦两个核心机器学习任务无监督学习中的K-Means聚类与监督学习中的逻辑回归分类通过实际代码演示如何用极简代码实现强大功能。1. 环境准备与数据加载在开始前确保已安装最新版Scikit-learn1.5及必要依赖库pip install scikit-learn matplotlib numpy我们将使用经典的鸢尾花数据集作为示例该数据集包含150个样本每个样本有4个特征花萼长度、花萼宽度、花瓣长度、花瓣宽度和对应的3种鸢尾花类别。from sklearn.datasets import load_iris iris load_iris() X, y iris.data, iris.target提示鸢尾花数据集是机器学习入门的标准数据集其特征量纲一致无需额外标准化处理。2. K-Means聚类实战K-Means是最常用的聚类算法之一其核心思想是通过迭代将数据划分为K个簇使得每个点到其所属簇中心的距离最小。2.1 三行代码实现聚类from sklearn.cluster import KMeans kmeans KMeans(n_clusters3, random_state42) clusters kmeans.fit_predict(X)关键参数说明n_clusters: 指定簇的数量此处设为3以匹配真实类别数random_state: 确保结果可复现2.2 结果可视化通过二维散点图观察聚类效果import matplotlib.pyplot as plt plt.scatter(X[:, 0], X[:, 1], cclusters, cmapviridis) plt.xlabel(Sepal Length) plt.ylabel(Sepal Width) plt.title(K-Means Clustering Results) plt.show()2.3 模型评估虽然聚类是无监督学习但我们仍可通过轮廓系数评估效果from sklearn.metrics import silhouette_score score silhouette_score(X, clusters) print(f轮廓系数: {score:.3f}) # 典型值约0.553. 逻辑回归分类实战逻辑回归是处理分类问题的经典算法尤其适合二分类任务。我们将演示如何用3行代码构建分类器。3.1 基础模型构建from sklearn.linear_model import LogisticRegression logreg LogisticRegression(max_iter200, random_state42) logreg.fit(X, y)参数说明max_iter: 最大迭代次数默认100可能不足multi_class: 自动处理多分类问题3.2 模型评估指标使用交叉验证评估模型性能from sklearn.model_selection import cross_val_score scores cross_val_score(logreg, X, y, cv5) print(f平均准确率: {scores.mean():.2f} (±{scores.std():.2f}))典型输出结果平均准确率: 0.97 (±0.03)3.3 特征重要性分析逻辑回归的系数可解释特征重要性import pandas as pd coef_df pd.DataFrame(logreg.coef_, columnsiris.feature_names) print(coef_df)4. 高级技巧与优化4.1 K-Means优化策略肘部法则确定K值inertia [] for k in range(1, 6): kmeans KMeans(n_clustersk).fit(X) inertia.append(kmeans.inertia_) plt.plot(range(1,6), inertia, markero)特征缩放影响from sklearn.preprocessing import StandardScaler X_scaled StandardScaler().fit_transform(X) kmeans_scaled KMeans(n_clusters3).fit(X_scaled)4.2 逻辑回归进阶正则化控制# L1正则化促进稀疏性 logreg_l1 LogisticRegression(penaltyl1, solverliblinear)类别不平衡处理logreg_balanced LogisticRegression(class_weightbalanced)5. 生产环境部署建议将训练好的模型保存为文件import joblib joblib.dump(logreg, iris_classifier.pkl) # 加载模型 loaded_model joblib.load(iris_classifier.pkl)实时预测示例new_sample [[5.1, 3.5, 1.4, 0.2]] print(f预测类别: {loaded_model.predict(new_sample)[0]}) print(f类别概率: {loaded_model.predict_proba(new_sample)})6. 常见问题排查问题1K-Means结果不稳定解决方案增加n_init参数默认10次随机初始化问题2逻辑回归收敛警告解决方案增大max_iter或调整tol参数问题3类别预测概率接近0.5检查特征工程或考虑更复杂模型在实际项目中这种简洁高效的实现方式能快速验证想法而Scikit-learn的统一API设计让算法切换变得异常简单。记得根据具体问题特点调整预处理步骤和模型参数才能获得最佳性能。