• 欠拟合和过拟合


    过拟合

            定义:具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
    具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型过于复杂。

    过拟合的原因

    1. 训练数据中噪音干扰过大,使得学习器认为部分噪音是特征从而扰乱学习规则。
    2. 建模样本选取有误,例如训练数据太少,抽样方法错误,样本label错误等,导致样本不能代表整体。
    3. 模型不合理,或假设成立的条件与实际不符。
    4. 特征维度/参数太多,导致模型复杂度太高。

    解决办法

    正则化

    欠拟合

            定义:欠拟合是指对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。

     

     欠拟合的原因

    1 模型复杂度过低
    2 特征量过少

    解决办法

    增加数据的特征数量

    4.3.1 带有L2正则化的线性回归——岭回归

    岭回归也是一种线性回归,不过在算法建立回归方程的时候,加上正则化的限制,从而达到解决过拟合的效果

    1 API 

    sklearn.linear_model.Ridge(alpha=1.0, fit_intercept = True, solve="auto",normalize=False)

    • 具有L2正则化的线性回归
    • alpha 正则化力度,也叫入  取值0~1  1~10
    • solver 会根据数值自动选择优化方法,sag如果数据集特征值都比较大,选择该随机梯度下降优化
    • normalize  数据是否进行标准化  normalize=False,可以在fit之前调用preprocseeing.StandardScalse标准化数据
    • Ridge.coef_ 回归权重
    • Ridge.intercept_ 回归偏置

    Ridge方法相当于SGDRegressor(penalty='l2',loss="squared_loss")只不过SGDRegressor实现了一个普通的随机梯度下降学习,推荐使用Ridge(实现了SAG)

    sklearn.linear_model.RidgeCV(_BaseRidgeCV,RegressorMixin) 具有l2正则化的线性回归,可以进行交叉验证  coef_:回归系数

    1. def linea3():
    2. """
    3. 岭回归对波士顿房价进行预测
    4. :return:
    5. """
    6. # 1)获取数据
    7. boston = load_boston()
    8. print("特征数量:\n", boston.data.shape)
    9. # 2)划分数据集
    10. x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    11. # 3)标准化
    12. transfer = StandardScaler()
    13. x_train = transfer.fit_transform(x_train)
    14. x_test = transfer.transform(x_test)
    15. # 4)预估器
    16. estimator = Ridge()
    17. estimator.fit(x_train, y_train)
    18. # 5)得出模型
    19. print("岭回归的权重系数:\n", estimator.coef_)
    20. print("岭回归的偏置为:\n", estimator.intercept_)
    21. # 6)模型评估
    22. y_predict = estimator.predict(x_test)
    23. print("预测房价:\n", y_predict)
    24. error = mean_squared_error(y_test, y_predict)
    25. print("岭回归-均方误差为:\n", error)
    26. return None
    27. if __name__ == "__main__":
    28. # 代码1:正规方程的优化方法对波士顿房价进行预测
    29. linea1()
    30. # 代码2:梯度下降的优化方法对波士顿房价进行预测
    31. linea2()
    32. # 代码3:岭回归对波士顿房价进行预测
    33. linea3()

     

     

  • 相关阅读:
    对MD数据的分析(FEL和DSSP)
    安卓恶意应用识别(三)(批量反编译与属性值提取)
    跨系统文件共享方式,你还在用U盘拷贝?
    来写个贪吃蛇小游戏吧(TypeScript版本)
    Qt自带的日志重定向机制
    如何在 .NET MAUI 中加载 json 文件?
    python中图片处理库Image,transforms,cv2,matplotlib的图片矩阵尺寸变化
    【数据结构——单链表】本篇文章通过图文结合的方式能让你轻松的掌握单链表
    进阶指针(二)
    【Django】开发日报_11_Day:手机号码管理系统(9)
  • 原文地址:https://blog.csdn.net/m0_62329504/article/details/126380720