Metadata-Version: 1.1
Name: simple_male
Version: 0.1.2
Summary: A machine learning algorithm implementation
Home-page: https://yangruipis.github.io/simple_ml/
Author: Ray Yang
Author-email: yangruipis@163.com
License: MIT
Description-Content-Type: text/markdown
Description: 
        <center>
        <img src="./docs/imgs/logo2.png" width="100%" height="100%" />
        </center>
        
        
        Simple Machine Learning
        
        一个简单的机器学习算法实现
        
        
        ![](https://img.shields.io/pypi/v/simple_male.svg) [![Build Status](https://travis-ci.org/Yangruipis/simple_ml.svg?branch=master)](https://travis-ci.org/Yangruipis/simple_ml) [![Coverage Status](https://coveralls.io/repos/github/Yangruipis/simple_ml/badge.svg?branch=master)](https://coveralls.io/github/Yangruipis/simple_ml?branch=master)
        [![Codacy Badge](https://api.codacy.com/project/badge/Grade/00c639db60364d12b0102456552fe806)](https://www.codacy.com/app/Yangruipis/simpleML?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Yangruipis/simpleML&amp;utm_campaign=Badge_Grade)
        
        ![](https://img.shields.io/npm/l/express.svg) [![Join the chat at https://gitter.im/simple_ml/Lobby](https://badges.gitter.im/simple_ml/Lobby.svg)](https://gitter.im/simple_ml/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
        
        ---
        
        
        # 快速开始
        
        ## 安装
        
        **环境和依赖库**
        - python3.5及以上
        - windows or Linux
        - numpy      (数组)
        - matplotlib (作图)
        - scipy      (求解优化问题)
        - requests   (用于在线数据集获取)
        - cvxopt    (支持向量机中的二次规划问题)
        
        `强烈推荐Anaconda环境`
        
        **pip安装**
        
        ```bash
        pip install simple_male
        ```
        对，是`simple_ma(chine)le(arning)`，简单男人，因为`simple_ml`已经在pypi上被人注册了喵
        
        **git安装**
        
        ```bash
        git clone https://github.com/Yangruipis/simple_ml.git
        cd ./simple_ml
        python setup.py install
        ```
        
        ## 使用
        
        ```python
        # 一个简单的例子，用CART树进行二分类
        from simple_ml.tree import CART
        import numpy as np
        
        X = np.array([[1,1.1],
                      [1,2.0],
                      [0,3.0],
                      [0,2.2]])
        y = np.array([1,1,0,0])
        cart = CART(min_samples_leaf=1)
        cart.fit(X, y)
        x_test = np.array([[1,2],[3,4]])
        print(cart.predict(x_test))
        ```
        ```python
        Out[1]: np.array([1,1])
        ```
        
        - `./simple_ml/examples`文件夹中提供了大多数方法的使用范例
        - 更详细的用法见帮助文档： [https://yangruipis.github.io/simple_ml/](https://yangruipis.github.io/simple_ml/)
        
        # 它能做什么
        
        ## 最最最最主要的任务
        
        如果你同时满足：
        1. **机器学习入门阶段**
        2. **python 进阶阶段**
        
        那么恭喜你，这个项目可以给你提供如下帮助：
        
        - **阅读源码**， 不像sklearn过于复杂难读的源码，这个轻量级的项目非常易读，并且我尽可能的增加了注释，提高代码的可读性
        - **学习知识**，该项目梳理基本机器学习算法的种类和流程，工程实现上的大致步骤，中间出现的一些细节问题以及如何解决
        - **实时交流**，我在 gitter 上建立了 [gitchat 聊天室](https://gitter.im/simple_ml/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)，欢迎大家就项目本身的具体问题，或者其他任何相关事项进行讨论，欢迎大家积极提 issues，我会第一时间回复
        
        
        ## 作为一个机器学习项目的任务
        
        ### 1. 数据和特征
        
        #### 1.1 数据集获取
        
        `simple_ml`提供了大量经典的机器学习数据集的获取接口`DataCollector`，数据集来自[UCI](http://archive.ics.uci.edu/ml/index.php)。
        
        #### 1.2 数据预处理
        
        `simple_ml` 提供了常用的数据预处理方法，包括了编码、独热编码、缺失值处理、异常值处理以及随机数据集划分等。
        
        同时，`simple_ml` 提供了`PCA`降维方法以及针对高维数据的`SuperPCA`降维方法。
        
        #### 1.3 特征选择
        `simple_ml`提供了Filter和Embedded两种特征选择方法，包括了：
        1. 方差法
        2. 相关系数法
        3. 卡方检验法
        4. L1正则
        5. GBDT特征选择
        
        ### 2. 模型
        
        #### 2.1 二分类
        `simple_ml`提供了非常多的二分类方法，以[wine数据集](http://archive.ics.uci.edu/ml/datasets/Wine)为例（见`./simple_ml/examples`），分类效果和方法名称见图1。
        
        <center>
        <img src="./docs/imgs/wine.jpg"  />
        
        图 1. 二分类效果图
        </center>
        
        #### 2.2 多分类
        
        `simple_ml`暂时只提供了一些多分类算法，见下图，同样是[wine数据集](http://archive.ics.uci.edu/ml/datasets/Wine)，后面作者将会进行补充。
        
        <center>
        <img src="./docs/imgs/wine2.jpg" />
        
        图 2. 多分类效果图
        </center>
        
        
        #### 2.3 回归
        
        `simple_ml`提供了回归方法如下
        - `MultiRegression`
        - `CART`
        - `GBDT`
        - `SVR`
        
        #### 2.4 聚类
        
        `simple_ml`提供了`K-means聚类`和`层次聚类`两种聚类方法
        
        `注:`以上所有图均为simple_ml直出（需要matplotlib）
        
        ### 3. 效果评价
        
        包括了分类和回归作图、以及针对二分类、多分类、回归问题的评价指标计算，包括Precision, Recall等等
        
        # 为什么会有这个项目 & 致谢
        
        作者就读于上海某商科院校经济学，从大二开始接触数据挖掘，以及编程相关知识（stata->R->C#->python)，对数据和编程非常感兴趣，基本上一路走过来全靠自学。作者希望可以用心做好一个项目，记录自己学习的轨迹，尤其是即将毕业之际。
        
        在接下来的一年找工作的同时，作者将尽全力维护该项目，不断更新和修改，热烈欢迎任何贡献和讨论。
        
        **致谢：**
        - 首先感谢我自己，一路走来的不易如人饮水
        - 其次感谢我的好友[何燕杰](https://github.com/YanjieHe)和[程刚](https://github.com/chenggang0815)对我在学习和工作上的帮助
        - 最后感谢所有相关书籍、博客的作者，尤其感谢[刘建平Pinard](https://www.cnblogs.com/pinard/)一丝不苟的机器学习博客，无论是知识还是态度，都令人肃然起敬
        
        
        # 更新日志
        
        - 2018-04-20
          - 加入BP神经网络算法`simple.neural_network`和相关的example
          - 更新github pages
        - 2018-04-23
          - 加入`Stacking model`
          - 更新每个模型的new()函数
          - 重写`BaseModel`的`predict`和`score`抽象方法，以检查测试集是否满足要求
          - fix SuperPCA bugs
        - 2018-04-24
          - 加入类：
            `Multi2binary`，继承该类的`BaseClassifier`可以将多分类问题转为二分类问题
          - 添加SVM， Logistic，NeuralNetwork, AdaBoost 的继承关系和多分类方法
          - 增加相关的多分类例子，以及帮助文档
          - 重写特征类型推断函数，根据多种线索进行推断
        - 2018-04-26
          - 重写自动化模块`auto`，实现`BaseAuto`抽象类以及数据自动预处理的`AutoDataHandle`类
          - 加入网格搜索方法
          - 加入[宫颈癌数据](https://archive.ics.uci.edu/ml/datasets/Cervical+cancer+%28Risk+Factors%29)的完整处理Example
          - 加入`helper`模块，用于格式化输出
          - 加入`data_handle`模块的缺失值统计方法`nan_summary`
        - 2018-04-27
          - 加入自动特征选择类 `AutoFeatureHandle` ，以及对应的宫颈癌Example
        - 2018-06-11
          - 加入回归作图方法
        - 2018-06-12
          - 加入多元回归方法`MultiRegression`并测试
          - `MultiRegression`中加入加权回归方法
        - 2018-06-13
          - 重写支持向量机`SVM`，调用优化库进行求解，而不是手写SMO
          - 加入支持向量回归`SVR`
          - 整个支持向量相关算法,包括了`Kernel`类, `BaseSupportVector`类以及`SVM`,`SVR`
        - 2018-06-20
          - 添加相关测试用例
        - 2018-06-23
          - 添加`optimal`模块，包括了爬山法和模拟退火法进行最小值求解
          - pypi发布，版本 `0.1.2`
        
        # TODO list:
        
        - [ ] test cases
        - [x] an efficient bp network
        - [ ] more optimal methods
        - [x] train test split func in helper
        - [x] other feature select method to add
        - [x] lasso and Ridge
        - [x] add GBDT feature select
        - [x] update Readme
        - [x] setup.py
        - [x] examples
        - [x] get more datasets
        - [x] regression plot
        - [x] more regression method
        - [ ] kd_tree
        - [x] Support Machine Regression
        - [x] more metrics
        - [x] github pages, especially the class map
        - [x] stacking
        - [x] 二分类转多分类器
        - [x] recognize nan and inf
        - [x] check x before predict, check x and y before score
        - [x] "self.new()" function in each model
        - [x] 支持向量相关算法测试和文档撰写
        - [ ] pypi发布
        - [ ] 移除logistic.py 中对scipy的依赖,自己写fmin(),以及实现底层优化算法
        - [ ] LSTM
        
        # TODO List AUTO MODEL
        
        - [x] auto data handle
        - [x] auto feature select
        - [ ] auto param select
        - [ ] auto model select
        
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
