Add Acumos xApp Adapter
[ric-app/ml.git] / AcumosXappAdapter / iris_sklearn.py
diff --git a/AcumosXappAdapter/iris_sklearn.py b/AcumosXappAdapter/iris_sklearn.py
new file mode 100644 (file)
index 0000000..7fd70fb
--- /dev/null
@@ -0,0 +1,56 @@
+# ===============LICENSE_START=======================================================
+# Acumos Apache-2.0
+# ===================================================================================
+# Copyright (C) 2017-2018 AT&T Intellectual Property & Tech Mahindra. All rights reserved.
+# ===================================================================================
+# This Acumos software file is distributed by AT&T and Tech Mahindra
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ===============LICENSE_END=========================================================
+
+from acumos.session import AcumosSession
+from acumos.modeling import Model, List, create_dataframe
+
+import numpy as np
+import pandas as pd
+from sklearn.datasets import load_iris
+from sklearn.ensemble import RandomForestClassifier
+
+iris = load_iris()
+X = iris.data
+y = iris.target
+
+clf = RandomForestClassifier(random_state=0)
+clf.fit(X, y)
+
+# here, an appropriate NamedTuple type is inferred from a pandas DataFrame
+X_df = pd.DataFrame(X, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'])
+IrisDataFrame = create_dataframe('IrisDataFrame', X_df)
+
+# ==================================================================================
+# # or equivalently:
+#
+# IrisDataFrame = create_namedtuple('IrisDataFrame', [('sepal_length', List[float]),
+#                                                     ('sepal_width', List[float]),
+#                                                     ('petal_length', List[float]),
+#                                                     ('petal_width', List[float])])
+# ==================================================================================
+
+def classify_iris(df: IrisDataFrame) -> List[int]:
+    '''Returns an array of iris classifications'''
+    X = np.column_stack(df)
+    return clf.predict(X)
+
+model = Model(classify=classify_iris)
+
+session = AcumosSession()
+
+session.dump(model,'iris_sklearn','/Users/guy/Desktop')