微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用scipy.minimize函数将具有损失函数的多线性回归模型拟合?

如何解决如何使用scipy.minimize函数将具有损失函数的多线性回归模型拟合?

我目前正在学习多线性回归,我一直想解决这个问题,希望我定义一个函数,该函数“最小化使用不同theta向量计算出的平均损失,并估计模型的最佳theta”。 / p>

from scipy.optimize import minimize
    
    def l1(y,y_hat):
        return np.abs(y - y_hat)
    
    def l2(y,y_hat):
        return (y - y_hat)**2
    
    def minimize_average_loss(loss_function,model,X,y):
        """
        Minimize the average loss calculated from using different theta vectors,and 
        estimate the optimal theta for the model.
        
        Parameters
        -----------
        loss_function: either the squared or absolute loss functions defined above
        model: the model (as defined in Question 1b)
        X: a 2D dataframe of numeric features (one-hot encoded)
        y: a 1D vector of tip amounts
        
        Returns
        -----------
        The estimate for the optimal theta vector that minimizes our loss
        """
        
        ## Notes on the following function call which you need to finish:
        # 
        # 0. The first '...' should be replaced with the average loss evaluated on 
        #       the data X,y using the model and appropriate loss function.
        # 1. x0 are the initial values for THETA.  Yes,this is confusing
        #       but optimization people like x to be the thing they are 
        #       optimizing. Replace the second '...' with an initial value for theta,#       and remember that theta is Now a vector. DO NOT hard-code the length of x0;
        #       it should depend on the number of features in X.
        # 2. Your answer will be very similar to your answer to question 2 from lab 7.
        ...
        return minimize(lambda theta: ...,x0=...)['x']
        # Notice above that we extract the 'x' entry in the dictionary returned by `minimize`. 
        # This entry corresponds to the optimal theta estimated by the function.
    
    minimize_average_loss(l2,linear_model,one_hot_X,tips)

对于上下文,我的线性模型定义为:

def linear_model(thetas,X):
    """
    Return the linear combination of thetas and features as defined above.
    
    Parameters
    -----------
    thetas: a 1D vector representing the parameters of our model ([theta1,theta2,...])
    X: a 2D dataframe of numeric features
    
    Returns
    -----------
    A 1D vector representing the linear combination of thetas and features as defined above.
    """
    return np.dot(X,thetas)

当前,我有

def minimize_average_loss(loss_function,y):
    return minimize(lambda theta: loss_function(y,linear_model(theta,X)),x0= [0.0,0.0])['x']

有人知道我应该怎么做吗?谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。