poliflow 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: poliflow
3
+ Version: 0.1.0
4
+ Summary: Framework de deep learning
5
+ Home-page: https://github.com/Th3copolo0X/Poliflow2
6
+ Download-URL: https://github.com/Th3copolo0X/Poliflow2/archive/refs/tags/v0.1.tar.gz
7
+ Author: Eduardo Hernandez,Gerardo Hernandez
8
+ Author-email: Eduardo <correo@example.com>
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: numpy
14
+ Dynamic: author
15
+ Dynamic: download-url
16
+ Dynamic: home-page
17
+ Dynamic: requires-python
18
+
19
+ # PoliFlow
20
+
21
+ PoliFlow es un framework de Machine Learning y Deep Learning desarrollado en Python, diseñado con fines educativos y experimentales.
22
+ El proyecto busca ofrecer una implementación simple y modular de redes neuronales, optimizadores y herramientas para entrenamiento de modelos.
23
+
24
+ ---
25
+
26
+ # Características
27
+
28
+ - Construcción de modelos secuenciales
29
+ - Capas densas (Dense)
30
+ - Funciones de activación
31
+ - Entrenamiento de modelos
32
+ - Predicción de datos
33
+ - Sistema modular
34
+ - Implementación propia sin depender de TensorFlow o PyTorch
35
+
36
+ ---
37
+
38
+ # Instalación
39
+
40
+ Clona el repositorio:
41
+
42
+ ```bash
43
+ git clone https://github.com/Th3copolo0X/Poliflow2
44
+ cd poliflow
@@ -0,0 +1,26 @@
1
+ # PoliFlow
2
+
3
+ PoliFlow es un framework de Machine Learning y Deep Learning desarrollado en Python, diseñado con fines educativos y experimentales.
4
+ El proyecto busca ofrecer una implementación simple y modular de redes neuronales, optimizadores y herramientas para entrenamiento de modelos.
5
+
6
+ ---
7
+
8
+ # Características
9
+
10
+ - Construcción de modelos secuenciales
11
+ - Capas densas (Dense)
12
+ - Funciones de activación
13
+ - Entrenamiento de modelos
14
+ - Predicción de datos
15
+ - Sistema modular
16
+ - Implementación propia sin depender de TensorFlow o PyTorch
17
+
18
+ ---
19
+
20
+ # Instalación
21
+
22
+ Clona el repositorio:
23
+
24
+ ```bash
25
+ git clone https://github.com/Th3copolo0X/Poliflow2
26
+ cd poliflow
@@ -0,0 +1,44 @@
1
+ Metadata-Version: 2.4
2
+ Name: poliflow
3
+ Version: 0.1.0
4
+ Summary: Framework de deep learning
5
+ Home-page: https://github.com/Th3copolo0X/Poliflow2
6
+ Download-URL: https://github.com/Th3copolo0X/Poliflow2/archive/refs/tags/v0.1.tar.gz
7
+ Author: Eduardo Hernandez,Gerardo Hernandez
8
+ Author-email: Eduardo <correo@example.com>
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: numpy
14
+ Dynamic: author
15
+ Dynamic: download-url
16
+ Dynamic: home-page
17
+ Dynamic: requires-python
18
+
19
+ # PoliFlow
20
+
21
+ PoliFlow es un framework de Machine Learning y Deep Learning desarrollado en Python, diseñado con fines educativos y experimentales.
22
+ El proyecto busca ofrecer una implementación simple y modular de redes neuronales, optimizadores y herramientas para entrenamiento de modelos.
23
+
24
+ ---
25
+
26
+ # Características
27
+
28
+ - Construcción de modelos secuenciales
29
+ - Capas densas (Dense)
30
+ - Funciones de activación
31
+ - Entrenamiento de modelos
32
+ - Predicción de datos
33
+ - Sistema modular
34
+ - Implementación propia sin depender de TensorFlow o PyTorch
35
+
36
+ ---
37
+
38
+ # Instalación
39
+
40
+ Clona el repositorio:
41
+
42
+ ```bash
43
+ git clone https://github.com/Th3copolo0X/Poliflow2
44
+ cd poliflow
@@ -0,0 +1,19 @@
1
+ README.md
2
+ pyproject.toml
3
+ setup.py
4
+ poliflow.egg-info/PKG-INFO
5
+ poliflow.egg-info/SOURCES.txt
6
+ poliflow.egg-info/dependency_links.txt
7
+ poliflow.egg-info/requires.txt
8
+ poliflow.egg-info/top_level.txt
9
+ tests/__init__.py
10
+ tests/test1.py
11
+ tests/test2.py
12
+ tests/test3.py
13
+ tests/test_XOR.py
14
+ tests/test_mseloss.py
15
+ tests/test_sgd.py
16
+ tests/test_tensor.py
17
+ tests/test_tensor_add.py
18
+ tests/test_tensor_mul.py
19
+ tests/test_tensor_sum.py
@@ -0,0 +1 @@
1
+ numpy
@@ -0,0 +1 @@
1
+ tests
@@ -0,0 +1,22 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "poliflow"
7
+ version = "0.1.0"
8
+ authors = [
9
+ { name="Eduardo", email="correo@example.com" }
10
+ ]
11
+ description = "Framework de deep learning"
12
+ readme = "README.md"
13
+ requires-python = ">=3.9"
14
+
15
+ dependencies = [
16
+ "numpy",
17
+ ]
18
+
19
+ classifiers = [
20
+ "Programming Language :: Python :: 3",
21
+ "Operating System :: OS Independent",
22
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,37 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ with open("README.md", "r", encoding="utf-8") as readme:
4
+ long_description = readme.read()
5
+
6
+ setup(
7
+ name="poliflow",
8
+ version="0.1.2",
9
+ packages=find_packages(),
10
+ description="Framework de Machine Learning desarrollado en Python",
11
+ long_description=long_description,
12
+ long_description_content_type="text/markdown",
13
+ author="Eduardo Hernandez,Gerardo Hernandez",
14
+ url="https://github.com/Th3copolo0X/Poliflow2",
15
+ download_url="https://github.com/Th3copolo0X/Poliflow2/archive/refs/tags/v0.1.tar.gz",
16
+ keywords=[
17
+ "machine learning",
18
+ "deep learning",
19
+ "framework",
20
+ "neural networks",
21
+ "python"
22
+ ],
23
+ classifiers=[
24
+ "Development Status :: 3 - Alpha",
25
+ "Intended Audience :: Developers",
26
+ "Programming Language :: Python :: 3",
27
+ "Programming Language :: Python :: 3.10",
28
+ "License :: OSI Approved :: MIT License",
29
+ "Operating System :: OS Independent",
30
+ ],
31
+ license="MIT",
32
+ include_package_data=True,
33
+ install_requires=[
34
+ "numpy",
35
+ ],
36
+ python_requires=">=3.10",
37
+ )
File without changes
@@ -0,0 +1,92 @@
1
+ import pandas as pd
2
+ import numpy as np
3
+ import sys
4
+ import os
5
+
6
+ # Para que encuentre poliflow
7
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
8
+
9
+ # Importar tu framework
10
+ from poliflow.core.Tensor import Tensor
11
+ from poliflow.nn.Linear import Linear
12
+ from poliflow.nn.Sequential import Sequential
13
+ from poliflow.losses.MSE import MSELoss
14
+ from poliflow.optim.SGD import SGD
15
+ from poliflow.nn.Activation import ReLU
16
+
17
+ # =========================
18
+ # 1. Cargar datos
19
+ # =========================
20
+ ruta_csv = os.path.join(
21
+ os.path.dirname(__file__),
22
+ "house_dataset 2.csv"
23
+ )
24
+
25
+ df = pd.read_csv(ruta_csv)
26
+
27
+ # Features y target
28
+ X = df.drop(columns=["House_Price"]).values
29
+ y = df["House_Price"].values.reshape(-1, 1)
30
+
31
+ # Normalización
32
+ X = (X - X.mean(axis=0)) / X.std(axis=0)
33
+ y = (y - y.mean()) / y.std()
34
+
35
+ # =========================
36
+ # 2. Convertir a Tensor
37
+ # =========================
38
+ X_tensor = Tensor(X)
39
+ y_tensor = Tensor(y)
40
+
41
+ # =========================
42
+ # 3. Definir modelo
43
+ # =========================
44
+ input_size = X.shape[1]
45
+
46
+ model = Sequential(
47
+ Linear(input_size, 16),
48
+ ReLU(),
49
+ Linear(16, 8),
50
+ ReLU(),
51
+ Linear(8, 1)
52
+ )
53
+
54
+ # =========================
55
+ # 4. Loss y optimizador
56
+ # =========================
57
+ criterion = MSELoss()
58
+ optimizer = SGD(model.parameters(), lr=0.01)
59
+
60
+ # =========================
61
+ # 5. Entrenamiento
62
+ # =========================
63
+ epochs = 10000
64
+
65
+ for epoch in range(epochs):
66
+ pred = model(X_tensor)
67
+ loss = criterion(pred, y_tensor)
68
+
69
+ loss.backward()
70
+ optimizer.step()
71
+ optimizer.zero_grad()
72
+
73
+ if epoch % 1000 == 0:
74
+ try:
75
+ print(f"Epoch {epoch}, Loss: {loss.data}")
76
+ except:
77
+ print(f"Epoch {epoch}, Loss: {loss}")
78
+
79
+ # =========================
80
+ # 6. Predicción
81
+ # =========================
82
+ pred_final = model(X_tensor)
83
+
84
+ try:
85
+ print("Predicciones:", pred_final.data[:5])
86
+ except:
87
+ print("Predicciones:", pred_final[:5])
88
+
89
+
90
+ for i in range(5):
91
+ print("Pred:", pred_final.data[i][0],
92
+ "| Real:", y_tensor.data[i][0])
@@ -0,0 +1,114 @@
1
+ import pandas as pd
2
+ import numpy as np
3
+ import sys
4
+ import os
5
+
6
+
7
+ # Para que encuentre poliflow
8
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
9
+
10
+ # Importar tu framework
11
+ from poliflow.grafica.grafo import dibujar_red_desde_modelo
12
+ from poliflow.core.Tensor import Tensor
13
+ from poliflow.nn.Linear import Linear
14
+ from poliflow.nn.Sequential import Sequential
15
+ from poliflow.losses.MSE import MSELoss
16
+ from poliflow.optim.SGD import SGD
17
+ from poliflow.nn.Activation import ReLU
18
+ from poliflow.data.split import train_test_split
19
+
20
+ # =========================
21
+ # 1. Cargar datos
22
+ # =========================
23
+ ruta_csv = os.path.join(
24
+ os.path.dirname(__file__),
25
+ "house_dataset 2.csv"
26
+ )
27
+
28
+ df = pd.read_csv(ruta_csv)
29
+
30
+ # Features y target
31
+ X = df.drop(columns=["House_Price"]).values
32
+ y = df["House_Price"].values.reshape(-1, 1)
33
+
34
+
35
+
36
+ X_train, X_test, y_train, y_test = train_test_split(X, y)
37
+
38
+ # Calcular con TRAIN
39
+ X_mean = X_train.mean(axis=0)
40
+ X_std = X_train.std(axis=0)
41
+
42
+ y_mean = y_train.mean()
43
+ y_std = y_train.std()
44
+
45
+ # Normalizar TRAIN
46
+ X_train = (X_train - X_mean) / X_std
47
+ y_train = (y_train - y_mean) / y_std
48
+
49
+ # Normalizar TEST con los mismos valores
50
+ X_test = (X_test - X_mean) / X_std
51
+ y_test = (y_test - y_mean) / y_std
52
+
53
+ # =========================
54
+ # 2. Convertir a Tensor
55
+ # =========================
56
+ X_tensor = Tensor(X_train)
57
+ y_tensor = Tensor(y_train)
58
+
59
+ X_test_tensor = Tensor(X_test)
60
+ y_test_tensor = Tensor(y_test)
61
+
62
+ # =========================
63
+ # 3. Definir modelo
64
+ # =========================
65
+ input_size = X.shape[1]
66
+
67
+ model = Sequential(
68
+ Linear(input_size, 16),
69
+ ReLU(),
70
+ Linear(16, 8),
71
+ ReLU(),
72
+ Linear(8, 1)
73
+ )
74
+
75
+ # =========================
76
+ # 4. Loss y optimizador
77
+ # =========================
78
+ criterion = MSELoss()
79
+ optimizer = SGD(model.parameters(), lr=0.01)
80
+
81
+ # =========================
82
+ # 5. Entrenamiento
83
+ # =========================
84
+ epochs = 10000
85
+
86
+ for epoch in range(epochs):
87
+ pred = model(X_tensor)
88
+ loss = criterion(pred, y_tensor)
89
+
90
+ loss.backward()
91
+ optimizer.step()
92
+ optimizer.zero_grad()
93
+
94
+ if epoch % 1000 == 0:
95
+ try:
96
+ print(f"Epoch {epoch}, Loss: {loss.data}")
97
+ except:
98
+ print(f"Epoch {epoch}, Loss: {loss}")
99
+
100
+ # =========================
101
+ # 6. Predicción
102
+ # =========================
103
+ pred_final = model(X_tensor)
104
+
105
+ try:
106
+ print("Predicciones:", pred_final.data[:5])
107
+ except:
108
+ print("Predicciones:", pred_final[:5])
109
+
110
+
111
+ for i in range(5):
112
+ print("Pred:", pred_final.data[i][0],
113
+ "| Real:", y_tensor.data[i][0])
114
+
@@ -0,0 +1,126 @@
1
+ import pandas as pd
2
+ import numpy as np
3
+ import sys
4
+ import os
5
+
6
+ # Para que encuentre poliflow
7
+ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
8
+
9
+ # Importar tu framework
10
+ from poliflow.core.Tensor import Tensor
11
+ from poliflow.nn.Linear import Linear
12
+ from poliflow.nn.Sequential import Sequential
13
+ from poliflow.losses.MSE import MSELoss
14
+ from poliflow.optim.SGD import SGD
15
+ from poliflow.nn.Activation import ReLU
16
+ from poliflow.data.split import train_test_split
17
+
18
+ from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
19
+
20
+ # =========================
21
+ # 1. Cargar datos
22
+ # =========================
23
+ ruta_csv = os.path.join(
24
+ os.path.dirname(__file__),
25
+ "house_dataset 2.csv"
26
+ )
27
+
28
+ df = pd.read_csv(ruta_csv)
29
+
30
+ # Features y target
31
+ X = df.drop(columns=["House_Price"]).values
32
+ y = df["House_Price"].values.reshape(-1, 1)
33
+
34
+ # 🔥 LOG TRANSFORM (CLAVE)
35
+ y = np.log1p(y)
36
+
37
+ # =========================
38
+ # 2. Split
39
+ # =========================
40
+ X_train, X_test, y_train, y_test = train_test_split(X, y)
41
+
42
+ # =========================
43
+ # 3. Normalización (solo TRAIN)
44
+ # =========================
45
+ X_mean = X_train.mean(axis=0)
46
+ X_std = X_train.std(axis=0) + 1e-8
47
+
48
+ y_mean = y_train.mean()
49
+ y_std = y_train.std() + 1e-8
50
+
51
+ # Normalizar TRAIN
52
+ X_train = (X_train - X_mean) / X_std
53
+ y_train = (y_train - y_mean) / y_std
54
+
55
+ # Normalizar TEST
56
+ X_test = (X_test - X_mean) / X_std
57
+ y_test = (y_test - y_mean) / y_std
58
+
59
+ # =========================
60
+ # 4. Tensor
61
+ # =========================
62
+ X_tensor = Tensor(X_train)
63
+ y_tensor = Tensor(y_train)
64
+
65
+ X_test_tensor = Tensor(X_test)
66
+
67
+ # =========================
68
+ # 5. Modelo
69
+ # =========================
70
+ input_size = X.shape[1]
71
+
72
+ model = Sequential(
73
+ Linear(input_size, 16),
74
+ ReLU(),
75
+ Linear(16, 8),
76
+ ReLU(),
77
+ Linear(8, 1)
78
+ )
79
+
80
+ # =========================
81
+ # 6. Loss y optimizador
82
+ # =========================
83
+ criterion = MSELoss()
84
+ optimizer = SGD(model.parameters(), lr=0.01)
85
+
86
+ # =========================
87
+ # 7. Entrenamiento
88
+ # =========================
89
+ epochs = 10000 # 🔥 bajamos epochs (10000 era excesivo)
90
+
91
+ for epoch in range(epochs):
92
+ pred = model(X_tensor)
93
+ loss = criterion(pred, y_tensor)
94
+
95
+ loss.backward()
96
+ optimizer.step()
97
+ optimizer.zero_grad()
98
+
99
+ if epoch % 500 == 0:
100
+ print(f"Epoch {epoch}, Loss: {loss.data}")
101
+
102
+ # =========================
103
+ # 8. Predicción en TEST
104
+ # =========================
105
+ pred_test = model(X_test_tensor).data
106
+
107
+ # 🔄 Desnormalizar
108
+ y_pred_log = pred_test * y_std + y_mean
109
+ y_true_log = y_test * y_std + y_mean
110
+
111
+ # 🔄 Invertir log
112
+ y_pred = np.expm1(y_pred_log)
113
+ y_true = np.expm1(y_true_log)
114
+
115
+ # =========================
116
+ # 9. Métricas
117
+ # =========================
118
+ mse = mean_squared_error(y_true, y_pred)
119
+ rmse = np.sqrt(mse)
120
+ mae = mean_absolute_error(y_true, y_pred)
121
+ r2 = r2_score(y_true, y_pred)
122
+
123
+ print("\n=== RESULTADOS ===")
124
+ print(f"RMSE: {rmse:.2f}")
125
+ print(f"MAE: {mae:.2f}")
126
+ print(f"R²: {r2:.4f}")
@@ -0,0 +1,50 @@
1
+ import numpy as np
2
+ from poliflow.core.Tensor import Tensor
3
+ from poliflow.nn.Linear import Linear
4
+ from poliflow.nn.Activation import Sigmoid
5
+ from poliflow.nn.Sequential import Sequential
6
+ from poliflow.losses.MSE import MSELoss
7
+ from poliflow.optim.SGD import SGD
8
+
9
+ # Datos XOR
10
+ X = Tensor(np.array([
11
+ [0, 0],
12
+ [0, 1],
13
+ [1, 0],
14
+ [1, 1]
15
+ ]), requires_grad=False)
16
+
17
+ y = Tensor(np.array([
18
+ [0],
19
+ [1],
20
+ [1],
21
+ [0]
22
+ ]), requires_grad=False)
23
+
24
+ # Modelo (con capa oculta)
25
+ model = Sequential(
26
+ Linear(2, 4),
27
+ Sigmoid(),
28
+ Linear(4, 1),
29
+ Sigmoid()
30
+ )
31
+
32
+ loss_fn = MSELoss()
33
+ optimizer = SGD(model.parameters(), lr=0.5)
34
+
35
+ # Entrenamiento
36
+ for epoch in range(5000):
37
+ y_pred = model(X)
38
+
39
+ loss = loss_fn(y_pred, y)
40
+
41
+ loss.backward()
42
+ optimizer.step()
43
+ optimizer.zero_grad()
44
+
45
+ if epoch % 500 == 0:
46
+ print(f"Epoch {epoch}, Loss: {loss.data}")
47
+
48
+ # Resultados
49
+ print("\nPredicciones XOR:")
50
+ print(model(X).data)
@@ -0,0 +1,14 @@
1
+ from poliflow.core.Tensor import Tensor
2
+ from poliflow.losses import MSELoss, MAELoss
3
+
4
+ y_pred = Tensor([2.0, 3.0], requires_grad=True)
5
+ y_true = Tensor([1.0, 5.0])
6
+
7
+ # MSE
8
+ mse = MSELoss()
9
+ loss1 = mse(y_pred, y_true)
10
+
11
+ loss1.backward()
12
+
13
+ print("MSE loss:", loss1.data)
14
+ print("grad:", y_pred.grad)
@@ -0,0 +1,26 @@
1
+ from poliflow.core.Tensor import Tensor
2
+ from poliflow.losses import MSELoss
3
+ from poliflow.optim import SGD
4
+
5
+ # datos
6
+ x = Tensor(2.0)
7
+ y_true = Tensor(4.0)
8
+
9
+ # parametro (peso)
10
+ w = Tensor(1.0, requires_grad=True)
11
+
12
+ # loss y optimizador
13
+ loss_fn = MSELoss()
14
+ optimizer = SGD([w], lr=0.15)
15
+
16
+ for epoch in range(10):
17
+
18
+ y_pred = w * x
19
+
20
+ loss = loss_fn(y_pred, y_true)
21
+
22
+ optimizer.zero_grad()
23
+ loss.backward()
24
+ optimizer.step()
25
+
26
+ print(f"Epoch {epoch}: w={w.data}, loss={loss.data}")
@@ -0,0 +1,15 @@
1
+ from poliflow.core.tensor import Tensor
2
+
3
+ a = Tensor(2.0, requires_grad=True)
4
+ b = Tensor(3.0, requires_grad=True)
5
+
6
+ c = a * b
7
+ d = c + a
8
+
9
+ d.backward()
10
+
11
+ print("a.grad:", a.grad)
12
+ print("b.grad:", b.grad)
13
+
14
+
15
+
@@ -0,0 +1,14 @@
1
+
2
+ from poliflow.core.tensor import Tensor
3
+
4
+ a = Tensor(2.0, requires_grad=True)
5
+ b = Tensor(3.0, requires_grad=True)
6
+
7
+ c = a + b
8
+
9
+ c.backward()
10
+
11
+ print("a.grad:", a.grad)
12
+ print("b.grad:", b.grad)
13
+
14
+
@@ -0,0 +1,14 @@
1
+ from poliflow.core.tensor import Tensor
2
+
3
+ a = Tensor(2.0, requires_grad=True)
4
+ b = Tensor(3.0, requires_grad=True)
5
+
6
+ c = a * b
7
+
8
+ c.backward()
9
+
10
+ print("a.grad:", a.grad)
11
+ print("b.grad:", b.grad)
12
+
13
+
14
+
@@ -0,0 +1,17 @@
1
+ # tests/test_sum_mean.py
2
+
3
+ from poliflow.core.Tensor import Tensor
4
+
5
+ x = Tensor([1.0, 2.0, 3.0], requires_grad=True)
6
+
7
+ y = x.sum()
8
+ y.backward()
9
+
10
+ print("sum grad:", x.grad)
11
+
12
+ x = Tensor([1.0, 2.0, 3.0], requires_grad=True)
13
+
14
+ y = x.mean()
15
+ y.backward()
16
+
17
+ print("mean grad:", x.grad)