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

运行机器学习代码报AttributeError:'list'无'drop'属性,错在哪里如何修改

问题诊断
  • 核心报错原因:第10行的列筛选代码写法错误,你将pandas读取生成的DataFrame类型的data变量,错误赋值为了一个Python原生嵌套列表,覆盖了原有值:
    # 错误写法:直接生成列表,覆盖了DataFrame
    data = [["G1", "G2", "G3", "studytime", "failures", "absences"]]
    
    列表类型没有pandas提供的drop方法,运行到data.drop()语句时就触发了AttributeError。
  • 冗余代码问题:
    1. 导入的sklearn.utils.shuffle未在代码中使用,属于无效导入
    2. 代码末尾重复调用了两次linear.fit()和linear.score(),属于无意义的重复执行
修复方案

你需要修改列筛选的写法,保留data的DataFrame结构,同时清理冗余代码即可正常运行,修复后的完整代码如下:

import pandas as pd
import numpy as np
import sklearn
from sklearn import linear_model

# 读取数据集
data = pd.read_csv("student-mat.csv", sep=";")

# 正确写法:从原DataFrame中筛选指定列,仍保留DataFrame格式
data = data[["G1", "G2", "G3", "studytime", "failures", "absences"]]

predict = "G3"

# 拆分特征和标签,明确标注axis=1兼容性更好
X = np.array(data.drop([predict], axis=1))
y = np.array(data[predict])

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)

linear = linear_model.LinearRegression()
linear.fit(x_train, y_train)
acc = linear.score(x_test, y_test)
print(acc)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 00:45:04