当前位置: 首页 > news >正文

Python精选200Tips:141-145

实战项目

        • P141--纯numpy手码BP神经网络分类
          • 技术栈:numpy(版本1.26.4)+BP神经网络模型
        • P142--虚拟画板
          • 技术栈:GUI界面(tkinter版本8.6,PIL版本10.4.0)
        • P143--密码生成器
          • 技术栈:Python自带模块string的应用
        • P144-- 多重背包问题
          • 技术栈: PuLP(版本2.9.0)+线性规划
        • P145--含有阻尼的双物体弹簧振动模拟
          • 技术栈: 动画+物理常识

运行系统:macOS Sonoma 14.6.1
Python编译器:PyCharm 2024.1.4 (Community Edition)
Python版本:3.12

往期链接:

1-56-1011-2021-3031-4041-50
51-60:函数61-70:类71-80:编程范式及设计模式
81-90:Python编码规范91-100:Python自带常用模块-1
101-105:Python自带模块-2106-110:Python自带模块-3
111-115:Python常用第三方包-频繁使用116-120:Python常用第三方包-深度学习
121-125:Python常用第三方包-爬取数据126-130:Python常用第三方包-为了乐趣
131-135:Python常用第三方包-拓展工具1136-140:Python常用第三方包-拓展工具2
P141–纯numpy手码BP神经网络分类
技术栈:numpy(版本1.26.4)+BP神经网络模型
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoderclass NeuralNetwork:def __init__(self, input_size, hidden_layers, output_size):self.layers = [input_size] + hidden_layers + [output_size]self.weights = []self.biases = []for i in range(len(self.layers) - 1):weight = np.random.randn(self.layers[i], self.layers[i + 1]) * np.sqrt(1. / self.layers[i])bias = np.zeros((1, self.layers[i + 1]))self.weights.append(weight)self.biases.append(bias)def sigmoid(self, z):return 1 / (1 + np.exp(-z))def sigmoid_derivative(self, z):return z * (1 - z)def feedforward(self, X):self.a = [X]for w, b in zip(self.weights, self.biases):z = np.dot(self.a[-1], w) + ba = self.sigmoid(z)self.a.append(a)return self.a[-1]def backpropagate(self, X, y, learning_rate):m = y.shape[0]output = self.feedforward(X)error = output - ydeltas = [error * self.sigmoid_derivative(output)]for i in reversed(range(len(self.weights) - 1)):error = deltas[-1].dot(self.weights[i + 1].T)deltas.append(error * self.sigmoid_derivative(self.a[i + 1]))deltas.reverse()for i in range(len(self.weights)):self.weights[i] -= learning_rate * self.a[i].T.dot(deltas[i]) / mself.biases[i] -= learning_rate * np.sum(deltas[i], axis=0, keepdims=True) / mdef train(self, X, y, epochs, learning_rate):for epoch in range(epochs):self.backpropagate(X, y, learning_rate)if epoch % 1000 == 0:loss = np.mean(np.square(y - self.feedforward(X)))print(f'Epoch {epoch}, Loss: {loss:.6f}')def predict(self, X):return np.argmax(self.feedforward(X), axis=1)# 示例用法
if __name__ == "__main__":# 加载鸢尾花数据集iris 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索Python轻量级数据库:TinyDB的奇妙之旅
  • RocketMQ实战与集群架构详解
  • CANopen协议的理解
  • vue 父组件给子组件传值
  • C#程序员的堕落从nuget开始:将自己的代码发布到nuget
  • PHP中如何比较两个对象
  • 紧急通告VMware vCenter高危漏洞CVE-2024-38812和CVE-2024-38813修复方案
  • RTX 4090 系列即将停产,RTX 5090 系列蓄势待发
  • 【日记】书荒了(337 字)
  • [Golang] goroutine
  • 2023年06月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析
  • 【sgCreateCallAPIFunction】自定义小工具:敏捷开发→调用接口方法代码生成工具
  • 通过防火墙分段增强网络安全
  • Java | Leetcode Java题解之第409题最长回文串
  • 【MySQL】表的操作【有关表结构的操作】【创建、查看、删除、修改表结构】
  • 【个人向】《HTTP图解》阅后小结
  • eclipse的离线汉化
  • emacs初体验
  • es6
  • JavaScript类型识别
  • JS变量作用域
  • MySQL用户中的%到底包不包括localhost?
  • text-decoration与color属性
  • vue.js框架原理浅析
  • WePY 在小程序性能调优上做出的探究
  • windows下mongoDB的环境配置
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 嵌入式文件系统
  • 世界上最简单的无等待算法(getAndIncrement)
  • 听说你叫Java(二)–Servlet请求
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微信小程序--------语音识别(前端自己也能玩)
  • 微信支付JSAPI,实测!终极方案
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • FaaS 的简单实践
  • kubernetes资源对象--ingress
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (C#)获取字符编码的类
  • (libusb) usb口自动刷新
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (五)c52学习之旅-静态数码管
  • (一)appium-desktop定位元素原理
  • (转)Linux下编译安装log4cxx
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ... 是什么 ?... 有什么用处?
  • ./configure,make,make install的作用
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET 设计模式—适配器模式(Adapter Pattern)