Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/machine-learning/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 逻辑回归曲线未以我的数据为中心_Machine Learning_Regression - Fatal编程技术网

Machine learning 逻辑回归曲线未以我的数据为中心

Machine learning 逻辑回归曲线未以我的数据为中心,machine-learning,regression,Machine Learning,Regression,我正在做一个关于二元分类的逻辑回归的学校项目,结果非常糟糕(准确率约为50%)。我必须从头开始做这个分类,所以我担心我的实现有问题 我用一个预测值拟合了一个模型,并绘制了结果的逻辑曲线,注意到它的中心是0,超出了我的数据范围(预测值范围为50-90)。因此,只有logistic曲线的渐近线在我的数据范围内,因此将所有示例分类为同一类 我认为使用截距权重可以解决这个问题,但在我的例子中,它没有。我还考虑过规范化我的数据并将其集中在0左右,但我希望有一种更直接的方法 有什么建议吗 编辑-这是我的实现

我正在做一个关于二元分类的逻辑回归的学校项目,结果非常糟糕(准确率约为50%)。我必须从头开始做这个分类,所以我担心我的实现有问题

我用一个预测值拟合了一个模型,并绘制了结果的逻辑曲线,注意到它的中心是0,超出了我的数据范围(预测值范围为50-90)。因此,只有logistic曲线的渐近线在我的数据范围内,因此将所有示例分类为同一类

我认为使用截距权重可以解决这个问题,但在我的例子中,它没有。我还考虑过规范化我的数据并将其集中在0左右,但我希望有一种更直接的方法

有什么建议吗

编辑-这是我的实现

class LogisticRegression:                                                    

def __init__(self, alpha, iters, intercept=True):                        
    self.alpha = alpha                                                   
    self.iters = iters                                                   
    self.weights = None                                                  
    self.intercept = intercept                                           

def sigmoid(self, z):                                                    
    return 1.0 / (1 + np.exp(-z))                                        

def add_intercept(self, X):                                              
    intercept = np.ones((X.shape[0], 1))                                 
    return np.concatenate((intercept, X), axis=1)                        

def cost(self, h, y):                                                    
    return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean()             

def fit(self, X, y):                                                     

    if self.intercept:                                                   
        X = self.add_intercept(X)                                        

    self.weights = np.zeros(X.shape[1])                                  

    for i in range(self.iters):                                          
        z = np.dot(X, self.weights)                                      
        h = self.sigmoid(z)                                              
        gradient = np.dot(X.T, (h - y)) / len(y)                         
        self.weights -= self.alpha * gradient                            
编辑-链接到数据:

目标是一个人是否打篮球,我在单一回归中使用的特征是身高


我现在想,无论如何我都必须规范化我的数据,因为在多元回归的情况下,我的np.exp()有些溢出。

当我绘制身高与篮球的散点图时,数据似乎不在任何类型的S形或逻辑曲线上。基于这个数据集,我认为仅仅身高不足以对篮球做出预测


我担心我的实现有问题。
可能,但我们无法判断,因为您没有向我们展示实现。@dyukha刚刚添加了代码。请发布(或链接)数据好吗?@JamesPhillips当然,添加了链接您的算法看起来不错,我建议几件事。1.规范化您的数据(您已经考虑过)2。使用批量梯度下降,这将减少溢出3的机会。尝试小学习率4。数据的散点图是否有相关性,或者它们是完全随机的