• 第十三节 岭回归(L2正则化)解决过拟合问题


    岭回归sklearn的API:from sklearn.linear_model import Ridge

    通过调节模型中的参数alpha的值来调节正则化的力度,力度越大高次项的系数越小,逐渐趋近于0,但是不会等于0,alpha一般去0-1之间的小数,或者1-10之间的整数,可以通过网格搜索去寻找最优参数

    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression, SGDRegressor,Ridge
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import mean_squared_error  # 回归方程性能评价均方误差API
    
    
    def boston_linear():
        '''线性回归预测波士顿房价'''
        # 获取数据
        bl = load_boston()
    
        # 分割训练集和测试集
        x_train, x_test, y_train, y_test = train_test_split(bl.data, bl.target, test_size=0.25)
    
        # 进行标准化,特征值和目标值都需要进行标准化处理
        # 特征值
        std_x = StandardScaler()
        x_train = std_x.fit_transform(x_train)
        x_test = std_x.fit_transform(x_test)
    
        # 目标值,y_train.reshape(-1, 1)将一维数组转换成二维数组
        std_y = StandardScaler()
        y_train = std_y.fit_transform(y_train.reshape(-1, 1))
        y_test = std_y.fit_transform(y_test.reshape(-1, 1))
    
        # 预测
        # 最小二乘法求解结果
        lr = LinearRegression()
        lr.fit(x_train, y_train)
    
        # 系数
        print(lr.coef_)
    
        # 预测测试集的房子价格
        lr_y_predict = std_y.inverse_transform(lr.predict(x_test))
        print('最小二乘法测试集里面每个房子的价格', lr_y_predict)
    
        # 用均方误差对一个回归模型来进行评价,越小越好,mean_squared_error第一个参数是测试集的真实值,第二个参数数测试集的预测值
        print('最小二乘法的均方误差:', mean_squared_error(std_y.inverse_transform(y_test), lr_y_predict))
    
        # 梯度下降
        sgd = SGDRegressor()
        sgd.fit(x_train, y_train)
    
        # 系数
        print(sgd.coef_)
    
        # 预测测试集的房子价格
        sgd_y_predict = std_y.inverse_transform(sgd.predict(x_test))
        print('梯度下降测试集里面每个房子的价格', sgd_y_predict)
    
        # 用均方误差对一个回归模型来进行评价,越小越好,mean_squared_error第一个参数是测试集的真实值,第二个参数数测试集的预测值
        print('梯度下降法的均方误差:', mean_squared_error(std_y.inverse_transform(y_test), sgd_y_predict))
    
        # 岭回归进行房价预测,alpha正则化力度参数
        rd = Ridge(alpha=1.0)
        rd.fit(x_train, y_train)
    
        # 系数
        print(rd.coef_)
    
        # 预测测试集的房子价格
        rd_y_predict = std_y.inverse_transform(rd.predict(x_test))
        print('岭回归测试集里面每个房子的价格', rd_y_predict)
    
        # 用均方误差对一个回归模型来进行评价,越小越好,mean_squared_error第一个参数是测试集的真实值,第二个参数数测试集的预测值
        print('岭回归的均方误差:', mean_squared_error(std_y.inverse_transform(y_test), rd_y_predict))
        
        
    if __name__ == "__main__":
        boston_linear()
  • 相关阅读:
    Qt垂直布局和水平布局
    Qt之样式
    数据库统计相关
    python 中 np.arange()的使用
    以博客园为例质量属性的六个常见属性场景
    中国地图点击下钻到省份(含html源码,可直接运行,令含各省份json,全国json)
    阅读《架构漫谈》有感
    新型冠状病毒数据统计成果展示(含有地域展示图,各类型数据可视化,河北省历史数据查看,石家庄市确诊病例活动轨迹(数据和真实情况可能有较大差距),河北省确诊病例,新增确诊病例走向(最小二乘法))含源码
    信息领域热词查询统计(成果展示)
    新型冠状病毒 疫情 数据爬取(Java 含源码)
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12578147.html
Copyright © 2020-2023  润新知