日本股市预测JPX: LGBM Regressor (Fit in 1 Min)

article/2025/10/1 15:35:52

LightGBM 与 XGBoost
目前几乎所有具有结构化数据集的竞赛的基础学习者。这主要是因为 LightGBM 的实现;它不会像 XGBoost 在默认设置中那样精确搜索最佳分割,而是通过直方图近似(XGBoost 现在也具有此功能,但仍不如 LightGBM 快)。

这会导致预测性能略有下降,但速度会大大提高。这意味着更多的特征工程/实验/模型调整机会,这不可避免地会产生更大的预测性能提升。 (特征工程是赢得大多数 Kaggle 比赛的关键)

stock_list = pd.read_csv("../input/jpx-tokyo-stock-exchange-prediction/stock_list.csv")
prices = pd.read_csv("../input/jpx-tokyo-stock-exchange-prediction/train_files/stock_prices.csv")
supplemental_prices = pd.read_csv("../input/jpx-tokyo-stock-exchange-prediction/supplemental_files/stock_prices.csv")
df_train = pd.concat([prices, supplemental_prices])
df_train = pd.merge(df_train, stock_list[['SecuritiesCode', 'Name']], left_on = 'SecuritiesCode', right_on = 'SecuritiesCode', how = 'left')
stock_list = stock_list.loc[stock_list['SecuritiesCode'].isin(prices['SecuritiesCode'].unique())]
print(list(df_train.columns))
print(len(list(df_train['SecuritiesCode'].unique())))
df_train.head()
import os
import traceback
import numpy as np
import pandas as pd
from tqdm import tqdm
import lightgbm as lgb
import jpx_tokyo_market_prediction
import warnings; warnings.filterwarnings("ignore")

 训练

def upper_shadow(df): return df['High'] - np.maximum(df['Close'], df['Open'])
def lower_shadow(df): return np.minimum(df['Close'], df['Open']) - df['Low']# A utility function to build features from the original df
# It works for rows to, so we can reutilize it.
def get_features(df):df_feat = df[['Open', 'High', 'Low', 'Close', 'Volume']].copy()df_feat['Upper_Shadow'] = upper_shadow(df_feat)df_feat['Lower_Shadow'] = lower_shadow(df_feat)return df_feat

主要训练函数

def get_Xy_and_model(df_train):df_proc = get_features(df_train)df_proc['y'] = df_train['Target']df_proc = df_proc.dropna(how = "any")X = df_proc.drop("y", axis=1)y = df_proc["y"]model = lgb.LGBMRegressor(device_type = 'gpu')model.fit(X, y)return X, y, model

对所有证券循环 

print(f"Training model")
X, y, model = get_Xy_and_model(df_train)
Xs, ys, models = X, y, model

x = get_features(df_train.iloc[1])
y_pred = models.predict(pd.DataFrame([x]))
y_pred[0]

  

0.0005335159727416169

提交

env = jpx_tokyo_market_prediction.make_env()
iter_test = env.iter_test()
for (df_test, options, financials, trades, secondary_prices, df_pred) in iter_test:df_pred['row_id'] = (df_pred['Date'].astype(str) + '_' + df_pred['SecuritiesCode'].astype(str))df_test['row_id'] = (df_test['Date'].astype(str) + '_' + df_test['SecuritiesCode'].astype(str))model = modelsx_test = get_features(df_test)y_pred = model.predict(x_test)df_pred['Target'] = y_preddf_pred = df_pred.sort_values(by = "Target", ascending = False)df_pred['Rank'] = np.arange(0,2000)df_pred = df_pred.sort_values(by = "SecuritiesCode", ascending = True)df_pred.drop(["Target"], axis = 1)submission = df_pred[["Date", "SecuritiesCode", "Rank"]]    env.predict(submission)

 

 

print(df_pred.columns)

 


http://chatgpt.dhexx.cn/article/vTfrj6t5.shtml

相关文章

Regression 2

一、Where does the error come from?[error due to bias and variance] 我们将寻找function看作是在打靶,靶的正中心为 f ^ \hat{f} f^​,每次collect data训练出来的 f ∗ f^{*} f∗为打在靶上面的点 Variance取决于model的复杂程度和data的…

注意:Classifier和Regressor的score函数,是不同的!

下面以sklearn的KNeighbors模型举例: 1.对于分类(Classifier)模型,score函数计算的是精确度。底层是accuracy_score http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#skle…

3.Regression(二)

总结自:机器学习(李宏毅,台湾大学) 上一篇文章中,我们选用的model是 y b w ∙ x c p ybw \bullet x_{cp} ybw∙xcp​,可以选用其它的model吗?我们选用的loss function是 L ( f ) ∑ ( ( y ^ …

Regularization(正则化)

前言 这一章还是紧接着上一章的,在上一章我们讨论了logistic regrsssion(逻辑回归),在更早我们还讨论了linear regression(线性回归),对于这两种问题,我们在进行用函数去预测结果时,我们根据已知的数据集去推测一个函数…

Linear Regression Logistic Regression

Linear Regression & Logistic Regression Keywords List keywords you may encounter when exploring LR(Logistic Regression), or a bigger concept – ML(machine learining): 监督学习 损失函数 梯度下降 学习率 激活函数 神经网络 Let’s kick off wi…

RandomForestClassifier/Regressor

1.集成算法(ensemble ) 1.集成评估器 bagging多个相互独立的评估器,对其预测进行平均或多数表决原则来决定评估器的结果boosting基评估器相关,按顺序一一构建,结合若评估器构成强评估器 2.RandomForestClasifier 1.决策…

Regression 回归

李宏毅老师机器学习课程笔记——Regression 回归 一、理论 问题:已知一批宝可梦样本进化前的特征值x_cp, x_s, x_np, x_w, x_n,预测宝可梦升级后的CP值。模型的目标就是找到一个最合适的函数F(X)Y: 特征条件X包括{x_cp, x_s, x_np, x_w, x_…

线性回归正则化 regularized linear regression

线性回归正则化regularized linear regression 在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details/50994095和多元线性回归http://blog.csdn.net/u012328159/article/details/51029695等线性回归的知识,具体请参见本人其他博客。但…

# Logistics Regression

目录 一 logistics regression 1 一点介绍 2 评价 3 一点应用 4 代码流程 5 上代码!!! 一 logistics regression 1 一点介绍 逻辑回归是一个分类模型,其突出特点即 模型简单、可解释性强 2 评价 优点 实现简单&#xff0…

Python-Regression

本文归纳整理了线性回归(LinearRegression)、岭回归(Ridge)、Lasso回归(Lasso)、弹性网(ElasticNet)、K近邻、SVM等10多种机器学习模块sklearn中回归算法调用及实现过程,…

大数据挖掘永恒的定律?符号回归(Symbolic Regressor)

大数据挖掘永恒的定律?符号回归(Symbolic Regressor) 符号回归简介 符号回归是一种机器学习技术,旨在识别一个潜在的数学表达式。它首先建立一个朴素随机公式的总体来表示已知自变量和它们的因变量目标之间的关系,以预测新数据。每一个连续的…

Regression

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io 今天主要讲的是Regression。会通过一…

从零接入微信公众号(Java实现 附源码)

目录 从零接入微信公众号 一、微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二、测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三、微信公众号网页授权 1.网页授权原理 2.代码实现 1)NetUtil.java 2)Oauth2Token.java 3)WxUserDO.java…

前后端分别部署教程 ---- 第三部分项目部署和挂载到微信公众号

3. 前端 这里介绍的是idea开发工具下的项目打包 3.1 项目打包 一定要在指定项目路径下打开 Terminal,不然会打错项目的包. 右击项目名称,然后点击 Open in Terminal: 在下面的 Terminal窗口中, 输入打包命令: npm …

springboot+h5页面+微信公众号获取微信用户信息

springboot项目,h5页面通过微信公众号获取微信用户信息 最近本人有一个项目需求,微信公众号里点击一个菜单进入一个商城购物系统。 对于在微信公众号还是小白的我来说难度有点大,但是做完后发现也就这样,用多了就熟悉了。下面记录…

【公众号】微信进入公众号链接自动获取授权登陆

文章目录 前言一、准备二、开发2.1 搭建项目2.2 WeixinUtil 工具2.3 回调接口与登陆接口2.4 过滤器自动登陆2.4 其他类2.5 测试 三、总结 前言 最近项目上有一个需求,用户反映每次从微信打开链接都需要手动登陆,比较繁琐,想点开微信连接后自…

java向微信公众号---发送模板和图文消息

微信公众号初次开发 其他操作 项目搭建mavenapplication.ymlyml参数配置微信客户端配置 搭建完成 实现业务模板消息推送准备工作模板消息填写要求图文消息填写要求 推送模板消息推送模板消息结果——效果 推送图文消息推送图文消息工具类问题和结果 获取关注的用户openId既然有…

微信公众号接入天行机器人案例和方法

首先使用的是天行机器人: 1、接入基本原理: https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下: http://api.tianapi.com/txapi/robot/index?keyae5e9a72c8d4cb1f5e096f7bb4daf1f3&questionrobot…

微信公众号的端口映射及服务开发

一. 开发准备 微信公众号申请---->实名认证---->服务器开发---->绑定服务器 PS: 这里有一点需要注意的就是, 微信开发必须是80端口或者443端口, 如果我们有云服务器主机一切都好办. 但是如果没有我们还有几个备选方案: 1. 花生壳 , net123 : 这两个都需要实名认证(…

[JAVA实现]微信公众号网页授权登录,java开发面试笔试题

我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。 扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。 推荐文章:Java 面试知识点解析;Mysql优化技巧…