0
%matplotlib notebook 
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

x_df=pd.DataFrame([0.5,0.75,1,1.25,1.5,1.75,1.75,2,2.25,2.5,2.75,3,3.25,3.5,4,4.25,4.5,4.75,5,5.5]) 
y_df=pd.DataFrame([0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]) 
print() 

#adding the column one since there is an extra theta value 
x_df['intercept']=1 

#converting to matrix 
X = np.matrix(x_df.values) 
print(X) 
# 
##converting the matrix y 
y= np.matrix(y_df.values) 
print(y) 

#initialize theta 
theta = np.matrix(np.array([0,0])) 

def sigmoid(x): 

    return 1/(1 + np.exp(-x)) 


def cost(x,y,theta): 
    m = y.shape[0] 
    h = sigmoid(x * theta.T) 
    h1 = np.multiply(y,np.log(h)) 
    h2 = np.multiply(1- y,np.log(1-h)) 
    return -np.sum(h1+h2)/(1.0*m) 

def gd(x,y,theta,alpha = 0.1,iter=10000): 

    m = y.shape[0] 

    for i in range(iter): 
     h = sigmoid(x * theta.T) 
     error = h-y 
     update = np.dot(error.T,x) 
     theta = theta - ((alpha*update)/m) 

    return theta,cost(x,y,theta),h 

new_theta,new_cost,new_h=gd(X,y,theta) 

print(np.ravel(new_h).T) 

n=np.ravel(new_h).T 

n=pd.DataFrame(n) 
print(n) 

plt.plot(x_df,y_df,'go',x_df,n,'bo') 

私は、python 3でロジスティック回帰をハードコードしようと多くの時間を費やしました。私はそれが正しいと信じています。その時間を費やした後、私はグラフをプロットし始めたとき、それはこれであることが判明しました!私のロジスティック回帰グラフに垂直線があるのはなぜわかりませんか?

weird logistic regression graph in blue circles

誰かがコードで私を助けてくださいことはできますか?私はプロット(仮説関数対X)を視覚化することに貧弱です!

答えて

0

plt.plot(x_df,y_df,'go', X[:, 0], new_h,'bo') 

または

にあなたのプロットラインを変更し

plt.plot(x_df,y_df,'go', x_df.ix[:, 0], n,'bo') 

あなたの問題は、他のは(すべて1である)interceptと呼ばれ、x_dfは、1が0と呼ばれる2つの列を持っているということです両方ともx軸としてプロットされています。

+0

ありがとうございます、問題は解決しました! –

関連する問題