[个人笔记]机器学习模型代码审计 - 以Python的sklearn库中的SVM模型预测股价为例

前言

自用。知识点跳跃且不适合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)
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值