股票推荐
程序员文章站
2022-03-06 21:22:04
...
1-input.py
# 机器学习中,数据预处理全流程一般包含以下6大步骤:
# (1)导入标准库:如:pandas、numpy、matplotlib等;
# (2)导入数据集:将需要分析的数据读入;
# (3)缺失数据处理:对数据表中的空值进行处理;
# (4)分类数据:将需要的维度数据(如:国家)转换为能带入公式中的可度量值;
# (5)数据划分训练集、测试集:将数据集的数据按一定比例进行随机拆分,形成训练集与测试集;
# (6)特征缩放:将不在同一数量级的数据进行处理,加快程序运行速度,以及尽快得到收敛结果。
import pandas as pd
from pypinyin import lazy_pinyin
import io
# 进行训练数据集的读取和重命名
train_df = pd.read_excel('balance.xlsx')
train_df.rename(lambda x: ' '.join(lazy_pinyin(x)), axis='columns', inplace=True)
# 进行验证数据集的读取和重命名
valid_df = pd.read_excel('eval.xlsx')
valid_df.rename(lambda x: ' '.join(lazy_pinyin(x)), axis='columns', inplace=True)
# 打印训练数据的形状以及描述
print(train_df.shape)
print(train_df.describe())
# 将训练数据集转换成csv格式,csv:Comma-Separated Values,逗号分割值
train_df.to_csv('train_df.csv', index=0)
# 将验证集转换成csv格式的文件
valid_csv_buffer = io.StringIO()
valid_df.to_csv('valid_df.csv', index=0)
2-drop_duplicates.py
# step1:导入标准库函数
import io
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# step2:导入数据集,读取的数据集格式是csv格式的
train_df = pd.read_csv('train_df.csv')
valid_df = pd.read_csv('valid_df.csv')
# step3: 去重以及合并数据集
train_df.drop_duplicates()
valid_df.drop_duplicates()
# axis = 0表示连接的是列,keys表示连接的顺序
all_df = pd.concat([train_df, valid_df], axis=0, keys=['train', 'valid'])
print(all_df.shape)
# 将所有数据集把保存成csv格式
all_df.to_csv('all_df.csv')
3-fix_nan.py
# 进行缺失项的处理
import pandas as pd
# 首先读入所有数据集,格式是csv文件
all_df = pd.read_csv('all_df.csv')
# 然后对缺失项数据进行处理
na_count = all_df.isnull().sum().sort_values(ascending=False)
na_rate = na_count / len(all_df)
na_data = pd.concat([na_count, na_rate], axis=1, keys=['count', 'ratio'])
print(na_data.head(20))
4-feature_selection.py
# 特征选择:当数据段数较多时,数据分析容易引起维度灾难,使得训练时间较长,因此需要对数据将为处理
# 将目标字段影响不大的特征字段进行删除,或者经过变换之后再输入到模型中
# 查看各个属性与目标变量的相关系数值,过滤了绝对值小于0.01的相关变量(排除不相关的变量)
# 计算各个特征与目标变量"移动房车险数量"的相关系数(这里能不能使用决定系数进行数据的筛选?)
import pandas as pd
import numpy as np
# 读取所有数据集
all_df = pd.read_csv('all_df.csv')
# 计算所有变量与"移动房产险数量"的相关系数,返回的结果是相关系数的矩阵
correlation_target = all_df.corr()['yi dong fang che xian shu liang']
# 筛选相关系数小于0.01的相关变量,也就是保存相关系数大于等于0.01的变量
select_features = correlation_target[np.abs(correlation_target) >= 0.01].index.tolist()
# 最后的结果有84个变量变成了74个变量
print(len(select_features))
# 保存最终筛选的结果,并保存成csv的文件
all_df = all_df[select_features]
all_df.to_csv('all_df.csv')
5-categorical_one_hot.py
# 数值变量的规范化
import pandas as pd
# 在对原始数据的预览中,发现部分数值型属性的分布为偏正态分布,一次考虑用偏正态分布计算结果进行对数转换
# 以改进构建的模型的分类正确率
# 计算每个数值字段数据的偏度绝对值,对大于0.5的字段执行对数变换
# 读入数据
all_df = pd.read_csv('all_df.csv')
all_df[['ke hu ci lei bie', 'ke hu zhu lei bie', 'yi dong fang che xian shu liang']] = all_df[
['ke hu ci lei bie', 'ke hu zhu lei bie', 'yi dong fang che xian shu liang']].apply(lambda x: x.astype('category'))
categorical_cols = ['ke hu ci lei bie', 'ke hu zhu lei bie', 'yi dong fang che xian shu liang']
all_cat = all_df[categorical_cols]
all_cat = pd.get_dummies(all_cat)
all_cat.to_csv('all_cat_df.csv')
下一篇: 记一次简单的部署项目过程