redblue0216-cuber


Nameredblue0216-cuber JSON
Version 0.1 PyPI version JSON
download
home_pagehttps://github.com/redblue0216/Cuber
SummaryCuber is an ensemble learning frame tool.
upload_time2023-03-14 08:53:47
maintainer
docs_urlNone
authorshihua
requires_python>=3.9.12
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Cuber
![shields_version](static/shields_version.svg)  ![shields_license](static/shields_license.svg)   ![shields_author](static/shields_author.svg)  ![shiedls_python](static/shields_python.svg)

![cuber_avatar](static/Cuber_avatar.JPG)

## 介绍
+ cuber是一个集成学习框架,主要用于各种集成学习算法的开发,具有灵活动态可配置的特点。cuber主要由三大模块组成,控制引擎、计算引擎和调度引擎。控制引擎依托于networkx的有向无环图技术,需要以计算引擎和调度引擎为基础,运行时加载。计算引擎支持Ray,Dask;调度引擎支持Kahn算法。


## 安装
+ Cuber采用Python开发,得益于Python良好的社区环境,安装支持Pythonic风格的各种管理器。
```bash
$ pip install cuber-0.1-xxxxxxxxxxxx.whl
```



## 快速指南
+ cuber使用主要分为三大步,首先初始化cuber实例,加载计算引擎和调度引擎,获取cuber控制器实例;然后使用装饰器注册目标节点的函数;最后调用cuber控制器执行

+ 以下是cuber主程脚本代码示例:

```python

	### 载入程序包
	from cuber.interface import Cube
	import time


	### cuber实例创建
	cuber = Cube(cuber_runner='ray',
	             cuber_runner_address='ray://192.168.1.51:10001',
	             cuber_scheduler='kahn')


	### 创建cuber控制器
	cuber_controller = cuber.get_cuber_controller()


	### 注册目标函数到指定cuber控制器
	@cuber_controller.register(controller_obj=cuber_controller)
	def test_a():
	    time.sleep(10)
	    print(2)
	    return 'a'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_aa():
	    time.sleep(10)
	    print(2)
	    return 'aa'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_b():
	    time.sleep(10)
	    print(2)
	    return 'b'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_bb():
	    time.sleep(10)
	    print(2)
	    return 'bb'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_c():
	    time.sleep(10)
	    print(2)
	    return 'c'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_cc():
	    time.sleep(10)
	    print(2)
	    return 'cc'

	@cuber_controller.register(controller_obj=cuber_controller)
	def test_d():
	    time.sleep(10)
	    return 'd'


	### 注册目标函数依赖关系到指定cuber控制器
	test_a >> test_b >> test_c >> test_d
	test_aa >> test_b >> test_d
	test_bb >> test_c >> test_d
	test_cc >> test_d


	### 展示节点和边情况
	print('~~~~~~',cuber_controller.get_graph_obj())
	print('------',cuber_controller.show_nodes())
	print('======',cuber_controller.show_edges())


	### 使用二级统一API
	time_start = time.time()
	exec_result = cuber_controller.execute()
	time_end = time.time()
	print('============================== Parallel function running',time_end - time_start)


	### 串行函数运行
	time_start = time.time()
	test_a()
	test_aa()
	test_bb()
	test_cc()
	test_b()
	test_c()
	test_d()
	time_end = time.time()
	print('============================== Serial function operation',time_end - time_start)
```


## 设计
+ 大量使用元编程技术,提高代码灵活性、可读性和维护质量
+ 设计了控制引擎、计算引擎和调度引擎,实现灵活动态可扩展
+ 天然支持分布式
+ 三级API设计,使用方便,适应不同程度的使用人员
+ 技术列表
	+ __new__技术
	+ __init__技术
	+ __prepare__技术
	+ __call__技术
	+ type元类
	+ 描述符技术
	+ Mixin
	+ 装饰器技术
	+ namedtuple
	+ Networkx
	+ FSM-transitions
	+ 运算符重载
	+ __slots__技术
	+ Ray



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/redblue0216/Cuber",
    "name": "redblue0216-cuber",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9.12",
    "maintainer_email": "",
    "keywords": "",
    "author": "shihua",
    "author_email": "15021408795@163.com",
    "download_url": "https://files.pythonhosted.org/packages/7e/29/95026be60556e88bbd2f0809ce074346cc94c2389a911df869e4bcbdbc70/redblue0216-cuber-0.1.tar.gz",
    "platform": null,
    "description": "# Cuber\n![shields_version](static/shields_version.svg)  ![shields_license](static/shields_license.svg)   ![shields_author](static/shields_author.svg)  ![shiedls_python](static/shields_python.svg)\n\n![cuber_avatar](static/Cuber_avatar.JPG)\n\n## \u4ecb\u7ecd\n+ cuber\u662f\u4e00\u4e2a\u96c6\u6210\u5b66\u4e60\u6846\u67b6\uff0c\u4e3b\u8981\u7528\u4e8e\u5404\u79cd\u96c6\u6210\u5b66\u4e60\u7b97\u6cd5\u7684\u5f00\u53d1\uff0c\u5177\u6709\u7075\u6d3b\u52a8\u6001\u53ef\u914d\u7f6e\u7684\u7279\u70b9\u3002cuber\u4e3b\u8981\u7531\u4e09\u5927\u6a21\u5757\u7ec4\u6210\uff0c\u63a7\u5236\u5f15\u64ce\u3001\u8ba1\u7b97\u5f15\u64ce\u548c\u8c03\u5ea6\u5f15\u64ce\u3002\u63a7\u5236\u5f15\u64ce\u4f9d\u6258\u4e8enetworkx\u7684\u6709\u5411\u65e0\u73af\u56fe\u6280\u672f\uff0c\u9700\u8981\u4ee5\u8ba1\u7b97\u5f15\u64ce\u548c\u8c03\u5ea6\u5f15\u64ce\u4e3a\u57fa\u7840\uff0c\u8fd0\u884c\u65f6\u52a0\u8f7d\u3002\u8ba1\u7b97\u5f15\u64ce\u652f\u6301Ray,Dask\uff1b\u8c03\u5ea6\u5f15\u64ce\u652f\u6301Kahn\u7b97\u6cd5\u3002\n\n\n## \u5b89\u88c5\n+ Cuber\u91c7\u7528Python\u5f00\u53d1\uff0c\u5f97\u76ca\u4e8ePython\u826f\u597d\u7684\u793e\u533a\u73af\u5883\uff0c\u5b89\u88c5\u652f\u6301Pythonic\u98ce\u683c\u7684\u5404\u79cd\u7ba1\u7406\u5668\u3002\n```bash\n$ pip install cuber-0.1-xxxxxxxxxxxx.whl\n```\n\n\n\n## \u5feb\u901f\u6307\u5357\n+ cuber\u4f7f\u7528\u4e3b\u8981\u5206\u4e3a\u4e09\u5927\u6b65\uff0c\u9996\u5148\u521d\u59cb\u5316cuber\u5b9e\u4f8b\uff0c\u52a0\u8f7d\u8ba1\u7b97\u5f15\u64ce\u548c\u8c03\u5ea6\u5f15\u64ce\uff0c\u83b7\u53d6cuber\u63a7\u5236\u5668\u5b9e\u4f8b\uff1b\u7136\u540e\u4f7f\u7528\u88c5\u9970\u5668\u6ce8\u518c\u76ee\u6807\u8282\u70b9\u7684\u51fd\u6570\uff1b\u6700\u540e\u8c03\u7528cuber\u63a7\u5236\u5668\u6267\u884c\n\n+ \u4ee5\u4e0b\u662fcuber\u4e3b\u7a0b\u811a\u672c\u4ee3\u7801\u793a\u4f8b\uff1a\n\n```python\n\n\t### \u8f7d\u5165\u7a0b\u5e8f\u5305\n\tfrom cuber.interface import Cube\n\timport time\n\n\n\t### cuber\u5b9e\u4f8b\u521b\u5efa\n\tcuber = Cube(cuber_runner='ray',\n\t             cuber_runner_address='ray://192.168.1.51:10001',\n\t             cuber_scheduler='kahn')\n\n\n\t### \u521b\u5efacuber\u63a7\u5236\u5668\n\tcuber_controller = cuber.get_cuber_controller()\n\n\n\t### \u6ce8\u518c\u76ee\u6807\u51fd\u6570\u5230\u6307\u5b9acuber\u63a7\u5236\u5668\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_a():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'a'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_aa():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'aa'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_b():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'b'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_bb():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'bb'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_c():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'c'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_cc():\n\t    time.sleep(10)\n\t    print(2)\n\t    return 'cc'\n\n\t@cuber_controller.register(controller_obj=cuber_controller)\n\tdef test_d():\n\t    time.sleep(10)\n\t    return 'd'\n\n\n\t### \u6ce8\u518c\u76ee\u6807\u51fd\u6570\u4f9d\u8d56\u5173\u7cfb\u5230\u6307\u5b9acuber\u63a7\u5236\u5668\n\ttest_a >> test_b >> test_c >> test_d\n\ttest_aa >> test_b >> test_d\n\ttest_bb >> test_c >> test_d\n\ttest_cc >> test_d\n\n\n\t### \u5c55\u793a\u8282\u70b9\u548c\u8fb9\u60c5\u51b5\n\tprint('~~~~~~',cuber_controller.get_graph_obj())\n\tprint('------',cuber_controller.show_nodes())\n\tprint('======',cuber_controller.show_edges())\n\n\n\t### \u4f7f\u7528\u4e8c\u7ea7\u7edf\u4e00API\n\ttime_start = time.time()\n\texec_result = cuber_controller.execute()\n\ttime_end = time.time()\n\tprint('============================== Parallel function running',time_end - time_start)\n\n\n\t### \u4e32\u884c\u51fd\u6570\u8fd0\u884c\n\ttime_start = time.time()\n\ttest_a()\n\ttest_aa()\n\ttest_bb()\n\ttest_cc()\n\ttest_b()\n\ttest_c()\n\ttest_d()\n\ttime_end = time.time()\n\tprint('============================== Serial function operation',time_end - time_start)\n```\n\n\n## \u8bbe\u8ba1\n+ \u5927\u91cf\u4f7f\u7528\u5143\u7f16\u7a0b\u6280\u672f\uff0c\u63d0\u9ad8\u4ee3\u7801\u7075\u6d3b\u6027\u3001\u53ef\u8bfb\u6027\u548c\u7ef4\u62a4\u8d28\u91cf\n+ \u8bbe\u8ba1\u4e86\u63a7\u5236\u5f15\u64ce\u3001\u8ba1\u7b97\u5f15\u64ce\u548c\u8c03\u5ea6\u5f15\u64ce\uff0c\u5b9e\u73b0\u7075\u6d3b\u52a8\u6001\u53ef\u6269\u5c55\n+ \u5929\u7136\u652f\u6301\u5206\u5e03\u5f0f\n+ \u4e09\u7ea7API\u8bbe\u8ba1\uff0c\u4f7f\u7528\u65b9\u4fbf\uff0c\u9002\u5e94\u4e0d\u540c\u7a0b\u5ea6\u7684\u4f7f\u7528\u4eba\u5458\n+ \u6280\u672f\u5217\u8868\n\t+ __new__\u6280\u672f\n\t+ __init__\u6280\u672f\n\t+ __prepare__\u6280\u672f\n\t+ __call__\u6280\u672f\n\t+ type\u5143\u7c7b\n\t+ \u63cf\u8ff0\u7b26\u6280\u672f\n\t+ Mixin\n\t+ \u88c5\u9970\u5668\u6280\u672f\n\t+ namedtuple\n\t+ Networkx\n\t+ FSM-transitions\n\t+ \u8fd0\u7b97\u7b26\u91cd\u8f7d\n\t+ __slots__\u6280\u672f\n\t+ Ray\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Cuber is an ensemble learning frame tool.",
    "version": "0.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1fcdf0c23e1106eb283c3071182c4f72457b30430904fb4af9e16ca2b24207be",
                "md5": "b1198f735df5cde2e4909a728b45a69b",
                "sha256": "0e2fc0081fdd5a032dd81ec58955eeec99632a4243ce9db21d298ecb64e0825d"
            },
            "downloads": -1,
            "filename": "redblue0216_cuber-0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b1198f735df5cde2e4909a728b45a69b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9.12",
            "size": 28199,
            "upload_time": "2023-03-14T08:53:45",
            "upload_time_iso_8601": "2023-03-14T08:53:45.099650Z",
            "url": "https://files.pythonhosted.org/packages/1f/cd/f0c23e1106eb283c3071182c4f72457b30430904fb4af9e16ca2b24207be/redblue0216_cuber-0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e2995026be60556e88bbd2f0809ce074346cc94c2389a911df869e4bcbdbc70",
                "md5": "542d85c59627c28aa8708616200d3b66",
                "sha256": "7255095e95f38155b5d5fa18fac8f51b742301d9746ccb1d8d5ae23fad551449"
            },
            "downloads": -1,
            "filename": "redblue0216-cuber-0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "542d85c59627c28aa8708616200d3b66",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9.12",
            "size": 19819,
            "upload_time": "2023-03-14T08:53:47",
            "upload_time_iso_8601": "2023-03-14T08:53:47.311231Z",
            "url": "https://files.pythonhosted.org/packages/7e/29/95026be60556e88bbd2f0809ce074346cc94c2389a911df869e4bcbdbc70/redblue0216-cuber-0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-14 08:53:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "redblue0216",
    "github_project": "Cuber",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "redblue0216-cuber"
}
        
Elapsed time: 0.09871s