极限学习机实验
一、实验要求
1. 掌握神经元网络中的几种常见的激活函数。
2. 掌握矩阵的常见操作,并能用程序实现。
3. 掌握最小二乘法,并能用程序实现。
4. 通过激活函数、矩阵操作、最小二乘法实现极限学习机,能够对任意变量数量的数据集进行训练,确定网络结构中的参数,并能够利用获得的确定网络进行预测。
二、矩阵类
我跟着这个python的矩阵类实现写的自己的矩阵类。
链接中的矩阵类使用的是二维数组,然而无法直接赋值整个矩阵,只能进行单行赋值。
因此我使用的是一维数组,初始化时矩阵可以直接通过list、tuple等直接整体赋值
class MyMatrix(object):
def __init__(self, row, column, value = 0):
self.row = row
self.column = column
if value == 0:
self._matrix = [0.0 for i in range(row * column)]
else:
assert len(value) == row * column, '赋值数量不匹配'
self._matrix = list(value)
通过python的特殊函数实现了加、乘、获取元素、赋值和输出功能。
# return m[i],返回矩阵第i行元素(list)
# return m[i, j],返回矩阵第i行第j行的元素
def __getitem__(self, index):
if isinstance(index, int):
assert index <= self.row, str(index) + ' ' + str(self.row) + ' index超了'
row = []
for i in range(self.column):
row.append(self._matrix[self.column * (index - 1) + i])
return row
elif isinstance(index, tuple):
assert index[0] <= self.row and index[1] <= self.column, str(index[0]) + ' ' + str(self.row) + ' ' + str(index[1]) + ' ' + str(self.column) + ' index超了'
return self._matrix[self.column * (index[0] - 1) + index[1] - 1]
# m[i, 0] ~ m[i, j] = value,给矩阵第i行赋值,list或tuple
# m[i, j] = value
def __setitem__(self, index, value):
if isinstance(index, int):
assert index <= self.row, str(index) + ' ' + str(self.row) + ' index超了'
for i in range(self.column):
self._matrix[self.column * (index - 1) + i] = value[i]
elif isinstance(index, tuple):
assert index[0] <= self.row and index[1] <= self.column, str(index[0