In [0]:
import torch.nn as nn
In [0]:
class LogisticRegression(nn.Module):
def __init__(self):
super().__init__()
self.l1 = nn.Linear(8,6)
self.l2 = nn.Linear(6,1)
def forward(self,x):
x = torch.relu(self.l1(x))
x = torch.sigmoid(self.l2(x))
return x
In [0]:
import pandas as pd
In [0]:
df = pd.read_csv('diabetes.csv.gz', compression='gzip', header=None, dtype=np.float32)
In [131]:
df
Out[131]:
In [0]:
from sklearn.model_selection import train_test_split
In [0]:
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:,:8], df.iloc[:,8], random_state=8)
In [148]:
X_train.shape, X_test.shape
Out[148]:
In [0]:
from sklearn.preprocessing import StandardScaler
In [0]:
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
In [0]:
X_train = torch.from_numpy(X_train).float()
X_test = torch.from_numpy(X_test).float()
y_train = torch.from_numpy(y_train.values)
y_test = torch.from_numpy(y_test.values)
In [0]:
def accuracy(truth,preds):
return (truth==preds).float().mean()
SGD¶
In [0]:
model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.001)
In [154]:
for epoch in range(501):
pred = model.forward(X_train)
loss = criterion(pred, y_train)
loss.backward()
optimizer.step()
optimizer.zero_grad()
with torch.no_grad():
test_preds = model.forward(X_test)
test_preds = test_preds>0.5
acc = accuracy(y_test, test_preds.view(y_test.shape))
if epoch%50==0:print(epoch, acc)
In [0]:
model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.RMSprop(model.parameters(), lr = 0.001)
In [156]:
for epoch in range(501):
pred = model.forward(X_train)
loss = criterion(pred, y_train)
loss.backward()
optimizer.step()
optimizer.zero_grad()
with torch.no_grad():
test_preds = model.forward(X_test)
test_preds = test_preds>0.5
acc = accuracy(y_test, test_preds.view(y_test.shape))
if epoch%50==0:print(epoch, acc)
In [0]:
model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.Adam(model.parameters(), lr = 0.001)
In [158]:
for epoch in range(501):
pred = model.forward(X_train)
loss = criterion(pred, y_train)
loss.backward()
optimizer.step()
optimizer.zero_grad()
with torch.no_grad():
test_preds = model.forward(X_test)
test_preds = test_preds>0.5
acc = accuracy(y_test, test_preds.view(y_test.shape))
if epoch%50==0:print(epoch, acc)
In [0]:
In [0]:
In [0]:
In [0]:
arr = np.arange(16).reshape((2,2,4))
In [119]:
arr
Out[119]:
In [120]:
arr.shape
Out[120]:
In [121]:
arr[0]
Out[121]:
In [122]:
arr[1]
Out[122]:
In [124]:
arr.transpose(1,0,2).shape
Out[124]:
In [125]:
arr.transpose(1,0,2)
Out[125]:
In [0]:
No comments :
Post a Comment