整理了一些最近学习python的学习笔记,对最近学的知识进行一次汇总
-
- 数据科学工作流
马云曾说“中国正迎来从IT时代到DT时代的变革”,DT就是大数据时代,随着大数据时代到来,各行各业均有一个词频频被提到,那就是数据科学。要从事机器学习、人工智能、数据挖掘等前沿技术,都离不开数据科学。数据科学是主要以统计学、机器学习、数据可视化以及(某一)领域知识为理论基础,其主要研究内容包括数据科学基础理论、数据预处理、数据计算和数据管理。在数据科学体系中数据分析、数据挖掘、数据可视化是机器学习、深度学习、数据探索、自然语言处理的基础。
流程:
(1)问题的定义,解决什么问题,什么信息
(2)获取训练和测试数据,例如查询数据库、爬虫等(使用python等)
(3)数据准备、清洗(使用pandas、numpy等)
(4)数据分析,识别模式和探索数据(使用matplotlib等)
(5)模型,预测和解决问题(使用Scikit-learn、Scipy等)
(6)可视化,报告,和呈现问题解决步骤和找到解决方案(使用BOKEN等)
(7)提供或提交结果
-
- 在数据科学领域常用的python库
Python 在解决数据科学任务和挑战方面继续处于领先地位。现就以证明最有帮助、最常用的Python库做一个简要介绍
-
-
- Numpy
-
N维数组(矩阵),快速高效,矢量数学运算,高效的index,不需要循环,开源免费跨平台,运行效率足以和c、matlab媲美
-
-
- Scipy
-
(发音为“Sigh Pie”) 依赖于Numpy,专为科学和工程设计,实现了多种常用科学计算:线性代数,傅里叶变换,积分程序,信号和图像处理
-
-
- Pandas
-
依赖于Numpy,结构化数据分析利器,提供了多种高级数据结构:Series、DataFrame,Panel等,拥有强大的数据索引和处理能力
-
-
- Matplotlib
-
Python2D绘图领域使用最广泛的库、基本取代了Matlab的绘图功能,用mplot3可绘制3D图
Seaborn 本质上是一个基于 matplotlib 库的高级 API。它包含更适合处理图表的默认设置。
-
-
- Scikit-learn
-
最著名的机器学习包,依赖Scipy,提供了常用的机器学习算法:聚类、回归等简单易学的api接口
Scikit-learn(sklearn)的定位是通用机器学习库,而TensorFlow(tf)的定位主要是深度学习库。
-
- 线性代数相关概念
- 基本概念
- 线性代数相关概念
矩阵:矩形的数组,二维数组。其中向量和标量都是矩阵的特例
向量是1*n或n*1的矩阵
标量是1*1的矩阵
数组是N维的数组,是矩阵二维数组的扩展
特殊矩阵
全0全1矩阵
单位矩阵是和其他矩阵相乘,其他矩阵保持不变 1*数=数 不变
-
-
- 矩阵运算
-
相加,减的两个矩阵必须要有相同的行和列
行和列对应元素相加减
数组乘法(点乘)是对应元素之间的乘法
矩阵乘法
设A为m*p矩阵 B为p*n矩阵,m*n的矩阵C为A与B的乘积,即为C=AB,
C矩阵的第i行第j列元素可表示为:
-
- 数值计算工具:Numpy
python有关的数据结构,虽然可以存储数据,但无法直接参与数值运算(虽然可使用加法和乘法,但分别代表列表元素的增加和重复),用Numpy可实现基于数组的运算,也很高效。
markdown
一级标
= = =
二级标
---
###三级标
-
-
- 多维数组基础
-
核心的数据结构 narray 是一个n维的数组
numpy是学习其他第三方库的基础,例如pandas类库,机器学习算法sk-learn库和tensorflow中都有使用
-
- 数据处理工具:Pandas
可帮助数据分析师轻松解决数据的预处理问题
核心操作对象:序列Series 和数据框 DataFrame
Series:是数据集中的一个字段。
DataFrame:是指包含有至少两个字段(或序列)的数据集。
从构造、处理和操作介绍
DataFrame 创建可用粘贴板
-
- matplotlib的使用
做数据的可视化分析
-
- 数据的相关概念
- 鸢尾花数据
- 数据的相关概念
https://en.wikipedia.org/wiki/Iris_flower_data_set
petal 花瓣 sepal萼片
数据整体叫数据集(data set) (输入的样本)
每一行数据称为一个样本(sample)
除最后一列,每一列表达样本的一个特征(feature)
例如人群
年龄,体重,身高等都是特征
-
-
- 读取鸢尾花数据和数据探索
-
特征表示一个矩阵 150*4 4个特征
标记表示一个向量
特征用X表示 一个矩阵 多少行多少个样本 多少列就多少特征
如果希望学得一个帮助我们判断哪一类鸢尾花的模型,前面的数据还不够,需要建立关于预测的模型,获得训练样本的"结果"信息,关于样本结果的信息叫标记(样本输出标记),这里最后一列,称为标记(label),拥有标记信息的示例叫样例
标记用y表示 一个向量
-
-
-
- 特征空间
-
-
代码如下:
# coding: utf-8
# In[15]:
import numpy as np
from sklearn import datasets #从sklearn导入数据集名称
import matplotlib.pyplot as plt
# In[3]:
iris=datasets.load_iris() #加载鸢尾花数据集 iris类似字典
# In[5]:
iris.keys()
# In[6]:
print(iris.DESCR) #打印说明
# In[7]:
type(iris.data)
# In[8]:
iris.data.ndim
# In[9]:
iris.data.shape
# In[10]:
iris.data
# In[11]:
iris.feature_names
# In[12]:
iris.target
# In[13]:
iris.target.shape #一维包含150个元素 对应上面 每个样本的标记 0,1,2 表示标记
# In[14]:
iris.target_names #0,1,2对应的类型
# In[16]:
#可视化工具来分析数据 只能绘制二维数据
X=iris.data[:,:2] #取所有的行,但只取前2列 就是 150*2矩阵
plt.scatter(X[:,0],X[:,1]) #绘制散点
plt.show()
# In[17]:
y= iris.target
# In[19]:
#按不同类别(标记结果)来绘制散点图
plt.scatter(X[y==0,0],X[y==0,1],color='red') #绘制横轴是X样本中y=0的第0列 纵轴是X样本中y=0的第1列组成点
plt.scatter(X[y==1,0],X[y==1,1],color='green')
plt.scatter(X[y==2,0],X[y==2,1],color='blue')
plt.show()
# In[20]:
X=iris.data[:,2:] #取所有的行,但只取前2列 就是 150*2矩阵
plt.scatter(X[:,0],X[:,1]) #绘制散点
plt.show()
# In[23]:
#按不同类别(标记结果)来绘制散点图
plt.scatter(X[y==0,0],X[y==0,1],color='red',marker='o') #绘制横轴是X样本中y=0的第0列 纵轴是X样本中y=0的第1列组成点
plt.scatter(X[y==1,0],X[y==1,1],color='green',marker='+')
plt.scatter(X[y==2,0],X[y==2,1],color='blue',marker='x')
plt.show()
# 在数据分析中可视化可区分3种,可找到机器学习可视化方法
只选前两个特征做横轴和纵轴表示不同种类的花,每个特征有含义,用可视化结果,它们的特征是不同,分类就是在特征空间切分
如果有新的花,看这个点在哪里做判断
这是比较简单切分方式 可以理解,这里有2个特征,可能有更多
鸢尾花是4个特征,保证在2维,3维...推广到高维空间
每个样本的本质就是每个特征在空间中组成的一个点
特征的点有时有意义,也可能无意义
特征很抽象,图像每一个像素点都是特征,28*28=784个特征
这是灰度图,彩色图更多
说明:机器学习中特征不一定有语义可能非常抽象
例如数字识别中图像中某个像素点决定了图像是5还是6,它们到底有什么样的关系,机器学习就是这么神奇,就是结合尽可能的信息让机器找到我们要的结果
喂给机器什么样特征将很大程度上决定了我们的机器学习算法来得到我们的想要的东西. 还有专门领域研究特征工程.
深度学习就是我们的算法在自动做特征工程