当前位置:   article > 正文

Python机器学习:_python epoch

python epoch
手动实现
  1. '''
  2. 使用Python语言实现线性回归(梯度下降)
  3. '''
  4. import numpy as np
  5. import matplotlib.pyplot as plt
  6. x = np.array([0.5, 0.6, 0.8, 1.1, 1.4])
  7. y = np.array([5.0, 5.5, 6.0, 6.8, 7.1])
  8. # 设定初始的模型参数
  9. w1 = 1 # 权重
  10. w0 = 1 # 偏置
  11. learning_rate = 0.01 # 学习率
  12. epoch = 500 # 轮数
  13. w0s, w1s, losses, epoches = [], [], [], []
  14. for i in range(epoch):
  15. # 输出每一轮参数更新之前的损失值以及模型参数
  16. loss = ((w1 * x + w0 - y) ** 2).sum() / 2
  17. print('轮数:{:3},w1:{:.8f},w0:{:.8f},loss:{:.8f}'.format(i + 1, w1, w0, loss))
  18. # 收集w0,w1,loss的变化情况
  19. w0s.append(w0)
  20. w1s.append(w1)
  21. losses.append(loss)
  22. epoches.append(i + 1)
  23. d0 = (w0 + w1 * x - y).sum()
  24. d1 = (x * (w1 * x + w0 - y)).sum()
  25. # 更新w0和w1
  26. w0 = w0 - learning_rate * d0
  27. w1 = w1 - learning_rate * d1
  28. print('w1:{},w0:{}'.format(w1, w0))
  29. pred_y = w1 * x + w0 # 预测值
  30. # plt.scatter(x,y)
  31. # plt.plot(x,pred_y,color='orangered')
  32. # plt.show()
  33. # 模型参数更新过程可视化,及损失值变化情况
  34. plt.figure('params', figsize=(8, 6), facecolor='lightgray')
  35. plt.subplot(3, 1, 1)
  36. plt.plot(epoches, w0s, color='dodgerblue', label='w0')
  37. plt.legend()
  38. plt.subplot(3, 1, 2)
  39. plt.plot(epoches, w1s, color='dodgerblue', label='w1')
  40. plt.legend()
  41. plt.subplot(3, 1, 3)
  42. plt.plot(epoches, losses, color='orangered', label='loss')
  43. plt.legend()
  44. plt.show()

调用sk-learn

  1. '''
  2. 基于sklearn提供的API实现线性回归
  3. '''
  4. import pandas as pd
  5. import sklearn.linear_model as lm # 线性模型
  6. import matplotlib.pyplot as plt
  7. import sklearn.metrics as sm # 模型评估模块
  8. import pickle
  9. # 加载数据
  10. data = pd.read_csv('../data_test/Salary_Data.csv')
  11. # 整理输入(二维)和输出(一维)
  12. x = data.iloc[:, :-1] # 所有行不要最后一列
  13. y = data.iloc[:, -1] # 所有行只要最后一列
  14. print('x:', x)
  15. print('y:', y)
  16. # 构建模型
  17. model = lm.LinearRegression() # y = w1x1 + w2x2 + ......wnxn + w0
  18. # 训练模型
  19. model.fit(x, y)
  20. # 执行预测
  21. pred_y = model.predict(x)
  22. print('w:{}'.format(model.coef_[0]))
  23. print('b:{}'.format(model.intercept_))
  24. # 模型可视化
  25. # plt.scatter(x,y)
  26. # plt.plot(x,pred_y,color='orangered')
  27. # plt.show()
  28. # 模型的评估
  29. # 拿到一组数据,作为测试数据,假设测试数据没参加过训练
  30. test_x = x.iloc[::4] # 测试集的输入
  31. test_y = y[::4] # 测试集的输出(真实值)
  32. pred_test_y = model.predict(test_x) # (预测值)
  33. # 平均绝对误差
  34. print(sm.mean_absolute_error(test_y, pred_test_y))
  35. # 中位数绝对偏差
  36. print(sm.median_absolute_error(test_y, pred_test_y))
  37. # r2得分
  38. print(sm.r2_score(test_y, pred_test_y))
  39. # 模型保存与加载
  40. # with open('./model.pickle','wb') as f:
  41. # pickle.dump(model,f)
  42. # print('模型保存成功')
  43. #
  44. #
  45. # with open('./model.pickle','rb') as f:
  46. # model = pickle.load(f)
  47. # model.predict()

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

闽ICP备14008679号