欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

股票推荐

程序员文章站 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')