# Numpy
# 创建数组
- 通过 array () 函数将 Python 的列表或者元组转换为数组
- 利用
zeros(), ones(), empty()
函数创建 - 通过 arange () 函数得到数组,arange () 函数的原型为
arange(start, end,step)
,起始值为 start,终止值为 end,但不含终止值,步长为 step。arange () 函数可以使用 float 型数据。
# 数组运算
元素对元素的乘法: a * b
矩阵的乘法: a @ b
# 形状改变
-
ravel ()、reshape ()、T 这 3 个方法会返回已修改的矩阵,但不会更改原始矩阵
-
resize () 方法会更改原始矩阵
# pandas
# Series
Series 对象是 Pandas 中的一维数据结构,能存储不同类型的数据
a = pd.Series(["b", 2, [1 ,2]], index = ["a", "b", "c"])
# DataFrame
DataFrame 是 Pandas 中的二维数据结构,能存储不同类型的数据,有行索引和列索引,并与元素对应
1 | import pandas as pd |
# 表格文件操作
读取 csv 文件 read_csv()
使用 to_csv () 方法将 DataFrame 存储为 csv 文件
表格数据处理:
head (n) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。
tail (n) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。
info () 方法返回表格的一些基本信息
1 | import pandas as pd |
# Matplotlib
折线图 plot
散点图 scatter
柱形图 bar
多子图 subplot
直方图 hist
误差图 errorbar
图修饰
# Scikit-learn
支持包括分类,回归,降维和聚类四大机器学习算法;还包括了特征提取,数据处理和模型评估三大模块
# 数据包
数据处理: from sklearn import datasets, preprocessing
数据集的划分: from sklearn.model_selection import train_test_split
建模的模型: from sklearn.linear_model import LinearRegression
模型的评估: from sklearn.metrics import r2_score
# 加载数据
Scikit-learn 支持以 NumPy 的 arrays 对象、Pandas 对象、SciPy 的稀疏 矩阵及其他可转换为数值型 arrays 的数据结构作为其输入,前提是数据必须是数值型的
sklearn.datasets 模块提供了一系列加载和获取著名数据集如鸢尾花、波士顿房价、Olivetti 人脸、MNIST 数据集等的工具,也包括了一些 toy data 如 S 型数据等的生成工具
eg:
1 | from sklearn.datasets import load_iris |
# 数据的划分
1 | from sklearn.model_selection import train_test_split |
将完整数据集的 70% 作为训练集,30% 作为测试集,并使得测试集和训练集中各类别数据的比例与原始数据集比例一致(stratify 分层策略),另外可通过设置 shuffle=True
提前打乱数据
# 数据预处理
使用 Scikit-learn 进行数据标准化
- 导入
from sklearn.preprocessing import StandardScaler
- 构建转换器实例
scaler = StandardScaler()
- 拟合及转换
scaler.fit_transform(X_train)
# 监督学习算法 - 回归
LASSO linear_model.Lasso
Ridge linear_model.Ridge
ElasticNet linear_model.ElasticNet
回归树 tree.DecisionTreeRegressor
-
导入
from sklearn.linear_model import LinearRegression
-
构建模型实例
lr = LinearRegression(normalize=True)
normalize
表示是否要进行归一化,即是否要将数据映射到[0,1]
之间
-
训练模型
lr.fit(X_train, y_train)
,即进行拟合X_train
表示训练集特征y_train
训练集的目标值
-
作出预测
y_pred = lr.predict(X_test)
X_test
测试集的特征
# 监督学习算法 - 分类
逻辑回归: linear_model.LogisticRegression
支持向量机: svm.SVC
朴素贝叶斯: naive_bayes.GaussianNB
K 近邻: neighbors.NearestNeighbors
-
导入
from sklearn.tree import DecisionTreeClassifier
-
实例
clf = DecisionTreeClassifier(max_depth=5)
-
拟合
clf.fit(X_train, y_train)
-
预测
y_pred = clf.predict(X_test)
y_prob = clf.predict_proba(X_test)
使用决策树分类算法解决二分类问题,y_prob 为每个样本预测为 “0” 和 “1” 类的概率
# 监督学习算法 - 集成学习
sklearn.ensemble 模块包含了一系列基于集成思想的分类、回归和离群值检测方法.
1 | from sklearn.ensemble import RandomForestClassifier |
# 无监督学习
sklearn.cluster 模块包含了一系列无监督聚类算法.
DBSCAN: cluster.DBSCAN
层次聚类: cluster.AgglomerativeClustering
谱聚类: cluster.SpectralClustering
实例:
-
导入
from sklearn.cluster import KMeans
-
构建聚类实例
kmeans = KMeans(n_clusters=3, random_state=0)
-
拟合
kmeans.fit(X_train)
-
预测
kmeans.predict(X_test)
# 评价指标
sklearn.metrics 模块包含了一系列用于评价模型的评分函数、损失函数以及成对数据的距离度量函数.
# 回归模型评价
# 分类模型评价
# 交叉验证及超参数调优
超参数调优⸺网格搜索
在参数网格上进行穷举搜索,方法简单但是搜索速度慢(超参数较多时),且不容易找到参数空间中的局部最优
1 | from sklearn.model_selection import GridSearchCV |
超参数调优⸺随机搜索
在参数子空间中进行随机搜索,选取空间中的 100 个点进行建模(可从 scipy.stats 常见分布如正态分布 norm、均匀分布 uniform 中随机采样得到),时间耗费较少,更容易找到局部最优
1 | from sklearn.model_selection import RandomizedSearchCV |