Ich habe versucht, Couseras logistische Regression in Python zu implementieren

Cousera - Ich habe die logistische Regression von Dr. Andrew Ngs Machine3 Week3 implementiert. Ich habe versucht, so viel wie möglich nur numpy zu verwenden.

Die übliche Magie.

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

Lesen Sie die Daten und zeichnen Sie sie auf.

def plotData(data):
    neg = data[:,2] == 0
    pos = data[:,2] == 1

    plt.scatter(data[pos][:,0], data[pos][:,1], marker='+', c='k', s=60, linewidth=2)
    plt.scatter(data[neg][:,0], data[neg][:,1], c='y', s=60)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.legend(frameon= True, fancybox = True)
    plt.show()


data = np.loadtxt('ex2data1.txt', delimiter=',')
plotData(data)

https://diveintocode.gyazo.com/80f1b66e71c83968be637cc4fffb119b

Als nächstes Implementierung der Kostenfunktion und der Sigmoidfunktion

h_θ(x)=g(θ^Tx)
g(z)= \frac{1}{1+e^{-z}}

Sigmaid-Funktion

j(θ)= \frac{1}{m}(log(g(Xθ))^Ty+(log(1-g(Xθ))^T(1-y)))

Kostenfunktion

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

def CostFunction(theta, X, y):
    m = len(y)
    h = sigmoid(X.dot(theta))
    
    j = -1*(1/m)*(np.log(h).T.dot(y)+np.log(1-h).T.dot(1-y))
    
    return j
    
    

Schauen wir uns die ersten Kosten an.

X = np.c_[np.ones((data.shape[0],1)), data[:,0:2]]
y = np.c_[data[:,2]]

initial_theta = np.zeros(X.shape[1])
cost = CostFunction(initial_theta, X, y)
print(cost)

https://diveintocode.gyazo.com/b77db964bc493df3d34773a0de4d2f29

Die Kosten sind so. Als nächstes folgt die Implementierung der Methode mit dem steilsten Abstieg.

def gradient_decent (theta, X, y, alpha = 0.001, num_iters = 100000):
    m = len(y)
    history = np.zeros(num_iters)
    
    for inter in np.arange(num_iters):
        h = sigmoid(X.dot(theta))
        theta = theta - alpha *(1/m)*(X.T.dot(h-y))
        history[inter] = CostFunction(theta,X,y)

    return(theta, history)
    
initial_theta = np.zeros(X.shape[1])
theta = initial_theta.reshape(-1,1)
cost = CostFunction(initial_theta,X,y)
theta, Cost_h= gradient_decent(theta, X, y)

print(theta)
plt.plot(Cost_h)
plt.ylabel('Cost_h')
plt.xlabel('interation')
plt.show()

Das Ergebnis der Ausführung ist wie folgt.

https://diveintocode.gyazo.com/e177f7b75ceffe2d461a017df96d856c

Aus irgendeinem Grund führt dies zu besseren Ergebnissen als das Setzen von num_iters auf 10000000. Mal sehen, das Ergebnis.

def predict(theta, X, threshold = 0.5):
    p = sigmoid(X.dot(theta)) >= threshold
    
    return(p.astype('int'))

p = predict(theta,X)
y = y.astype('int')

accuracy_cnt = 0
for i in range(len(y)):
    if p[i,0] == y[i,0]:
        accuracy_cnt +=1

print(accuracy_cnt/len(y) * 100)
    

Wenn Sie den obigen Code ausführen, erhalten Sie 91,0%. Was ist, wenn Sie num_inter bei 1000000 ausführen? ..

https://diveintocode.gyazo.com/0ee6bb360d9c5d4960db54189f677fa3

Wenn Sie diese Genauigkeit überprüfen, beträgt sie 89,0%. Es ist unklar, warum die oben genannten Ergebnisse trotz der geringeren Kosten schlechter sind.

Referenz

https://github.com/JWarmenhoven/Coursera-Machine-Learning

Recommended Posts

Ich habe versucht, Couseras logistische Regression in Python zu implementieren
Logistische Verteilung in Python
Shiritori in Python implementiert
Regressionsanalyse mit Python
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Ich habe versucht, die Suche nach Breitenpriorität mit Python zu implementieren (Warteschlange, selbst erstelltes Zeichnen).
Mehrfacher Regressionsausdruck in Python
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Implementierte Supreme Solver in Python 3
Einfache Regressionsanalyse mit Python
Ich verstehe Python auf Japanisch!
Online lineare Regression in Python
Was ich in Python gelernt habe
Ich habe einen Vim-ähnlichen Ersetzungsbefehl in Slackbot #Python implementiert
2. Multivariate Analyse in Python 5-3. Logistische Regressionsanalyse (Statistikmodelle)
Ich habe versucht, Donald Knuths unvoreingenommenen sequentiellen Berechnungsalgorithmus in Python zu implementieren
Implementierte Bildsegmentierung in Python (Union-Find)
[Python] Ich habe versucht, marginalisiertes Gibbs-Sampling zu implementieren
In Python implementierte Widrow-Hoff-Lernregeln
Ich habe Fizz Buzz in Python geschrieben
Implementierte Methode zur Weitergabe von Etiketten in Python
Ich habe versucht, den Prozess mit Python zu studieren
Scikit-learn kann nicht in Python installiert werden
Ich habe die Warteschlange in Python geschrieben
Implementierte Perceptron-Lernregeln in Python
Logistische Regressionsanalyse Selbst erstellt mit Python
Ich habe Line Benachrichtigung in Python versucht
Implementiert in 1 Minute! LINE Benachrichtigen in Python
Ich habe den Stack in Python geschrieben
Logistische Rückgabe
Logistische Rückgabe
Ich habe Python 2.7 in Sakura VPS 1 GB installiert.
Ich habe versucht, PLSA in Python zu implementieren
PRML Kapitel 4 Bayesianische logistische Regression Python-Implementierung
Lineare Regression in Python (Statmodelle, Scikit-Learn, PyMC3)
Ein einfacher HTTP-Client, der in Python implementiert ist
Ich habe versucht, Permutation in Python zu implementieren
Ich habe ein Pay-Management-Programm in Python erstellt!
Online lineare Regression in Python (Robuste Schätzung)
Implementiert in Python PRML Kapitel 7 Nichtlineare SVM
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich kann Python-Skripte in Eclipse nicht debuggen
Ich habe versucht, ADALINE in Python zu implementieren
Ich wollte ABC159 mit Python lösen
Ich habe versucht, PPO in Python zu implementieren
Implementiert in Python PRML Kapitel 5 Neuronales Netzwerk
Ich habe mit Python nach einer Primzahl gesucht
Stuge Sort in Python 3 implementiert (Bubble Sort & Quick Sort)
Implementiert in Python PRML Kapitel 1 Bayesianische Schätzung
Ich habe ein Passwort-Tool in Python erstellt.
CheckIO (Python)> Nicht eindeutige Elemente> Ich habe versucht zu implementieren
DQN mit TensorFlow implementiert (ich wollte ...)
Warum kann ich matplotlib nicht mit Python installieren? !!
Ich habe versucht, die Bayes'sche lineare Regression durch Gibbs-Sampling in Python zu implementieren
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python