У меня есть набор данных (в файле 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()