当前位置:   article > 正文

什么是机器学习,机器学习的用途?_机器学习的作用

机器学习的作用

        目前,普遍认为,机器学习(Machine Learning,ML)是人工智能领域中的一个方向,主要是研究如何通过计算的手段,改进系统自身的性能,说到底是通过分析足够量的数据,不断改进已有的算法,从而使得算法更加的智能,进一步地提高了其泛化的能力。

        所谓的泛化能力简单地讲就是通过算法训练得到的模型对新的数据预测的准确性有很大的提高与改进。

        模型泛指从数据中学习到的结果,也可以理解为潜在的一种规律。

        机器学习已经广泛应用于日常的生活中,如智能手机的语言识别,人脸识别等,目前最广为报道的自动驾驶,都应用了大量的机器学习算法。

        机器学习背后的原理则是数学知识的应用,比如线性代数和概率论等。

        机器学习现在普遍应用的编程语言是Python。

        现在,以《Programming Machine Learning From Coding to Deep Learning》一书中的程序为例。

  • 需要解决的问题:在一家比萨店中,从预定的座位数量判断比萨的销量,二者之间的关系。
  • 解决的思路:
  • 首先,我们可以将两者之间的已有的数据绘制在二维坐标上,我们可以自己在网上寻找到一些座位数量和比萨的销量的相关数据。  
  • 接着,需要对这些数据进行拟合,所谓的拟合就是找到一条直线,看这些点是否较好地散落在这条直线的周围,那么这条直线是代表预定的座位数与比萨销量的数学模型,这里我们以测试预定座位数量为20个时,比萨的销售量是多少。 
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns # 美化图像
  4. X, Y = np.loadtxt("pizza.txt", skiprows=1, unpack=True) # skiprows是跳过第几行,unpack是指会把每一列当成一个向量输出, 而不是合并在一起
  5. # print(X[0:5], Y[0:5])
  6. # w为权重
  7. def predict(X, w):
  8. return X * w
  9. # 采用均方误差法计算误差
  10. def loss(X, Y, w):
  11. return np.average((predict(X, w) - Y) ** 2)
  12. # 训练
  13. def train(X, Y, iterations, lr):
  14. w = 0
  15. for i in range(iterations):
  16. current_loss = loss(X, Y, w)
  17. print("Iterations %4d => Loss: %.6f" % (i, current_loss))
  18. if loss(X, Y, w + lr) < current_loss:
  19. w += lr
  20. elif loss(X, Y, w - lr) < current_loss:
  21. w -= lr
  22. else:
  23. return w
  24. raise Exception("Couldn't converge within %d iterations" % iterations)
  25. w = train(X, Y, iterations=10000, lr=0.01)
  26. print("\nw=%.3f" % w)
  27. print("Prediction: x=%d => y=%.2f" % (20, predict(20, w)))
  28. # 画图
  29. sns.set()
  30. plt.plot(X, Y, "bo")
  31. plt.xticks(fontsize=15)
  32. plt.yticks(fontsize=15)
  33. plt.xlabel("Reservations", fontsize=15)
  34. plt.ylabel("Pizzas", fontsize=20)
  35. x_edge, y_edge = 50, 50
  36. plt.axis([0, x_edge, 0, y_edge])
  37. plt.plot([0, x_edge], [0, predict(x_edge, w)], linewidth=1.0, color="g")
  38. plt.show()
  • 进一步地改善这个模型,增加一个参数b,就是截距,在ML中被称为偏置。接下来,修改上述的代码。 
  1. import numpy as np
  2. import seaborn as sns
  3. import matplotlib.pyplot as plt
  4. X, Y = np.loadtxt("pizza.txt", skiprows=1, unpack=True)
  5. # b是y轴的截距,在机器学习中称之为偏置
  6. def predict(X, w, b):
  7. return X * w + b
  8. def loss(X, Y, w, b):
  9. return np.average((predict(X, w, b) - Y) ** 2)
  10. def train(X, Y, iterations, lr):
  11. w = b = 0
  12. for i in range(iterations):
  13. current_loss = loss(X, Y, w, b)
  14. print("Iterations %4d => Loss: %.6f" % (i, current_loss))
  15. if loss(X, Y, w + lr, b) < current_loss:
  16. w += lr
  17. elif loss(X, Y, w - lr, b) < current_loss:
  18. w -= lr
  19. elif loss(X, Y, w, b + lr) < current_loss:
  20. b += lr
  21. elif loss(X, Y, w, b - lr) < current_loss:
  22. b -= lr
  23. else:
  24. return w, b
  25. raise Exception("Couldn't converge within %d iterations" % iterations)
  26. w, b = train(X, Y, iterations=10000, lr=0.01)
  27. print("\nw=%.3f, b=%.3f" % (w, b))
  28. print("Prediction: x=%d => y=%.2f" % (20, predict(20, w, b)))
  29. sns.set()
  30. plt.plot(X, Y, "bo")
  31. plt.xticks(fontsize=15)
  32. plt.yticks(fontsize=15)
  33. plt.xlabel("Reservations", fontsize=15)
  34. plt.ylabel("Pizzas", fontsize=20)
  35. x_edge, y_edge = 50, 50
  36. plt.axis([0, x_edge, 0, y_edge])
  37. plt.plot([0, x_edge], [b, predict(x_edge, w, b)], linewidth=1.0, color="g")
  38. plt.show()

        预测后的图像   

        可以对上述的算法做进一步地改进,使得预测的结果更加接近于实际值! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/279088
推荐阅读
相关标签
  

闽ICP备14008679号