You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XGBoost通过URL加载DMatrix报错,求Python正确实现语法

解决XGBoost DMatrix无法直接加载URL数据的问题

xgb.DMatrix不支持直接传入HTTP URL作为参数,你需要先将远程数据拉取到本地内存或文件中,再传递给DMatrix。以下是几种可行的实现方式:

方法一:通过内存加载数据

利用urllib获取远程数据,并用BytesIO包装成类文件对象供DMatrix读取:

import xgboost as xgb
import urllib.request
from io import BytesIO

url = 'https://raw.githubusercontent.com/dmlc/xgboost/master/demo/data/agaricus.txt.test'
# 获取远程数据内容
response = urllib.request.urlopen(url)
data_content = response.read()
# 包装为类文件对象后传入DMatrix
dtrain = xgb.DMatrix(BytesIO(data_content))

方法二:借助Pandas读取并转换

如果数据是结构化文本(如agaricus这种类似CSV的格式),可以先用Pandas读取,再转换为DMatrix:

import xgboost as xgb
import pandas as pd

url = 'https://raw.githubusercontent.com/dmlc/xgboost/master/demo/data/agaricus.txt.test'
# 读取数据,注意设置分隔符和无表头
df = pd.read_csv(url, header=None, sep=' ')
# 分离特征和标签,传入DMatrix
dtrain = xgb.DMatrix(df.iloc[:, 1:], label=df.iloc[:, 0])

方法三:先下载到本地文件再加载

将远程数据下载到本地磁盘,再用DMatrix加载本地文件:

import xgboost as xgb
import urllib.request

url = 'https://raw.githubusercontent.com/dmlc/xgboost/master/demo/data/agaricus.txt.test'
# 下载文件到本地
urllib.request.urlretrieve(url, 'agaricus.txt.test')
# 加载本地文件
dtrain = xgb.DMatrix('agaricus.txt.test')

以上三种方法都能解决你遇到的问题,可根据实际场景选择合适的方式。

内容的提问来源于stack exchange,提问作者Reza Paradise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:45:28