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

如何拆分sklearn中wine数据集元组并合并为含class列的矩阵?

解决Wine数据集拆分与合并问题

先搞懂dt的结构

当你用load_wine(return_X_y=True)时,返回的dt是一个元组,里面装着两个数组:

  • 第一个是特征数组(记为X),对应178个样本的13个特征,形状是(178, 13)
  • 第二个是标签数组(记为y),对应每个样本的类别,形状是(178,)

元组没法用np.split拆分,直接用元组解包就能拿到单独的X和y,比你想的简单。


步骤1:拆分特征与标签

一行代码搞定:

X, y = dt

执行完这行,X就是所有特征数据,y就是对应的类别标签。


步骤2:合并成最后一列为class的矩阵

给你两种实用方法,选顺手的用:

方法1:用Numpy合并(得到纯数组)

因为y是一维数组,得先转成二维列向量,再和X横向拼接:

# 把y转成(178,1)的列向量
y_col = y.reshape(-1, 1)
# 横向拼接X和y_col,得到最后一列是class的矩阵
wine_matrix = np.hstack((X, y_col))

方法2:用Pandas合并(得到带列名的表格,更直观)

如果你想清楚看到每列对应的特征名称,用Pandas更合适:

# 重新获取完整数据集对象,拿到特征名
wine_full = load_wine()
# 把X转成DataFrame,加上特征列名
wine_df = pd.DataFrame(X, columns=wine_full.feature_names)
# 把y作为最后一列,命名为'class'
wine_df['class'] = y

打印wine_df.head()就能直接看到前5行带列名的数据,新手看这个更清楚。


完整示例代码

import numpy as np
import pandas as pd 
from sklearn.datasets import load_wine

# 获取数据集元组
dt = load_wine(return_X_y=True)
# 拆分特征和标签
X, y = dt

# Numpy合并方式
y_col = y.reshape(-1, 1)
wine_matrix = np.hstack((X, y_col))
print("Numpy合并后的矩阵形状:", wine_matrix.shape)

# Pandas合并方式
wine_full = load_wine()
wine_df = pd.DataFrame(X, columns=wine_full.feature_names)
wine_df['class'] = y
print("\nPandas合并后的前5行数据:")
print(wine_df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:02:30