forked from MartynaSokolowska/Vibroacoustic-analysis
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclassification.py
More file actions
35 lines (23 loc) · 986 Bytes
/
classification.py
File metadata and controls
35 lines (23 loc) · 986 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import umap
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, silhouette_score, davies_bouldin_score
def reduce_dimensionality_UMAP(X, components):
reducer = umap.UMAP(n_neighbors=6, min_dist=0.1, spread=0.6, n_components=components, random_state=42)
return reducer.fit_transform(X)
def fit_classifier(X, y, k=3):
clf = KNeighborsClassifier(n_neighbors=k)
clf.fit(X, y)
return clf
def evaluate_classifier(clf, X_test, y_test):
preds = clf.predict(X_test)
print(classification_report(y_test, preds))
return preds
def calculate_silhouette_score(X, y):
return silhouette_score(X, y)
def calculate_davies_bouldin_score(X, y):
return davies_bouldin_score(X, y)
def print_scores(X, y):
silhouette = calculate_silhouette_score(X, y)
db_score = calculate_davies_bouldin_score(X, y)
print(f"Silhouette Score: {silhouette:.4f}")
print(f"Davies-Bouldin Score: {db_score:.4f}")