人工智能知识分享第五天-正则化.丧失函数案例

打印 上一主题 下一主题

主题 1041|帖子 1041|积分 3123

正则化

欠拟合与过拟合

过拟合:一个假设 在练习数据上可以或许得到比其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据 (体如今正确率下降),此时以为这个假设出现了过拟合的现象。(模子过于复杂)
欠拟合:一个假设 在练习数据上不能得到更好的拟合,并且在测试数据集上也不能很好地拟合数据 ,此时以为这个假设出现了欠拟合的现象。(模子过于简单)
过拟合和欠拟合的区别:

欠拟合在练习集和测试集上的误差都较大
过拟合在练习集上误差较小,而测试集上误差较大

丧失函数案例

波士顿房价预测

案例背景先容

数据先容


给定的这些特征,是专家们得出的影响房价的效果属性。不须要自己去探究特征是否有用,只须要使用这些特征。
案例分析

回归当中的数据大小不一致,是否会导致效果影响较大。以是须要做尺度化处理。


  • 数据分割与尺度化处理
  • 回归预测
  • 线性回归的算法效果评估
回归性能评估

均方误差(Mean Squared Error, MSE)评价机制


  • 均方误差回归丧失
  • y_true:真实值
  • y_pred:预测值
  • return:浮点数效果
波士顿房价预测_正规方程解法

  1. """
  2. 案例:
  3.     波士顿房价预测, 正规方程解法.
  4. 回顾:
  5.     正规方程解法 和 梯度下降的区别:
  6.         相同点: 都可以用来找 损失函数的极小值, 评估 回归模型.
  7.         不同点:
  8.             正规方程: 一次性求解, 资源开销较大, 适合于小批量干净的数据集, 如果数据没有逆, 也无法计算.
  9.             梯度下降: 迭代求解, 资源开销相对较小, 适用于大批量的数据集, 实际开发 更推荐.
  10.                 分类:
  11.                     全梯度下降
  12.                     随机梯度下降
  13.                     小批量梯度下降
  14.                     随机平均梯度下降
  15.     线性回归模型 评估的方案:
  16.         方案1: 平均绝对误差, Mean Absolute Error,  误差绝对值的和 的 平均值.
  17.         方案2: 均方误差, Mean Squared Error, 误差的平方和的平均值
  18.         方案3: 均方根误差, Root Mean Squared Error, 误差的平方和的平均值的 平方根.
  19.     机器学习项目的研发流程:
  20.         1. 获取数据.
  21.         2. 数据的预处理.
  22.         3. 特征工程.
  23.             特征提取, 特征预处理(标准化, 归一化), 特征降维, 特征选取, 特征组合.
  24.         4. 模型训练.
  25.         5. 模型评估.
  26.         6. 模型预测.
  27. """
  28. # 导包
  29. # from sklearn.datasets import load_boston           # 数据集
  30. from sklearn.preprocessing import StandardScaler  # 特征处理
  31. from sklearn.model_selection import train_test_split  # 数据集划分
  32. from sklearn.linear_model import LinearRegression  # 正规方程的回归模型
  33. from sklearn.metrics import mean_squared_error, mean_absolute_error, root_mean_squared_error  # 均方误差评估 平均绝对值误差评估 均方根误差评估
  34. import pandas as pd
  35. import numpy as np
  36. # 1. 获取数据.
  37. data_url = "http://lib.stat.cmu.edu/datasets/boston"
  38. raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
  39. data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
  40. target = raw_df.values[1::2, 2]
  41. # 查看数据 以及数量
  42. # print(f'特征: {len(data)}, {data[:5]}')
  43. # print(f'目标: {len(target)}, {target[:5]}')
  44. # 2. 数据的预处理.
  45. x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=22)
  46. # 3. 特征工程, 特征提取, 特征预处理(标准化, 归一化), 特征降维, 特征选取, 特征组合.
  47. # 3.1 创建标准化对象.
  48. transfer = StandardScaler()
  49. # 3.2 对训练和 和 测试集的 特征进行标准化处理.
  50. x_train = transfer.fit_transform(x_train)
  51. x_test = transfer.transform(x_test)
  52. # 4. 模型训练.
  53. # 4.1 创建 线性回归之 正规方程对象.
  54. # 参数: fit_intercept: 是否计算截距(bias, 偏置), 默认是: True
  55. estimator = LinearRegression(fit_intercept=True)
  56. # 4.2 模型训练.
  57. estimator.fit(x_train, y_train)
  58. # 5. 模型预测.
  59. y_predict = estimator.predict(x_test)
  60. print(f'预测值为:{y_predict}')
  61. print(f'权重:{estimator.coef_}')
  62. print(f'偏置:{estimator.intercept_}')
  63. # 6. 模型评估.
  64. # 参1: 真实值, 参2: 预测值
  65. # MAE(平均绝对误差) 和 RMSE(均方根误差) 都可以衡量模型的预测效果, 如果更关注异常值, 就用 RMSE
  66. print(f'平均绝对误差: {mean_absolute_error(y_test, y_predict)}')
  67. print(f'均方误差: {mean_squared_error(y_test, y_predict)}')  # 20.77068478427006
  68. print(f'均方根误差: {root_mean_squared_error(y_test, y_predict)}')  # 4.557486674063903
  69. print(f'均方根误差: {np.sqrt(mean_squared_error(y_test, y_predict))}')  # 4.557486674063903, 效果同上, sqrt全称是: square root
复制代码
波士顿房价预测_梯度下降解法

  1. """
  2. 案例:
  3.     波士顿房价预测, 梯度下降解法.
  4. 回顾:
  5.     正规方程解法 和 梯度下降的区别:
  6.         相同点: 都可以用来找 损失函数的极小值, 评估 回归模型.
  7.         不同点:
  8.             正规方程: 一次性求解, 资源开销较大, 适合于小批量干净的数据集, 如果数据没有逆, 也无法计算.
  9.             梯度下降: 迭代求解, 资源开销相对较小, 适用于大批量的数据集, 实际开发 更推荐.
  10.                 分类:
  11.                     全梯度下降
  12.                     随机梯度下降
  13.                     小批量梯度下降
  14.                     随机平均梯度下降
  15.     线性回归模型 评估的方案:
  16.         方案1: 平均绝对误差, Mean Absolute Error,  误差绝对值的和 的 平均值.
  17.         方案2: 均方误差, Mean Squared Error, 误差的平方和的平均值
  18.         方案3: 均方根误差, Root Mean Squared Error, 误差的平方和的平均值的 平方根.
  19.     机器学习项目的研发流程:
  20.         1. 获取数据.
  21.         2. 数据的预处理.
  22.         3. 特征工程.
  23.             特征提取, 特征预处理(标准化, 归一化), 特征降维, 特征选取, 特征组合.
  24.         4. 模型训练.
  25.         5. 模型评估.
  26.         6. 模型预测.
  27. """
  28. # 导包
  29. # from sklearn.datasets import load_boston                # 数据
  30. from sklearn.preprocessing import StandardScaler  # 特征处理
  31. from sklearn.model_selection import train_test_split  # 数据集划分
  32. from sklearn.linear_model import LinearRegression  # 正规方程的回归模型
  33. from sklearn.linear_model import SGDRegressor  # 梯度下降的回归模型
  34. from sklearn.metrics import mean_squared_error, mean_absolute_error, \
  35.     root_mean_squared_error  # 均方误差评估, 平均绝对值误差评估, 均方根误差评估
  36. import pandas as pd
  37. import numpy as np
  38. # 1. 获取数据.
  39. data_url = "http://lib.stat.cmu.edu/datasets/boston"
  40. raw_df = pd.read_csv(data_url, sep="\\s+", skiprows=22, header=None)
  41. data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
  42. target = raw_df.values[1::2, 2]
  43. print(f'特征: {len(data)}, {data[:3]}')
  44. print(f'标签: {len(target)}, {target[:3]}')
  45. # 2. 数据的预处理.                                            特征   标签    测试集占比           随机种子
  46. x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=22)
  47. # 3. 特征工程, 特征提取, 特征预处理(标准化, 归一化), 特征降维, 特征选取, 特征组合.
  48. # 3.1 创建标准化对象.
  49. transfer = StandardScaler()
  50. # 3.2 对训练和 和 测试集的 特征进行标准化处理.
  51. x_train = transfer.fit_transform(x_train)
  52. x_test = transfer.transform(x_test)
  53. # 4. 模型训练.
  54. # 4.1 创建 线性回归之 梯度下降对象.
  55. # 参数: fit_intercept: 是否计算截距(bias, 偏置), 默认是: True
  56. # estimator = LinearRegression(fit_intercept=True)
  57. #                            参1: 是否计算偏置   参2 : 学习率固定为常量     参3: 学习率的值
  58. estimator = SGDRegressor(fit_intercept=True, learning_rate='constant', eta0=0.008)
  59. # 4.2 模型训练.4
  60. estimator.fit(x_train, y_train)
  61. # 5. 模型预测.
  62. y_predict = estimator.predict(x_test)
  63. print(f'权重: {estimator.coef_}')
  64. print(f'偏置: {estimator.intercept_}')
  65. print('-' * 22)
  66. # 6. 模型评估.
  67. # 参1: 真实值, 参2: 预测值
  68. # MAE(平均绝对误差) 和 RMSE(均方根误差) 都可以衡量模型的预测效果, 如果更关注异常值, 就用 RMSE
  69. print(f'平均绝对误差: {mean_absolute_error(y_test, y_predict)}')
  70. print(f'均方误差: {mean_squared_error(y_test, y_predict)}')
  71. print(f'均方根误差: {root_mean_squared_error(y_test, y_predict)}')
  72. print(f'均方根误差: {np.sqrt(mean_squared_error(y_test, y_predict))}')
复制代码
正则化办理过拟合案例

  1. """
  2. 案例:
  3.     演示正则化解决 拟合问题.
  4. 回顾:
  5.     拟合: 指的是 模型和数据之间存在关系, 即: 预测值 和 真实值之间的关系.
  6.     欠拟合: 模型在训练集, 测试集标签都不好.
  7.         原因: 模型过于简单了.
  8.     过拟合: 模型在训练集表现好, 在测试集表现不好.
  9.         原因: 模型过于复杂了, 数据不纯, 数据量少.
  10.     正好拟合(泛化): 模型在训练集, 测试集都好
  11.     奥卡姆剃刀: 在误差相同(泛化程度一样)的情况下, 优先选择简单的模型.
  12. 正则化解释:
  13.     概述:
  14.         正则化: 是一种对模型复杂度的一种控制, 通过 降低特征的权重 实现.
  15.     分类:
  16.         L1正则化, 指的是: Lasso模块, 会 降低权重, 甚至可能降为0 -> 特征选取.
  17.         L2正则化, 指的是: Ridge模块, 会 降低权重, 但不会降为0.
  18. """
  19. # 导包
  20. import numpy as np  # 主要是做数学相关运算操作等.
  21. import matplotlib.pyplot as plt  # Matplotlib绘图的
  22. from sklearn.linear_model import LinearRegression, Lasso, Ridge  # 线性回归的 正规方程解法, L1正则化, L2正则化.
  23. from sklearn.metrics import mean_squared_error, root_mean_squared_error, mean_absolute_error  # 计算均方误差, 均方根误差, 平均绝对误差
  24. from sklearn.model_selection import train_test_split  # 切割测试集和训练集.
  25. # 1. 定义函数, 演示: 欠拟合情况.
  26. def dm01_模型欠拟合():
  27.     # 1. 生成数据.
  28.     # 1.1 指定随机数种子, 种子一样, 则每次生成的随机数的规则都是相同的.
  29.     np.random.seed(22)
  30.     # 1.2 生成x轴的坐标.
  31.     x = np.random.uniform(-3, 3, size=100)
  32.     # 1.3 基于x轴的值, 结合线性公式, 生成y轴的值.
  33.     # 回顾一元线性回归公式: y = kx + b, 这里为了数据效果更好, 加入噪声...
  34.     # 即: y = 0.5x² + x + 2 + 噪声(正太分布生成的随机数).
  35.     #  np.random.normal(0, 1, size=100)意思是: 生成正态分布的随机数, 均值是0, 标准差是1, 随机数个数是100.
  36.     y = 0.5 * x ** 2 + x + 2 + np.random.normal(0, 1, size=100)
  37.     # 1.4 查看数据集.
  38.     print(f'x轴的值: {x}')     #  [1, 2, 3]
  39.     print(f'y轴的值: {y}')
  40.     # 2. 数据的预处理.
  41.     X1 = x.reshape(-1, 1)
  42.     print(f'处理后, X: {X1}')   # [[1], [2], [3]]
  43.     # 3. 创建模型(算法)对象.
  44.     # 3.1 线性回归的 正规方程对象.
  45.     estimator = LinearRegression()
  46.     # 3.2 模型训练.
  47.     estimator.fit(X1, y)
  48.     # 4. 模型预测.
  49.     y_predict = estimator.predict(X1)
  50.     print(f'预测值: {y_predict}')
  51.     # 5. 模型评估.
  52.     print(f'均方误差: {mean_squared_error(y, y_predict)}')
  53.     print(f'均方根误差: {root_mean_squared_error(y, y_predict)}')
  54.     print(f'平均绝对误差: {mean_absolute_error(y, y_predict)}')
  55.     # 6. 绘制图形.
  56.     plt.scatter(x, y)                           # 真实值的x轴, y轴 绘制散点图.
  57.     plt.plot(x, y_predict, color='red')   # 预测值的x轴, y轴 绘制折线图(充当拟合回归线)
  58.     plt.show()
  59. # 2. 定义函数, 演示: 正好拟合的情况.
  60. def dm02_模型正好拟合():
  61.     # 1. 生成数据.
  62.     # 1.1 指定随机数种子, 种子一样, 则每次生成的随机数的规则都是相同的.
  63.     np.random.seed(22)
  64.     # 1.2 生成x轴的坐标.
  65.     x = np.random.uniform(-3, 3, size=100)
  66.     # 1.3 基于x轴的值, 结合线性公式, 生成y轴的值.
  67.     # 回顾一元线性回归公式: y = kx + b, 这里为了数据效果更好, 加入噪声...
  68.     # 即: y = 0.5x² + x + 2 + 噪声(正太分布生成的随机数).
  69.     #  np.random.normal(0, 1, size=100)意思是: 生成正态分布的随机数, 均值是0, 标准差是1, 随机数个数是100.
  70.     y = 0.5 * x ** 2 + x + 2 + np.random.normal(0, 1, size=100)
  71.     # 1.4 查看数据集.
  72.     print(f'x轴的值: {x}')     # [1, 2, 3]
  73.     print(f'y轴的值: {y}')
  74.     # 2. 数据的预处理.
  75.     X1 = x.reshape(-1, 1)
  76.     # np.hstack()解释: 垂直合并, 即: 竖直方向合并.
  77.     X2 = np.hstack([X1, X1 ** 2])
  78.     print(f'处理后, X1: {X1}')   # [[1], [2], [3]]
  79.     print(f'处理后, X2: {X2}')   # [[1, 1], [2, 4], [3, 9]]
  80.     # 3. 创建模型(算法)对象.
  81.     # 3.1 线性回归的 正规方程对象.
  82.     estimator = LinearRegression()
  83.     # 3.2 模型训练.
  84.     estimator.fit(X2, y)
  85.     # 4. 模型预测.
  86.     y_predict = estimator.predict(X2)
  87.     print(f'预测值: {y_predict}')
  88.     # 5. 模型评估.
  89.     print(f'均方误差: {mean_squared_error(y, y_predict)}')
  90.     print(f'均方根误差: {root_mean_squared_error(y, y_predict)}')
  91.     print(f'平均绝对误差: {mean_absolute_error(y, y_predict)}')
  92.     # 6. 绘制图形.
  93.     # 6.1 真实值的x轴, y轴 绘制散点图.
  94.     plt.scatter(x, y)
  95.     # 6.2 根据预测值的x轴(升序排序), y轴值, 绘制折线图(充当拟合回归线).
  96.     plt.plot(np.sort(x), y_predict[np.argsort(x)], color='red')   # 预测值的x轴, y轴 绘制折线图(充当拟合回归线)
  97.     plt.show()
  98. # 3. 定义函数, 演示: 过拟合的情况.
  99. def dm03_模型过拟合():
  100.     # 1. 生成数据.
  101.     # 1.1 指定随机数种子, 种子一样, 则每次生成的随机数的规则都是相同的.
  102.     np.random.seed(22)
  103.     # 1.2 生成x轴的坐标.
  104.     x = np.random.uniform(-3, 3, size=100)
  105.     # 1.3 基于x轴的值, 结合线性公式, 生成y轴的值.
  106.     # 回顾一元线性回归公式: y = kx + b, 这里为了数据效果更好, 加入噪声...
  107.     # 即: y = 0.5x² + x + 2 + 噪声(正太分布生成的随机数).
  108.     #  np.random.normal(0, 1, size=100)意思是: 生成正态分布的随机数, 均值是0, 标准差是1, 随机数个数是100.
  109.     y = 0.5 * x ** 2 + x + 2 + np.random.normal(0, 1, size=100)
  110.     # 1.4 查看数据集.
  111.     print(f'x轴的值: {x}')     # [1, 2, 3]
  112.     print(f'y轴的值: {y}')
  113.     # 2. 数据的预处理.
  114.     X1 = x.reshape(-1, 1)
  115.     # np.hstack()解释: 垂直合并, 即: 竖直方向合并.
  116.     X3 = np.hstack([X1, X1 ** 2, X1 ** 3, X1 ** 4, X1 ** 5, X1 ** 6, X1 ** 7, X1 ** 8, X1 ** 9, X1 ** 10])
  117.     print(f'处理后, X1: {X1}')   # [[1], [2], [3]]
  118.     print(f'处理后, X3: {X3}')   # [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024], [3, 9, 27...]]
  119.     # 3. 创建模型(算法)对象.
  120.     # 3.1 线性回归的 正规方程对象.
  121.     estimator = LinearRegression()
  122.     # 3.2 模型训练.
  123.     estimator.fit(X3, y)
  124.     # 4. 模型预测.
  125.     y_predict = estimator.predict(X3)
  126.     print(f'预测值: {y_predict}')
  127.     # 5. 模型评估.
  128.     print(f'均方误差: {mean_squared_error(y, y_predict)}')
  129.     print(f'均方根误差: {root_mean_squared_error(y, y_predict)}')
  130.     print(f'平均绝对误差: {mean_absolute_error(y, y_predict)}')
  131.     # 6. 绘制图形.
  132.     # 6.1 真实值的x轴, y轴 绘制散点图.
  133.     plt.scatter(x, y)
  134.     # 6.2 根据预测值的x轴(升序排序), y轴值, 绘制折线图(充当拟合回归线).
  135.     plt.plot(np.sort(x), y_predict[np.argsort(x)], color='red')   # 预测值的x轴, y轴 绘制折线图(充当拟合回归线)
  136.     plt.show()
  137. # 4. 定义函数, 演示: L1正则化 解决 过拟合.
  138. def dm04_L1正则化():
  139.     # 1. 生成数据.
  140.     # 1.1 指定随机数种子, 种子一样, 则每次生成的随机数的规则都是相同的.
  141.     np.random.seed(22)
  142.     # 1.2 生成x轴的坐标.
  143.     x = np.random.uniform(-3, 3, size=100)
  144.     # 1.3 基于x轴的值, 结合线性公式, 生成y轴的值.
  145.     # 回顾一元线性回归公式: y = kx + b, 这里为了数据效果更好, 加入噪声...
  146.     # 即: y = 0.5x² + x + 2 + 噪声(正太分布生成的随机数).
  147.     #  np.random.normal(0, 1, size=100)意思是: 生成正态分布的随机数, 均值是0, 标准差是1, 随机数个数是100.
  148.     y = 0.5 * x ** 2 + x + 2 + np.random.normal(0, 1, size=100)
  149.     # 1.4 查看数据集.
  150.     print(f'x轴的值: {x}')     # [1, 2, 3]
  151.     print(f'y轴的值: {y}')
  152.     # 2. 数据的预处理.
  153.     X1 = x.reshape(-1, 1)
  154.     # np.hstack()解释: 垂直合并, 即: 竖直方向合并.
  155.     X3 = np.hstack([X1, X1 ** 2, X1 ** 3, X1 ** 4, X1 ** 5, X1 ** 6, X1 ** 7, X1 ** 8, X1 ** 9, X1 ** 10])
  156.     print(f'处理后, X1: {X1}')   # [[1], [2], [3]]
  157.     print(f'处理后, X3: {X3}')   # [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024], [3, 9, 27...]]
  158.     # 3. 创建模型(算法)对象.
  159.     # 3.1 线性回归的 正规方程对象.
  160.     # estimator = LinearRegression()
  161.     # 创建 L1正则化对象.
  162.     # 参数alpha: 正则化的(惩罚)系数, (惩罚)系数越大, 则正则化项的权重越小.
  163.     estimator = Lasso(alpha=0.1)
  164.     # 3.2 模型训练.
  165.     estimator.fit(X3, y)
  166.     # 4. 模型预测.
  167.     y_predict = estimator.predict(X3)
  168.     print(f'预测值: {y_predict}')
  169.     # 5. 模型评估.
  170.     print(f'均方误差: {mean_squared_error(y, y_predict)}')
  171.     print(f'均方根误差: {root_mean_squared_error(y, y_predict)}')
  172.     print(f'平均绝对误差: {mean_absolute_error(y, y_predict)}')
  173.     # 6. 绘制图形.
  174.     # 6.1 真实值的x轴, y轴 绘制散点图.
  175.     plt.scatter(x, y)
  176.     # 6.2 根据预测值的x轴(升序排序), y轴值, 绘制折线图(充当拟合回归线).
  177.     plt.plot(np.sort(x), y_predict[np.argsort(x)], color='red')   # 预测值的x轴, y轴 绘制折线图(充当拟合回归线)
  178.     plt.show()
  179. # 5. 定义函数, 演示: L2正则化 解决 过拟合.
  180. def dm05_L2正则化():
  181.     # 1. 生成数据.
  182.     # 1.1 指定随机数种子, 种子一样, 则每次生成的随机数的规则都是相同的.
  183.     np.random.seed(22)
  184.     # 1.2 生成x轴的坐标.
  185.     x = np.random.uniform(-3, 3, size=100)
  186.     # 1.3 基于x轴的值, 结合线性公式, 生成y轴的值.
  187.     # 回顾一元线性回归公式: y = kx + b, 这里为了数据效果更好, 加入噪声...
  188.     # 即: y = 0.5x² + x + 2 + 噪声(正太分布生成的随机数).
  189.     #  np.random.normal(0, 1, size=100)意思是: 生成正态分布的随机数, 均值是0, 标准差是1, 随机数个数是100.
  190.     y = 0.5 * x ** 2 + x + 2 + np.random.normal(0, 1, size=100)
  191.     # 1.4 查看数据集.
  192.     print(f'x轴的值: {x}')     # [1, 2, 3]
  193.     print(f'y轴的值: {y}')
  194.     # 2. 数据的预处理.
  195.     X1 = x.reshape(-1, 1)
  196.     # np.hstack()解释: 垂直合并, 即: 竖直方向合并.
  197.     X3 = np.hstack([X1, X1 ** 2, X1 ** 3, X1 ** 4, X1 ** 5, X1 ** 6, X1 ** 7, X1 ** 8, X1 ** 9, X1 ** 10])
  198.     print(f'处理后, X1: {X1}')   # [[1], [2], [3]]
  199.     print(f'处理后, X3: {X3}')   # [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024], [3, 9, 27...]]
  200.     # 3. 创建模型(算法)对象.
  201.     # 3.1 线性回归的 正规方程对象.
  202.     # estimator = LinearRegression()
  203.     # 创建 L1正则化对象.
  204.     # 参数alpha: 正则化的(惩罚)系数, (惩罚)系数越大, 则正则化项的权重越小.
  205.     # estimator = Lasso(alpha=0.1)
  206.     # 创建 L2正则化对象.
  207.     estimator = Ridge(alpha=0.1)
  208.     # 3.2 模型训练.
  209.     estimator.fit(X3, y)
  210.     # 4. 模型预测.
  211.     y_predict = estimator.predict(X3)
  212.     print(f'预测值: {y_predict}')
  213.     # 5. 模型评估.
  214.     print(f'均方误差: {mean_squared_error(y, y_predict)}')
  215.     print(f'均方根误差: {root_mean_squared_error(y, y_predict)}')
  216.     print(f'平均绝对误差: {mean_absolute_error(y, y_predict)}')
  217.     # 6. 绘制图形.
  218.     # 6.1 真实值的x轴, y轴 绘制散点图.
  219.     plt.scatter(x, y)
  220.     # 6.2 根据预测值的x轴(升序排序), y轴值, 绘制折线图(充当拟合回归线).
  221.     plt.plot(np.sort(x), y_predict[np.argsort(x)], color='red')   # 预测值的x轴, y轴 绘制折线图(充当拟合回归线)
  222.     plt.show()
  223. # 6. 在main方法中测试.
  224. if __name__ == '__main__':
  225.     # dm01_模型欠拟合()
  226.     # dm02_模型正好拟合()
  227.     # dm03_模型过拟合()
  228.     # dm04_L1正则化()
  229.     dm05_L2正则化()
复制代码
对峙分享 共同进步 如有错误 欢迎指出

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表