pyerualjetwork 2.7.7__py3-none-any.whl → 2.7.9__py3-none-any.whl
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.
- plan/__init__.py +1 -1
- plan/plan.py +93 -29
- {pyerualjetwork-2.7.7.dist-info → pyerualjetwork-2.7.9.dist-info}/METADATA +7 -2
- pyerualjetwork-2.7.9.dist-info/RECORD +6 -0
- {pyerualjetwork-2.7.7.dist-info → pyerualjetwork-2.7.9.dist-info}/WHEEL +1 -1
- pyerualjetwork-2.7.7.dist-info/RECORD +0 -6
- {pyerualjetwork-2.7.7.dist-info → pyerualjetwork-2.7.9.dist-info}/top_level.txt +0 -0
plan/__init__.py
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
# Bu dosya, plan modülünün ana giriş noktasıdır.
|
4
4
|
|
5
|
-
from .plan import auto_balancer, normalization, Softmax, Sigmoid, Relu, weight_identification, fex, fit, evaluate, save_model, load_model, predict_model_ssd, predict_model_ram, get_weights, get_df, get_preds, get_acc, synthetic_augmentation, standard_scaler, multiple_evaluate, encode_one_hot, split, metrics, decode_one_hot, roc_curve, confusion_matrix, plot_evaluate, manuel_balancer, weight_normalization
|
5
|
+
from .plan import auto_balancer, normalization, Softmax, Sigmoid, Relu, weight_identification, fex, fit, evaluate, save_model, load_model, predict_model_ssd, predict_model_ram, get_weights, get_df, get_preds, get_acc, synthetic_augmentation, standard_scaler, multiple_evaluate, encode_one_hot, split, metrics, decode_one_hot, roc_curve, confusion_matrix, plot_evaluate, manuel_balancer, weight_normalization, plot_decision_space
|
plan/plan.py
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
1
|
# -*- coding: utf-8 -*-
|
3
2
|
"""
|
4
3
|
Created on Tue Jun 18 23:32:16 2024
|
5
4
|
|
6
|
-
@author: hasan
|
5
|
+
@author: hasan can
|
7
6
|
"""
|
8
7
|
|
9
8
|
import pandas as pd
|
@@ -11,7 +10,6 @@ import numpy as np
|
|
11
10
|
import time
|
12
11
|
from colorama import Fore, Style
|
13
12
|
from typing import List, Union
|
14
|
-
import math
|
15
13
|
from scipy.special import expit, softmax
|
16
14
|
import matplotlib.pyplot as plt
|
17
15
|
import seaborn as sns
|
@@ -148,9 +146,12 @@ def fit(
|
|
148
146
|
|
149
147
|
val_count += val_count_copy
|
150
148
|
|
151
|
-
validation_model = evaluate(x_val, y_val, LTPW, activation_potentiation, None)
|
149
|
+
validation_model = evaluate(x_val, y_val, LTPW, activation_potentiation=activation_potentiation, show_metrices=None)
|
152
150
|
|
153
151
|
val_acc = validation_model[get_acc()]
|
152
|
+
val_preds = validation_model[get_preds()]
|
153
|
+
|
154
|
+
plot_decision_space(x_val, val_preds, s=100, color='tab20')
|
154
155
|
|
155
156
|
val_list.append(val_acc)
|
156
157
|
|
@@ -251,8 +252,10 @@ def fit(
|
|
251
252
|
|
252
253
|
val_list.append(val_acc)
|
253
254
|
|
254
|
-
val_bar.update(val_acc)
|
255
|
-
|
255
|
+
val_bar.update(val_acc)
|
256
|
+
|
257
|
+
LTPW = normalization(LTPW)
|
258
|
+
|
256
259
|
return LTPW
|
257
260
|
|
258
261
|
# FUNCTIONS -----
|
@@ -485,23 +488,28 @@ def evaluate(
|
|
485
488
|
Returns:
|
486
489
|
tuple: A tuple containing the predicted labels and the accuracy of the model.
|
487
490
|
"""
|
491
|
+
|
492
|
+
predict_probabilitys = []
|
493
|
+
real_classes = []
|
494
|
+
predict_classes = []
|
495
|
+
|
488
496
|
try:
|
489
497
|
layers = ['fex']
|
490
498
|
|
491
499
|
Wc = [0] * len(W) # Wc = Weight copy
|
492
500
|
true = 0
|
493
|
-
y_preds = [
|
501
|
+
y_preds = []
|
494
502
|
acc_list = []
|
495
503
|
|
496
504
|
for i, w in enumerate(W):
|
497
505
|
Wc[i] = np.copy(w)
|
498
506
|
|
499
|
-
|
507
|
+
|
500
508
|
if bar_status == True:
|
501
509
|
|
502
510
|
test_progress = tqdm(total=len(x_test),leave=False, desc='Testing',ncols=120)
|
503
511
|
acc_bar = tqdm(total=1, desc="Test Accuracy", ncols=120)
|
504
|
-
|
512
|
+
|
505
513
|
|
506
514
|
for inpIndex, Input in enumerate(x_test):
|
507
515
|
Input = np.array(Input)
|
@@ -516,15 +524,25 @@ def evaluate(
|
|
516
524
|
|
517
525
|
for i, w in enumerate(Wc):
|
518
526
|
W[i] = np.copy(w)
|
527
|
+
|
528
|
+
neural_layer = Softmax(neural_layer)
|
529
|
+
max_value = max(neural_layer)
|
530
|
+
|
531
|
+
predict_probabilitys.append(max_value)
|
532
|
+
|
533
|
+
|
519
534
|
RealOutput = np.argmax(y_test[inpIndex])
|
535
|
+
real_classes.append(RealOutput)
|
520
536
|
PredictedOutput = np.argmax(neural_layer)
|
537
|
+
predict_classes.append(PredictedOutput)
|
538
|
+
|
521
539
|
if RealOutput == PredictedOutput:
|
522
540
|
true += 1
|
523
541
|
acc = true / len(y_test)
|
524
542
|
|
525
543
|
|
526
544
|
acc_list.append(acc)
|
527
|
-
y_preds
|
545
|
+
y_preds.append(PredictedOutput)
|
528
546
|
|
529
547
|
if bar_status == True:
|
530
548
|
test_progress.update(1)
|
@@ -534,14 +552,14 @@ def evaluate(
|
|
534
552
|
else:
|
535
553
|
acc = acc - acc_list[inpIndex - 1]
|
536
554
|
acc_bar.update(acc)
|
537
|
-
|
555
|
+
|
538
556
|
if show_metrices == True:
|
539
|
-
plot_evaluate(y_test, y_preds, acc_list)
|
557
|
+
plot_evaluate(x_test, y_test, y_preds, acc_list)
|
540
558
|
|
541
559
|
|
542
560
|
for i, w in enumerate(Wc):
|
543
561
|
W[i] = np.copy(w)
|
544
|
-
|
562
|
+
|
545
563
|
except:
|
546
564
|
|
547
565
|
print(Fore.RED + 'ERROR:' + infoTestModel + Style.RESET_ALL)
|
@@ -1055,7 +1073,6 @@ def synthetic_augmentation(x_train, y_train):
|
|
1055
1073
|
classes = np.arange(y_train.shape[1])
|
1056
1074
|
class_count = len(classes)
|
1057
1075
|
|
1058
|
-
# Calculate class distribution
|
1059
1076
|
class_distribution = {i: 0 for i in range(class_count)}
|
1060
1077
|
for label in y:
|
1061
1078
|
class_distribution[np.argmax(label)] += 1
|
@@ -1396,7 +1413,7 @@ def confusion_matrix(y_true, y_pred, class_count):
|
|
1396
1413
|
return confusion
|
1397
1414
|
|
1398
1415
|
|
1399
|
-
def plot_evaluate(y_test, y_preds, acc_list):
|
1416
|
+
def plot_evaluate(x_test, y_test, y_preds, acc_list):
|
1400
1417
|
|
1401
1418
|
acc = acc_list[len(acc_list) - 1]
|
1402
1419
|
y_true = decode_one_hot(y_test)
|
@@ -1479,42 +1496,89 @@ def plot_evaluate(y_test, y_preds, acc_list):
|
|
1479
1496
|
|
1480
1497
|
|
1481
1498
|
|
1482
|
-
|
1499
|
+
|
1483
1500
|
metric = ['Precision', 'Recall', 'F1 Score', 'Accuracy']
|
1484
1501
|
values = [precision, recall, f1, acc]
|
1485
1502
|
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
|
1486
1503
|
|
1487
|
-
|
1504
|
+
|
1488
1505
|
bars = axs[0, 1].bar(metric, values, color=colors)
|
1489
1506
|
|
1490
1507
|
|
1491
1508
|
for bar, value in zip(bars, values):
|
1492
|
-
axs[0, 1].text(bar.get_x() + bar.get_width() / 2, bar.get_height() - 0.05, f'{value:.2f}',
|
1509
|
+
axs[0, 1].text(bar.get_x() + bar.get_width() / 2, bar.get_height() - 0.05, f'{value:.2f}',
|
1493
1510
|
ha='center', va='bottom', fontsize=12, color='white', weight='bold')
|
1494
1511
|
|
1495
|
-
axs[0, 1].set_ylim(0, 1)
|
1512
|
+
axs[0, 1].set_ylim(0, 1)
|
1496
1513
|
axs[0, 1].set_xlabel('Metrics')
|
1497
1514
|
axs[0, 1].set_ylabel('Score')
|
1498
1515
|
axs[0, 1].set_title('Precision, Recall, F1 Score, and Accuracy (Weighted)')
|
1499
1516
|
axs[0, 1].grid(True, axis='y', linestyle='--', alpha=0.7)
|
1500
1517
|
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1518
|
+
|
1519
|
+
if x_test.shape[1] > 2:
|
1520
|
+
|
1521
|
+
X_pca = pca(x_test, n_components=2)
|
1522
|
+
else:
|
1523
|
+
X_pca = x_test
|
1504
1524
|
|
1525
|
+
num_classes = len(y_test[0])
|
1505
1526
|
|
1506
|
-
|
1527
|
+
|
1528
|
+
cmap = plt.get_cmap('tab20')
|
1529
|
+
|
1530
|
+
axs[1,1].scatter(X_pca[:, 0], X_pca[:, 1], c=y_preds, edgecolor='k', s=100, cmap=cmap, vmin=0, vmax=num_classes - 1)
|
1531
|
+
axs[1,1].set_title("Decision Space")
|
1532
|
+
|
1533
|
+
plt.show()
|
1534
|
+
|
1535
|
+
def pca(X, n_components):
|
1536
|
+
"""
|
1537
|
+
PCA algoritmasını uygulayan fonksiyon.
|
1507
1538
|
|
1539
|
+
Parameters:
|
1540
|
+
X (numpy array): Giriş verisi (n_samples, n_features)
|
1541
|
+
n_components (int): Saklanacak ana bileşen sayısı
|
1542
|
+
|
1543
|
+
Returns:
|
1544
|
+
X_reduced (numpy array): (n_samples, n_components)
|
1545
|
+
"""
|
1508
1546
|
|
1509
|
-
|
1510
|
-
plt.ylabel('Accuracy')
|
1511
|
-
plt.title('Accuracy History')
|
1512
|
-
plt.legend()
|
1547
|
+
X_meaned = X - np.mean(X, axis=0)
|
1513
1548
|
|
1549
|
+
covariance_matrix = np.cov(X_meaned, rowvar=False)
|
1514
1550
|
|
1515
|
-
|
1516
|
-
|
1551
|
+
eigenvalues, eigenvectors = np.linalg.eigh(covariance_matrix)
|
1552
|
+
|
1553
|
+
sorted_index = np.argsort(eigenvalues)[::-1]
|
1554
|
+
sorted_eigenvectors = eigenvectors[:, sorted_index]
|
1555
|
+
sorted_eigenvalues = eigenvalues[sorted_index]
|
1556
|
+
|
1557
|
+
eigenvectors_subset = sorted_eigenvectors[:, :n_components]
|
1558
|
+
|
1559
|
+
X_reduced = np.dot(X_meaned, eigenvectors_subset)
|
1560
|
+
|
1561
|
+
return X_reduced
|
1517
1562
|
|
1563
|
+
def plot_decision_space(x, y, s=100, color='tab20'):
|
1564
|
+
|
1565
|
+
if x.shape[1] > 2:
|
1566
|
+
|
1567
|
+
X_pca = pca(x, n_components=2)
|
1568
|
+
else:
|
1569
|
+
X_pca = x
|
1570
|
+
|
1571
|
+
num_classes = len(y[0])
|
1572
|
+
|
1573
|
+
|
1574
|
+
cmap = plt.get_cmap(color)
|
1575
|
+
|
1576
|
+
|
1577
|
+
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, edgecolor='k', s=s, cmap=cmap, vmin=0, vmax=num_classes - 1)
|
1578
|
+
plt.title("Decision Space")
|
1579
|
+
|
1580
|
+
plt.draw()
|
1581
|
+
|
1518
1582
|
def manuel_balancer(x_train, y_train, target_samples_per_class):
|
1519
1583
|
"""
|
1520
1584
|
Generates synthetic examples to balance classes to the specified number of examples per class.
|
@@ -1,8 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyerualjetwork
|
3
|
-
Version: 2.7.
|
4
|
-
Summary:
|
3
|
+
Version: 2.7.9
|
4
|
+
Summary: Decision Space included in evaluate with plot_decision_space function
|
5
|
+
Home-page: UNKNOWN
|
5
6
|
Author: Hasan Can Beydili
|
6
7
|
Author-email: tchasancan@gmail.com
|
8
|
+
License: UNKNOWN
|
7
9
|
Keywords: model evaluation,classifcation,potentiation learning artficial neural networks
|
10
|
+
Platform: UNKNOWN
|
11
|
+
|
12
|
+
UNKNOWN
|
8
13
|
|
@@ -0,0 +1,6 @@
|
|
1
|
+
plan/__init__.py,sha256=WStB_zoAADCWXzIqieDZo4frPQMEZzxXnRZ6QiQKSGY,523
|
2
|
+
plan/plan.py,sha256=mGYaNgbEjJKjBz9zCWG2weGBHQoIXDGF2Z6prL8xGq8,54466
|
3
|
+
pyerualjetwork-2.7.9.dist-info/METADATA,sha256=CqzPI6YYfXXC46C1RtmvYun29c1wxlIAX4rK37OtMzs,364
|
4
|
+
pyerualjetwork-2.7.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
5
|
+
pyerualjetwork-2.7.9.dist-info/top_level.txt,sha256=G0Al3HuNJ88434XneyDtRKAIUaLCizOFYFYNhd7e2OM,5
|
6
|
+
pyerualjetwork-2.7.9.dist-info/RECORD,,
|
@@ -1,6 +0,0 @@
|
|
1
|
-
plan/__init__.py,sha256=gmaz8lnQfl18MbOQwabBUPmShajK5S99jfyY-hQe8tc,502
|
2
|
-
plan/plan.py,sha256=v7MjGajLUb7EMjqJ1zdwtTvTsFHXFL0qx6cc2ufAF80,52779
|
3
|
-
pyerualjetwork-2.7.7.dist-info/METADATA,sha256=0YOAffod8gsEAj_AHAVBswSJ0OizvXsJQwWqWPU6bik,244
|
4
|
-
pyerualjetwork-2.7.7.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
5
|
-
pyerualjetwork-2.7.7.dist-info/top_level.txt,sha256=G0Al3HuNJ88434XneyDtRKAIUaLCizOFYFYNhd7e2OM,5
|
6
|
-
pyerualjetwork-2.7.7.dist-info/RECORD,,
|
File without changes
|