Python算法探索:从经典到现代(三)

一、引言

        随着信息技术的飞速发展,数据已经成为现代社会不可或缺的资源。Python,作为数据处理和分析的利器,为我们提供了大量强大的库和工具,用于从经典到现代的各种算法探索。本文将带你领略Python在算法领域的魅力,从经典算法到现代机器学习算法的演变。


二、经典算法:排序与搜索

  • 排序算法

  • 排序是计算机科学中的基础算法,Python内置了多种排序函数,如sorted()和列表对象的sort()方法,同时,我们还可以手动实现经典的排序算法,如冒泡排序、选择排序、插入排序等。
def bubble_sort(arr):  n = len(arr)  for i in range(n):  for j in range(0, n-i-1):  if arr[j] > arr[j+1]:  arr[j], arr[j+1] = arr[j+1], arr[j]  return arr  # 测试冒泡排序  
arr = [64, 34, 25, 12, 22, 11, 90]  
print(bubble_sort(arr))  # 输出:[11, 12, 22, 25, 34, 64, 90]

  • 搜索算法

  • 搜索算法用于在数据集中查找特定元素。Python中的列表对象提供了in关键字和index()方法来进行简单的搜索。此外,我们还可以实现经典的搜索算法,如线性搜索和二分搜索。
def binary_search(arr, target):  low = 0  high = len(arr) - 1  while low <= high:  mid = (low + high) // 2  if arr[mid] == target:  return mid  elif arr[mid] < target:  low = mid + 1  else:  high = mid - 1  return -1  # 未找到目标  # 测试二分搜索  
arr = [2, 3, 4, 10, 40]  
target = 10  
result = binary_search(arr, target)  
if result != -1:  print(f"元素在数组中的索引为 {result}")  
else:  print("元素不在数组中")

三、现代算法:机器学习与深度学习

        随着大数据时代的到来,机器学习和深度学习算法成为了研究的热点。Pythonscikit-learn和 tensorflow等库为我们提供了强大的机器学习和深度学习工具。

  • 线性回归

  • 线性回归是一种基础的机器学习算法,用于预测一个或多个自变量与因变量之间的线性关系。使用scikit-learn库,我们可以轻松实现线性回归。
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error  
import numpy as np  # 假设我们有一些数据  
X = np.array([[1], [2], [3], [4], [5]])  
y = np.array([2, 4, 6, 8, 10])  # 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 创建线性回归模型  
model = LinearRegression()  # 训练模型  
model.fit(X_train, y_train)  # 预测测试集  
y_pred = model.predict(X_test)  # 计算均方误差  
mse = mean_squared_error(y_test, y_pred)  
print("Mean Squared Error:", mse)

  • 深度学习:神经网络

  • 深度学习是机器学习的一个子领域,它利用神经网络模型来处理复杂的任务。tensorflow是一个流行的深度学习框架,它提供了构建和训练神经网络所需的各种工具。
import tensorflow as tf  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense  # 创建一个简单的全连接神经网络模型  
model = Sequential()  
model.add(Dense(units=64, activation='relu', input_shape=(784,)))  # 输入层,784个神经元,ReLU激活函数  
model.add(Dense(units=10, activation='softmax'))  # 输出层

四、数据可视化

数据可视化是将数据以图形或图像的形式表示,以便更容易地理解和分析数据Python有多个强大的数据可视化库,如 matplotlibseaborn和 plotly等。

  • 使用matplotlib绘制基础图表

  • matplotlib是Python中非常流行的绘图库,它提供了丰富的绘图功能和灵活的配置选项。
import matplotlib.pyplot as plt  # 示例数据  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  # 绘制折线图  
plt.plot(x, y)  # 设置图表标题和坐标轴标签  
plt.title('Simple Line Plot')  
plt.xlabel('X Axis')  
plt.ylabel('Y Axis')  # 显示图表  
plt.show()

  • 使用seaborn进行高级数据可视化

  • seaborn基于 matplotlib的高级可视化库,它提供了更多的绘图类型和更美观的默认样式。
import seaborn as sns  
import pandas as pd  # 假设我们有一个DataFrame  
df = pd.DataFrame({  'A': [1, 2, 3, 4, 5],  'B': [5, 4, 3, 2, 1],  'C': [2, 3, 5, 7, 11]  
})  # 绘制热力图  
heatmap = sns.heatmap(df.corr(), annot=True)  # 显示图表  
plt.show()

  • 使用plotly创建交互式图表

  • plotly是一个能够创建交互式图表的库,它支持多种图表类型,并且允许用户通过Web浏览器进行交互
import plotly.express as px  # 假设我们有一个DataFrame  
df = px.data.iris()  # 绘制散点图,使用颜色区分不同的物种  
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species')  # 显示交互式图表  
fig.show()

五、总结

        从经典排序和搜索算法到现代机器学习和深度学习算法,再到数据可视化,Python展示了其作为数据处理和分析工具的强大功能。随着技术的不断发展,Python将继续在算法和数据可视化领域发挥重要作用,帮助我们更好地理解和利用数据。

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

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

相关文章

django中配置使用websocket

Django 默认情况下并不支持 WebSocket&#xff0c;但你可以通过集成第三方库如 channels 来实现 WebSocket 功能。channels 是一个 Django 应用&#xff0c;它提供了对 WebSocket、HTTP2 和其他协议的支持。 下面是如何在 Django 项目中使用 WebSocket 的基本步骤&#xff1a;…

算法讲解之哈希表

哈希表简介&#xff1a; 通过以下几个问题来解释~ 1、哈希表是什么&#xff1f; 存储数据的容器。 2、有什么用&#xff1f; “快速”查找某个元素。时间复杂度O(1) 空间复杂度O(N) 3、什么时候使用哈希表 频繁的查找某个数时。 4、怎么用哈希表 第一种就是直接使用哈…

十三、枚举

文章目录 枚举4.1 基础4.2 实现枚举4.3 自定义枚举 枚举 本文为书籍《Java编程的逻辑》1和《剑指Java&#xff1a;核心原理与应用实践》2阅读笔记 枚举是一种特殊的数据&#xff0c;它的取值是有限的&#xff0c;是可以枚举出来的&#xff0c;比如一年有四季、一周有七天。 …

算法导论记录丨16.1 活动选择、877. 石子游戏

16.1 活动选择 最优子结构 活动选择问题的最优子结构意味着问题的最优解包含了其子问题的最优解。具体来说&#xff0c;如果我们有一个按结束时间排序的活动集合 S{a1​,a2​,...,an​}&#xff0c;并且 S’ 是 S 的最大兼容活动子集&#xff0c;那么对于 S′ 中的任何活动aj…

COW AI接入到微信 保姆教程 (部署在服务器,插件安装)

此文章不涉及国外的AI模型&#xff0c;也无需翻墙&#xff0c;跟某AI模型无关&#xff0c;审核大哥别弄错了 最近的AI开始越开越火了&#xff0c;开始介入到我们生活中的方方面面。就有人好奇AI是否能接入到微信吗&#xff1f;我在GitHub上搜索的时候还真有除了对话外还可以通…

MySQL 基础知识(五)之数据增删改

目录 1 插入数据 2 删除数据 3 更改数据 创建 goods 表 drop table if exists goods; create table goods ( id int(10) primary key auto_increment, name varchar(14) unique, stockdate date )charsetutf8; 1 插入数据 当要插入的数据为日期/时间类型时&#xff0c;如果…

Spring Boot 笔记 021 项目部署

1.1 引入坐标&#xff0c;并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port7777 2.1.2 环境变量更新&#xff08;略&#xff09; 2.1.3 外部配置文件&#xff0c…

日期类运算符重载以及const成员详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 目录 一.前言 二.运算符重载 2.1概念 2.2比较的符号重载 2.2.1…

。ldewd

学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 例如&#xff1a; 一周掌握 Java 入门知识 学习内容&#xff1a; 提示&#xff1a;这里可以添加要学的内容 例如&#xff1a; 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习时间&#x…

ZBX_NOTSUPPORTED: Unsupported item key. 原因排查

进行自定义监控项时&#xff0c;在zabbix-agent端测试没问题&#xff0c;却在zabbix-server进行测试时&#xff0c;出现 ZBX_NOTSUPPORTED: Unsupported item key. 1.在zabbix-agent测试没问题&#xff0c;证明自定义监控项的脚本没问题&#xff0c;却在zabbix-server端测试出…

点击侧边栏菜单时只切换 <router-view> 中的内容,而不是进行整个页面的路由跳转(动态路由)

解决方法&#xff1a;在 <el-menu> 的 select 事件中调用了 handleMenuSelect 方法来处理菜单项的选择。你可以在 handleMenuSelect 方法中根据菜单项的 index 来执行相应的操作&#xff0c;例如更新组件内的数据或者切换组件。由于整个页面的路由路径并没有改变&#xf…

平时积累的FPGA知识点(7)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第七期&#xff1a; 11 描述扇出的xilinx官方文档是&#xff1f; 解释&#xff1a;ug949 12 在BD中如何指定某个IP用global&#xff0c;其他的用OOC模式&#xff1f;因为某个模块引用的IP带着XPM&#xff0c;综合不了 解释&am…

代码随想录Day50 | 70. 爬楼梯 322. 零钱兑换 279.完全平方数

代码随想录Day50 | 70. 爬楼梯 322. 零钱兑换 279.完全平方数 70.爬楼梯322.零钱兑换279.完全平方数 70.爬楼梯 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a; 状态 dp数组 dp[j]表示爬上第j阶台阶需要的方法数递推公式&#xff0c;由于在每一阶台阶可以向上走1~m阶&a…

RocketMQ与Kafka深度对比:特性与适用场景解析

在分布式系统中&#xff0c;消息队列作为解耦、缓冲和异步通信的关键组件&#xff0c;其选择对于系统的性能和稳定性至关重要。RocketMQ和Kafka作为两款流行的开源消息中间件&#xff0c;各自拥有独特的设计理念和功能特性。本文将详细对比RocketMQ与Kafka在数据可靠性、实时性…

代码随想录算法训练营Day57|647. 回文子串、516.最长回文子序列、动态规划总结

目录 647. 回文子串 前言 思路 算法实现 516.最长回文子序列 前言 思路 算法实现 动态规划总结 动规五部曲回顾 动规各小专题问题 647. 回文子串 题目链接 文章链接 前言 本题利用动态规划求解时&#xff0c;dp数组的定义与前面的就有些不同了&#xff0c;是难点之…

随机过程及应用学习笔记(三)几种重要的随机过程

介绍独立过程和独立增量过程。重点介绍两种独立增量过程-—维纳过程和泊松过程。 目录 前言 一、独立过程和独立增量过程 1、独立过程&#xff08;Independent Process&#xff09; 2、独立增量过程&#xff08;Independent Increment Process&#xff09; 二、正态过程&am…

Python bytes 类型的可变版本——bytearray类型

bytearray 是 Python 中的一个内置类型&#xff0c;用于表示可变长度的字节序列。它是 bytes 类型的可变版本&#xff0c;即 bytearray 实例的内容可以修改&#xff0c;而 bytes 实例是不可变的。 创建 bytearray 的方式&#xff1a; 通过构造函数创建&#xff1a;可以通过传递…

幻兽帕鲁云服务器机型推荐配置,支持6个人以内/10个人/20个人以内的配置怎么选择?

如果是6个人以下&#xff0c;比较建议4核16G的这个服务器配置。如果人数更多&#xff0c;就选8核32G这个配置&#xff0c;或者更高&#xff0c;如果是20个人以上&#xff0c;那么就得16核64G35M这样或者更高的配置了。 参考&#xff1a; 4~8人&#xff1a;推荐4核16G&#xf…

debug - 打补丁 - 浮点数加法

文章目录 debug - 打补丁 - 浮点数加法概述笔记demo用CE查看汇编(x64debug)main()update_info()快捷键 - CE中查看代码时的导航打补丁的时机 - 浮点数加法补丁代码补丁效果浮点数寄存器组的保存END debug - 打补丁 - 浮点数加法 概述 在cm中, UI上显示的数值仅仅用来显示, 改…

力扣---通配符匹配

题目描述&#xff1a; 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。 * 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&#xff…