theta not define实现逻辑回归鸢尾花数据集

来源:9-4 实现逻辑回归算法

qq_雲爲衣風爲裳_04358368

2019-07-18

class LogisticRegression:
def init(self):
self.coef = None
self.intercept = None
self.theta = None

def sigmoid(t):
    return 1/(1+exp(-t))

def fit(self,X_train,y_train,eta=0.01,n_iters=1e4):
    
    def J(theta,X_b,y):
        y_hat = sigmoid(X_b.dot(theta))
        return -np.sum(y*np.log(y_hat)+(1-y)*np.log(1-y_hat))/len(y)

    def dJ(theta,X_b,y):
        return X_b.dot(sigmoid(X_b.dot(theat)-y)/len(X_b))


    def gradient_descent(X_b,y,initial_theta,eta,n_iters=1e4,epsilon=1e-8):
        theta = initial_theta
        cur_iter =0
        while cur_iter<n_iters:
            gradient = dJ(theta,X_b,y)
            last_theta = theta
            theta = theta-eta*gradient
            if(abs(J(theta,X_b,y)-J(last_theta,X_b,y))<epsilon):
                break
            cur_iter +=1
        return theta
    
    X_b = np.hstack([np.ones((len(X_train),1)),X_train])
    initial_theta = np.zeros(X_b.shape[1])
    self.theta = gradient_descent(X_b,y_train,initial_theta,eta,n_iters)
    self.intercept=self.theta[0]
    self.coef =self.theta[1:]
    
    return self

def predict_prob(self,X_predict):
    X_b = np.hstack([np.ones((len(X_predict),1)),X_predict])
    return self.sigmoid(X_b.dot(self.theta))

def predict(self,X_predict):
    prob = self.predict_prob(X_predict)
    return np.array(prob>=0.5,dtype='int')

def score(self,X_test,y_test):
    y_predict=self.predict(X_test)
    return np.sum(y_test==y_predict)/len(y_test)

老师您好,按照视频的逻辑写的报错未定义,从您给你的代码直接运行也是提示这个未定义的错误,不知道问题出在哪里了。。

写回答

1回答

liuyubobobo

2019-07-18

我运行了一下课程这一小节的官方代码,没有问题。


请尝试直接下载课程的官方代码。本小节官方代码传送门:https://git.imooc.com/coding-169/coding-169/src/master/09-Logistic-Regression/04-Implement-Logistic-Regression


请直接在你的环境下,运行课程的官方代码对应的Jupyter Notebook,看是否有问题?如果没有问题,请仔细调试查找比对,看一下自己的代码哪里有问题。


问题不一定在逻辑回归这个类中,也有可能在你的Jupyter Notebook中。


加油!:)

0
1
qq_雲爲衣風爲裳_04358368
谢谢老师,看了下您给的代码仓库比之前更新的更多和更细致了,感谢,找了个对比的工具比较了一下代码问题,发现问题了。
2019-07-18
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程