Sklearn 快速入门

作者: 不会停的蜗牛 | 来源:发表于2016-12-05 12:08 被阅读27047次

    学习资料:大家可以去莫烦的学习网站学到更多的知识。

    本文结构:

    • Sklearn 简介
    • 选择模型流程
    • 应用模型

    Sklearn 简介

    Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.

    Sklearn 包含了很多种机器学习的方式:

    • Classification 分类
    • Regression 回归
    • Clustering 非监督分类
    • Dimensionality reduction 数据降维
    • Model Selection 模型选择
    • Preprocessing 数据预处理

    选择模型流程

    学习 Sklearn 时,不要直接去用,先了解一下都有什么模型方法,然后选择适当的方法,来达到你的目标。

    Sklearn 官网提供了一个流程图,蓝色圆圈内是判断条件,绿色方框内是可以选择的算法:

    从 START 开始,首先看数据的样本是否 >50,小于则需要收集更多的数据。

    由图中,可以看到算法有四类,分类,回归,聚类,降维

    其中 分类和回归是监督式学习,即每个数据对应一个 label。
    聚类 是非监督式学习,即没有 label。
    另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。例如 20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。

    然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。
    当然还要考虑数据的大小,例如 100K 是一个阈值。

    可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD


    应用模型

    Sklearn 把所有机器学习的模式整合统一起来了,学会了一个模式就可以通吃其他不同类型的学习模式。

    例如,分类器,

    Sklearn 本身就有很多数据库,可以用来练习。
    我们用其中 Iris 的数据为例,这种花有四个属性,花瓣的长宽,茎的长宽,根据这些属性把花分为三类。

    我们要用 分类器 去把四种类型的花分开。

    今天用 KNN classifier,就是选择几个临近点,综合它们做个平均来作为预测值。

    使用模型的步骤:

    1. 导入模块
    2. 创建数据
    3. 建立模型-训练-预测

    <h4 id="pkg">1. 导入模块</h4>

    from __future__ import print_function
    from sklearn import datasets
    from sklearn.cross_validation import train_test_split
    from sklearn.neighbors import KNeighborsClassifier
    

    <h4 id="data">2. 创建数据</h4>

    加载 iris 的数据,把属性存在 X,类别标签存在 y

    iris = datasets.load_iris()
    iris_X = iris.data
    iris_y = iris.target
    

    观察一下数据集,X 有四个属性,y 有 0,1,2 三类:

    print(iris_X[:2, :])
    print(iris_y)
    
    """
    [[ 5.1  3.5  1.4  0.2]
     [ 4.9  3.   1.4  0.2]]
    [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
     2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
     2 2]
     """
    

    把数据集分为训练集和测试集,其中 test_size=0.3,即测试集占总数据的 30%:

    X_train, X_test, y_train, y_test = train_test_split(
        iris_X, iris_y, test_size=0.3)
    

    可以看到分开后的数据集,顺序也被打乱,这样更有利于学习模型:

    print(y_train)
    
    """
    [2 1 0 1 0 0 1 1 1 1 0 0 1 2 1 1 1 0 2 2 1 1 1 1 0 2 2 0 2 2 2 2 2 0 1 2 2
     2 2 2 2 0 1 2 2 1 1 1 0 0 1 2 0 1 0 1 0 1 2 2 0 1 2 2 2 1 1 1 1 2 2 2 1 0
     1 1 0 0 0 2 0 1 0 0 1 2 0 2 2 0 0 2 2 2 1 2 0 0 2 1 2 0 0 1 2]
     """
    

    <h4 id="model">3. 定义模型-训练模型-预测</h4>

    定义模块方式 KNeighborsClassifier()
    fit 来训练 training data,这一步就完成了训练的所有步骤,
    后面的 knn 就已经是训练好的模型,可以直接用来 predict 测试集的数据,
    对比用模型预测的值与真实的值,可以看到大概模拟出了数据,但是有误差,是不会完完全全预测正确的。

    knn = KNeighborsClassifier()
    knn.fit(X_train, y_train)
    print(knn.predict(X_test))
    print(y_test)
    
    """
    [2 0 0 1 2 2 0 0 0 1 2 2 1 1 2 1 2 1 0 0 0 2 1 2 0 0 0 0 1 0 2 0 0 2 1 0 1
     0 0 1 0 1 2 0 1]
    [2 0 0 1 2 1 0 0 0 1 2 2 1 1 2 1 2 1 0 0 0 2 1 2 0 0 0 0 1 0 2 0 0 2 1 0 1
     0 0 1 0 1 2 0 1]
     """
    

    历史技术博文链接汇总

    我是 不会停的蜗牛 Alice
    85后全职主妇
    喜欢人工智能,行动派
    创造力,思考力,学习力提升修炼进行中
    欢迎您的喜欢,关注和评论!

    相关文章

      网友评论

      • 辣椒光炒肉:LZ真是厉害!前天还看到一个新闻说德国有个主妇在产假期间从0到AI高手,想不到你更是先行者!
      • 有苦向瓜诉说:写得很好,关注了,请问你是一个人自学吗?
      • 夏大王2019:感谢分享~
      • UYJI:感谢知识分享ε≡٩(๑>₃<)۶ 一心向学
      • 8864db92a014:85后全职主妇 看成85后全职少妇了,o(* ̄︶ ̄*)o
      • SeaMonster:对着一行一行敲完,的确有了些感性的认识了

      本文标题:Sklearn 快速入门

      本文链接:https://www.haomeiwen.com/subject/grvkmttx.html