解决IBM员工流失数据集建模中的ValueError:预期2D数组却得1D数组
IBM员工流失数据集Logistic回归错误解决:Expected 2D array, got 1D array instead
核心错误原因:
logreg.score()的参数顺序完全搞反了。sklearn中模型的score()方法要求第一个参数是特征输入(必须是2D数组,比如你的X_test),第二个参数是真实标签(1D数组,比如y_test)。你当前传入的logreg.score(y_pred, y_test),把1D的预测结果当成了特征输入,直接触发维度不匹配的错误。修正代码:将score行替换为:
logreg.score(X_test, y_test)
- 哑变量处理简化建议:你的现有哑变量生成步骤冗余,可以优化成更简洁的逻辑:
# 直接对原数据集生成分类列的哑变量,保留数值列,drop_first避免多重共线性 dummy_df = pd.get_dummies(df, columns=["BusinessTravel", "Department", "EducationField", "Gender", "JobRole", "OverTime", "MaritalStatus"], drop_first=True) # 直接将Attrition转换为数值标签(Yes=1,No=0) dummy_df["Attrition"] = dummy_df["Attrition"].apply(lambda x: 1 if x == "Yes" else 0)
这样省去了复制DataFrame、concat后删除重复列的繁琐步骤,逻辑更清晰。
- 准确率计算的另一种方式:如果想手动计算预测准确率,可使用
metrics.accuracy_score,参数顺序是真实标签在前,预测标签在后:
metrics.accuracy_score(y_test, y_pred)
内容的提问来源于stack exchange,提问作者Dinomain_
相关产品推荐
相关产品推荐

