Skip to content

Commit

Permalink
XGBoost exporter and unit tests are added to repository
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirmal-Neel committed Aug 29, 2018
1 parent 592e9bc commit acd675a
Show file tree
Hide file tree
Showing 6 changed files with 868 additions and 0 deletions.
Empty file added nyoka/nyoka/xgboost/__init__.py
Empty file.
Empty file.
131 changes: 131 additions & 0 deletions nyoka/nyoka/xgboost/tests/auto_test.csv
@@ -0,0 +1,131 @@
cylinders,displacement,horsepower,weight,acceleration,model year,origin
6,163.0,133.0,3410.0,15.8,78,2
4,113.0,95.0,2278.0,15.5,72,3
6,250.0,88.0,3139.0,14.5,71,1
8,262.0,110.0,3221.0,13.5,75,1
4,91.0,67.0,1965.0,15.0,82,3
4,97.0,78.0,1940.0,14.5,77,2
4,113.0,95.0,2228.0,14.0,71,3
4,140.0,92.0,2572.0,14.9,76,1
4,120.0,97.0,2506.0,14.5,72,3
4,140.0,88.0,2720.0,15.4,78,1
6,258.0,110.0,3632.0,18.0,74,1
8,351.0,138.0,3955.0,13.2,79,1
4,79.0,58.0,1755.0,16.9,81,3
8,400.0,150.0,3761.0,9.5,70,1
6,232.0,100.0,2901.0,16.0,74,1
4,107.0,86.0,2464.0,15.5,76,2
8,305.0,140.0,4215.0,13.0,76,1
8,390.0,190.0,3850.0,8.5,70,1
4,98.0,83.0,2219.0,16.5,74,2
4,108.0,75.0,2350.0,16.8,81,3
8,429.0,208.0,4633.0,11.0,72,1
6,225.0,105.0,3121.0,16.5,73,1
4,108.0,93.0,2391.0,15.5,74,3
6,225.0,105.0,3613.0,16.5,74,1
8,350.0,175.0,4100.0,13.0,73,1
8,400.0,190.0,4422.0,12.5,72,1
4,91.0,67.0,1850.0,13.8,80,3
8,302.0,129.0,3725.0,13.4,79,1
4,90.0,71.0,2223.0,16.5,75,2
6,225.0,105.0,3439.0,15.5,71,1
4,83.0,61.0,2003.0,19.0,74,3
8,318.0,150.0,4237.0,14.5,73,1
8,318.0,145.0,4140.0,13.7,77,1
4,121.0,115.0,2671.0,13.5,75,2
6,232.0,100.0,3288.0,15.5,71,1
6,145.0,76.0,3160.0,19.6,81,2
8,400.0,170.0,4668.0,11.5,75,1
4,140.0,72.0,2401.0,19.5,73,1
4,91.0,67.0,1995.0,16.2,82,3
4,98.0,68.0,2135.0,16.6,78,3
8,318.0,135.0,3830.0,15.2,79,1
4,114.0,91.0,2582.0,14.0,73,2
4,97.0,46.0,1835.0,20.5,70,2
8,318.0,150.0,4077.0,14.0,72,1
4,98.0,70.0,2120.0,15.5,80,1
4,119.0,97.0,2405.0,14.9,78,3
4,89.0,60.0,1968.0,18.8,80,3
4,140.0,90.0,2264.0,15.5,71,1
6,225.0,95.0,3264.0,16.0,75,1
4,78.0,52.0,1985.0,19.4,78,3
6,168.0,116.0,2900.0,12.6,81,3
4,144.0,96.0,2665.0,13.9,82,3
4,105.0,70.0,2200.0,13.2,79,1
4,121.0,112.0,2933.0,14.5,72,2
4,79.0,67.0,1950.0,19.0,74,3
4,134.0,90.0,2711.0,15.5,80,3
8,302.0,140.0,3449.0,10.5,70,1
6,173.0,115.0,2595.0,11.3,79,1
8,318.0,150.0,4457.0,13.5,74,1
4,140.0,88.0,2870.0,18.1,80,1
8,360.0,215.0,4615.0,14.0,70,1
4,156.0,105.0,2745.0,16.7,78,1
4,107.0,75.0,2205.0,14.5,82,3
4,97.0,78.0,2300.0,14.5,74,2
4,85.0,70.0,1990.0,17.0,76,3
8,383.0,180.0,4955.0,11.5,71,1
6,198.0,95.0,3102.0,16.5,74,1
6,200.0,95.0,3155.0,18.2,78,1
8,304.0,120.0,3962.0,13.9,76,1
8,400.0,167.0,4906.0,12.5,73,1
4,97.0,88.0,2100.0,16.5,72,3
6,250.0,88.0,3302.0,15.5,71,1
6,262.0,85.0,3015.0,17.0,82,1
8,350.0,165.0,4209.0,12.0,71,1
4,116.0,90.0,2123.0,14.0,71,2
8,318.0,140.0,4080.0,13.7,78,1
4,79.0,70.0,2074.0,19.5,71,2
4,97.0,67.0,1985.0,16.4,77,3
6,231.0,105.0,3380.0,15.8,78,1
3,70.0,97.0,2330.0,13.5,72,3
8,318.0,150.0,3777.0,12.5,73,1
8,340.0,160.0,3609.0,8.0,70,1
6,146.0,97.0,2815.0,14.5,77,3
8,350.0,180.0,3664.0,11.0,73,1
8,302.0,129.0,3169.0,12.0,75,1
4,140.0,75.0,2542.0,17.0,74,1
6,232.0,112.0,2835.0,14.7,82,1
4,151.0,90.0,2556.0,13.2,79,1
4,105.0,63.0,2125.0,14.7,82,1
4,122.0,88.0,2500.0,15.1,80,2
6,163.0,125.0,3140.0,13.6,78,2
4,120.0,74.0,2635.0,18.3,81,3
4,151.0,84.0,2635.0,16.4,81,1
4,121.0,98.0,2945.0,14.5,75,2
8,360.0,150.0,3940.0,13.0,79,1
4,98.0,76.0,2144.0,14.7,80,2
6,168.0,132.0,2910.0,11.4,80,3
4,107.0,90.0,2430.0,14.5,70,2
4,97.0,75.0,2155.0,16.4,76,3
8,400.0,230.0,4278.0,9.5,73,1
4,140.0,89.0,2755.0,15.8,77,1
4,85.0,65.0,1975.0,19.4,81,3
8,429.0,198.0,4341.0,10.0,70,1
4,97.0,54.0,2254.0,23.5,72,2
4,140.0,90.0,2408.0,19.5,72,1
4,140.0,86.0,2790.0,15.6,82,1
8,304.0,150.0,4257.0,15.5,74,1
4,151.0,90.0,2735.0,18.0,82,1
6,232.0,90.0,3210.0,17.2,78,1
4,85.0,52.0,2035.0,22.2,76,1
4,120.0,88.0,2160.0,14.5,82,3
4,151.0,90.0,3003.0,20.1,80,1
6,225.0,110.0,3620.0,18.7,78,1
6,231.0,110.0,3907.0,21.0,75,1
4,107.0,72.0,2290.0,17.0,80,3
8,360.0,175.0,3821.0,11.0,73,1
4,105.0,75.0,2230.0,14.5,78,1
4,111.0,80.0,2155.0,14.8,77,1
8,302.0,130.0,4295.0,14.9,77,1
4,91.0,69.0,2130.0,14.7,79,2
8,260.0,110.0,4060.0,19.0,77,1
8,304.0,150.0,3433.0,12.0,70,1
8,400.0,180.0,4220.0,11.1,77,1
8,351.0,153.0,4129.0,13.0,72,1
8,318.0,140.0,3735.0,13.2,78,1
4,97.0,67.0,2065.0,17.8,81,3
6,250.0,72.0,3158.0,19.5,75,1
8,307.0,130.0,3504.0,12.0,70,1
4,151.0,90.0,2950.0,17.3,82,1
8,304.0,150.0,3672.0,11.5,72,1
151 changes: 151 additions & 0 deletions nyoka/nyoka/xgboost/tests/iris.csv
@@ -0,0 +1,151 @@
sepal_length,sepal_width,petal_length,petal_width,species
5.1,3.5,1.4,0.2,setosa
4.9,3.0,1.4,0.2,setosa
4.7,3.2,1.3,0.2,setosa
4.6,3.1,1.5,0.2,setosa
5.0,3.6,1.4,0.2,setosa
5.4,3.9,1.7,0.4,setosa
4.6,3.4,1.4,0.3,setosa
5.0,3.4,1.5,0.2,setosa
4.4,2.9,1.4,0.2,setosa
4.9,3.1,1.5,0.1,setosa
5.4,3.7,1.5,0.2,setosa
4.8,3.4,1.6,0.2,setosa
4.8,3.0,1.4,0.1,setosa
4.3,3.0,1.1,0.1,setosa
5.8,4.0,1.2,0.2,setosa
5.7,4.4,1.5,0.4,setosa
5.4,3.9,1.3,0.4,setosa
5.1,3.5,1.4,0.3,setosa
5.7,3.8,1.7,0.3,setosa
5.1,3.8,1.5,0.3,setosa
5.4,3.4,1.7,0.2,setosa
5.1,3.7,1.5,0.4,setosa
4.6,3.6,1.0,0.2,setosa
5.1,3.3,1.7,0.5,setosa
4.8,3.4,1.9,0.2,setosa
5.0,3.0,1.6,0.2,setosa
5.0,3.4,1.6,0.4,setosa
5.2,3.5,1.5,0.2,setosa
5.2,3.4,1.4,0.2,setosa
4.7,3.2,1.6,0.2,setosa
4.8,3.1,1.6,0.2,setosa
5.4,3.4,1.5,0.4,setosa
5.2,4.1,1.5,0.1,setosa
5.5,4.2,1.4,0.2,setosa
4.9,3.1,1.5,0.2,setosa
5.0,3.2,1.2,0.2,setosa
5.5,3.5,1.3,0.2,setosa
4.9,3.6,1.4,0.1,setosa
4.4,3.0,1.3,0.2,setosa
5.1,3.4,1.5,0.2,setosa
5.0,3.5,1.3,0.3,setosa
4.5,2.3,1.3,0.3,setosa
4.4,3.2,1.3,0.2,setosa
5.0,3.5,1.6,0.6,setosa
5.1,3.8,1.9,0.4,setosa
4.8,3.0,1.4,0.3,setosa
5.1,3.8,1.6,0.2,setosa
4.6,3.2,1.4,0.2,setosa
5.3,3.7,1.5,0.2,setosa
5.0,3.3,1.4,0.2,setosa
7.0,3.2,4.7,1.4,versicolor
6.4,3.2,4.5,1.5,versicolor
6.9,3.1,4.9,1.5,versicolor
5.5,2.3,4.0,1.3,versicolor
6.5,2.8,4.6,1.5,versicolor
5.7,2.8,4.5,1.3,versicolor
6.3,3.3,4.7,1.6,versicolor
4.9,2.4,3.3,1.0,versicolor
6.6,2.9,4.6,1.3,versicolor
5.2,2.7,3.9,1.4,versicolor
5.0,2.0,3.5,1.0,versicolor
5.9,3.0,4.2,1.5,versicolor
6.0,2.2,4.0,1.0,versicolor
6.1,2.9,4.7,1.4,versicolor
5.6,2.9,3.6,1.3,versicolor
6.7,3.1,4.4,1.4,versicolor
5.6,3.0,4.5,1.5,versicolor
5.8,2.7,4.1,1.0,versicolor
6.2,2.2,4.5,1.5,versicolor
5.6,2.5,3.9,1.1,versicolor
5.9,3.2,4.8,1.8,versicolor
6.1,2.8,4.0,1.3,versicolor
6.3,2.5,4.9,1.5,versicolor
6.1,2.8,4.7,1.2,versicolor
6.4,2.9,4.3,1.3,versicolor
6.6,3.0,4.4,1.4,versicolor
6.8,2.8,4.8,1.4,versicolor
6.7,3.0,5.0,1.7,versicolor
6.0,2.9,4.5,1.5,versicolor
5.7,2.6,3.5,1.0,versicolor
5.5,2.4,3.8,1.1,versicolor
5.5,2.4,3.7,1.0,versicolor
5.8,2.7,3.9,1.2,versicolor
6.0,2.7,5.1,1.6,versicolor
5.4,3.0,4.5,1.5,versicolor
6.0,3.4,4.5,1.6,versicolor
6.7,3.1,4.7,1.5,versicolor
6.3,2.3,4.4,1.3,versicolor
5.6,3.0,4.1,1.3,versicolor
5.5,2.5,4.0,1.3,versicolor
5.5,2.6,4.4,1.2,versicolor
6.1,3.0,4.6,1.4,versicolor
5.8,2.6,4.0,1.2,versicolor
5.0,2.3,3.3,1.0,versicolor
5.6,2.7,4.2,1.3,versicolor
5.7,3.0,4.2,1.2,versicolor
5.7,2.9,4.2,1.3,versicolor
6.2,2.9,4.3,1.3,versicolor
5.1,2.5,3.0,1.1,versicolor
5.7,2.8,4.1,1.3,versicolor
6.3,3.3,6.0,2.5,virginica
5.8,2.7,5.1,1.9,virginica
7.1,3.0,5.9,2.1,virginica
6.3,2.9,5.6,1.8,virginica
6.5,3.0,5.8,2.2,virginica
7.6,3.0,6.6,2.1,virginica
4.9,2.5,4.5,1.7,virginica
7.3,2.9,6.3,1.8,virginica
6.7,2.5,5.8,1.8,virginica
7.2,3.6,6.1,2.5,virginica
6.5,3.2,5.1,2.0,virginica
6.4,2.7,5.3,1.9,virginica
6.8,3.0,5.5,2.1,virginica
5.7,2.5,5.0,2.0,virginica
5.8,2.8,5.1,2.4,virginica
6.4,3.2,5.3,2.3,virginica
6.5,3.0,5.5,1.8,virginica
7.7,3.8,6.7,2.2,virginica
7.7,2.6,6.9,2.3,virginica
6.0,2.2,5.0,1.5,virginica
6.9,3.2,5.7,2.3,virginica
5.6,2.8,4.9,2.0,virginica
7.7,2.8,6.7,2.0,virginica
6.3,2.7,4.9,1.8,virginica
6.7,3.3,5.7,2.1,virginica
7.2,3.2,6.0,1.8,virginica
6.2,2.8,4.8,1.8,virginica
6.1,3.0,4.9,1.8,virginica
6.4,2.8,5.6,2.1,virginica
7.2,3.0,5.8,1.6,virginica
7.4,2.8,6.1,1.9,virginica
7.9,3.8,6.4,2.0,virginica
6.4,2.8,5.6,2.2,virginica
6.3,2.8,5.1,1.5,virginica
6.1,2.6,5.6,1.4,virginica
7.7,3.0,6.1,2.3,virginica
6.3,3.4,5.6,2.4,virginica
6.4,3.1,5.5,1.8,virginica
6.0,3.0,4.8,1.8,virginica
6.9,3.1,5.4,2.1,virginica
6.7,3.1,5.6,2.4,virginica
6.9,3.1,5.1,2.3,virginica
5.8,2.7,5.1,1.9,virginica
6.8,3.2,5.9,2.3,virginica
6.7,3.3,5.7,2.5,virginica
6.7,3.0,5.2,2.3,virginica
6.3,2.5,5.0,1.9,virginica
6.5,3.0,5.2,2.0,virginica
6.2,3.4,5.4,2.3,virginica
5.9,3.0,5.1,1.8,virginica
71 changes: 71 additions & 0 deletions nyoka/nyoka/xgboost/tests/xgboost_Test.py
@@ -0,0 +1,71 @@
import unittest
from xgboost import XGBRegressor,XGBClassifier
from nyoka.nyoka import PMML43Ext as pml
import nyoka.nyoka.xgboost.xgboost_to_pmml as xgb
import pandas as pd
from sklearn.model_selection import train_test_split

class TestMethods(unittest.TestCase):

def test_XGBoost(self):
model=XGBClassifier()
sk_model=iris_dataset(model)
derived_col_names=['sepal_length','petal_length']
col_names=['sepal_length','petal_length']
target_name='species'
mining_imp_value=()
categoric_values=()

self.assertEqual(
len(xgb.get_segments_for_xgbc(sk_model,derived_col_names,col_names,target_name,mining_imp_value,categoric_values)),
4)
self.assertEqual(
xgb.get_segments_for_xgbc(sk_model,derived_col_names,col_names,target_name,mining_imp_value,categoric_values)[
3].get_id(),4)
self.assertEqual(
xgb.get_segments_for_xgbc(sk_model, derived_col_names, col_names, target_name, mining_imp_value,categoric_values)[
3].get_RegressionModel().get_RegressionTable()[0].get_intercept(), '0.0')



self.assertEqual(
xgb.mining_Field_For_First_Segment(col_names).__class__.__name__,
pml.MiningSchema().__class__.__name__)
self.assertEqual(
xgb.mining_Field_For_First_Segment(col_names).get_MiningField()[0].get_name(),
'sepal_length')
self.assertEqual(len(xgb.mining_Field_For_First_Segment(['a','b','d','e']).get_MiningField())
,4)


self.assertEqual(
type(xgb.generate_Segments_Equal_To_Estimators([],derived_col_names,col_names)),
type([]))


self.assertEqual(
xgb.add_segmentation(sk_model,[],[],pml.Output,1).__class__.__name__,
pml.Segment().__class__.__name__)
self.assertEqual(
xgb.add_segmentation(sk_model,[],[],pml.Output,1).get_MiningModel().__class__.__name__,
pml.MiningModel().__class__.__name__)
self.assertEqual(xgb.add_segmentation(sk_model, [], [], pml.Output, 1).get_id(),
2)

self.assertEqual(type(xgb.get_regrs_tabl(sk_model,col_names,'species',categoric_values)),type([]))



def iris_dataset(sk_model):
df = pd.read_csv('iris.csv')
feature_names = df.columns.drop('species')
feature_names = feature_names._data
target_name = 'species'
x_train, x_test, y_train, y_test = train_test_split(df[feature_names], df[target_name], test_size=0.33,
random_state=101)
sk_model=sk_model.fit(x_train,y_train)
return sk_model


if __name__=='__main__':
unittest.main(warnings='ignore')

0 comments on commit acd675a

Please sign in to comment.