实现我在深度学习入门笔记(三)中的线性单元示例
https://blog.youkuaiyun.com/harden1013/article/details/119780800?spm=1001.2014.3001.5501
eg.假定我们需要评定一个学生的推优评分(y),影响该学生推优的特征向量{x_i}包括(绩点,学生工作,科研成绩,实践表现),而每个特征参与评定的比重不同即为参数{k_i},评定还有着基础分b,我们通过样本训练得到{k_i},再来预测新的学生能获得怎样的评分。
首先是感知器,由于依然是一个线性问题,感知器可以使用我在深度学习入门笔记(二)中的感知器类
https://blog.youkuaiyun.com/harden1013/article/details/119778079?spm=1001.2014.3001.5501
激活函数如下:
def f(x):
return x
构建训练集,【绩点,学生工作,科研成绩,实践表现】包含最后的得分均为5分制:
def get_training_dataset():
input_vecs = [[4.5,4.7,4.6,4.8],[4.5,4.0,4.6,4.7],[4.5,4.7,4.3,4.2],[4.7,4.6,4.5,4.3],[4.9,4.0,4.0,4.1],[4.1,4.9,4.8,4.9]]
labels = [4.57,4.49,4.45,4.61,4.55,4.40]
return input_vecs, labels
训练感知器:
def train_linear_unit():
p = perceptron(4, f)
input_vecs, labels = get_training_dataset()
p.train(input_vecs, labels, 10000, 0.01)
return p
主函数:
if __name__ == '__main__':
linear_unit = train_linear_unit()
print(linear_unit)
print('[绩点,学生工作,科研成绩,实践表现] = [4.5,4.7,4.6,4.8] 最终得分为:%.2f' % linear_unit.predict([4.5,4.7,4.6,4.8]))
print('[绩点,学生工作,科研成绩,实践表现] = [4.5,4.0,4.6,4.7] 最终得分为:%.2f' % linear_unit.predict([4.5,4.0,4.6,4.7]))
print('[绩点,学生工作,科研成绩,实践表现] = [4.5,4.7,4.3,4.2] 最终得分为:%.2f' % linear_unit.predict([4.5,4.7,4.3,4.2]))
print('[绩点,学生工作,科研成绩,实践表现] = [5.0,5.0,5.0,5.0] 最终得分为:%.2f' % linear_unit.predict([5.0,5.0,5.0,5.0]))
计算结果如下:
weights :[0.592273500292354,0.09907395106529637,0.196892896023883,0.09729332034785503]
bias :0.064500
[绩点,学生工作,科研成绩,实践表现] = [4.5,4.7,4.6,4.8] 最终得分为:4.57
[绩点,学生工作,科研成绩,实践表现] = [4.5,4.0,4.6,4.7] 最终得分为:4.49
[绩点,学生工作,科研成绩,实践表现] = [4.5,4.7,4.3,4.2] 最终得分为:4.45
[绩点,学生工作,科研成绩,实践表现] = [5.0,5.0,5.0,5.0] 最终得分为:4.99