{
"info": {
"author": "Yinxiao Li",
"author_email": "liyinxiao1227@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3"
],
"description": "rankerNN2pmml\n==========\n\nPython library for converting pairwise Learning-To-Rank Neural Network models (RankNet NN, LambdaRank NN) into pmml.\n\n## Supported model structure\n\nIt supports pairwise Learning-To-Rank (LTR) algorithms such as Ranknet and LambdaRank, where the underlying model (hidden layers) is a neural network (NN) model. \n\n## Installation\n```\npip install rankerNN2pmml\n```\n\n## Example\n\nExample on a RankNet model.\n\n```python\nfrom keras.layers import Activation, Dense, Input, Subtract\nfrom keras.models import Model\nimport random\nimport numpy as np\nimport pandas as pd\nfrom sklearn.preprocessing import StandardScaler, MinMaxScaler\nfrom rankerNN2pmml import rankerNN2pmml\n\n# generate dummy data.\nINPUT_DIM = 3\nX1 = 2 * np.random.uniform(size=(50, INPUT_DIM))\nX2 = np.random.uniform(size=(50, INPUT_DIM))\nY = [random.randint(0,1) for _ in range(50)]\n\n# data transformation\nmms = MinMaxScaler()\nmms.fit(np.concatenate((X1, X2), axis=0))\nX1 = mms.transform(X1)\nX2 = mms.transform(X2)\n\ndef RankNet_model(input_shape):\n # Neural network structure\n h1 = Dense(4, activation=\"relu\", name='Relu_layer1')\n h2 = Dense(2, activation='relu', name='Relu_layer2')\n h3 = Dense(1, activation='linear', name='Identity_layer')\n # document 1 score\n input1 = Input(shape=(input_shape,), name='Input_layer1')\n x1 = h1(input1)\n x1 = h2(x1)\n x1 = h3(x1)\n # document 2 score\n input2 = Input(shape=(input_shape,), name='Input_layer2')\n x2 = h1(input2)\n x2 = h2(x2)\n x2 = h3(x2)\n # Subtract layer\n subtracted = Subtract(name='Subtract_layer')([x1, x2])\n # sigmoid\n out = Activation('sigmoid', name='Activation_layer')(subtracted)\n # build model\n model = Model(inputs=[input1, input2], outputs=out)\n return model\n\n# build model\nmodel = RankNet_model(INPUT_DIM)\nmodel.compile(optimizer=\"adam\", loss=\"binary_crossentropy\")\n# train model\nmodel.fit([X1, X2], Y, batch_size=10, epochs=5, verbose=1)\n\nparams = {\n 'feature_names': ['Feature1', 'Feature2', 'Feature3'],\n 'target_name': 'score'\n}\nrankerNN2pmml(estimator=model, transformer=mms, file='model.pmml', **params)\n```\n\n## Params explained\n* **estimator**: Keras model to be exported as PMML (see supported model structure above).\n* **transformer**: if provided then scaling is applied to data fields.\n* **file**: name of the file where PMML will be exported.\n* **feature_names**: when provided and have same shape as input layer, features will have custom names, otherwise generic names (x0,..., xn-1) will be used.\n* **target_name**: when provided target variable will have custom name, otherwise generic name **score** will be used.\n\n## What is supported?\n* Models (estimators)\n * keras.models.Model (see supported model structure above)\n* Activation functions\n * tanh\n * logistic (sigmoid)\n * identity\n * rectifier (Relu)\n* Transformers\n * sklearn.preprocessing.StandardScaler\n * sklearn.preprocessing.MinMaxScaler\n\n\n\n\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/liyinxiao/rankerNN2pmml",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "rankerNN2pmml",
"package_url": "https://pypi.org/project/rankerNN2pmml/",
"platform": "",
"project_url": "https://pypi.org/project/rankerNN2pmml/",
"project_urls": {
"Homepage": "https://github.com/liyinxiao/rankerNN2pmml"
},
"release_url": "https://pypi.org/project/rankerNN2pmml/0.1.2/",
"requires_dist": null,
"requires_python": "",
"summary": "Exporter of pairwise ranker with Neural Nets as underlying model into PMML.",
"version": "0.1.2"
},
"last_serial": 5615877,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "e0e667de523604965c0ab79671c8e165",
"sha256": "9072a65d8c3eafa1f36629ad4cf7dfbbb179e91f6d2b4c05efd44ed8b9bc13a7"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e0e667de523604965c0ab79671c8e165",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6139,
"upload_time": "2019-07-31T21:22:20",
"url": "https://files.pythonhosted.org/packages/26/32/b0e3b61de183c2ff6646baad168d75b10494a4fb86e5234739c8d5b143cd/rankerNN2pmml-0.1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "93cbd5f6f5313bb220a2eb71d687374a",
"sha256": "0a14c416db0f142b64e7dc68beff01b623ad9c5c898bf2e0c3e34c696d277100"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "93cbd5f6f5313bb220a2eb71d687374a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5060,
"upload_time": "2019-07-31T21:22:23",
"url": "https://files.pythonhosted.org/packages/ab/1f/20ea8398e2982b4df2144cd264308066ac9717755b45bf148cfa4ba6505a/rankerNN2pmml-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "bd16cffdb3886ae949e2f463f4fdae32",
"sha256": "6383372f4acceafad8ef95515f0a9b837705d325d0cc749b7c673881f2a651d3"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bd16cffdb3886ae949e2f463f4fdae32",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6143,
"upload_time": "2019-07-31T21:41:07",
"url": "https://files.pythonhosted.org/packages/d6/85/13e35e82fe495b7f99927eb31d9bbe4b2fcb734bfe4a237ba8da88ffdeed/rankerNN2pmml-0.1.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "af07460eca73142e3bdde405082c17d1",
"sha256": "47a55bb7cfae73b9dee9eb8ad49cdb3851b3da3688fae3477c0ea7071d79c00e"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "af07460eca73142e3bdde405082c17d1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5064,
"upload_time": "2019-07-31T21:41:09",
"url": "https://files.pythonhosted.org/packages/89/20/18eaec98f5c01f06a869b33846b14032d485f9fa1e675a2cf8f5f1e710b2/rankerNN2pmml-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "6bbc1d677b3b80225c51ea13169fb5f2",
"sha256": "5436887af8134714f30b877ddda2dbcefe5bd775229bf5f7ba78536faac43903"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6bbc1d677b3b80225c51ea13169fb5f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6071,
"upload_time": "2019-07-31T22:21:56",
"url": "https://files.pythonhosted.org/packages/1b/bc/fe372b99f0baa363a090feec728fd616cba9f73cdd8b46ab569f6605e5dc/rankerNN2pmml-0.1.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "344b40e62aba77573d306c52f11480df",
"sha256": "b181288d99e8de3b754687c09765386e9bd7af592b5fdd2e9604a27eeac25bf4"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "344b40e62aba77573d306c52f11480df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4990,
"upload_time": "2019-07-31T22:21:57",
"url": "https://files.pythonhosted.org/packages/95/37/904185468d856e20f2370e0e84222a4653d728cd6ed8d63d5972dd0fa7a3/rankerNN2pmml-0.1.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6bbc1d677b3b80225c51ea13169fb5f2",
"sha256": "5436887af8134714f30b877ddda2dbcefe5bd775229bf5f7ba78536faac43903"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6bbc1d677b3b80225c51ea13169fb5f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6071,
"upload_time": "2019-07-31T22:21:56",
"url": "https://files.pythonhosted.org/packages/1b/bc/fe372b99f0baa363a090feec728fd616cba9f73cdd8b46ab569f6605e5dc/rankerNN2pmml-0.1.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "344b40e62aba77573d306c52f11480df",
"sha256": "b181288d99e8de3b754687c09765386e9bd7af592b5fdd2e9604a27eeac25bf4"
},
"downloads": -1,
"filename": "rankerNN2pmml-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "344b40e62aba77573d306c52f11480df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4990,
"upload_time": "2019-07-31T22:21:57",
"url": "https://files.pythonhosted.org/packages/95/37/904185468d856e20f2370e0e84222a4653d728cd6ed8d63d5972dd0fa7a3/rankerNN2pmml-0.1.2.tar.gz"
}
]
}