Machine Learning——Homework4
作业每次都讲得很详细~
一.onehot 代码使用
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse=False)
y_onehot = encoder.fit_transform(y)
二.前向传播函数
def forward_propagate(X, theta1, theta2):m = X.shape[0]a1 = np.insert(X, 0, values=np.ones(m), axis=1)z2 = a1 * theta1.Ta2 = np.insert(sigmoid(z2), 0, values=np.ones(m), axis=1)z3 = a2 * theta2.Th = sigmoid(z3)return a1, z2, a2, z3, h
三. 代价函数(含正则化后)
def cost(params, input_size , hidden_size, num_labels, X,y ,learning_rate):m = X.shape[0]X = np.matrix(X)y= np.matrix(y)theta1 = np.matrix(np.reshape(params[:hidden_size * (input_size +1)],(hidden_size, (input_size + 1))))theta2 = np.matrix(np.reshape(params[hidden_size * (input_size + 1):],(num_labels,(hidden_size+1))))a1,z2,a2,z3,h =forword_propagate(X, theta1, theta2)J = 0for i in range(m):first_term = np.multiply(-y[i,:],np.log(h[i,:]))second_term = np.multiply((1-y[i,:]),np.log(1-h[i,:]))J +=np.sum(first_term - second_term)J=J/m# 加入正则化部分J +=(float(learning_rate)/(2*m))*(np.sum(np.power(theta1[:,1:],2))+np.sum(np.power(theta2[:,1:],2)))return J
四.sigmoid的梯度函数
def backprop(params, input_size, hidden_size, num_labels, X, y, learning_rate):m = X.shape[0]X = np.matrix(X)y = np.matrix(y)theta1 = np.matrix(np.reshape(params[:hidden_size*(input_size + 1)],(hidden_size,(input_size + 1))))theta2 = np.matrix(np.reshape(params[hidden_size*(input_size+1):],(num_labels,(hidden_size + 1))))a1,z2,a2,z3,h =forword_propagate(X,theta1,theta2)J =0delta1 = np.zeros(theta1.shape)delta2 = np.zeros(theta1.shape)for i in range(m):first_term = np.multiply(-y[i,:],np.log(h[i,:]))second_term = np.multiply((1 - y[i,:]),np.log(1 - h[i,:]))J += np.sum(first_term -second_term)J = J/mJ +=(float(learning_rate)/(2*m)) * (np.sum(np.power(theta1[:,1:],2))+np.sum(np.power(theta2[:,1:],2)))for t in range (m):a1t = a1[t,:]z2t = z2[t,:]a2t = a2[t,:]ht = h[t,:]yt = y[t,:]d3t = ht - ytz2t = np.insert(z2t,0,values=np.ones(1))d2t = np.multiply((theta2.T*d3t.T).T, sigmoid_gradient(z2t))delta1 += (d2t[:,1:]).T * a1tdelta2 += d3t.T * a2tdelta1 = delta1/mdelta2 = delta2/mgrad = np.concatenate((np.ravel(delta1),np.ravel(delta2)))return J, grad
五.找到训练参数
X = np.matrix(X)
theta1 = np.matrix(np.reshape(fmin.x[:hidden_size * (input_size + 1)], (hidden_size, (input_size + 1))))
theta2 = np.matrix(np.reshape(fmin.x[hidden_size * (input_size + 1):], (num_labels, (hidden_size + 1))))a1, z2, a2, z3, h = forward_propagate(X, theta1, theta2)
y_pred = np.array(np.argmax(h, axis=1) + 1)
y_pred
六.预测准确值
correct = [1 if a == b else 0 for (a, b) in zip(y_pred, y)]
accuracy = (sum(map(int, correct)) / float(len(correct)))
print ('accuracy = {0}%'.format(accuracy * 100))
Machine Learning——Homework4相关推荐
- bff v2ex_语音备忘录的BFF-如何通过Machine Learning简化Speech2Text
bff v2ex by Rafael Belchior 通过拉斐尔·贝尔基奥尔(Rafael Belchior) 语音备忘录的BFF-如何通过Machine Learning简化Speech2Text ...
- 吴恩达新书《Machine Learning Yearning》完整中文版 PDF 下载!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale资源 推荐人:GithubDaily,Datawhale伙伴 <Mach ...
- 吴恩达《Machine Learning》Jupyter Notebook 版笔记发布!图解、公式、习题都有了
在我很早之前写过的文章<机器学习如何入门>中,就首推过吴恩达在 Coursera 上开设的<Machine Learning>课程.这门课最大的特点就是基本没有复杂的数学理论和 ...
- 吴恩达新书《Machine Learning Yearning》完整中文版开源!
选自Github 来源:机器学习算法与自然语言处理 吴恩达新书<Machine Learning Yearning>完整中文版开源,整理给大家. <Machine Learning ...
- Auto Machine Learning 自动化机器学习笔记
⭐适读人群:有机器学习算法基础 1. auto-sklearn 能 auto 到什么地步? 在机器学习中的分类模型中: 常规 ML framework 如下图灰色部分:导入数据-数据清洗-特征工程-分 ...
- 机器学习与优化基础(Machine Learning and Optimization)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 引用大佬Pedro Domingos的说法: ...
- Machine Learning | (12) 非监督学习-k-means
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- Machine Learning | (11) 回归性能评估与欠拟合、过拟合
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- Machine Learning | (10) 回归算法-岭回归
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- Machine Learning | (9) 回归算法-线性回归
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
最新文章
- 简单介绍Git合并分支的流程步骤
- tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)
- ADSL(Asymmetric Digital Subscriber Loop)技术
- springboot-cache的简单使用
- 【效率】来了!Github 终于上线收藏夹了
- 64位Visual Studio 2022,微软在下一盘大棋!
- setTimeout(fn,0)
- 3.js模式-策略模式
- 查看计算机用户修改密码时间,使用ldap语句查询某时间后没改密码的用户
- 计算机网络子网划分路由配置实验报告,完整的子网划分与路由交换实验报告 珍藏版哦...
- vs2012安装过程 1006
- 推荐WCF的一系列录像
- 【LeetCode】贪心算法--分发糖果(135)
- 基于AISAS模式的用户分析研究
- 需求概述(需求定义,需求层次以及分类)
- simulink 菜单栏 不见了
- 磁盘区号 linux,区号
- vivado安装步骤
- 品牌营销策略:适合初创公司的5种营销方式
- 调用opensmile编译的DLL动态库API进行声音特征提取
热门文章
- java 构建_Java入门环境构建
- c# export server 调用sql_C# 如何调用 SPL 脚本
- IDEA中单元测试使用Scanner控制台无法输入
- android的简单知识,Android基础知识(简单实例计算器)
- java. 饼图的下面标签显示_饼图的数据标签太乱怎么办?
- html文本框部分字体变颜色,实现文本框内,部分字体颜色、字号等自定义
- oracle esb 灾备,两地三中心双活系统灾备切换场景和数据补录问题?
- java如何比较两个对象_Java如何比较两个对象
- Git:git pull 的使用
- sweetalert2使用教程