-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathsklearn_classifier.py
61 lines (53 loc) · 1.54 KB
/
sklearn_classifier.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# import asyncio
# from nodetool.dsl.graph import graph, run_graph
# from nodetool.dsl.lib.ml.sklearn import PredictNode
# from nodetool.dsl.lib.ml.sklearn.datasets import LoadIrisDataset
# from nodetool.dsl.lib.ml.sklearn.metrics import AccuracyNode
# from nodetool.dsl.lib.ml.sklearn.preprocessing import (
# StandardScalerNode,
# TransformNode,
# )
# from nodetool.dsl.lib.ml.sklearn.model_selection import TrainTestSplitNode
# from nodetool.dsl.lib.ml.sklearn.ensemble import RandomForestClassifierNode
# from nodetool.nodes.lib.ml.sklearn.ensemble import RandomForestCriterion
# # Create dataset
# dataset = LoadIrisDataset()
# # Split data
# split = TrainTestSplitNode(
# X=(dataset, "data"),
# y=(dataset, "target"),
# test_size=0.25,
# shuffle=True,
# )
# # Scale features
# scaler = StandardScalerNode(
# X=(split, "X_train"),
# with_mean=True,
# with_std=True,
# )
# # Transform test data
# transform = TransformNode(
# X=(split, "X_test"),
# model=(scaler, "model"),
# )
# # Train classifier
# clf = RandomForestClassifierNode(
# X_train=(scaler, "transformed"),
# y_train=(split, "y_train"),
# n_estimators=100,
# criterion=RandomForestCriterion.ENTROPY,
# random_state=32,
# )
# # Make predictions
# predictions = PredictNode(
# X=(transform, "transformed"),
# model=(clf, "model"),
# )
# # Calculate accuracy
# accuracy = AccuracyNode(
# y_true=(split, "y_test"),
# y_pred=(predictions, "output"),
# )
# # Create and run graph
# g = graph(accuracy)
# asyncio.run(run_graph(g))