le 更新了 0.5b1

le更新了,可在我的主页(http://nullvb.go3.icpcn.com/)下载,

更新内容:

2007-3-11 v 0.5b1 (1.4.137)
2007-3-10 + 收藏夹菜单上的快捷菜单增加了"删除"项,可以通过这个方法删除收藏
2007-1-9 f 修正收藏夹中文件名过长无法显示的问题
2006-12-12 f++ 关于焦点问题实现了以下要求:用tab(或shift+tab)键可以遍历应用程序界面所有的元素,目前仅限于在地址栏,搜索栏及网页中转移;键盘焦点应该能立即转移到新建的页面中,切换页面时也能自动转移到当前页面,当焦点在地址栏或搜索栏时,焦点不做改变;当程序重新变为活动窗口时,焦点应该能返回上次为活动窗口时的位置(最后这点未能很好实现,焦点总是返回网页页面).于是相应的也解决了一些与焦点相关的bug,这里就不列出来了.
2006-10-22 f 修正了即使网页关闭了也不会释放内存的问题(其实是程序中一个很大的bug,竟然忽略了,汗)
2006-8-18 + 增加了插件接口ILEEvent
2006-8-11 + 增加了消息栏,在弹出页面或对话框被屏蔽时会显示出来
2006-8-9 + 增加了屏蔽网页对话框功能(xp sp2或以上)
2006-5-11 ++ 实现了完美的鼠标拖拽,在支持原来的鼠标拖拽功能的同时,也实现了ie缺省的拖拽效果.
f 修改了添加收藏的方式,即使使用的是自定义的收藏夹路经,在添加收藏的时候都能显示正确的路经,只是还存在一点小问题,不能使用"允许脱机使用"(估计都没多少人会用这个的了,:))
f 支持了网页中添加到收藏的脚本.
++ 可使用相对路经设置自定义的收藏夹目录,目前仅限于程序目录下,用"./"表示
2006-4-14 * 修改了鼠标手势的存储方式,程序运行后需要重新设置
2006-2-22 + 基本上支持xp主题了.
* 基本上算是unicode了(在说什么呢...unicode版本?反正就是那个意思)
2006-2-14 f 修正拖拽保存的文本文件有多余空格的问题
2006-1-27 * 重写了插件系统,插件只有一种,不再区分是否侧边栏插件,命令插件或工具栏插件.同时原系统中对应功能也去掉了,如不再支持脚本类,sendkey等的插件.
2006-1-15 * 修改了搜索引擎的存储方式,改为一独立文件放在search目录下,修改方式在文件中有注明,程序中不提供修改方式(以后未定是否会恢复),增加了能使用post提交方式的搜索的功能
2006-1-14 f 修正了在收藏夹菜单里使用"边栏收藏夹"命令的一个bug(不能正确展开所处位置)

### BP算法单隐藏层神经网络实现 以下是基于BP算法的单隐藏层神经网络代码示例,用于在西瓜数据集上进行训练并预测“好瓜”。该代码实现了前向传播和反向传播的过程。 #### 数据预处理 为了使模型能够正常工作,需对原始数据进行标准化或归一化处理。假设`melon.csv`文件包含如下列:特征(如颜色、根蒂、敲声等)以及目标标签(是否为“好瓜”)。这里采用简单的数值编码方式将分类变量转换为数值型变量。 ```python import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler, LabelEncoder # 加载数据 data = pd.read_csv('melon.csv') # 特征与标签分离 X = data.drop(columns=['label']).values y = data['label'].values # 对类别型特征进行编码 le_X = LabelEncoder() for i in range(X.shape[1]): X[:, i] = le_X.fit_transform(X[:, i]) # 对标签进行二值化编码 le_y = LabelEncoder() y = le_y.fit_transform(y) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 标准化 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) ``` #### 单隐藏层神经网络实现 以下是一个完整的单隐藏层神经网络实现: ```python class SingleHiddenLayerNN: def __init__(self, input_dim, hidden_dim, output_dim, learning_rate=0.01): self.W1 = np.random.randn(input_dim, hidden_dim) * 0.01 self.b1 = np.zeros((1, hidden_dim)) self.W2 = np.random.randn(hidden_dim, output_dim) * 0.01 self.b2 = np.zeros((1, output_dim)) self.learning_rate = learning_rate def sigmoid(self, Z): return 1 / (1 + np.exp(-Z)) def forward(self, X): self.Z1 = np.dot(X, self.W1) + self.b1 self.A1 = np.tanh(self.Z1) self.Z2 = np.dot(self.A1, self.W2) + self.b2 A2 = self.sigmoid(self.Z2) return A2 def backward(self, X, y, A2): m = X.shape[0] dZ2 = A2 - y.reshape(-1, 1) dW2 = (1/m) * np.dot(self.A1.T, dZ2) db2 = (1/m) * np.sum(dZ2, axis=0, keepdims=True) dA1 = np.dot(dZ2, self.W2.T) dZ1 = dA1 * (1 - np.power(self.A1, 2)) dW1 = (1/m) * np.dot(X.T, dZ1) db1 = (1/m) * np.sum(dZ1, axis=0, keepdims=True) # 更新参数 self.W1 -= self.learning_rate * dW1 self.b1 -= self.learning_rate * db1 self.W2 -= self.learning_rate * dW2 self.b2 -= self.learning_rate * db2 def compute_loss(self, A2, y): epsilon = 1e-15 A2_clipped = np.clip(A2, epsilon, 1 - epsilon) logprobs = -np.mean(y * np.log(A2_clipped) + (1-y) * np.log(1-A2_clipped)) return logprobs def fit(self, X, y, epochs=1000): losses = [] for epoch in range(epochs): A2 = self.forward(X) loss = self.compute_loss(A2, y) self.backward(X, y, A2) if epoch % 100 == 0: print(f'Epoch {epoch}, Loss: {loss}') losses.append(loss) def predict(self, X): A2 = self.forward(X) predictions = (A2 >= 0.5).astype(int) return predictions.flatten() # 初始化模型 input_dim = X_train.shape[1] hidden_dim = 8 output_dim = 1 model = SingleHiddenLayerNN(input_dim=input_dim, hidden_dim=hidden_dim, output_dim=output_dim) # 训练模型 model.fit(X_train, y_train, epochs=1000) # 测试模型 predictions = model.predict(X_test) accuracy = np.mean(predictions == y_test) print(f'Test Accuracy: {accuracy:.2f}') # 输出测试精度 ``` #### 运行过程及结果 上述代码通过定义一个类来封装神经网络的核心逻辑。具体来说: - `forward` 方法完成前向传播计算; - `backward` 方法执行梯度下降更新权重; - `fit` 方法控制整个训练流程; - `predict` 方法用于生成最终预测结果。 当运行此脚本时,会打印每100轮迭代后的损失函数值,并在最后显示测试集上的准确率。如果一切设置无误,则可以观察到随着训练次数增加,损失逐渐减小而准确率达到较高水平[^1]。 #### 注意事项 对于实际应用中的复杂场景可能还需要进一步调整超参数或者引入正则项防止过拟合等问题发生。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值