применить градиентный спуск к набору данных - PullRequest
0 голосов
/ 30 марта 2019

У меня есть набор данных (в файле CSV), и я хочу применить к нему градиентный спуск с Python Я не знаю, как я могу прочитать свой набор данных по этому коду.

Я хочу знать точность этого набора данных и визуализировать его.

Я очень стараюсь, но не отвечаю .. код работает правильно, но как я могу сделать код для чтения моего набора данных.

import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_blobs
import numpy as np
import argparse


def sigmoid_activation(x):
    return 1.0 / (1 + np.exp(-x))


ap = argparse.ArgumentParser()
ap.add_argument("-e", "--epochs", type=float, default=100,
                help="# of epochs")
ap.add_argument("-a", "--alpha", type=float, default=0.01,
                help="learning rate")
args = vars(ap.parse_args())

(X, y) = make_blobs(n_samples=250, n_features=2, centers=2, cluster_std=1.05, random_state=20)
X = np.c_[np.ones((X.shape[0])), X]
print("[INFO] starting training...")
W = np.random.uniform(size=(X.shape[1],))
lossHistory = []

for data in np.arange(0, args["epochs"]):
    preds = sigmoid_activation(X.dot(W))
    error = preds - y
    loss = np.sum(error ** 2)
    lossHistory.append(loss)
    print("[INFO] epoch #{}, loss={:.7f}".format(data + 1, loss))

gradient = X.T.dot(error) / X.shape[0]
W += -args["alpha"] * gradient

for i in np.random.choice(250, 10):
    activation = sigmoid_activation(X[i].dot(W))
    label = 0 if activation < 0.5 else 1
    print("activation={:.4f}; predicted_label={}, true_label={}".format(activation, label, y[i]))

Y = (-W[0] - (W[1] * X)) / W[2]

plt.figure()
plt.scatter(X[:, 1], X[:, 2], marker="o", c=y)
plt.plot(X, Y, "r-")

fig = plt.figure()
plt.plot(np.arange(0, args["epochs"]), lossHistory)
fig.suptitle("Training Loss")
plt.xlabel("Epoch #")
plt.ylabel("Loss")
plt.show()

1 Ответ

1 голос
/ 30 марта 2019

Вы можете прочитать CSV-файл (например, с именем foo.csv), используя следующее:

import numpy as np

data = np.loadtxt('foo.csv', delimiter=",")
X = data[:,:2]
y = data[:, 2]

В приведенном выше коде предполагается наличие двух функций в первых двух столбцах и y в качестве третьего столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...