In [ ]:
import pandas as pd
import numpy as np
import urllib.request
import urllib.parse
import json
from sklearn.datasets import load_diabetes,load_iris
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error as mse, r2_score
from sklearn2pmml import PMMLPipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn2pmml import sklearn2pmml
diabetes = load_diabetes()
model = LinearRegression()
model.fit(diabetes.data, diabetes.target)
expected = diabetes.target
predicted = model.predict(diabetes.data)
print("Mean Squared Error: %0.3f" % mse(expected, predicted))
print("Coefficient of Determination: %0.3f" % r2_score(expected, predicted))
iris = load_iris()
iris_df = pd.DataFrame(iris.data,columns=iris.feature_names)
iris_df['Species'] = iris.target
iris_pipeline = PMMLPipeline([
("classifier", DecisionTreeClassifier())
])
iris_pipeline.fit(iris_df[iris_df.columns.difference(["Species"])], iris_df["Species"])
sklearn2pmml(iris_pipeline, "DecisionTreeIris.pmml", with_repr = True)
pmmlBytes = bytearray(open('DecisionTreeIris.pmml', 'rb').read())
In [ ]:
url = 'prediction-pmml-aws.demo.pipeline.io'
In [ ]:
update_url = "http://%s/update-pmml/pmml_iris" % url
update_headers = {}
update_headers["Content-type"] = "application/xml"
req = urllib.request.Request(update_url,headers=update_headers,data=pmmlBytes)
resp = urllib.request.urlopen(req)
print(resp.status)
In [ ]:
evaluate_url = 'http://%s/evaluate-pmml/pmml_iris' % url
evaluate_headers = {}
evaluate_headers['Content-type'] = 'application/json'
test = iris_df
input_params = test.ix[0,:-1].to_json()
encoded_input_params = input_params.encode('utf-8')
req = urllib.request.Request(evaluate_url, headers=evaluate_headers,data=encoded_input_params)
resp = urllib.request.urlopen(req)
print(resp.read())
In [ ]: