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

学习逻辑机器学习遇报错:DataFrame无_validate_params属性

AttributeError: 'DataFrame' object has no attribute '_validate_params' 错误排查与解决

错误原因

你犯了sklearn使用中的典型错误:将LogisticRegression类别名为lr后,直接调用了类的fit方法(lr.fit(x_train,y_train))。fit是实例方法,必须先创建类的实例才能调用。

当你直接用类调用fit时,Python会把第一个参数x_train(DataFrame对象)当作类方法的self参数传入,而DataFrame显然没有_validate_params这个sklearn模型类专属的方法,因此抛出了该错误。

解决方法

只需先创建LogisticRegression的实例,再调用实例的方法即可。修改代码中模型训练的部分:

# 替换原有的 lr.fit(x_train,y_train) 和 x_pred = lr.predict(x_test)
model = lr()  # 创建LogisticRegression实例
model.fit(x_train,y_train)
x_pred = model.predict(x_test)

修改后的完整代码

import seaborn as sb
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression as lr
from sklearn import metrics

lol = {"exp":[0,2,5,6,10,7,9,3,5,4,6,1,2,0,0,4,5,8,7,6],
    "sales":[10,20,15,12,14,18,19,20,25,10,5,7,8,20,15,17,18,25,14,17],
    "manage":[5,2,9,8,3,6,7,5,4,2,1,5,8,7,9,4,2,0,1,5],
    "get":[0,1,1,1,0,0,1,1,0,1,0,1,0,1,0,1,1,0,0,1]}
data = pd.DataFrame(lol,columns=["exp","sales","manage","get"])

x = data[["exp", "sales", "manage"]]
y = data["get"]

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=0)

# 修复:先创建模型实例
model = lr()
model.fit(x_train,y_train)
x_pred = model.predict(x_test)

conf_mat = pd.crosstab(y_test,x_pred,rownames="True?",colnames="Pred")
sb.heatmap(conf_mat,annot=True)

print("Accuracy:" ,metrics.accuracy_score(y_test,x_pred))
plt.show()

你也可以选择不使用别名,直接写LogisticRegression()来实例化模型,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:25:16