Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1648565
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友

分类: Python/Ruby

2019-08-23 14:40:48

   sklearn是一个机器学习的python库,里面包含很多经典的算法,可以很方便的选择对应的算法对数据进行训练,很方便的得出各种训练的参数,并使用模型对分类进行预测。
    总的来说一般机器学习分如下步骤   获取数据——》数据预处理——》训练模型——》模型评估——》预测
    鸢尾花识别是一个经典的机器学习分类问题,它的数据样本中包括了4个特征变量,1个类别变量,样本总数为150。首先对数据进行分类,一部分用来训练模型,另一部分用来进行评估,当评估结果达到满意度时将对未知分类进行预测。
    一.数据获取
    sklearn内置很多经典案例的数据,也可以自建数据,数据导入都以矩阵形式输入。

点击(此处)折叠或打开

  1. #导入数据集合,里面包含相当丰富的经典案例数据集
  2. from sklearn import datasets
  3. iris_data = datasets.load_iris()  # 导入鸢尾花识别数据
  4. X_train = iris_data.data          # 特征集合
  5. y_train = iris_data.target        # 分类结果集   

   二.数据预处理
   这部主要目的是要把数据分为测试集和训练集,理论上训练集数据越多,得出的模型越准确,但是也需要大量的测试数据进行验证,这里按照 3:7 比例
   

点击(此处)折叠或打开

  1. from sklearn.model_selection import train_test_split #导入分类工具
  2. #测试集占比0.3,分别得出训练集的数据和测试集的数据
  3. X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3)

   三.训练模型
   使用训练集数据进行模型训练,这里的难点个人看来是选择合适的算法,这是要基于深厚的数学功底,各种算法的使用请移步官网(),本人数学都还给老师了,近期在充电。
   

点击(此处)折叠或打开

  1. # 邻近点方式训练数据
  2. from sklearn.neighbors import KNeighborsClassifier
  3. # 引入训练方法
  4. knn = KNeighborsClassifier()
  5. # 使用训练数据集训练,第一个参数是特征值,第二个是分类值
  6. knn.fit(X_train,y_train)
        # 查看模型的相关信息
        knn.get_params()

    四. 模型评估
    当模型已经训练出来了就要对模型进行评估是否达到了要求,这时候就要使用测试数据进行评估
    

点击(此处)折叠或打开

  1. # 进行评估, 一般得出的结果是一个百分比,代笔预测的准确度,越接近1表示准确度越高,如果准确度很低或许考虑换 算法或者更换训练数据
  2. score = knn.score(X_test,y_test)
    五.预测
    前面做了那么多最终都是为了这一步,收获果实的一步。当第四步得出的评估满足要求时就可以使用这个模型对新的样本进行预测。
   

点击(此处)折叠或打开

  1. # 这里使用测试集进行数据预测,也可以自己定义数据
  2. y_test_ = knn.predict(X_test)
       y_test_就是使用模型预测得出的结果集
       可以跟真实测试集结果进行比对 计算出损失度
       from sklearn.metrics import log_loss
       loss = log_loss(y_test,y_test_)  # 第一个真实数据,第二个为模型预测数据

     这是一个简单的机器学习建模和使用过程,传统的机器学习算法模型都是基于概率论,预测的结果也是基于最大概率,在现实世界中往往比较客观,对于数据集要求比较高,对于算法理解也很高,所以在现实世界中准确率不高。
    当前人工智能中比较或的一个分支---深度学习 通过训练能提供比较准确的模型,深度学习是模拟人的神经网络传输,使用多层神经网络进行建模,将特征进行更细化,本人正在初入此门课程,也在学习这方面的资料,学习数学算法,本文是个人学习的一个笔记。
    很多内容引用自https://www.cnblogs.com/wj-1314/p/10179741.html





   
阅读(2970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~