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

引言

        Python,作为一种功能强大的编程语言,一直是算法实现的首选工具。从经典的排序和查找算法到现代的机器学习和深度学习算法,Python都展现出了其强大的实力。接下来,我们将一起探索Python算法的经典与现代。


一、经典算法:快速排序

        快速排序是一种高效的排序算法,它采用分治法的思想,通过选取一个基准元素,将待排序的数组划分为两个子数组,使得左边的元素都比基准元素小,右边的元素都比基准元素大,然后递归地对子数组进行排序。

示例代码:

def quicksort(arr):  
    if len(arr) <= 1:  
        return arr  
    pivot = arr[len(arr) // 2]  
    left = [x for x in arr if x < pivot]  
    middle = [x for x in arr if x == pivot]  
    right = [x for x in arr if x > pivot]  
    return quicksort(left) + middle + quicksort(right)  
  
# 测试  
arr = [3,6,8,10,1,2,1]  
print(quicksort(arr))  # 输出: [1, 1, 2, 3, 6, 8, 10]

二、经典算法:二分查找

        二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。

示例代码:

def binary_search(arr, x):  
    low = 0  
    high = len(arr) - 1  
    mid = 0  
  
    while low <= high:  
        mid = (high + low) // 2  
        if arr[mid] < x:  
            low = mid + 1  
        elif arr[mid] > x:  
            high = mid - 1  
        else:  
            return mid  
    return -1  
  
# 测试  
arr = [2, 3, 4, 10, 40]  
x = 10  
result = binary_search(arr, x)  
if result != -1:  
    print("元素在数组中的索引为", str(result))  
else:  
    print("元素不在数组中")

三、现代算法:支持向量机(SVM)

        支持向量机是一种广泛应用于分类、回归和异常检测等任务的机器学习算法。它基于统计学习理论,通过寻找一个超平面来最大化不同类别之间的间隔,从而实现分类。

示例代码:

from sklearn import svm  
from sklearn.model_selection import train_test_split  
from sklearn.datasets import load_iris  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
  
# 创建SVM分类器  
clf = svm.SVC(kernel='linear')  
  
# 训练模型  
clf.fit(X_train, y_train)  
  
# 预测测试集  
y_pred = clf.predict(X_test)  
  
# 评估模型  
accuracy = clf.score(X_test, y_test)  
print("SVM分类准确率:", accuracy)

四、现代算法:神经网络

        神经网络是一种模拟人脑神经元结构的计算模型,广泛应用于图像识别、语音识别、自然语言处理等任务。Python中的TensorFlow和PyTorch等框架为神经网络的实现提供了强大的支持。

示例代码:(这里仅展示一个简单的神经网络模型构建,省略了数据加载和训练过程)

import tensorflow as tf  
  
# 构建一个简单的神经网络模型  
model = tf.keras.Sequential([  
    tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)),  
    tf.keras.layers.Dense(10, activation='softmax')  
])

五、现代算法:深度学习之卷积神经网络(CNN)

        卷积神经网络(CNN)是深度学习中一种非常重要的网络结构,特别适用于处理图像相关的任务,如图像分类、目标检测、图像分割等。CNN通过卷积层、池化层等结构,能够自动提取图像中的特征,并进行高效的分类和识别。

示例代码:(以TensorFlowKeras为例)

import tensorflow as tf  
from tensorflow.keras import datasets, layers, models  
  
# 加载CIFAR10数据集  
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()  
  
# 数据预处理  
train_images, test_images = train_images / 255.0, test_images / 255.0  
  
# 构建CNN模型  
model = models.Sequential()  
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))  
model.add(layers.MaxPooling2D((2, 2)))  
model.add(layers.Conv2D(64, (3, 3), activation='relu'))  
model.add(layers.MaxPooling2D((2, 2)))  
model.add(layers.Conv2D(64, (3, 3), activation='relu'))  
  
# 添加全连接层  
model.add(layers.Flatten())  
model.add(layers.Dense(64, activation='relu'))  
model.add(layers.Dense(10))  
  
# 编译模型  
model.compile(optimizer='adam',  
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),  
              metrics=['accuracy'])  
  
# 训练模型  
model.fit(train_images, train_labels, epochs=10,   
          validation_data=(test_images, test_labels))

六、现代算法:深度学习之循环神经网络(RNN)

        循环神经网络(RNN)是另一种重要的深度学习模型,特别适用于处理序列数据,如文本、时间序列等。RNN通过内部的循环结构,能够捕捉序列中的时间依赖关系,并进行有效的预测和分类。

示例代码:(以TensorFlow和Keras为例,用于文本分类任务)

import tensorflow as tf  
from tensorflow.keras.preprocessing.text import Tokenizer  
from tensorflow.keras.preprocessing.sequence import pad_sequences  
  
# 假设我们有一些文本数据和对应的标签  
texts = ["我喜欢吃苹果", "我不喜欢吃香蕉", "苹果很好吃", "香蕉有点甜"]  
labels = [1, 0, 1, 0]  # 假设1代表正面情感,0代表负面情感  
  
# 文本预处理和编码  
tokenizer = Tokenizer(num_words=1000)  
tokenizer.fit_on_texts(texts)  
sequences = tokenizer.texts_to_sequences(texts)  
padded_sequences = pad_sequences(sequences)  
  
# 构建RNN模型  
model = tf.keras.Sequential([  
    tf.keras.layers.Embedding(1000, 16),  
    tf.keras.layers.SimpleRNN(32),  
    tf.keras.layers.Dense(1, activation='sigmoid')  
])  
  
# 编译模型  
model.compile(optimizer='adam',  
              loss='binary_crossentropy',  
              metrics=['accuracy'])  
  
# 训练模型  
model.fit(padded_sequences, labels, epochs=10)

总结:

  •         本文通过探索从经典到现代的多种算法,展示了Python在算法实现中的强大能力。无论是快速排序、二分查找这样的经典算法,还是支持向量机、神经网络、卷积神经网络和循环神经网络等现代机器学习算法,Python都提供了丰富的库和工具来支持它们的实现。
  •         希望本文能够帮助读者更深入地理解Python在算法领域的应用,并激发您进一步探索和实践算法的热情。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Django的中间件使用说明。

目录 1.中间件2. 为什么要中间件&#xff1f;3. 具体使用中间件3.1 中间件所在的位置&#xff1a;在django的settings.py里面的MIDDLEWARE。3.2 中间件的创建3.3 中间件的使用 4. 展示成果 1.中间件 中间件的大概解释&#xff1a;在浏览器在请求服务器的时候&#xff0c;首先要…

小区周边适合开什么店?商机无限等你来挖掘

在小区周边开店&#xff0c;是许多创业者的首选。那么&#xff0c;到底开什么店才能抓住商机呢&#xff1f; 作为一名开店 5 年的资深创业者&#xff0c;我将以我的鲜奶吧为例&#xff0c;分享一些实用的经验和见解。 我的鲜奶吧采用了鲜奶吧酸奶店结合体的模式&#xff0c;产…

操作 Docker 存储卷的常用指令汇总

1. 什么是存储卷&#xff1f; 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。使得可以在宿主机和容器内共享数据库内容&#xff0c;让容器直接访问宿主机中的内容&#xff0c;也可以宿主机向容器写入内容&#xff0c;容…

基于函数计算AIGC图片识别

目录 在 OSS 中建立图片目录 在函数计算中基于模板创建ImageAI应用 体验ImageAI图像识别效果 我们不但可以基于函数计算创建AIGC应用&#xff0c;实现以文生图&#xff0c;同时我们也可以基于函数计算创建ImageAI应用&#xff0c;通过简单几步实现对图片中对象的识别。下面我…

【初学者必看】迈入Midjourney的艺术世界:轻松掌握Midjourney的注册与订阅!

文章目录 前言一、Midjourney是什么二、Midjourney注册三、新建自己的服务器四、开通订阅 前言 AI绘画即指人工智能绘画&#xff0c;是一种计算机生成绘画的方式。是AIGC应用领域内的一大分支。 AI绘画主要分为两个部分&#xff0c;一个是对图像的分析与判断&#xff0c;即…

qt“五彩斑斓“ opengl

本篇文章我们来描述一下opengl相关知识 我们先看一下opengl渲染的效果 很漂亮&#xff1f; 那下面就来介绍一下这么漂亮的opengl OpenGL&#xff08;Open Graphics Library&#xff09;是一个跨平台的图形编程接口&#xff0c;用于渲染2D和3D图形。它提供了一系列函数和数据结…

小白学习Halcon100例:如何利用动态阈值分割图像进行PCB印刷缺陷检测?

文章目录 *读入图片*关闭所有窗口*获取图片尺寸*根据图片尺寸打开一个窗口*在窗口中显示图片* 缺陷检测开始 ...*1.开运算 使用选定的遮罩执行灰度值开运算。*2.闭运算 使用选定的遮罩执行灰度值关闭运算*3.动态阈值分割 使用局部阈值分割图像显示结果*显示原图*设置颜色为红色…

C语言习题----不同版本的差别

这个程序数组越界&#xff0c;但是结果是死循环&#xff1b; &#xff08;1&#xff09;死循环的这种情况只会在debug--x86的版本才会出现&#xff0c;其他版本不会出现&#xff1b;这种情况会在特定的情况下发生&#xff0c;和环境有和大的关系&#xff0c;不同的编译器对于内…

lv15 平台总线驱动开发——ID匹配 3

一、ID匹配之框架代码 id匹配&#xff08;可想象成八字匹配&#xff09;&#xff1a;一个驱动可以对应多个设备 ------优先级次低&#xff08;上一章名称匹配只能1对1&#xff09; 注意事项&#xff1a; device模块中&#xff0c;id的name成员必须与struct platform_device中…

Linux环境中的git

目录 1.要使用git&#xff0c;首先要安装git 2.首次使用git需要做的操作 3.git操作 1.要使用git&#xff0c;首先要安装git 指令&#xff1a;sudo yum install -y git 2.首次使用git需要做的操作 在gitee网页&#xff0c;在你的仓库中找到&#xff1a; 先将下面两行代码分别…

基于PSO粒子群优化的PID控制器参数整定算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PID控制器简介 4.2 PSO算法原理 4.3 基于PSO的PID参数整定 5.完整工程文件 1.课题概述 基于PSO粒子群优化的PID控制器参数整定。通过PSO不断的优化&#xff0c;使得PID控制器的控制反馈误差逐渐接…

《汇编语言》- 读书笔记 - 第9章 - 转移指令的原理

《汇编语言》- 读书笔记 - 第9章 - 转移指令的原理 总结9.1 操作符 offset问题 9.1 9.2 jmp 指令9.3 依据位移进行转移的 jmp 指令jmp short 标号程序 9.1程序 9.2图 9.2 程序 9.2 的机器码 jmp near ptr 标号 9.4 转移的目的地址在指令中的 jmp 指令如何选择 jmp short、jmp n…

干货 | 实战演练基于加密接口测试测试用例设计

如果接口测试仅仅只是掌握一些requests或者其他一些功能强大的库的用法&#xff0c;是远远不够的&#xff0c;还需要具有根据公司的业务以及需求去定制化一个接口自动化测试框架能力。所以在这个部分&#xff0c;会主要介绍接口测试用例分析以及通用的流程封装是如何完成的。 首…

用HTML Canvas和JavaScript创建美丽的花朵动画效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>flower</title><style>* {margin: 0;padding: 0;overflow: hidden;backg…

学习笔记20:牛客周赛32

D 统计子节点中1的个数即可&#xff08;类似树形dp&#xff1f;&#xff09; #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<queue> #include<vector> #include<set> #include<map>u…

Nvidia 推出了本地版聊天 Chat with RTX;OpenAI联创Karpathy宣布离职专注个人项目

&#x1f989; AI新闻 Nvidia 推出了本地版聊天 Chat with RTX 摘要&#xff1a;英伟达最近发布了名为“Chat with RTX”的Demo版个性化AI聊天机器人&#xff0c;适用于Windows平台&#xff0c;需要Nvidia的30系/40系显卡&#xff0c;显存至少为8GB&#xff0c;系统配置包括1…

【教学类-19-05】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页一种图案,A空,横向、边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环&#xff08;手工纸自带色彩&#xff09; 素材准备 代码展示 作者&#xff1a;阿夏 时间&#xff1a;2024年2月14日 名称&#xff1a;正方形数字卡片AB图案 _ 华光彩云_CNKI A的位置有图案 18格 一页一种图案&#xff0c;A空&#…

步步深入 k8s 使用 pv pvc sc 在 nfs 基础上共享存储

博客原文 文章目录 前言集群环境nfs 环境搭建pod 挂载 nfs架构图 pvc 方式挂载 nfs架构图 storageclass 方式动态申请 pv架构图 参考 前言 持久化卷&#xff08;Persistent Volume, PV&#xff09;允许用户将外部存储映射到集群&#xff0c;而持久化卷申请&#xff08;Persist…

open ai api 国内配置代理指南(网上最全)

1.配置须知 open ai 作为这一波AI浪潮的推动者&#xff0c;opne ai的gpt 系列产品在使用和体验上绝对是最强大的&#xff0c;现在对于开发者来说要在代码中访问open ai api是不可用的。所以本文就主要解决这个问题。我们要了解open ai 的网站gpt的访问和api的访问收费是分开来…

K8sGPT 的使用

K8sGPT 介绍 k8sgpt 是一个扫描 Kubernetes 集群、诊断和分类问题的工具。它将 SRE 经验编入其分析器中&#xff0c;并帮助提取最相关的信息&#xff0c;通过人工智能来丰富它。它还可以与 OpenAI、Azure、Cohere、Amazon Bedrock 和本地模型结合使用。 K8sGPT Github 地址 …