一、课程学习收获总结
通过这几次机器学习课程的学习,我主要有以下几方面的收获:
1. 基础概念的系统理解
我掌握了机器学习的基本流程:从数据预处理、模型选择、训练评估到模型部署。重点理解了监督学习(分类/回归)、无监督学习(聚类)的核心区别,以及过拟合、欠拟合、交叉验证等关键概念。
2. Python工具链的实际运用
熟练掌握了 pandas/numpy 进行数据清洗与特征工程,matplotlib/seaborn 进行数据可视化,以及 scikit-learn 实现经典机器学习算法。这些工具链让我从理论走向了实践,真正实现了从“数据”到“模型”的闭环。
3. 经典算法的实践与对比
我重点实践了以下几类算法:
◦ 分类算法:逻辑回归、KNN、决策树,理解了它们的适用场景与优缺点。
◦ 聚类算法:K-Means,掌握了无监督学习在数据分组中的应用。
通过对比不同算法在同一任务上的表现,我学会了根据数据特点和业务需求选择合适的模型。
4. 解决问题的思维方式
我学会了以“问题驱动”的方式思考:先分析问题是分类还是回归,再对数据进行探索性分析,然后通过数据预处理和特征工程优化模型,最后通过评估指标(如准确率、F1分数)来迭代改进。
二、机器学习案例教程:基于KNN的鸢尾花分类
这个案例用 scikit-learn 自带的鸢尾花数据集,实现一个KNN分类模型,非常适合入门。
1. 项目简介
• 任务:根据花的萼片、花瓣的长度和宽度,将鸢尾花分为3个品种。
• 算法:K-近邻(KNN),原理简单,非常适合入门。
• 目标:实现模型训练、预测,并输出准确率。
2. 环境准备
确保你已经安装了Python和这些库:
pip install numpy pandas scikit-learn matplotlib
3. 完整代码实现
# 1. 导入所需库 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import pandas as pd import matplotlib.pyplot as plt # 2. 加载并探索数据 iris = load_iris() X = iris.data # 特征:花的4个测量值 y = iris.target # 标签:花的品种(0,1,2) # 打印数据集信息 print("数据集特征名:", iris.feature_names) print("数据集标签名:", iris.target_names) # 3. 划分训练集和测试集(80%训练,20%测试) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42 ) # 4. 创建并训练KNN模型 knn = KNeighborsClassifier(n_neighbors=3) # 设置K值为3 knn.fit(X_train, y_train) # 5. 在测试集上预测并评估模型 y_pred = knn.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f"模型准确率: {accuracy * 100:.2f}%") # 6. 可视化:用前两个特征绘制散点图 plt.figure(figsize=(10, 6)) plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired) plt.xlabel(iris.feature_names[0]) plt.ylabel(iris.feature_names[1]) plt.title("Iris Dataset Visualization") plt.colorbar(ticks=[0, 1, 2], label='Species') plt.show()
4. 代码分步解析
• 第1-2步:导入库与加载数据
我们使用 scikit-learn 自带的 load_iris() 函数获取数据。数据分为两部分:X(特征,4个数值)和 y(标签,3个品种)。
• 第3步:划分训练集和测试集
train_test_split 函数将数据随机分为两部分,80%用于训练模型,20%用于评估模型性能,避免过拟合。
• 第4步:创建并训练KNN模型
KNeighborsClassifier 是KNN算法的实现。n_neighbors=3 表示模型会参考离它最近的3个邻居的类别来决定新数据的类别。fit() 方法用来训练模型。
• 第5步:评估模型
predict() 方法用于预测测试集的结果,accuracy_score() 计算预测的准确率。运行后,模型的准确率通常能达到95%以上。
• 第6步:数据可视化
用 matplotlib 将数据点按品种绘制成散点图,可以直观地看到不同品种的花在特征空间中的分布情况。
5. 运行结果说明
• 控制台输出:会打印出特征名、标签名和最终的准确率。
• 可视化图表:会弹出一个窗口,显示一个彩色的散点图,不同颜色代表不同的花品种。