美文网首页
15-岭回归以及模型的保存与加载

15-岭回归以及模型的保存与加载

作者: jxvl假装 | 来源:发表于2019-10-01 14:49 被阅读0次

    岭回归

    在这里插入图片描述
    正则化力度也是一个需要调参的过程

    模型的保存与加载

    api:sklearn.externals.joblib
    保存:joblib.dump
    加载:joblib.load
    注意:文件格式:pkl,是一种二进制文件

    """案例:波士顿房价"""
    from sklearn.datasets import load_boston
    from sklearn.linear_model import Ridge
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import mean_squared_error
    
    def myridge():
        """
        岭回归直接预测房子价格
        :return: None
        """
        #获取数据
        lb = load_boston()
        #分割数据到训练集和测试集
        x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
        
        print(y_train,y_test)   #查看一下数据格式
        std_x = StandardScaler()
        x_train = std_x.fit_transform(x_train)
        x_test = std_x.transform(x_test)
        # print(x_test.shape)
    
    
        std_y = StandardScaler()
        y_train = std_y.fit_transform(y_train.reshape(-1,1))
        y_test = std_y.transform(y_test.reshape(-1,1))
        #注意:转换器里面的数据必须要求是二维的,所以我们reshape了数据。x_train,x_test本身就是二维的
      
        #岭回归进行房价预测
        rd = Ridge(alpha=1.0)  #alpha:正则化力度,默认1.0。这个超参数也可以利用网格搜索找到合适的值,可以是0-1之间的小数值,也可以是1-10之间的整数
        rd.fit(x_train, y_train)
        print("回归系数:\n", rd.coef_)
        y_predict = rd.predict(x_test)
        print("预测的房价为:\n", std_y.inverse_transform(y_predict))
        print("均方差:\n", mean_squared_error(std_y.inverse_transform(y_test), std_y.inverse_transform(y_predict)))
    
        return None
    
    def loadmodel():
        lb = load_boston()
        #分割数据到训练集和测试集
        x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
    
        print(y_train,y_test)   #查看一下数据格式
        std_x = StandardScaler()
        x_train = std_x.fit_transform(x_train)
        x_test = std_x.transform(x_test)
        # print(x_test.shape)
    
    
        std_y = StandardScaler()
        y_train = std_y.fit_transform(y_train.reshape(-1,1))
        y_test = std_y.transform(y_test.reshape(-1,1))
        rd = joblib.load("./ridge.pkl")
        y_predict = rd.predict(x_test)
        print("预测的房价为:\n", std_y.inverse_transform(y_predict))
        print("均方差:\n", mean_squared_error(std_y.inverse_transform(y_test), std_y.inverse_transform(y_predict)))
    
    
    if __name__ == "__main__":
        myridge()
        # loadmodel()
    

    岭回归回归得到的回归系数更符合实际,更可靠。另外,能让估计参数的波动范围变小,变的更稳定。在存在病态数据偏多的研究中有较大的实用价值。

    相关文章

      网友评论

          本文标题:15-岭回归以及模型的保存与加载

          本文链接:https://www.haomeiwen.com/subject/fkluuctx.html