Neural Networks for Machine Learning Lecture 2
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
Lecture2主要介绍了神经网络的几种主流类型以及感知机,下面回顾一下。
几种常见的神经网络前馈神经网络(Feed-forward neural networks)
循环神经网络(Recurrent networks )
循环神经网络最大的特点是会返回之前访问过的节点。
对称连接神经网络(Symmetrically connected networks)这种神经网络和循环神经网络类似,但是单元之间的连接是对称的(它们在两个方向上具有相同的重量),这种循环网络的优势在于训练起来相对容易,但是也有一定的能力限制,例如不能循环建模。没有隐藏层的对称连接神经网络称为”Hopfield nets”,有隐藏层的对称连接神经网络称为”Boltzmann machines”。
下面看下感知机
感知机首先看下什么是感知机
z=b+\sum_{i}x_iw_i=w^Tx\\
z=\b ...
Neural Networks for Machine Learning Lecture 1
这门课其实观望了很久,之前比较忙没时间学,几天前看了下,发现每周视频量不是很多,所以打算暑假把这门课跟完,做一些简单的笔记。
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
下面进入Lecture1的内容,Lecture1的内容比较简单,介绍了机器学习以及神经网络一些基本概念,这里比较重要的概念是神经元,为了模仿大脑的神经元,在神经网络中也有一些神经元的模型,可以简单理解为一种处理函数,这里介绍了几个常用的。
Linear Neurons
y=b+\sum_{i}x_iw_i图像如下
Binary Threshold Neurons
z=b+\sum_{i}x_iw_i\\
z=\begin{cases}
1, & \text{ $z\ge 0$}\\
0, & \text{其余情况}
\end{cases}图像如下
Rectified Linear Neurons(Linear Thres ...
Scipy linprog报错整理
最近在做Learning from data的习题,要解决一个线性优化问题,但是碰到一个坑,这里记录一下,具体题目可以参考Learning from data的第三章的Problem3.6,题目的大概意思是从线性规划角度解决分类问题,我先产生1000组数据。
import numpy as np
import matplotlib.pyplot as plt
#参数
rad=10
thk=5
sep=5
#n为产生点的个数,x1,y1为上半个圆环的坐标
def generatedata(rad,thk,sep,n,x1=0,y1=0):
#上半个圆的圆心
X1=x1
Y1=y1
#下半个圆的圆心
X2=X1+rad+thk/2
Y2=Y1-sep
#上半个圆环的点
top=[]
#下半个圆环的点
bottom=[]
#后面要用到的参数
r1=rad+thk
r2=rad
cnt=1
while(cnt<=n):
...
北理Python爬虫Week4
课程地址:https://www.icourse163.org/course/BIT-1001870001
这里对北理爬虫课程第四周内容回顾,本周主要介绍了Scrapy框架。本周的例子尝试了很久一直没有成功,网上查阅了很多资料才解决,这里记录下供大家参考。
1.如果官方例子无法运行,可以查看下twisted的版本,如果为17.0以上,那么先删除scrapy,twisted,运行以下两步
conda uninstall scrapy
conda uninstall twisted
接着重新安装scrapy以及twisted 16.6.0版本,运行以下两步
conda install twisted==16.6.0
conda install scrapy --no-deps
conda install scrapy —no-deps的意思是安装scrapy的时候不要安装依赖的twisted,因为conda安装scrapy的时候会让我们将twisted一起安装了。
2.安装完成之后官方的例子可以运行了,但是老师给的例子依旧不行,这里尝试了一下猜测是名字的问题, ...
斯坦福CS106A作业5
这次作业是设计yahtzee这款游戏。/*
* File: Yahtzee.java
* ------------------
* This program will eventually play the Yahtzee game.
*/
import acm.io.*;
import acm.program.*;
import acm.util.*;
public class Yahtzee extends GraphicsProgram implements YahtzeeConstants {
public static void main(String[] args) {
new Yahtzee().start(args);
}
public void run() {
IODialog dialog = getDialog();
nPlayers = dialog.readInt("Enter number of players");
playerNames = new String[nPlay ...
斯坦福CS106A作业4
这次的作业是做小时候经常玩的猜单词游戏。/*
* File: Hangman.java
* ------------------
* This program will eventually play the Hangman game from
* Assignment #4.
*/
import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Hangman extends ConsoleProgram {
/***********************************************************
* CONSTANTS *
******************* ...
浙大数据结构课程总结
今天把浙大数据结构Mooc的期末考试完成了,结果还算不错。通过这个课程的学习,我从一个对数据结构一窍不通的人变成了一个对数据结构略知一二的人。如果让我再从头学一遍的话,我会先把C语言学好,并且买老师的参考书。后续时间里应该会把课程再复习一遍,用C语言把代码再实现一遍,然后去参加PAT的甲级考试。
这里把编程题贴一下,是一道中序后后续遍历推测前序遍历的问题,之前有做过类似的,还是比较简单的。
习题
7-1 根据后序和中序遍历输出先序遍历(8 分)本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:Preorder: 4 1 3 2 6 5 7
# -*- coding: utf-8 -*-
"""
Created o ...
浙大数据结构Week11
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周是最后一周,内容为散列表,下面回顾下。
Part1:回顾1.散列表如果我们有一组数据,这组数据不方便比较大小,那么如何高效地查找其中的元素呢?这就有了散列表。散列表的基本思想就是构造一个映射h,将需要查找的元素映射到一个值上,这个值就是数组存储的地址。但是不同的关键字可能会映射到同一个地址,这就有了冲突,如何解决冲突是我们需要关心的问题。
从散列函数的定义我们可以看出,散列函数应该构造简单,并且尽量减少冲突,老师的课件中介绍了很多种处理方法,这里不一一列出了。下面着重介绍冲突处理方法。
2.冲突处理方法这里老师其是就介绍了两种冲突处理方法,第一种是遇到冲突就换一个位置,第二种是把冲突的对象组织在一起。第一种被称为开放地址法,第二种被称为链地址法。
开放地址法下面分别看下
线性探测法简单来说线性探测法就是在冲突的时候不停地右移,如果到底则从头开始,直至找到一个空的位置。我们从下图看下具体的过程。我们来分析下散列表的性能,这里分别计算成功平均查找长度(AS ...
浙大数据结构Week10
课程地址:https://www.icourse163.org/course/ZJU-93001笔记中图片均来自此mooc中讲义。
这周接着上周又补充了一些排序算法,这里继续回顾下。
Part1:回顾1.快速排序快速排序的思路是这样的,首先选取一个pivot(枢轴元素),然后将待排数组分为两部分,小于pivot的元素,大于pivot的元素,小于pivot的元素放在pivot元素的前面,大于pivot的元素放在pivot后面,然后对小于pivot的元素和大于pivot的元素分别再采取这个方式处理,具体过程如下:
显然快速排序有随机性,出现随机性的原因是pivot的选取缘故,这里来看个最坏的情形。
为了避免这种情形,老师建议取头,中,尾元素的中位数作为pivot。这里老师还提到在小规模数据时,快速排序可能还不如插入排序,所以老师提出如下解决方案:
2.表排序在对很庞大的结构排序时,交换两个元素的时间和空间都是很大的,如果使用之前的算法效果会不好,所以就有了表排序这种间接排序。表排序的意思构造指针数组,排序时不交换元素本身,只交换指向元素的指针来排序,可以参考下面一个图来理解:这里的意思是根 ...
北理Python爬虫Week3
课程地址:https://www.icourse163.org/course/BIT-1001870001笔记内容结合课件整理。
这里对北理爬虫课程第三周内容回顾,本周主要介绍了正则表达式
1.正则表达式的概念正则表达式是用来简洁表达一组字符串的表达式正则表达式是一种通用的字符串表达框架进一步正则表达式是一种针对字符串表达“简洁” 和“特征” 思想的工具正则表达式可以用来判断某字符串的特征归属
正则表达式的常用操作符
操作符
说明
实例
.
表示任何单个字符
[ ]
字符集,对单个字符给出取值范围
[abc]表示a、 b、 c,[a‐z]表示a到z单个字符
非字符集,对单个字符给出排除范围
abc表示非a或b或c的单个字符
*
前一个字符0次或无限次扩展
abc* 表示 ab、 abc、 abcc、 abccc等
+
前一个字符1次或无限次扩展
abc+ 表示 abc、 abcc、 abccc等
?
前一个字符0次或1次扩展
abc? 表示 ab、 abc
|
左右表达式任意一个
abc|def 表示 abc、 def
...
斯坦福CS106A作业3
这次作业是设计一个很有意思的小游戏。
problem1:
这题还是比较简单的,只要看一下课本第10章即可。
/*
* File: MouseReporter.java
* -----------------------------
* Output the location of the mouse to a label on the
* screen. Change the color of the label to red when
* the mouse touches it.
*/
import java.awt.Color;
import java.awt.event.MouseEvent;
import acm.graphics.*;
import acm.program.*;
public class MouseReporter extends GraphicsProgram {
// A constant for the x value of the label
private static ...
北理Python爬虫Week2
课程地址:https://www.icourse163.org/course/BIT-1001870001笔记内容结合课件整理。
这里对北理爬虫课程第二周内容回顾,本周主要介绍了Beautiful Soup库以及信息标记与提取方法。
1.Beautiful Soup库入门Beautiful Soup库是一个解析网络数据的python库,下面使用下。
import requests
r = requests.get('https://python123.io/ws/demo.html')
r.text
'<html><head><title>This is a python demo page</title></head>\r\n<body>\r\n<p class="title"><b>The demo python introduces several python courses.</b></p>\r\n<p class=&quo ...