一、完成的事项
1.复习了Part_1_DNN_revisit 全连接网络
二、笔记及代码
1.面向对象编程
概念
面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递
编程
如果要处理学生的成绩表,并打印成绩
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print('%s: %s' % (self.name, self.score))
bart = Student('Bart Simpson', 59)
lisa = Student('Lisa Simpson', 87)
bart.print_score()
lisa.print_score()
注意
代码中的 class Student(object): ,是先将student定义为对象,而后才能进行操作。
2.机器学习:数据预处理之独热编码(One-Hot)
概念
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
实际案例
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) # fit来学习编码
array = enc.transform([[0, 1, 3]]).toarray() # 进行编码
print (array)
array([[1., 0., 0., 1., 0., 0., 0., 0., 1.]])
分析
数据矩阵是4*3,即4个数据,3个特征维度。
0 0 3
1 1 0
0 2 1
1 0 2
观察左边的数据矩阵,第一列为第一个特征维度,有两种取值0\1. 所 以对应编码方式为10 、01
同理,第二列为第二个特征维度,有三种取值0\1\2,所以对应编码方式为100、010、001
同理,第三列为第三个特征维度,有四中取值0\1\2\3,所以对应编码方式为1000、0100、0010、0001
再来看要进行编码的参数[0 , 1, 3], 0作为第一个特征编码为10, 1作为第二个特征编码为010, 3作为第三个特征编码为0001. 故此编码结果为 1,0, 0,1,0, 0,0,0,1
3.小心处理numpy矩阵
a = np.array([1,2,3,4])
b = a
b[0] = 100
print(a)
# 简单地可以理解为指针
[100 2 3 4]
a = np.array([1,2,3,4])
b = a.copy()
b[0] = 100
print(a)
[1 2 3 4]
分析
使用矩阵时使用 = 要小心