Skip to content

Yangruipis/simple_ml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

247 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Machine Learning

一个简单的机器学习算法实现

Build Status Coverage Status Codacy Badge

Join the chat at https://gitter.im/simple_ml/Lobby


快速开始

安装

环境和依赖库

  • python3.5及以上
  • windows or Linux
  • numpy (数组)
  • matplotlib (作图)
  • scipy (求解优化问题)
  • requests (用于在线数据集获取)
  • cvxopt (支持向量机中的二次规划问题)

强烈推荐Anaconda环境

pip安装

pip install simple_male

对,是simple_ma(chine)le(arning),简单男人,因为simple_ml已经在pypi上被人注册了喵

git安装

git clone https://github.com/Yangruipis/simple_ml.git
cd ./simple_ml
python setup.py install

使用

# 一个简单的例子,用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))
Out[1]: np.array([1,1])

它能做什么

最最最最主要的任务

如果你同时满足:

  1. 机器学习入门阶段
  2. python 进阶阶段

那么恭喜你,这个项目可以给你提供如下帮助:

  • 阅读源码, 不像sklearn过于复杂难读的源码,这个轻量级的项目非常易读,并且我尽可能的增加了注释,提高代码的可读性
  • 学习知识,该项目梳理基本机器学习算法的种类和流程,工程实现上的大致步骤,中间出现的一些细节问题以及如何解决
  • 实时交流,我在 gitter 上建立了 gitchat 聊天室,欢迎大家就项目本身的具体问题,或者其他任何相关事项进行讨论,欢迎大家积极提 issues,我会第一时间回复

作为一个机器学习项目的任务

1. 数据和特征

1.1 数据集获取

simple_ml提供了大量经典的机器学习数据集的获取接口DataCollector,数据集来自UCI

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数据集为例(见./simple_ml/examples),分类效果和方法名称见图1。

图 1. 二分类效果图

2.2 多分类

simple_ml暂时只提供了一些多分类算法,见下图,同样是wine数据集,后面作者将会进行补充。

图 2. 多分类效果图

2.3 回归

simple_ml提供了回归方法如下

  • MultiRegression
  • CART
  • GBDT
  • SVR

2.4 聚类

simple_ml提供了K-means聚类层次聚类DBSCAN密度聚类三种聚类方法

注:以上所有图均为simple_ml直出(需要matplotlib)

3. 效果评价

包括了分类和回归作图、以及针对二分类、多分类、回归问题的评价指标计算,包括Precision, Recall等等

为什么会有这个项目 & 致谢

作者就读于上海某商科院校经济学,从大二开始接触数据挖掘,以及编程相关知识(stata->R->C#->python),对数据和编程非常感兴趣,基本上一路走过来全靠自学。作者希望可以用心做好一个项目,记录自己学习的轨迹,尤其是即将毕业之际。

在接下来的一年找工作的同时,作者将尽全力维护该项目,不断更新和修改,热烈欢迎任何贡献和讨论。

致谢:

  • 首先感谢我自己,一路走来的不易如人饮水
  • 其次感谢我的好友何燕杰程刚对我在学习和工作上的帮助
  • 最后感谢所有相关书籍、博客的作者,尤其感谢刘建平Pinard一丝不苟的机器学习博客,无论是知识还是态度,都令人肃然起敬

更新日志

  • 2018-04-20
    • 加入BP神经网络算法simple.neural_network和相关的example
    • 更新github pages
  • 2018-04-23
    • 加入Stacking model
    • 更新每个模型的new()函数
    • 重写BaseModelpredictscore抽象方法,以检查测试集是否满足要求
    • fix SuperPCA bugs
  • 2018-04-24
    • 加入类: Multi2binary,继承该类的BaseClassifier可以将多分类问题转为二分类问题
    • 添加SVM, Logistic,NeuralNetwork, AdaBoost 的继承关系和多分类方法
    • 增加相关的多分类例子,以及帮助文档
    • 重写特征类型推断函数,根据多种线索进行推断
  • 2018-04-26
    • 重写自动化模块auto,实现BaseAuto抽象类以及数据自动预处理的AutoDataHandle
    • 加入网格搜索方法
    • 加入宫颈癌数据的完整处理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
  • 2018-08-01
    • 添加DBSCAN聚类方法
    • 添加DBSCAN相关例子

TODO list:

  • test cases
  • an efficient bp network
  • more optimal methods
  • train test split func in helper
  • other feature select method to add
  • lasso and Ridge
  • add GBDT feature select
  • update Readme
  • setup.py
  • examples
  • get more datasets
  • regression plot
  • more regression method
  • kd_tree
  • Support Machine Regression
  • more metrics
  • github pages, especially the class map
  • stacking
  • 二分类转多分类器
  • recognize nan and inf
  • check x before predict, check x and y before score
  • "self.new()" function in each model
  • 支持向量相关算法测试和文档撰写
  • pypi发布
  • 移除logistic.py 中对scipy的依赖,自己写fmin(),以及实现底层优化算法
  • LSTM
  • DBSCAN cluster

TODO List AUTO MODEL

  • auto data handle
  • auto feature select
  • auto param select
  • auto model select

About

A simple machine learning algorithm implementation

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages