首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 1.7 第一个应用:鸢尾花分类 在机器学习领域,鸢尾花(Iris)分类问题是一个经典的入门级案例,它以其简单而富有教育意义的特点,成为了学习分类算法的首选。在本章中,我们将通过Python及其强大的机器学习库scikit-learn,来构建并训练一个模型,用于预测鸢尾花的种类。这不仅能帮助你理解机器学习的基本流程,还能掌握数据预处理、模型选择、训练及评估等关键步骤。 #### 1.7.1 引言 鸢尾花数据集(Iris dataset)是统计学和机器学习中常用的数据集之一,由R.A. Fisher于1936年收集。该数据集包含了150个样本,分别属于三种不同的鸢尾花种类:Setosa、Versicolour和Virginica。每个样本有四个特征:萼片长度(sepal length)、萼片宽度(sepal width)、花瓣长度(petal length)和花瓣宽度(petal width),所有这些特征均为连续值。 #### 1.7.2 数据准备 在开始建模之前,首先需要加载并探索数据。scikit-learn库中已经内置了鸢尾花数据集,我们可以直接调用它来获取数据。 ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据 iris = load_iris() X = iris.data # 特征数据 y = iris.target # 目标标签(0: Setosa, 1: Versicolour, 2: Virginica) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) ``` #### 1.7.3 数据探索 数据探索是理解数据特性、发现潜在问题的重要步骤。通过简单的统计分析和可视化,我们可以获得对数据集的初步认识。 ```python import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 将数据转换为DataFrame以便于分析 df = pd.DataFrame(X, columns=iris.feature_names) df['species'] = iris.target_names[y] # 描述性统计 print(df.describe()) # 绘制特征分布图 sns.pairplot(df, hue='species') plt.show() ``` 通过上述代码,我们可以观察到不同种类鸢尾花在特征上的分布差异,这为后续选择模型提供了直观的依据。 #### 1.7.4 选择模型 在鸢尾花分类问题中,由于数据集相对较小且特征维度不高,我们可以选择多种分类算法进行尝试。这里,我们以逻辑回归(Logistic Regression)、决策树(Decision Tree)和K近邻(K-Nearest Neighbors, KNN)为例,展示不同算法在相同数据集上的表现。 **逻辑回归**: ```python from sklearn.linear_model import LogisticRegression # 创建逻辑回归模型 lr = LogisticRegression(max_iter=200) lr.fit(X_train, y_train) # 预测测试集 y_pred_lr = lr.predict(X_test) ``` **决策树**: ```python from sklearn.tree import DecisionTreeClassifier # 创建决策树模型 dt = DecisionTreeClassifier() dt.fit(X_train, y_train) # 预测测试集 y_pred_dt = dt.predict(X_test) ``` **K近邻**: ```python from sklearn.neighbors import KNeighborsClassifier # 创建K近邻模型 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) # 预测测试集 y_pred_knn = knn.predict(X_test) ``` #### 1.7.5 模型评估 模型评估是判断模型好坏的关键步骤。常用的评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)等。对于鸢尾花分类这种多分类问题,我们主要关注准确率。 ```python from sklearn.metrics import accuracy_score # 计算各模型准确率 accuracy_lr = accuracy_score(y_test, y_pred_lr) accuracy_dt = accuracy_score(y_test, y_pred_dt) accuracy_knn = accuracy_score(y_test, y_pred_knn) print(f"逻辑回归准确率: {accuracy_lr:.2f}") print(f"决策树准确率: {accuracy_dt:.2f}") print(f"K近邻准确率: {accuracy_knn:.2f}") ``` #### 1.7.6 结果分析与讨论 通过上述实验,我们可以发现不同模型在鸢尾花数据集上的表现存在差异。逻辑回归虽然简单,但在该数据集上表现不俗;决策树由于其强大的非线性拟合能力,往往能取得较高的准确率;而K近邻的准确率则受到K值选择的影响,需要通过交叉验证等方式来确定最优K值。 此外,我们还可以进一步探讨模型的过拟合与欠拟合问题,通过调整模型参数(如决策树的深度、逻辑回归的正则化强度等)或使用更复杂的模型(如随机森林、梯度提升树等)来改进模型性能。 #### 1.7.7 结论 通过本章的学习,我们不仅掌握了使用Python和scikit-learn进行机器学习项目的基本流程,还通过鸢尾花分类这一具体案例,深入理解了数据预处理、模型选择、训练及评估等关键环节。更重要的是,我们学会了如何根据数据集的特点选择合适的模型,并通过实验来验证模型的有效性。这些知识和技能将为你后续深入学习机器学习打下坚实的基础。
上一篇:
1.5 Python 2 与Python 3 的对比
下一篇:
1.7.1 初识数据
该分类下的相关小册推荐:
Python合辑9-判断和循环
Python合辑11-闭包函数
Python高并发编程与实战
Python爬虫入门与实战开发(下)
Python合辑2-字符串常用方法
Python合辑1-Python语言基础
Python与办公-玩转PPT
Python面试指南
Python机器学习实战
Python合辑5-格式化字符串
Python合辑10-函数
Python合辑3-字符串用法深度总结