aek-auto-mlbuilder 0.8.2__tar.gz → 0.10.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.
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/PKG-INFO +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/__init__.py +3 -1
- aek_auto_mlbuilder-0.10.0/aek_auto_mlbuilder/agglomerative.py +40 -0
- aek_auto_mlbuilder-0.10.0/aek_auto_mlbuilder/dbscan.py +31 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/kmeans.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/knn.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/naive_bayes.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/random_forest.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/svm.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/PKG-INFO +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/SOURCES.txt +2 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/setup.py +1 -1
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/LICENSE +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/README.md +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/base.py +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/decision_tree.py +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/linear_regression.py +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/logistic_regression.py +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/utils.py +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/dependency_links.txt +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/requires.txt +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/top_level.txt +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/pyproject.toml +0 -0
- {aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/setup.cfg +0 -0
@@ -7,4 +7,6 @@ from .knn import KNNModel
|
|
7
7
|
from .random_forest import RandomForestModel
|
8
8
|
from .svm import SVMModel
|
9
9
|
from .naive_bayes import NaiveBayesModel
|
10
|
-
from .kmeans import KMeansModel
|
10
|
+
from .kmeans import KMeansModel
|
11
|
+
from .dbscan import DBSCANModel
|
12
|
+
from .agglomerative import AgglomerativeModel
|
@@ -0,0 +1,40 @@
|
|
1
|
+
from sklearn.cluster import AgglomerativeClustering
|
2
|
+
from .base import BaseModel
|
3
|
+
|
4
|
+
class AgglomerativeModel(BaseModel):
|
5
|
+
"""
|
6
|
+
Agglomerative clustering model
|
7
|
+
brute force search is being used
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init(self, param_grid=None):
|
11
|
+
super().__init__()
|
12
|
+
self.param_grid = param_grid or {
|
13
|
+
"n_clusters": [2, 3, 4, 5, 6],
|
14
|
+
"linkage": ["ward", "complete", "average", "single"]
|
15
|
+
}
|
16
|
+
|
17
|
+
def train(self, X):
|
18
|
+
best_score = -float("inf")
|
19
|
+
best_model = None
|
20
|
+
|
21
|
+
for n_clusters in self.param_grid["n_clusters"]:
|
22
|
+
for linkage in self.param_grid["linkage"]:
|
23
|
+
model = AgglomerativeClustering(
|
24
|
+
n_clusters=n_clusters,
|
25
|
+
linkage=linkage
|
26
|
+
)
|
27
|
+
labels = model.fit_predict(X)
|
28
|
+
clusters = set(labels)
|
29
|
+
score = 0
|
30
|
+
for k in clusters:
|
31
|
+
cluster_size = (labels == k).sum()
|
32
|
+
score += 1 / cluster_size
|
33
|
+
if score > best_score:
|
34
|
+
best_score = score
|
35
|
+
best_model = model
|
36
|
+
|
37
|
+
self.best_model = best_model
|
38
|
+
self.best_score = best_score
|
39
|
+
return self.best_model
|
40
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
from sklearn.cluster import DBSCAN
|
2
|
+
from .base import BaseModel
|
3
|
+
|
4
|
+
class DBSCANModel(BaseModel):
|
5
|
+
"""
|
6
|
+
DBSCAN clustering model (unsupervised learning)
|
7
|
+
brute force searching is being used
|
8
|
+
"""
|
9
|
+
def __init__(self, param_grid=None):
|
10
|
+
super().__init__()
|
11
|
+
self.param_grid = param_grid or {
|
12
|
+
"eps": [0.3, 0.5, 0.7, 1.0],
|
13
|
+
"min_samples": [3, 5, 10]
|
14
|
+
}
|
15
|
+
|
16
|
+
def train(self, X):
|
17
|
+
best_score = -float("inf")
|
18
|
+
best_model = None
|
19
|
+
|
20
|
+
for eps in self.param_grid["eps"]:
|
21
|
+
for min_samples in self.param_grid["min_samples"]:
|
22
|
+
model = DBSCAN(eps=eps, min_samples=min_samples)
|
23
|
+
labels = model.fit_predict(X)
|
24
|
+
|
25
|
+
score = len(labels) - (labels == -1).sum()
|
26
|
+
if score > best_score:
|
27
|
+
best_score = score
|
28
|
+
best_model = model
|
29
|
+
self.best_model = best_model
|
30
|
+
self.best_score = best_score
|
31
|
+
return self.best_model
|
@@ -8,7 +8,7 @@ class KNNModel(BaseModel):
|
|
8
8
|
"""
|
9
9
|
KNN model for classification for classification or regression
|
10
10
|
Use "task" for "classification" or "regression"
|
11
|
-
Brute-force search
|
11
|
+
Brute-force search is being used
|
12
12
|
"""
|
13
13
|
def __init__(self, task="classification", param_grid=None):
|
14
14
|
super().__init__()
|
@@ -6,7 +6,7 @@ class NaiveBayesModel(BaseModel):
|
|
6
6
|
"""
|
7
7
|
Naive bayes model supporting gaussianNB, multinomialNB, bernoulliNB
|
8
8
|
use 'nb_type' param to specify the variant: gaussian, multinomial, bernoulli
|
9
|
-
brute force hyperparameter search
|
9
|
+
brute force hyperparameter search is being used
|
10
10
|
"""
|
11
11
|
def __init__(self, nb_type="gaussian", param_grid=None):
|
12
12
|
super().__init__()
|
@@ -5,7 +5,7 @@ class RandomForestModel(BaseModel):
|
|
5
5
|
"""
|
6
6
|
Random Forest model for classification or regression
|
7
7
|
Use task either "classification" or "regression"
|
8
|
-
brute force method
|
8
|
+
brute force method is being used
|
9
9
|
"""
|
10
10
|
def __init__(self, task="classification", param_grid=None):
|
11
11
|
super().__init__()
|
@@ -8,7 +8,7 @@ class SVMModel(BaseModel):
|
|
8
8
|
"""
|
9
9
|
support vector machine for classification and regression
|
10
10
|
use task parameter for "regression" or "classification"
|
11
|
-
brute force
|
11
|
+
brute force is being used
|
12
12
|
"""
|
13
13
|
def __init__(self, task="classification", param_grid=None):
|
14
14
|
super().__init__()
|
{aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/SOURCES.txt
RENAMED
@@ -3,7 +3,9 @@ README.md
|
|
3
3
|
pyproject.toml
|
4
4
|
setup.py
|
5
5
|
aek_auto_mlbuilder/__init__.py
|
6
|
+
aek_auto_mlbuilder/agglomerative.py
|
6
7
|
aek_auto_mlbuilder/base.py
|
8
|
+
aek_auto_mlbuilder/dbscan.py
|
7
9
|
aek_auto_mlbuilder/decision_tree.py
|
8
10
|
aek_auto_mlbuilder/kmeans.py
|
9
11
|
aek_auto_mlbuilder/knn.py
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
2
2
|
|
3
3
|
setup(
|
4
4
|
name="aek-auto-mlbuilder",
|
5
|
-
version="0.
|
5
|
+
version="0.10.0",
|
6
6
|
description="Automatic ML model builder in Python",
|
7
7
|
long_description=open("README.md", encoding="utf-8").read(),
|
8
8
|
long_description_content_type="text/markdown",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/linear_regression.py
RENAMED
File without changes
|
{aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder/logistic_regression.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/requires.txt
RENAMED
File without changes
|
{aek_auto_mlbuilder-0.8.2 → aek_auto_mlbuilder-0.10.0}/aek_auto_mlbuilder.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|