使用train_test_split报错:'dict'对象没有'data'属性
问题原因
- Python字典不能用**点号
.访问键值,你写的array1.data属于错误的访问方式,字典的正确取值方式是用方括号[]**指定键名。 - 你的特征数组和标签数组样本数不匹配:
data_array有5个样本,target_array只有4个标签,这会导致train_test_split后续抛出维度不匹配的错误。
修复后的代码
import numpy as np from sklearn.model_selection import train_test_split # 调整特征数组的样本数,和标签数组保持一致 data_array = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) target_array = np.array([11, 12, 13, 14]) array1 = {'data': data_array, 'target': target_array} # 用方括号访问字典的键值,同时注意train_test_split的返回顺序是X_train, X_test, y_train, y_test X_train, X_test, y_train, y_test = train_test_split( array1['data'], array1['target']) # 验证输出 print("X_train:\n", X_train) print("y_train:\n", y_train) print("X_test:\n", X_test) print("y_test:\n", y_test)
关键注意点
- 字典取值:将
array1.data改为array1['data'],array1.target改为array1['target'],这是Python字典的标准取值语法。 - 样本数对齐:必须保证特征数组的行数(样本数量)和标签数组的元素数量完全一致,否则无法完成样本与标签的对应匹配。
内容的提问来源于stack exchange,提问作者karoloso
相关产品推荐
相关产品推荐

