前言
自用。知识点跳跃且不适合Python或是编程0基础的同学看
主要是对现有代码的理解(审计)
本策略和金融没太大关系,主要是计算机和数学
1理论部分(可忽略)
- 回归问题
是机器学习中的一类问题,其中的目标是预测连续型的数值输出。换句话说,回归问题是一种建立输入变量与连续型输出变量之间关系的问题。
- K折交叉验证
在你的代码中,如果使用的是 K 折交叉验证且设置了 shuffle=False,那么每个样本确实会且仅会出现一次,但在不同的测试集中。
2 读取文件和数据标准化
读文件源程序
`# 读取 Excel 文件
df = pd.read_excel('E:\谷歌浏览器下载的文件\参考文献\Yinzi.xlsx')
# 对整个 DataFrame 进行线性插值
df_interpolated = df.interpolate(method='linear', axis=0)
df_interpolated.to_excel('E:\谷歌浏览器下载的文件\参考文献\merged_d123ta.xlsx', index=False)
# 检查是否存在缺失值
missing_values = df_interpolated.isnull().sum()
# 打印每列的缺失值数量
print(missing_values)
`
2.1read_excel
当你使用Pandas库中的read_excel()
函数从Excel文件中读取数据时,Pandas会将Excel文件中的每个工作表(sheet)解析为一个DataFrame对象。DataFrame是一个二维的数据结构,类似于电子表格,由行和列组成。让我详细解释一下数据在读取和处理过程中可能的格式转换:
-
数据类型推断:
-
Pandas会尝试根据每列的内容推断数据类型。例如,如果一列包含数字,Pandas会将其识别为数值型数据,如果一列包含字符串,Pandas会将其识别为对象(字符串)数据类型。
-
但有时候,Pandas可能会将数据错误地推断为不正确的数据类型。因此,可以通过
dtype
参数手动指定数据类型,以确保正确地解析数据。 -
缺失值处理:
-
在Excel文件中,可能会存在一些空单元格,这些空单元格在读取后会被Pandas解析为缺失值(NaN)。Pandas提供了许多方法来处理缺失值,如填充、删除或插值。
-
日期时间数据的解析:
-
如果Excel文件中包含日期时间数据,Pandas会尝试将其解析为日期时间数据类型。这使得可以对日期时间进行各种操作,如筛选、分组和计算时间间隔。
-
索引处理:
-
默认情况下,Pandas会自动生成一个整数索引,从0开始递增。但是,你也可以通过
index_col
参数指定一个列作为DataFrame的索引,或者在读取后通过set_index()
方法设置索引。 -
数据转换:
-
在DataFrame中,每列的数据类型可能不同,可以使用Pandas提供的方法对数据进行转换。例如,可以使用
astype()
方法将某一列的数据类型转换为其他类型。
标准化源程序
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from scipy.stats import boxcox
# 读取金融股票数据,假设数据已经存储在一个名为 'stock_data.csv' 的文件中
df = pd.read_excel('E:\谷歌浏览器下载的文件\参考文献\merged_d12s3ta.xlsx')
df = df.fillna(df.mean())
# 排除 'Symbol' 和 'TradingDate' 列
exclude_columns = ['Symbol', 'TradingDate' ,'ShortName_x','SecurityID_x','BuySymbol','LimitStatus']
numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns
features_to_standardize = [col for col in numeric_columns if col not in exclude_columns]
2.2 features_to_standardize = [col for col in numeric_columns if col not
in exclude_columns]
在 Python 中,列表推导式中的条件语句可以跨越多行,不需要显式地使用换行符。Python 解释器会根据缩进来确定条件语句的范围。因此,你可以在一行中编写条件语句,也可以将其分成多行以提高可读性,但要确保缩进正确。例如:
features_to_standardize = [
col for col in numeric_columns if col not in exclude_columns
]
或者,如果条件语句较长,可以使用括号将其括起来:
features_to_standardize = [
col for col in numeric_columns
if (col not in exclude_columns and
some_other_condition)
]