功能:通过样本进行训练,让线性单元自己找到(这就是所谓机器学习)工资计算的规律,然后用两组数据进行测试机器是否真的get到了其中的规律。
原文链接在文尾,文章中的代码为了演示起见,仅根据工作年限来预测工资,参数是一维的,最后绘制的图也是平面图。本着学习的态度,我将代码改为能根据两个参数来预测工资,两个参数分别是工作年限和级别,并且用3D图绘制出拟合的效果。原作者的代码是适用于Python2.7的,我的代码适用于Python3,谨供参考。
注意:绘图代码需要安装matplotlib。
代码:
1 #!/usr/bin/env python
2 #-*- coding: UTF-8 -*-
3
4 from Perceptron importPerceptron5
6
7 #定义激活函数f
8 f = lambdax: x9
10 classLinearUnit(Perceptron):11 def __init__(self, input_num):12 '''初始化线性单元,设置输入参数的个数'''
13 Perceptron.__init__(self, input_num, f)14
15
16 defget_training_dataset():17 '''
18 捏造5个人的收入数据19 '''
20 #构建训练数据
21 #输入向量列表,每一项的第一个是工作年限,第二个是级别
22 #构造这些数据所用的公式是:工资=1000*年限 + 500*级别,看机器是否能猜出来
23 input_vecs = [[5,1], [3, 7], [8,2], [1.5,5], [10,6]]24 #期望的输出列表,月薪,注意要与输入一一对应。【注意! 我故意让结果不太准确,这也会导致预测的结果有偏差】
25 labels = [5200, 6700, 9300, 3500, 15500]26 returninput_vecs, labels27
28
29 deftrain_linear_unit():30 '''
31 使用数据训练线性单元32 '''
33 #创建感知器,输入参数的特征数为2(工作年限,级别)
34 lu = LinearUnit(2)35 #训练,迭