# 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
2
3
4
5
import pandas as pd
a = {"a":[1, 2], "b": [3, 4]}
print("a:\n", a)
df = pd.DataFrame(data=a)
print("\ndf:\n", df)

# 表格文件操作

读取 csv 文件 read_csv()

使用 to_csv () 方法将 DataFrame 存储为 csv 文件

表格数据处理

head (n) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

tail (n) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。

info () 方法返回表格的一些基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
import pandas as pd
df = pd.read_csv('population.csv')
print(df.head())
print(df.head(10))
print(df.tail())
print(df.tail(10))
print(df.info())
df.shape #查看维度
df.columns #查看列名
df.dtypes #每一列数据的格式
df["country"].values #某一列的值
df.iloc[3].values #某一行的值
df.loc[df['year'] == 2020, ['country', 'population']] #条件筛选

# 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
2
3
4
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

# 数据的划分

1
2
3
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=12, stratify=y,test_size=0.3)
# X特征,y目标值

将完整数据集的 70% 作为训练集,30% 作为测试集,并使得测试集和训练集中各类别数据的比例与原始数据集比例一致(stratify 分层策略),另外可通过设置 shuffle=True 提前打乱数据

# 数据预处理

使用 Scikit-learn 进行数据标准化

  1. 导入 from sklearn.preprocessing import StandardScaler

ZScore标准化:x=xμσZ-Score标准化:x^*=\frac{x-\mu}{\sigma}

  1. 构建转换器实例 scaler = StandardScaler()
  2. 拟合及转换 scaler.fit_transform(X_train)

# 监督学习算法 - 回归

LASSO linear_model.Lasso

Ridge linear_model.Ridge

ElasticNet linear_model.ElasticNet

回归树 tree.DecisionTreeRegressor

  1. 导入 from sklearn.linear_model import LinearRegression

  2. 构建模型实例 lr = LinearRegression(normalize=True)

    • normalize 表示是否要进行归一化,即是否要将数据映射到 [0,1] 之间
  3. 训练模型 lr.fit(X_train, y_train) ,即进行拟合

    • X_train 表示训练集特征
    • y_train 训练集的目标值
  4. 作出预测 y_pred = lr.predict(X_test)

    • X_test 测试集的特征

# 监督学习算法 - 分类

逻辑回归linear_model.LogisticRegression

支持向量机svm.SVC

朴素贝叶斯naive_bayes.GaussianNB

K 近邻neighbors.NearestNeighbors

  1. 导入 from sklearn.tree import DecisionTreeClassifier

  2. 实例 clf = DecisionTreeClassifier(max_depth=5)

  3. 拟合 clf.fit(X_train, y_train)

  4. 预测

    y_pred = clf.predict(X_test)

    y_prob = clf.predict_proba(X_test)

使用决策树分类算法解决二分类问题,y_prob 为每个样本预测为 “0” 和 “1” 类的概率

# 监督学习算法 - 集成学习

sklearn.ensemble 模块包含了一系列基于集成思想的分类、回归和离群值检测方法.

1
2
3
4
5
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=20)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
y_prob = clf.predict_proba(X_test)

# 无监督学习

sklearn.cluster 模块包含了一系列无监督聚类算法.

DBSCANcluster.DBSCAN

层次聚类cluster.AgglomerativeClustering

谱聚类cluster.SpectralClustering

实例:

  1. 导入 from sklearn.cluster import KMeans

  2. 构建聚类实例 kmeans = KMeans(n_clusters=3, random_state=0)

  3. 拟合 kmeans.fit(X_train)

  4. 预测 kmeans.predict(X_test)

# 评价指标

sklearn.metrics 模块包含了一系列用于评价模型的评分函数、损失函数以及成对数据的距离度量函数.

# 回归模型评价

# 分类模型评价

# 交叉验证及超参数调优

超参数调优⸺网格搜索

在参数网格上进行穷举搜索,方法简单但是搜索速度慢(超参数较多时),且不容易找到参数空间中的局部最优

1
2
3
4
from sklearn.model_selection import GridSearchCV
from sklearn import svm
svc = svm.SVC()
params = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:[1, 10]} grid_search = GridSearchCV(svc, params, cv=5) grid_search.fit(X_train, y_train) grid_search.best_params_

超参数调优⸺随机搜索

在参数子空间中进行随机搜索,选取空间中的 100 个点进行建模(可从 scipy.stats 常见分布如正态分布 norm、均匀分布 uniform 中随机采样得到),时间耗费较少,更容易找到局部最优

1
2
3
4
5
6
7
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
svc = svm.SVC()
param_dist = {‘kernel’:[‘linear’, ‘rbf’], ‘C’:randint(1, 20)}
random_search = RandomizedSearchCV(svc, param_dist, n_iter=10)
random_search.fit(X_train, y_train)
random_search.best_params_
更新于

请我喝[茶]~( ̄▽ ̄)~*

Aurijun 微信支付

微信支付

Aurijun 支付宝

支付宝