PY序
Python实现机器学习依赖于两个类库——SciPy和scikit-learn
一)SciPy
SciPy是数学运算的基本类库,在机器学习的过程中,主要运用NumPy、Matplotlib和Pandas三个类库。具体来说,NumPy是用来准备数据的工具,Matplotlib则用来创建图表和实现可视化,Pandas用来导入/展示/清洗/转换数据。
二)scikit-learn
scikit-learn依赖于SciPy及其相关类库来运行,其基本功能是:分类、回归、聚类、降维、模型选择和数据预处理。
但scikit-learn本身不支持深度学习和GPU加速。
可用于商业开发。且该类库非常保守,不添加机器学习以外的领域、不采用未经广泛验证的算法。
三)例子
用鸢尾花数据进行一个小项目演示机器学习的简单过程。
- #导入类库
- from pandas import read_csv
- from pandas.plotting import scatter_matrix
- from matplotlib import pyplot
- from sklearn.model_selection import train_test_split
- from sklearn.model_selection import KFold
- from sklearn.model_selection import cross_val_score
- from sklearn.metrics import classification_report
- from sklearn.metrics import confusion_matrix
- from sklearn.metrics import accuracy_score
- from sklearn.linear_model import LogisticRegression
- from sklearn.tree import DecisionTreeClassifier
- from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
- from sklearn.neighbors import KNeighborsClassifier
- from sklearn.naive_bayes import GaussianNB
- from sklearn.svm import SVC
- #导入数据
- filename = 'D:/data/iris.data.csv'
- names = ['separ-length','separ-width','petal-length','petal-width','class']
- dataset = read_csv(filename,names=names)
- #数据概述
- #数据维度
- print('行 %s, 列 %s' % dataset.shape)
- #前十行
- print(dataset.head(10))
- #统计数据
- print(dataset.describe())
- #数据分布
- print(dataset.groupby('class').size())
- #单变量图表
- dataset.plot(kind='box',subplots=True,layout=(2,2),sharex=False,sharey=False)
- pyplot.show()
- #直方图
- dataset.hist()
- pyplot.show()
- #散点矩阵
- scatter_matrix(dataset)
- pyplot.show()
- #算法评估
- #数据集分离
- array = dataset.values
- X = array[:, 0:4]
- Y = array[:, 4]
- validation_size = 0.2
- seed = 7
- X_train,X_validation,Y_train,Y_validation = \
- train_test_split(X, Y, test_size=validation_size,train_test_split(X, Y, test_size=validation_size,random_state=seed)
- #算法审查
- models={}
- models['LR']=LogisticRegression()
- models['LDA']=LinearDiscriminantAnalysis()
- models['KNN']=KNeighborsClassifier()
- models['CART']=DecisionTreeClassifier()
- models['NB']=GaussianNB()
- models['SVM']=SVC()
- #评估算法
- results=[]
- for key in models:
- kfold=KFold(n_splits=10,random_state=seed)
- cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring='accuracy')
- results.append(cv_results)
- print('%s: %f (%f)' %(key,cv_results.mean(),cv_results.std()))
- #实施预测
- svm=SVC()
- svm.fit(X=X_train,y=Y_train)
- predictions=svm.predict(X_validation)
- print(accuracy_score(Y_validation,predictions))
- print(confusion_matrix(Y_validation,predictions))
- print(classification_report(Y_validation,predictions))
以上是书上第三章的内容。
虽然好像实现了一整个流程,但许多细节和技巧都没有用上。
PY序的更多相关文章
- 海龟绘图turtle模块的使用
在本章中,我们将编写简短的.简单的程序来创建漂亮的.复杂的视觉效果.为了做到这一点,我们可以使用海龟作图软件.在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动.这个海龟带着一 ...
- 53最大子序和.py
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 来源:https://leetcode-cn.com/problems/maximum-s ...
- C#_socket拆包_封包_模拟乱序包
拆包一直是个硬伤呀,MLGB的,服务端各种乱数据,果断整理下 拆包思路:设计一个网络协议,一般都会分包,一个包就相当于一个逻辑上的命令. .如果我们用udp协议,省事的多,一次会收到一个完整的包,但U ...
- 根据 中序遍历 和 后序遍历构造树(Presentation)(C++)
好不容易又到周五了,周末终于可以休息休息了.写这一篇随笔只是心血来潮,下午问了一位朋友PAT考的如何,顺便看一下他考的试题,里面有最后一道题,是关于给出中序遍历和后序遍历然后求一个层次遍历.等等,我找 ...
- django之 使用py文件操作django项目中的表
要想在一个另外的py文件中操作django,可以使用如下的代码 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE",' ...
- Leetcode——53.最大子序和
@author: ZZQ @software: PyCharm @file: leetcode53_最大子序和.py @time: 2018/11/26 12:39 要求:给定一个整数数组 nums ...
- day_10 py
整理代码!!2018-7-24 20:53:49 直接复制了东西: 一些的demo 重点看蓝字部分! 就是一些简单的方法 基础的而已! 2018-4-22 15:50:26 继续py 还是py好玩感觉 ...
- Python实现二叉树的左中右序遍历
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/18 12:31 # @Author : baoshan # @Site ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
随机推荐
- win10 安装mysql 8.0.12
按照CSDN以及博客园的其他教程, 之前安装过几次都有或多或少的bug 主要安装步骤: 1.配置my.ini文件 2.管理员进入终端, 切换到.../bin目录下进行操作 3.指令操作: 1) mys ...
- JAVAEE 第六周
JSF 生命周期: FacesServlet 充当用户和 JSF 应用程序之间的纽带.它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作. 1. 当JSF页面上的一个事 ...
- idea 工具中项目文件上有灰色的小X号去除方法
初使用idea,在项目中发现类上有这样的灰色X号,启动项目后idea会报找不到这个类的错误,原因是它没有被编译, 解决方法 setting->Build->Compiler->Exc ...
- Tensorflow实战系列之二:
还没想好,可能是人脸检测或者物体检测,或者加上动态检测~~
- python的切片
切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Ja ...
- Shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于 ...
- 代码精简工具lombok
Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get.set以及构造方法等的Java库 一.安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目 ...
- 使用Bash Bunny从被锁定的系统抓取登陆凭据
在今年早些时候,FB就对Bash Bunny做了相关的报导.这款号称“世界上最先进的USB攻击工具”的Bash Bunny,是否真的像其所说的一样是款渗透神器呢?下面,我将通过实例演示如何利用Bash ...
- php:数组与json数据相互转换
1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...
- sdn-准备-虚拟机迁移-vxlan
知识基础: 虚拟机到虚拟机的迁移(Virtual-to-Virtual) V2V 迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件.虚拟机从一个物理机上的 VMM 迁移到另 ...