程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了8D X 数据的线性回归返回 nan大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决8D X 数据的线性回归返回 nan?

开发过程中遇到8D X 数据的线性回归返回 nan的问题如何解决?下面主要结合日常开发的经验,给出你关于8D X 数据的线性回归返回 nan的解决方法建议,希望对你解决8D X 数据的线性回归返回 nan有所启发或帮助;

我正在尝试分别对 X 和 Y 的形状为 (768,8) 和 (768,) 的数据进行线性回归。我想运行预测器,以便获得 X 的最后三行的 y 值。我已手动将一行的内容添加到预测器中。

class linearRegression() : 
      
    def __init__( self,learning_rate,iterations ) : 
          
        self.learning_rate = learning_rate 
          
        self.iterations = iterations 
          
              
    def fit( self,X,Y ) : 
          
        self.m,self.n = X.shape 
          
        # weight initialization 
          
        self.W = np.zeros( self.n ) 
          
        self.b = 0
          
        self.X = X 
          
        self.Y = Y 
                  
        for i in range( self.iterations ) : 
              
            self.update_weights() 
              
        return self
      
    def update_weights( self ) : 
             
        Y_pred = self.preDict( self.X ) 
          
        # calculate gradIEnts   
      
        DW = - ( 2 * ( self.X.T ).dot( self.Y - Y_pred )  ) / self.m 
       
        db = - 2 * np.sum( self.Y - Y_pred ) / self.m  
          
        # update weights 
      
        self.W = self.W - self.learning_rate * DW 
      
        self.b = self.b - self.learning_rate * db 
          
        return self
      
    def preDict( self,X ) : 
        return X.dot( self.W ) + self.b 
def runLR() : 
    X_Train,X_test,Y_Train,Y_test = Train_test_split(  
      X,Y,test_size = 1/3,random_state = 0 ) 
    model = linearRegression( iterations = 1000,learning_rate = 0.01 ) 
    model.fit( X_Train,Y_Train ) 
    see = model.preDict(np.array([[0.98,514.5,294.0,110.25,7.0,2.0,0.0,0.0]]))
    print(seE)
    
runLR()

然而,我得到的 see 的结果是 [nan]。我相信我以错误的格式将数据传递到 model.preDict 中?

解决方法

X=np.random.normal(size=(768,8))

Y=X[:,0]+2*X[:,1]+3*X[:,2]+4*X[:,3]+5*X[:,4]+6*X[:,5]+7*X[:,6]+8*X[:,7]

def runLR() : 
    X_Train,X_test,Y_Train,Y_test = Train_test_split(  
      X,Y,test_size = float(1)/3,random_state = 0 )

    model = LinearRegression( iterations = 1000,learning_rate = 0.01 ) 
    model.fit( X_Train,Y_Train )
    print(model.b)
    print(model.W)
    see = model.preDict(np.array([[0.98,514.5,294.0,110.25,7.0,2.0,0.0,0.0]]))
    print(seE)
    
runLR()

这应该有效。只需将 test_size 中的 1/3 更改为 float(1)/3,因为我认为 1/3 只是 0。

-1.2610015928318272e-07 #b is about 0
[0.99999993 1.99999988 3.00000005 3.99999998 5.00000002 5.99999999
 7.00000003 7.99999991] # W is 1 through 8
[2399.97995156] # preDicted y

要添加更多预测变量,请将它们添加到数组中,如下所示:np.array([[0.98,0.0],[1,2,3,1,2],[5,6,7,8,4,3]])

大佬总结

以上是大佬教程为你收集整理的8D X 数据的线性回归返回 nan全部内容,希望文章能够帮你解决8D X 数据的线性回归返回 nan所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:nan