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.hqwc.cn/news/469503.html

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

相关文章

儿童护眼台灯哪个值得推荐?推荐专业的儿童护眼台灯

现在的孩子很多都存在视力问题&#xff0c;而且年龄也越来越早&#xff0c;不少还为上学的孩子都早已戴上小眼镜。虽说这可能存在家族近视遗传的可能性&#xff0c;不过更多的还是后天导致的。长时间玩耍电子产品、缺乏运动、不良用眼习惯、不合适的光线等等都是导致孩子近视的…

数仓建模—数据网格

数据网格 随着数字化时代的到来,近几年数据领域的新技术概念不断涌现,无论是数据湖、湖仓一体、流批一体、存算一体、数据编织抑或数据网格,很多还爬上了Gartner曲线,其中数据网格备受关注,数据网格从字面意思来看挺抽象的,会劝退很多人,但当你深入去理解这个概念时,才…

2.15 字符串练习

1、选择题 1.1、有以下程序 int main() { char a[7]"a0\0a0\0";int i,j; isizeof(a); jstrlen(a); printf("%d %d\n",i,j); } //strlen求出字符串的长度&#xff0c;其实是字符串中字符的个数&#xff0c;不包括\0 程序运行后的输出结果是 C…

thinkphp6入门(20)-- 如何上传图片、文件

1. 配置文件 设置上传的路径 对应文件夹 2. 前端 <div class"card-body"><h1 class"card-title">用户头像</h1><img src"../../../uploads/{$user.avatar_photo_path}" alt"avatar" height"100"/&g…

【leetcode】深搜、暴搜、回溯、剪枝(C++)2

深搜、暴搜、回溯、剪枝&#xff08;C&#xff09;2 一、括号生成1、题目描述2、代码3、解析 二、组合1、题目描述2、代码3、解析 三、目标和1、题目描述2、代码3、解析 四、组合总和1、题目描述2、代码3、解析 五、字母大小写全排列1、题目描述2、代码3、解析 六、优美的排列1…

C语言学习day13:嵌套循环+练习题(时钟+乘法表)

嵌套循环通常是外面一层for循环&#xff0c;里面n层for循环 代码&#xff1a; int main1601() {//外层执行一次&#xff0c;内层执行一周for (int i 0; i < 5; i){for (int j 0; j < 5; j){printf("i%d,j%d\n",i,j);}}system("pause");return EX…

移动机器人激光SLAM导航(五):Cartographer SLAM 篇

参考 Cartographer 官方文档Cartographer 从入门到精通 1. Cartographer 安装 1.1 前置条件 推荐在刚装好的 Ubuntu 16.04 或 Ubuntu 18.04 上进行编译ROS 安装&#xff1a;ROS学习1&#xff1a;ROS概述与环境搭建 1.2 依赖库安装 资源下载完解压并执行以下指令 https://pa…

搜索专项---最小步数模型

文章目录 魔板 一、魔板OJ链接 本题思路:最小步数模型: 将整个“图”视为一个状态也即一个节点. 状态的转移视为权值为1的边. BFS求解, 注意几点: 状态的存储: 一般用字符串存储状态, 用哈希表存储初始状态到每个状态的距离. 方案记录: 记忆数组存储. 本题中需要存储上一个状…

AI在工业物联网(IIoT)中的安全管理与应用

在开放的工业互联网环境中&#xff0c;数百万个基于物联网的终端和中间设备&#xff0c;需要全天候地持续通信并保持在线状态。不过&#xff0c;这些设备往往由于最初设计上的限制&#xff0c;在机密性、完整性、可用性、扩展性、以及互操作性上&#xff0c;存在着各种安全漏洞…

RK3568笔记十五:触摸屏测试

若该文为原创文章&#xff0c;转载请注明原文出处。 使用正点原子的ATK-RK3568板子&#xff0c;一直在测试屏幕和视频&#xff0c;突然想到触摸屏测试&#xff0c;一直没有用过&#xff0c;原子给的demo跑的是QT系统&#xff0c;触摸功能是正常的&#xff0c;测试一下&#xf…

[缓存] - 2.分布式缓存重磅中间件 Redis

1. 高性能 尽量使用短key 不要存过大的数据 避免使用keys *&#xff1a;使用SCAN,来代替 在存到Redis之前压缩数据 设置 key 有效期 选择回收策略(maxmemory-policy) 减少不必要的连接 限制redis的内存大小&#xff08;防止swap&#xff0c;OOM&#xff09; slowLog …

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

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