用Python开启人工智能之旅(三)常用的机器学习算法与实现

news2024/12/27 13:18:52

第三部分:常用的机器学习算法与实现

在这里插入图片描述
用Python开启人工智能之旅(一)Python简介与安装

用Python开启人工智能之旅(二)Python基础

用Python开启人工智能之旅(三)常用的机器学习算法与实现

用Python开启人工智能之旅(四)常用的机器学习算法与实现

用Python开启人工智能之旅(五)AI项目实战中Python基础

机器学习是人工智能的核心技术之一,涉及从数据中学习模型并做出预测或决策。对于初学者而言,了解常见的机器学习算法及其实现方法是掌握这一领域的基础。本节将介绍常用的机器学习算法,并展示如何使用Python实现这些算法。

我们将涵盖以下几类主要的机器学习算法:

  1. 监督学习算法

    • 线性回归(Linear Regression)
    • 逻辑回归(Logistic Regression)
    • K最近邻(K-Nearest Neighbors, KNN)
    • 支持向量机(Support Vector Machine, SVM)
    • 决策树(Decision Tree)
  2. 无监督学习算法

    • K-means聚类(K-means Clustering)
    • 主成分分析(Principal Component Analysis, PCA)
  3. 模型评估与选择

    • 交叉验证(Cross-validation)
    • 性能度量:准确率、精确率、召回率、F1-score
3.1 监督学习算法

监督学习算法用于根据已有标签的训练数据来预测新数据的标签。以下是几种常用的监督学习算法。

3.1.1 线性回归(Linear Regression)

线性回归是最简单的回归算法,用于预测一个连续变量与一个或多个自变量之间的关系。假设自变量和因变量之间存在线性关系,模型通过拟合一条直线来进行预测。

  • 数学表达式:
    [
    y = w_1x_1 + w_2x_2 + … + w_nx_n + b
    ]
    其中,(x_1, x_2, …, x_n)是特征变量,(w_1, w_2, …, w_n)是模型的系数,(b)是偏置项,(y)是预测结果。

  • Python实现:

    from sklearn.linear_model import LinearRegression
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import make_regression
    
    # 创建数据集
    X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
    
    # 拆分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 创建线性回归模型
    model = LinearRegression()
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测
    y_pred = model.predict(X_test)
    
    # 输出结果
    print("Coefficients:", model.coef_)
    print("Intercept:", model.intercept_)
    
3.1.2 逻辑回归(Logistic Regression)

逻辑回归是一种用于分类问题的回归算法,特别适用于二分类问题。它通过将线性回归的输出通过Sigmoid函数转换为概率值来进行分类。

  • 数学表达式:
    [
    P(y=1 | X) = \frac{1}{1 + e^{-(w_1x_1 + w_2x_2 + … + w_nx_n + b)}}
    ]

  • Python实现:

    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import make_classification
    
    # 创建数据集
    X, y = make_classification(n_samples=100, n_features=2, n_classes=2)
    
    # 拆分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 创建逻辑回归模型
    model = LogisticRegression()
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测
    y_pred = model.predict(X_test)
    
    # 输出结果
    print("Accuracy:", model.score(X_test, y_test))
    
3.1.3 K最近邻(K-Nearest Neighbors, KNN)

KNN是一种简单的监督学习算法,主要用于分类和回归任务。它通过计算新数据点与训练数据中各点的距离来进行预测。

  • 算法步骤:

    1. 计算待预测样本与训练集中每个样本的距离。
    2. 找到最近的K个邻居。
    3. 对于分类任务,根据K个邻居中多数的类别进行预测;对于回归任务,返回K个邻居的平均值。
  • Python实现:

    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import make_classification
    
    # 创建数据集
    X, y = make_classification(n_samples=100, n_features=2, n_classes=2)
    
    # 拆分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 创建KNN模型
    model = KNeighborsClassifier(n_neighbors=3)
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测
    y_pred = model.predict(X_test)
    
    # 输出结果
    print("Accuracy:", model.score(X_test, y_test))
    
3.1.4 支持向量机(Support Vector Machine, SVM)

支持向量机是一种强大的分类算法,特别适用于高维数据。它通过寻找一个最大化类别间隔的超平面来进行分类。

  • Python实现:
    from sklearn.svm import SVC
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import make_classification
    
    # 创建数据集
    X, y = make_classification(n_samples=100, n_features=2, n_classes=2)
    
    # 拆分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 创建SVM模型
    model = SVC(kernel='linear')
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测
    y_pred = model.predict(X_test)
    
    # 输出结果
    print("Accuracy:", model.score(X_test, y_test))
    
3.1.5 决策树(Decision Tree)

决策树是一种通过树形结构进行决策的算法。每个节点表示一个特征,每条边表示一个判断条件,叶子节点表示分类结果。

  • Python实现:
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import make_classification
    
    # 创建数据集
    X, y = make_classification(n_samples=100, n_features=2, n_classes=2)
    
    # 拆分数据集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 创建决策树模型
    model = DecisionTreeClassifier()
    
    # 训练模型
    model.fit(X_train, y_train)
    
    # 预测
    y_pred = model.predict(X_test)
    
    # 输出结果
    print("Accuracy:", model.score(X_test, y_test))
    
3.2 无监督学习算法

无监督学习算法用于从无标签的数据中学习模式,常见的应用包括聚类和降维。

3.2.1 K-means聚类(K-means Clustering)

K-means是一种常用的聚类算法,旨在将数据划分为K个不同的组(或簇),使得每个组内部的数据点之间尽量相似。

  • Python实现:
    from sklearn.cluster import KMeans
    from sklearn.datasets import make_blobs
    import matplotlib.pyplot as plt
    
    # 创建数据集
    X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
    
    # 创建K-means模型
    kmeans = KMeans(n_clusters=4)
    
    # 训练模型
    kmeans.fit(X)
    
    # 预测簇标签
    y_pred = kmeans.predict(X)
    
    # 可视化结果
    plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis')
    plt.show()
    
3.2.2 主成分分析(Principal Component Analysis, PCA)

PCA是一种常用的降维方法,它通过寻找数据中最重要的方向(主成分)来减少特征空间的维度,同时尽量保留数据的主要信息。

  • Python实现:
    from sklearn.decomposition import PCA
    from sklearn.datasets import make_classification
    import matplotlib.pyplot as plt
    
    # 创建数据集
    X, _ = make_classification(n_samples=100, n_features=5, random_state=42)
    
    # 创建PCA模型
    pca = PCA(n_components=2)
    
    # 进行降维
    X_pca = pca.fit_transform(X)
    
    # 可视化
    
    

降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.show()


#### 3.3 模型评估与选择

机器学习模型的效果评估至关重要。以下是常见的模型评估方法。

##### 3.3.1 交叉验证(Cross-validation)

交叉验证是一种常用的模型评估方法,它通过将数据集分成多个子集,使用不同的训练集和测试集来评估模型的稳定性和泛化能力。

- **Python实现:**
```python
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# 加载数据
X, y = load_iris(return_X_y=True)

# 创建模型
model = SVC(kernel='linear')

# 进行交叉验证
scores = cross_val_score(model, X, y, cv=5)

# 输出结果
print("Cross-validation scores:", scores)
print("Mean accuracy:", scores.mean())
3.3.2 性能度量:准确率、精确率、召回率、F1-score
  • 准确率(Accuracy): 测试集预测正确的样本所占的比例。

  • 精确率(Precision): 被模型预测为正类的样本中,实际为正类的比例。

  • 召回率(Recall): 实际为正类的样本中,被模型正确预测为正类的比例。

  • F1-score: 精确率和召回率的调和平均数。

  • Python实现:

    from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
    
    # 真实标签与预测标签
    y_true = [1, 0, 1, 1, 0, 1, 0, 1]
    y_pred = [1, 0, 1, 0, 0, 1, 0, 1]
    
    # 计算性能度量
    print("Accuracy:", accuracy_score(y_true, y_pred))
    print("Precision:", precision_score(y_true, y_pred))
    print("Recall:", recall_score(y_true, y_pred))
    print("F1-score:", f1_score(y_true, y_pred))
    

总结

本部分介绍了常见的机器学习算法及其在Python中的实现方法。掌握这些算法和技术对于学习机器学习至关重要。通过实践和不断深入了解,你将能够更好地理解机器学习的工作原理,并将其应用到实际问题中。

在这里插入图片描述思维导图说明
监督学习算法(B):

线性回归:回归问题中的基础算法,用于预测一个连续变量。
逻辑回归:二分类问题的基础算法,用于预测类别概率。
K-近邻算法(KNN):基于距离度量的分类与回归算法。
支持向量机(SVM):高效的分类算法,寻找最大间隔的超平面。
决策树与随机森林:树状结构的分类和回归算法,随机森林是决策树的集成。
无监督学习算法(C):

K-means 聚类:常用的聚类算法,将数据划分为K个簇。
主成分分析(PCA):数据降维的算法,提取数据的主要特征。
DBSCAN 聚类:基于密度的聚类算法,适用于发现形状复杂的簇。
模型评估与选择(D):

交叉验证:用于评估模型的表现,减少过拟合。
评估指标:包括准确率、精确率、召回率、F1分数等,用于评估模型的好坏。

用Python开启人工智能之旅(一)Python简介与安装

用Python开启人工智能之旅(二)Python基础

用Python开启人工智能之旅(三)常用的机器学习算法与实现

用Python开启人工智能之旅(四)常用的机器学习算法与实现

用Python开启人工智能之旅(五)AI项目实战中Python基础

了解更多关于AI算法Python实现文章,欢迎关注这个专栏! 点击进入:AI算法Python实现

本文为原创内容,未经许可不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2266410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FD(File Descriptor)泄漏

File Descriptor是Linux下概念,fd 是 int类型非负数! 进程打开File,Socket,Pipe后生成一个File Descriptor,它是打开这个系统资源的标识符。 Linux每个进程fd最大1024个,超过之后进程 crash,c…

英语单词拼读小程序开发制作介绍

英语单词拼读小程序开发制作介绍本英语单词拼读小程序系统开发的主要功能有: 1、按年级分类展示每个年级阶段的英语单词信息。 2、点击选择的单词进入单词拼读页面,展示英语单词的拼读音标、中文意思、单词发音、拆分词汇发音、用户通过朗读发音对比。通…

TCP客户端模拟链接websocket服务端发送消息(二)

兄弟们,我来填坑了,o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o,前几天写了个tcp模拟websocket客户端的以为完成,后面需要发送消息给服务端,以为简单不就是一个发送消息么,这不是一…

Docker 镜像加速访问方案

在数字化时代,Docker以其轻量级和便捷性成为开发者和运维人员的首选容器技术。然而自2023年5月中旬起,Docker Hub 的访问速度较慢或不稳定,这对依赖Docker Hub拉取镜像的用户来说无疑是一个挑战。本文将提供 Docker Hub 访问的一系列替代方案…

牛客网刷题 ——C语言初阶——BC112小乐乐求和

1.牛客网刷题 ——C语言初阶 牛客网:BC112小乐乐求和 小乐乐最近接触了求和符号Σ,他想计算的结果。但是小乐乐很笨,请你帮助他解答。 输入描述: 输入一个正整数n (1 ≤ n ≤ 109) 输出描述: 输出一个值,为求和结果。 示例1 输…

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一:代码编写代码示例 场景二:代码调试场景三:代码重构代码示例…

clickhouse测试报告

​一、背景 针对当前实施的项目,面临着两个主要挑战:一是需要存储更详细的原始数据和中间数据,二是现有基于MySQL的数据存储解决方案在数据量增长时性能受限,特别是在进行跨年历史数据的即时分析时。为了解决这些问题&#xf…

windows和mac共享文件夹访问教程

mac共享文件夹,windows访问: mac上开启文件夹共享,并添加文件夹和用户,然后windows 上 在windows上快捷键 win r 打开运行,按如下格式输入mac设备的IP地址: 就可以访问了: windows共享文件夹…

FPGA自学之路:到底有多崎岖?

FPGA,即现场可编程门阵列,被誉为硬件世界的“瑞士军刀”,其灵活性和可编程性让无数开发者为之倾倒。但谈及FPGA的学习难度,不少人望而却步。那么,FPGA自学之路到底有多崎岖呢? 几座大山那么高?…

两分钟掌握 TDengine 全部写入方式

1. 背景 TDengine 写入过程会涉及很多概念,这些概念目前你是不是还一团乱,参数绑定写入、无模式写入、websocket 写入、RESTFUL 写入 、各种连接器写入等等一堆的写入,都是做什么的,不明白,这里花两分钟时间给你彻底整…

GJB289A总线典型网络理论分析

1.GJB289A总线典型网络理论分析 根据相关标准,“某个支路的故障不影响整个系统”及耦合变压器特性,本文在仿真与实测时均采用典型的一发一收两端口总线网络。 典型两端口总线网络电气结构如图1所示,包含终端匹配电阻、故障隔离电阻、耦合变…

BLE core 内容整理解释

本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…

DP动态规划+贪心题目汇总

文章目录 背包01背包416. 分割等和子集 完全背包279. 完全平方数322. 零钱兑换 两个字符串DPLCR 095. 最长公共子序列139. 单词拆分 单个数组字符串DP5. 最长回文子串300. 最长递增子序列53.最大子数组和152. 乘积最大子数组198. 打家劫舍 三角形120. 三角形最小路径和 贪心121…

传统网络架构与SDN架构对比

传统网络采用分布式控制,每台设备独立控制且管理耗时耗力,扩展困难,按 OSI 模型分层,成本高、业务部署慢、安全性欠佳且开放性不足。而 SDN 架构将控制平面集中到控制器,数据转发由交换机负责,可统一管理提…

CI/CD是什么?

CI/CD 定义 CI/CD 代表持续集成和持续部署(或持续交付)。它是一套实践和工具,旨在通过自动化构建、测试和部署来改进软件开发流程,使您能够更快、更可靠地交付代码更改。 持续集成 (CI):在共享存储库中自动构建、测试…

Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶

1.直接借助Vue的动态绑定样式绑定 Vue动态样式绑定 在Vue中,动态样式绑定是一种强大的功能,它允许开发者根据数据的变化动态地更新元素的样式。以下是对Vue动态样式绑定的详细知识梳理与详解: 一、基础知识 Vue的动态样式绑定主要通过v-b…

科汛网校KesionEDU CheckOrder SQL注入漏洞复现

0x01 产品简介 科汛网校KesionEDU是KESION科汛开发的在线教育建站系统,支持在线直播教学、课程点播、录播授课等多种教学方式,满足不同场景下的教学需求。提供问答互动、学习点评、在线笔记等功能,增强学员与教师之间的互动交流。拥有在线考试系统,支持单选、多选、问答等…

Windows Subsystem for Linux——设置默认登录用户名

大纲 问题解法 问题 在《Windows Subsystem for Linux——安装多个相同的操作系统》一文中,我们实现了子系统的导出和导入,但是也带来了一个问题:登录到系统时,会使用root用户。在一些场景下,这并不符合我们的使用场景…

【编译原理】往年题汇总(山东大学软件学院用)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀编译原理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代,农业领域正经历着一场前所未有的变革,而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”,悄然渗透到农业生产的各个环节,为传统农业注入了全新的活力,让农业生产…