当前位置: 首页 > 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 

http://www.mrgr.cn/news/29541.html

相关文章:

  • Mybatis+Druid+MybatisPlus多数据源配置
  • 高效音频格式转换实战:使用Python和FFmpeg处理MP3到WAV的转换20240918
  • 启程Pulsar:深入剖析高速启动引擎,揭秘消息中间件巨兽的诞生
  • Matlab 的.m 文件批量转成py文件
  • Vue|mixin混入
  • YOLOv8 OBB win10+ visual 2022移植部署
  • 如何使用宝塔面板安装中间件
  • Fastdds_ContentFilteredTopicExample_代码剖析5_create_publisher
  • 【C++】多态的认识和理解
  • Java 中的 sleep、wait、join 怎么理解
  • Verdin AM62 引脚复用配置
  • 【MySQL】MySQL连接池原理与简易网站数据流动是如何进行
  • yaml注入配置文件
  • IEEE-754 32位十六进制数 转换为十进制浮点数
  • 游戏开发应具备的心理学知识
  • 【Python机器学习】NLP信息提取——正则模式
  • Kubernetes从零到精通(12-Ingress、Gateway API)
  • Sqlmap中文使用手册 - File system access模块参数使用
  • 米壳AI:跨境电商必备:不损失原图的图片翻译工具!
  • 感谢问界M9一打二十,让我们买到这么便宜的BBA