机器学习常用代码集锦
本文记录的是个人常用机器学习代码片段,包含的主要内容:
- pandas设置
- 可视化
- jieba分词
- 缺失值处理
- 特征分布
- 数据归一化
- 上下采样
- 回归与分类模型
- 模型评价等
常用库
1 | import numpy as np |
可视化
1 | # 1、基于plotly |
1、柱状图带显示数值:
1 | fig = px.bar(df4, x="name",y="成绩",text="成绩") |
2、饼图带显示类型名称:
1 | fig = px.pie(df, # 以城市和数量为字段 |
3、seaborn箱型图
1 | # 方式1 |
4、plotly子图绘制,假设是28个图,生成7*4的子图:
1 | # 两个基本参数:设置行、列 |
jieba分词与词云图
1 | import jieba |
数据探索
1 | import pandas as pd |
缺失字段可视化
1 | import missingno as mso |
删除字段
1 | # 删除某个非必须属性 |
缺失值填充
以字段的现有数据中位数进行填充为例:
1 | # transform之前要指定操作的列(Age),它只能对某个列进行操作 |
字段位置重置
1 | # 1、单独提出来 |
数据集划分
1 | from sklearn.model_selection import train_test_split |
数据标准化/归一化
基于numpy来实现
1 | # 基于numpy实现 |
基于sklearn实现
1 | from sklearn.preprocessing import StandardScaler |
相关性热力图
1 | f, ax1 = plt.subplots(1,1,figsize=(24, 20)) |
属性间相关性
1 | cols = ["col1", "col2", "col3"] |
删除离群点
删除基于上下四分位的离群点:
1 | # 数组 |
离群点填充均值
1 | df['Price']=np.where(df['Price']>=40000, # 大于等于40000看成异常值 |
特征分布
1、特征取值数量统计
1 | df["Class"].value_counts(normalize=True) |
1 | plt.figure(1, figsize=(12,5)) |
2、基于seaborn绘图
1 | # 绘图 |
3、特征直方图分布
1 | # 查看3个特征的分布 |
效果:
另一种方法:
1 | # 绘图 |
特征重要性
1 | from sklearn.feature_selection import mutual_info_classif |
2种编码
1 | Nominal data -- Data that are not in any order -->one hot encoding |
- 标称数据:没有任何顺序,使用独热编码oneot encoding
- 有序数据:存在一定的顺序,使用类型编码labelEncoder
独热码的实现:
1 | df["sex"] = pd.get_dummies(df["sex"]) |
基于有序数据的类型编码自定义:
1 | dic = {"v1":1, "v2":2, "v3":3, "v4":4} |
sklearn实现类型编码:
1 | from sklearn.preprocessing import LabelEncoder |
上、下采样
上采样
1 | # 使用imlbearn库中上采样方法中的SMOTE接口 |
下采样
1 | # 欺诈的数据 |
PCA降维
1 | from sklearn.manifold import TSNE |
sklearn使用k折交叉验证
随机打乱数据并生成索引:
1 | # 随机打乱数据 |
Keras使用交叉验证
Keras中的k折交叉验证:
1 | k = 5 |
回归模型
1 | # 线性回归 |
回归模型评分
1 | from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error |
分类模型
1 | from sklearn.linear_model import LogisticRegression # 逻辑回归 |
混淆矩阵
分类任务的混淆矩阵
1 | from sklearn import metrics # 模型评价 |
auc值
1 | auc = metrics.roc_auc_score(y_test, y_pred) # 测试值和预测值 |
ROC曲线
1 | from sklearn.metrics import roc_curve, auc |
网络搜索
以逻辑回归为例:
1 | from sklearn.model_selection import GridSearchCV |
随机搜索
以随机森林模型为例为例:
1 | # 采用随机搜索调优 |