作业每次都讲得很详细~

一.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相关推荐

  1. bff v2ex_语音备忘录的BFF-如何通过Machine Learning简化Speech2Text

    bff v2ex by Rafael Belchior 通过拉斐尔·贝尔基奥尔(Rafael Belchior) 语音备忘录的BFF-如何通过Machine Learning简化Speech2Text ...

  2. 吴恩达新书《Machine Learning Yearning》完整中文版 PDF 下载!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale资源 推荐人:GithubDaily,Datawhale伙伴 <Mach ...

  3. 吴恩达《Machine Learning》Jupyter Notebook 版笔记发布!图解、公式、习题都有了

    在我很早之前写过的文章<机器学习如何入门>中,就首推过吴恩达在 Coursera 上开设的<Machine Learning>课程.这门课最大的特点就是基本没有复杂的数学理论和 ...

  4. 吴恩达新书《Machine Learning Yearning》完整中文版开源!

    选自Github 来源:机器学习算法与自然语言处理 吴恩达新书<Machine Learning Yearning>完整中文版开源,整理给大家. <Machine Learning ...

  5. Auto Machine Learning 自动化机器学习笔记

    ⭐适读人群:有机器学习算法基础 1. auto-sklearn 能 auto 到什么地步? 在机器学习中的分类模型中: 常规 ML framework 如下图灰色部分:导入数据-数据清洗-特征工程-分 ...

  6. 机器学习与优化基础(Machine Learning and Optimization)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 引用大佬Pedro Domingos的说法: ...

  7. Machine Learning | (12) 非监督学习-k-means

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  8. Machine Learning | (11) 回归性能评估与欠拟合、过拟合

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  9. Machine Learning | (10) 回归算法-岭回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  10. Machine Learning | (9) 回归算法-线性回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

最新文章

  1. 简单介绍Git合并分支的流程步骤
  2. tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)
  3. ADSL(Asymmetric Digital Subscriber Loop)技术
  4. springboot-cache的简单使用
  5. 【效率】来了!Github 终于上线收藏夹了
  6. 64位Visual Studio 2022,微软在下一盘大棋!
  7. setTimeout(fn,0)
  8. 3.js模式-策略模式
  9. 查看计算机用户修改密码时间,使用ldap语句查询某时间后没改密码的用户
  10. 计算机网络子网划分路由配置实验报告,完整的子网划分与路由交换实验报告 珍藏版哦...
  11. vs2012安装过程 1006
  12. 推荐WCF的一系列录像
  13. 【LeetCode】贪心算法--分发糖果(135)
  14. 基于AISAS模式的用户分析研究
  15. 需求概述(需求定义,需求层次以及分类)
  16. simulink 菜单栏 不见了
  17. 磁盘区号 linux,区号
  18. vivado安装步骤
  19. 品牌营销策略:适合初创公司的5种营销方式
  20. 调用opensmile编译的DLL动态库API进行声音特征提取

热门文章

  1. java 构建_Java入门环境构建
  2. c# export server 调用sql_C# 如何调用 SPL 脚本
  3. IDEA中单元测试使用Scanner控制台无法输入
  4. android的简单知识,Android基础知识(简单实例计算器)
  5. java. 饼图的下面标签显示_饼图的数据标签太乱怎么办?
  6. html文本框部分字体变颜色,实现文本框内,部分字体颜色、字号等自定义
  7. oracle esb 灾备,两地三中心双活系统灾备切换场景和数据补录问题?
  8. java如何比较两个对象_Java如何比较两个对象
  9. Git:git pull 的使用
  10. sweetalert2使用教程