主要使用库
numpy:提供数组支持,以及相应高效的处理函数
scipy:提供矩阵支持,以及矩阵相关的数值计算模块
matplotlib:强大的数据可视化工具,作图库
pandas:强大、灵活的数据分析和搜索工具
StateModels:统计建模和计量经济学,包括描述统计、统计模型估计和推断
Scikit-Learn:支持回归、分类、聚类等强大的机器学习库
Keras:深度学习库,用于建立神经网络以及深度学习模型
Gensim:用来做文本主题模型的库,文本挖掘可能用到
图片处理用Pillow 视频处理OpenCV 高精度运算GMPY2
基础代码
综述
from functools import reduce
import math
import numpy as np # 提供数组支持,以及相应高效的处理函数
import scipy as sci # 提供矩阵支持,以及矩阵相关的数值计算模块
from scipy.optimize import fsolve # 导入求解方程组函数
from scipy import integrate # 导入积分函数
# 最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、
# 常微分方程求解、其他科学与工程中常用的计算
import matplotlib.pyplot as plt # 强大的数据可视化工具,作图库
# Panel Data和Data Analysis 为金融数据分析工具而开发
# 支持类似SQL的数据增、删、改、查,并且带有丰富的数据处理函数,支持时间序列分析功能
# 支持灵活处理缺失数据等
# 需要安装pip install pandas; xlrd(读)和xlwt(写)库支持Excel的读写
# pip install xlrd ; pip install xlwt
# Series 序列,类似一维数组 DataFrame 二维表格,类似二维数组,每一列都是Series
import pandas as pd # 强大、灵活的数据分析和搜索工具
# import StateModels # 统计建模和计量经济学,包括描述统计、统计模型估计和推断
from statsmodels.tsa.stattools import adfuller as ADF # 导入ADF检验
# 与机器学习相关的库,提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测、模型分析等
# 依赖于Numpy、Scipy和Matplotlib pip install scikit-learn
# Scikit-Learn # 支持回归、分类、聚类等强大的机器学习库
from sklearn.linear_model import LinearRegression # 导入线性回归模型
# Keras 深度学习库,用于建立神经网络以及深度学习模型
# Gensim 用来做文本主题模型的库,文本挖掘可能用到
# 图片处理用Pillow 视频处理OpenCV 高精度运算GMPY2
基础部分
d = {'today': 20, 'tomorrow': 30}
e = dict([['today', 20], ['tomorrow', 30]])
# set集合
s = {1, 2, 3, 4}
def function():
b = map(lambda x: x + 2, a) # 将函数逐一应用到map,逐一遍历
b = list(b)
b = filter(lambda x: x > 5 and x < 8, range(10)) # 过滤
print(list(b))
b = [i for i in range(10) if i > 5 and i < 8]
print(b)
n = 4 # 1*2*3*4
result = reduce(lambda x, y: x * y, range(1, n + 1)) # 递归
print(result)
if __name__ == '__main__':
a = [1, 2, 3]
b = [i+2 for i in a]
print(b)
numpy 数组计算
def numpy_function():
a = np.array([2, 0, 1, 5])
print(a) # 输出数组
print(a[:3]) # 引用前三个数字(切片)
print(a.min()) # 输出a中最小值
a.sort() # 将a的元素从小到达排序,此操作直接修改a,因此a为(0, 1, 2, 5)
b = np.array([[1, 2, 3], [4, 5, 6]]) # 创建二维数组
print(b*b) # 输出数组的平方阵,即[[1,4,9],[16,25,36]]
def math_function():
math.sin(1)
math.exp(1)
result = math.pi
print(result)
scipy 矩阵计算
# 定义被积函数
def g(x):
# sqrt(1-x^2)
return (1-x**2)**0.5
# 定义要求解的方程组
def f_solve_function(x):
# 求解2x1-x2^2=1, x1^2-x2=2
x1 = x[0]
x2 = x[1]
# 求解方程的根,非线性方程通常会有多个解,需要设置解的大致初始值(取值范围)
# 这样方程在初始值附近按梯度下降进行求解,可得到局部解
return [2*x1-x2**2-1, x1**2-x2-2] # 方程组要写出f(x)=0的形式
Matplotlib作图
# Matplotlib作图的基本代码
def matplotlib_function():
# np.linspace() 用于在线性空间中以均匀步长生成数字序列 单独的序列生成器
# numpy.arange() 生成序列
x = np.linspace(0, 10, 1000) # 作图的变量 自变量 0~10 1000个点
y = np.sin(x) + 1 # 因变量y
z = np.cos(x**2) + 1 # 因变量z
plt.figure(figsize=(8, 4)) # 设置图像大小
plt.plot(x, y, label='$\sin x+1$', color='red', linewidth=2) # 作图,设置标签、线条颜色、线条带线啊哦
plt.plot(x, z, 'b--', label='$\cos x^2+1$') # 作图,设置标签,线条类型
plt.xlabel('Time(s)') # x轴名称
plt.ylabel('Volt') # y轴名称
plt.title('A Simple Example') # 标题
plt.ylim(0, 2.2) # 显示的y轴范围
plt.legend() # 显示图例
plt.rcParams['font.sans-serif'] = ['SimHei'] # 这两句用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.show()
Pandas Panel Data和Data Analysis 数据分析工具
# 数据的读取、处理和探索
def pandas_function():
# DataFrame相当于多个带有同样Index的Series组合(本质是Series容器)
# 每个Series都带有唯一的表头,用来标识不同的Series
s = pd.Series([1, 2, 3], index=['a', 'b', 'c']) # 创建一个序列s
d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c']) # 创建表
d2 = pd.DataFrame(s)
d.head() # 预览前5行数据
d.describe() # 数据基本统计量
# 读取文件,注意文件的存储路径不能带有中文,否则读取可能出错
pd.read_excel('data.xls') # 读取Excel文件,创建DataFrame
pd.read_csv('data.csv', encoding='utf-8') # 读取文本格式的数据,一般用encoding指定编码
Scikit-Learn 机器学习相关库
# 创建一个机器学习模型
def sklearn_function():
model = LinearRegression() # 建立线性回归模型
print(model)
# model.fit() 训练模型,对于监督模型来说是fit(X, y), 对于非监督模型是fit(X)
# 监督模型提供结构
# model.predict(X_new):预测新样本
# model.predict_proba(X_new):预测概率,仅对某些模型有用(比如LR)
# model.score():得分越高,fit越好
# 非监督模型提供接口
# model.transform():从数据中学到新的‘基空间’
# model.fit_transform():从数据中学到新的基并将这个数据按照这组‘基’转换
# 数据的统计建模分析,使得python有了R语言的味道
# 支持StatsModels与Pandas
def stats_model_function():
result = np.random.rand(100) # 返回的结果有ADF值、p值等
print(result)
from sklearn import datasets
from sklearn import svm # 导入SVM模型
# 安德森鸢尾花卉数据集、手写图像数据集等
# 150个鸢尾花的一些尺寸的观测值:萼片长度、宽度、花瓣长度、宽度
def main():
iris = datasets.load_iris() # 加载数据集
print(iris.data.shape) # 查看数据大小
# 此处报错ConvergenceWarning,需要填入最大迭代10000次
clf = svm.LinearSVC(max_iter=10000) # 建立线性SVM分类器
clf.fit(iris.data, iris.target) # 用数据训练模型
clf.predict([[5.0, 3.6, 1.3, 0.25]]) # 训练好模型后,输入新的数据进行预测
clf.coef_ # 查看训练好模型的参数
if __name__ == '__main__':
main()
Keras库 神经网络搭建
# Keras库搭建神经网络,基于Theano的强大深度学习库
# 利用Keras不仅可以搭建普通的神经网络,还可以搭建各种深度学习模型
# 如自编码器、循环神经网络、递归神经网络、卷积神经网络等
# 基于Theano的,速度相当快
# Keras简化搭建各种神经网络模型的步骤,允许普通用户轻松搭建并求解具有几百个,输入节点的深层神经网络
# from keras.model import Sequential
# from keras.layers.core import Dense, Dropout, Activation
# from keras.optimizers import SGD
Gensim语言处理
# Gensim用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等
# import gensim, logging