Python实现机器学习依赖于两个类库——SciPy和scikit-learn

一)SciPy

SciPy是数学运算的基本类库,在机器学习的过程中,主要运用NumPy、Matplotlib和Pandas三个类库。具体来说,NumPy是用来准备数据的工具,Matplotlib则用来创建图表和实现可视化,Pandas用来导入/展示/清洗/转换数据。

二)scikit-learn

scikit-learn依赖于SciPy及其相关类库来运行,其基本功能是:分类、回归、聚类、降维、模型选择和数据预处理。

但scikit-learn本身不支持深度学习和GPU加速。

可用于商业开发。且该类库非常保守,不添加机器学习以外的领域、不采用未经广泛验证的算法。

三)例子

用鸢尾花数据进行一个小项目演示机器学习的简单过程。

  1. #导入类库
  2. from pandas import read_csv
  3. from pandas.plotting import scatter_matrix
  4. from matplotlib import pyplot
  5. from sklearn.model_selection import train_test_split
  6. from sklearn.model_selection import KFold
  7. from sklearn.model_selection import cross_val_score
  8. from sklearn.metrics import classification_report
  9. from sklearn.metrics import confusion_matrix
  10. from sklearn.metrics import accuracy_score
  11. from sklearn.linear_model import LogisticRegression
  12. from sklearn.tree import DecisionTreeClassifier
  13. from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
  14. from sklearn.neighbors import KNeighborsClassifier
  15. from sklearn.naive_bayes import GaussianNB
  16. from sklearn.svm import SVC
  17. #导入数据
  18. filename = 'D:/data/iris.data.csv'
  19. names = ['separ-length','separ-width','petal-length','petal-width','class']
  20. dataset = read_csv(filename,names=names)
  21. #数据概述
  22. #数据维度
  23. print('行 %s, 列 %s' % dataset.shape)
  24. #前十行
  25. print(dataset.head(10))
  26. #统计数据
  27. print(dataset.describe())
  28. #数据分布
  29. print(dataset.groupby('class').size())
  30. #单变量图表
  31. dataset.plot(kind='box',subplots=True,layout=(2,2),sharex=False,sharey=False)
  32. pyplot.show()
  33. #直方图
  34. dataset.hist()
  35. pyplot.show()
  36. #散点矩阵
  37. scatter_matrix(dataset)
  38. pyplot.show()
  39. #算法评估
  40. #数据集分离
  41. array = dataset.values
  42. X = array[:, 0:4]
  43. Y = array[:, 4]
  44. validation_size = 0.2
  45. seed = 7
  46. X_train,X_validation,Y_train,Y_validation = \
  47. train_test_split(X, Y, test_size=validation_size,train_test_split(X, Y, test_size=validation_size,random_state=seed)
  48. #算法审查
  49. models={}
  50. models['LR']=LogisticRegression()
  51. models['LDA']=LinearDiscriminantAnalysis()
  52. models['KNN']=KNeighborsClassifier()
  53. models['CART']=DecisionTreeClassifier()
  54. models['NB']=GaussianNB()
  55. models['SVM']=SVC()
  56. #评估算法
  57. results=[]
  58. for key in models:
  59. kfold=KFold(n_splits=10,random_state=seed)
  60. cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring='accuracy')
  61. results.append(cv_results)
  62. print('%s: %f (%f)' %(key,cv_results.mean(),cv_results.std()))
  63. #实施预测
  64. svm=SVC()
  65. svm.fit(X=X_train,y=Y_train)
  66. predictions=svm.predict(X_validation)
  67. print(accuracy_score(Y_validation,predictions))
  68. print(confusion_matrix(Y_validation,predictions))
  69. print(classification_report(Y_validation,predictions))

以上是书上第三章的内容。

虽然好像实现了一整个流程,但许多细节和技巧都没有用上。

PY序的更多相关文章

  1. 海龟绘图turtle模块的使用

    在本章中,我们将编写简短的.简单的程序来创建漂亮的.复杂的视觉效果.为了做到这一点,我们可以使用海龟作图软件.在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动.这个海龟带着一 ...

  2. 53最大子序和.py

    题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 来源:https://leetcode-cn.com/problems/maximum-s ...

  3. C#_socket拆包_封包_模拟乱序包

    拆包一直是个硬伤呀,MLGB的,服务端各种乱数据,果断整理下 拆包思路:设计一个网络协议,一般都会分包,一个包就相当于一个逻辑上的命令. .如果我们用udp协议,省事的多,一次会收到一个完整的包,但U ...

  4. 根据 中序遍历 和 后序遍历构造树(Presentation)(C++)

    好不容易又到周五了,周末终于可以休息休息了.写这一篇随笔只是心血来潮,下午问了一位朋友PAT考的如何,顺便看一下他考的试题,里面有最后一道题,是关于给出中序遍历和后序遍历然后求一个层次遍历.等等,我找 ...

  5. django之 使用py文件操作django项目中的表

    要想在一个另外的py文件中操作django,可以使用如下的代码 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE",' ...

  6. Leetcode——53.最大子序和

    @author: ZZQ @software: PyCharm @file: leetcode53_最大子序和.py @time: 2018/11/26 12:39 要求:给定一个整数数组 nums ...

  7. day_10 py

    整理代码!!2018-7-24 20:53:49 直接复制了东西: 一些的demo 重点看蓝字部分! 就是一些简单的方法 基础的而已! 2018-4-22 15:50:26 继续py 还是py好玩感觉 ...

  8. Python实现二叉树的左中右序遍历

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/18 12:31 # @Author : baoshan # @Site ...

  9. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

随机推荐

  1. win10 安装mysql 8.0.12

    按照CSDN以及博客园的其他教程, 之前安装过几次都有或多或少的bug 主要安装步骤: 1.配置my.ini文件 2.管理员进入终端, 切换到.../bin目录下进行操作 3.指令操作: 1) mys ...

  2. JAVAEE 第六周

    JSF 生命周期: FacesServlet 充当用户和 JSF 应用程序之间的纽带.它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作. 1.   当JSF页面上的一个事 ...

  3. idea 工具中项目文件上有灰色的小X号去除方法

    初使用idea,在项目中发现类上有这样的灰色X号,启动项目后idea会报找不到这个类的错误,原因是它没有被编译, 解决方法 setting->Build->Compiler->Exc ...

  4. Tensorflow实战系列之二:

    还没想好,可能是人脸检测或者物体检测,或者加上动态检测~~

  5. python的切片

    切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Ja ...

  6. Shell test 命令

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于 ...

  7. 代码精简工具lombok

    Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get.set以及构造方法等的Java库 一.安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目 ...

  8. 使用Bash Bunny从被锁定的系统抓取登陆凭据

    在今年早些时候,FB就对Bash Bunny做了相关的报导.这款号称“世界上最先进的USB攻击工具”的Bash Bunny,是否真的像其所说的一样是款渗透神器呢?下面,我将通过实例演示如何利用Bash ...

  9. php:数组与json数据相互转换

    1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...

  10. sdn-准备-虚拟机迁移-vxlan

    知识基础: 虚拟机到虚拟机的迁移(Virtual-to-Virtual) V2V 迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件.虚拟机从一个物理机上的 VMM 迁移到另 ...