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

news2024/11/26 0:36:00

一、引言

        随着信息技术的飞速发展,数据已经成为现代社会不可或缺的资源。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.coloradmin.cn/o/1449245.html

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

相关文章

OJ刷题:猜名次和找凶手【建议收藏点赞】

目录 1. 猜名次2. 找凶手 1. 猜名次 代码实现&#xff1a; #include <stdio.h>int main() {int a 0;int b 0;int c 0;int d 0;int e 0;for (a 1; a < 5; a){for (b 1; b < 5; b){for (c 1; c < 5; c){for (d 1; d < 5; d){for (e 1; e < 5; e)…

Windows 版Oracle 数据库(安装)详细过程

首先到官网上去下载oracle64位的安装程序 第一步&#xff1a;将两个datebase文件夹解压到同一目录中。 当下载完成后,它里面是两个文件夹 win64_11gR2_database_1of2, win64_11gR2_database_2of2,我们需要把其中的一个database文件夹整合在一起(复制一个database文件夹到另一…

寒假作业:2024/2/14

作业1&#xff1a;编程实现二维数组的杨辉三角 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d",&n);int a…

Nvm安装(windows版)

1、nvm 是什么 &#xff08;1&#xff09;nvm(Node.js version manager) 是一个命令行应用&#xff0c;可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 &#xff08;2&#xff09;有时候&#xff0c;我们可能同时在进行多个项目开发&#xff0c;而多个项…

Netty Review - 服务端channel注册流程源码解析

文章目录 PreNetty主从Reactor线程模型服务端channel注册流程源码解读入口 serverBootstrap.bind(port)执行队列中的任务 &#xff1a; AbstractUnsafe#register0注册 doRegister() 源码流程图 Pre Netty Review - ServerBootstrap源码解析 Netty Review - NioServerSocketCh…

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml【第79篇—读写XML文件】

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml XML&#xff08;eXtensible Markup Language&#xff09;是一种常见的数据交换格式&#xff0c;广泛应用于各种应用程序和领域。在数据处理中&#xff0c;Pandas是一个强大的工具&#xff0c;它提供了read_xml和to…

MySQL-----函数篇

目录 ▶ 字符串函数 ▶ 数值函数 ▶ 日期函数 ▶ 流程函数 ▶ 简介 函数是指一段可以直接被另一段程序调用的程序或代码。 ▶ 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码&#xff1a; S…

C++的进阶泛型编程学习(1):函数模板的基本概念和机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、模板1.1 模板的概念1.1.1 形象的解释&#xff1a;模板就是通用的模具&#xff0c;目的是提高通用性1.1.1 模板的特点&#xff1a;1.1.2 综述模板的作用 1.2…

【从Python基础到深度学习】7. 使用scp命令实现主机间通讯

一、生成 SSH 密钥对 ssh-keygen 是一个用于生成 SSH 密钥对的命令行工具&#xff0c;用于身份验证和加密通信 ssh-keygen 二、将本地主机上的 SSH 公钥添加到远程主机 ssh-copy-id 命令用于将本地主机上的 SSH 公钥添加到远程主机上的 authorized_keys 文件中&#xff0c;…

反无人机系统技术分析,无人机反制技术理论基础,无人机技术详解

近年来&#xff0c;经过大疆、parrot、3d robotics等公司不断的努力&#xff0c;具有强大功能的消费级无人机价格不断降低&#xff0c;操作简便性不断提高&#xff0c;无人机正快速地从尖端的军用设备转入大众市场&#xff0c;成为普通民众手中的玩具。 然而&#xff0c;随着消…

高斯模糊滤镜

高斯模糊滤镜 import cv2# 读取图像 image cv2.imread(1.jpg)# 高斯模糊滤镜 blurred cv2.GaussianBlur(image, (15, 15), 0)# 保存处理后的图像 cv2.imwrite(blurred_image.jpg, blurred)# 显示原始图像和处理后的图像 cv2.imshow(Original Image, image) cv2.imshow(Blurre…

TiDB in 2023, 一次简单的回顾丨PingCAP 唐刘

2023 年已经过去&#xff0c;TiDB 经过了一年的迭代&#xff0c;又往前进步了一点点&#xff0c;我们非常自豪的看到&#xff0c;TiDB 正在不断地帮助我们的客户成功&#xff0c;包括但不限于&#xff1a; ○ 首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB …

【日志框架】

日志打印 建议用{}占位而不是字符串拼接打日志前先判断日志级别是否可用&#xff1a; 先根据等级过滤规则再决定写不写&#xff1b;先往一个管道写了内容&#xff0c;但再经等级过滤丢弃&#xff0c;徒增开销。 日志框架 Slf4J Slf4J 不是底层日志框架&#xff0c;只是门面…

JavaScript中解锁Map和Set的力量

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 ES6带来了Map和Set两个新的数据结构 - 它们分别用于存放键值对和唯一值。Map和Set提供了更…

第十九篇【传奇开心果系列】Python的OpenCV库技术点案例示例:文字识别与OCR

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列 短博文目录前言一、OpenCV 文字识别介绍二、图像预处理示例代码三、文字区域检测示例代码四、文字识别示例代码五、文字后处理示例代码六、OpenCV结合Tesseract OCR库实现文字识别示例代码七、OpenCV结…

PHP+vue+mysql校园学生社团管理系统574cc

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 前台功能&#xff1a; 首页&#xff1a;展示社团信息和活动…

COM初体验——新建文档并写入内容。

我想在程序里和Word交互。老师跟我说不要学COM&#xff0c;因为它已经过时了。但是我不想再把代码移植到C#上面&#xff0c;然后用VSTO——已经用了std::unordered_set&#xff01;因为我使用了Copilot&#xff0c;结合我的思考&#xff0c;写了下面的代码&#xff1a; #impor…

JavaWeb学习|JSON与AJAX

学习材料声明 所有知识点都来自互联网&#xff0c;进行总结和梳理&#xff0c;侵权必删。 引用来源&#xff1a;尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机…

山西电力市场日前价格预测【2024-02-10】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-10&#xff09;山西电力市场全天平均日前电价为126.73元/MWh。其中&#xff0c;最高日前电价为302.95元/MWh&#xff0c;预计出现在08:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

SolidWorks:创建实体的扇形分割

没找到如何创建扇形分割&#xff0c;自己想了个办法&#xff0c;硬把它分割开了。