From 4de3b5a28498ee83f34a684e60492b7a631fa0fd Mon Sep 17 00:00:00 2001 From: Kornelia Girejko Date: Sun, 24 Apr 2022 22:10:16 +0200 Subject: [PATCH] pytorch --- biblioteka_DL | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 biblioteka_DL diff --git a/biblioteka_DL b/biblioteka_DL new file mode 100644 index 0000000..d3cdfc2 --- /dev/null +++ b/biblioteka_DL @@ -0,0 +1,76 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +import pandas as pd +import numpy as np +from sklearn.model_selection import train_test_split +from sklearn import preprocessing +from sklearn.preprocessing import StandardScaler +scaler = StandardScaler() + +# Model +class Model(nn.Module): + def __init__(self): + super().__init__() + self.linear = nn.Linear(1,1) + + def forward(self, x): + y_predicted = torch.sigmoid(self.linear(x)) + return y_predicted + +data = pd.read_csv('data.csv') +data.dropna() + +training_data = data.sample(frac=0.9, random_state=25) +testing_data = data.drop(training_data.index) + +print(f"No. of training examples: {training_data.shape[0]}") +print(f"No. of testing examples: {testing_data.shape[0]}") + +training_data = training_data[['sqft_living', 'price']] + +testing_data = testing_data[['sqft_living', 'price']] + +training_data[['price']] = training_data[['price']] / 10000000 +training_data[['sqft_living']] = training_data[['sqft_living']] / 10000 + +testing_data[['price']] = testing_data[['price']] / 10000000 +testing_data[['sqft_living']] = testing_data[['sqft_living']] / 10000 + +# Tensory +X_training = training_data[['sqft_living']].to_numpy() +X_testing = testing_data[['sqft_living']].to_numpy() +y_training = training_data[['price']].to_numpy() +y_testing = testing_data[['price']].to_numpy() + +import torch +torch.from_file +X_training = torch.from_numpy(X_training.astype(np.float32)) +X_testing = torch.from_numpy(X_testing.astype(np.float32)) +y_training = torch.from_numpy(y_training.astype(np.float32)) +y_testing = torch.from_numpy(y_testing.astype(np.float32)) + + +model = Model() +criterion = nn.BCELoss() +optimizer = torch.optim.SGD(model.parameters(), lr=0.01) + +# Trening +num_epochs = 1000 +for epoch in range(num_epochs): + y_predicted = model(X_training) + loss = criterion(y_predicted,y_training) + loss.backward() + optimizer.step() + optimizer.zero_grad() + + if (epoch%100==0): + print(f'epoch:{epoch+1},loss = {loss.item():.4f}') + +with torch.no_grad(): + y_predicted = model(X_testing) + y_predicted_cls = y_predicted.round() + acc = y_predicted_cls.eq(y_testing).sum()/float(y_testing.shape[0]) + print(f'{acc:.4f}') + result = open("output",'w+') + result.write(f'{y_predicted}') \ No newline at end of file