• 回归与聚类算法01


    4.1线性回归 

    4.1.3线性回归API

    sklearn.linear_model.LinearRegression(fit_intercept=True)

    • 通过正规方程优化
    • fit_intercpt:是否计算偏置
    • LineatRergression.coef_:回归系数
    • LineatRegression.intercept_:偏置

    skearn.linear_model.SGDRegressor(loss="squared_loss",fit_intercept=True,learning_rate='invscalling',eta=0.01)

    • SGDRegressor类实现了随机梯度下降学习,它支持不同的los函数和正则化惩罚项来拟合线性回归模型
    • loss:损失函数类型 loss="squared_loss":普通最小二乘法
    • fit_intercept:是否计算偏置
    • learning_rate:string,optional  学习率填充  'constant':eat=eta0   'optimal':eta=1.0/(alpha*(t+t0))[default]
    • 'invscaling':eta=eta0/pow(t,power_t)  power_t=0.25:存在父类当中
    • 对于一个常数值的学习效率来说,可以使用learning_rate='constant',并使用eta0来指定学习率
    • SGDRegressor.coef_:回归系数
    • SGDRegressor.intercept_:偏置
    1. from sklearn.datasets import load_boston
    2. from sklearn.model_selection import train_test_split
    3. from sklearn.preprocessing import StandardScaler
    4. from sklearn.linear_model import LinearRegression, SGDRegressor
    5. def linea1():
    6. """
    7. 正规方程的优化方法对波士顿房价进行预测
    8. :return:
    9. """
    10. # 1)获取数据
    11. boston = load_boston()
    12. # 2)划分数据集
    13. x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    14. # 3)标准化
    15. transfer = StandardScaler()
    16. x_train = transfer.fit_transform(x_train)
    17. x_test = transfer.transform(x_test)
    18. # 4)预估器
    19. estimator = LinearRegression()
    20. estimator.fit(x_train, y_train)
    21. # 5)得出模型
    22. print("正规方程的权重系数:\n",estimator.coef_)
    23. print("正规方程的偏置为:\n", estimator.intercept_)
    24. # 6)模型评估
    25. return None
    26. def linea2():
    27. """
    28. 梯度下降的优化方法对波士顿房价进行预测
    29. :return:
    30. """
    31. # 1)获取数据
    32. boston = load_boston()
    33. # 2)划分数据集
    34. x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    35. # 3)标准化
    36. transfer = StandardScaler()
    37. x_train = transfer.fit_transform(x_train)
    38. x_test = transfer.transform(x_test)
    39. # 4)预估器
    40. estimator = SGDRegressor()
    41. estimator.fit(x_train, y_train)
    42. # 5)得出模型
    43. print("梯度下降的权重系数:\n", estimator.coef_)
    44. print("梯度下降的偏置为:\n", estimator.intercept_)
    45. # 6)模型评估
    46. return None
    47. if __name__ == "__main__":
    48. # 代码1:正规方程的优化方法对波士顿房价进行预测
    49. linea1()
    50. # 代码2:梯度下降的优化方法对波士顿房价进行预测
    51. linea2()

     

     

    梯度下降正规方程        
    需要选择学习率不需要
    需要迭代求解一次运算得出
    特征数量较大可以使用需要计算方程,时间复杂度高
    • 小数据规模:LinearRegression(不能解决拟合问题) 岭回归
    • 大数据规模:SGDRegressor

    拓展:关于优化方法GD,SGD,SAG

    1 GD

    梯度下降,原始梯度下降需要计算所有样本的值才能够得出梯度,计算量大,所以后面才有会一系列的改进

    2 SGD

    随机梯度下降是一个优化方法,他在一次迭代只考虑一个训练样本

    优点:高效 容易实现

    缺点:需要许多超参数,比如正则项参数,迭代参数

    对于特征标准化是敏感的

    3 SAG

    随机平均梯度法,由于收敛的速度太慢,有人提出SAG等基于梯度下降的算法

    Scikit-learn  岭回归 逻辑回归等当中都会有SAG优化

  • 相关阅读:
    深度解析NLP定义、应用与PyTorch实战
    selenium_定位输入框并输入值_id
    力扣93-复原IP地址
    AWS 使用Lambda实现钉钉机器人报警
    基于vue和nodejs的项目外卖点餐订餐餐厅平台
    flutter 手机卡住,需要等待,主线程被占用
    csdn关注打开文章,自动取关脚本(设置为仅粉丝查看的文章)
    centos7安装mysql8.0
    ceph对象储存的使用
    【技术美术图形部分】坐标空间和MVP变换
  • 原文地址:https://blog.csdn.net/m0_62329504/article/details/126341813