使用LazyClassifier输出空结果表,如何获取所有模型准确率?
解决LazyClassifier输出空结果表问题
问题代码
from sklearn.model_selection import train_test_split import lazypredict from lazypredict.Supervised import LazyClassifier import numpy as np y = np.array(skin_new_df['diagnostic']) X = np.array(skin_new_df.drop(['diagnostic'], axis=1)) print(X.shape) print(y.shape) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42) clf = LazyClassifier(verbose=0, ignore_warnings=True, custom_metric = None) models,predictions = clf.fit(X_train, X_test, y_train, y_test) print(models)
运行输出
(2298, 25) (2298,) 100%|██████████| 29/29 [00:08<00:00, 3.61it/s] Accuracy Balanced Accuracy ROC AUC F1 Score Time Taken Model
解决方案
以下是按优先级排序的针对性解决方法:
- 处理目标变量编码
LazyClassifier对字符串类型的标签可能存在兼容问题,将标签转换为整数编码:
from sklearn.preprocessing import LabelEncoder le = LabelEncoder() y = le.fit_transform(skin_new_df['diagnostic'])
- 保持训练/测试集类别分布一致
若数据集类别不平衡,默认拆分可能导致测试集缺失部分类别,触发指标计算异常,添加stratify参数:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
- 修复版本兼容问题
部分新版本lazypredict与scikit-learn存在适配问题,安装稳定版本:
pip uninstall -y lazypredict pip install lazypredict==0.2.12
- 清理特征数据
确保特征矩阵仅包含数值型数据且无缺失值:
# 检查缺失值 print(skin_new_df.isnull().sum()) # 删除含缺失值的行 skin_new_df = skin_new_df.dropna() # 筛选数值型特征 X = skin_new_df.drop(['diagnostic'], axis=1).select_dtypes(include=['int64', 'float64']).values y = le.fit_transform(skin_new_df['diagnostic'])
- 优化结果打印方式
print(models)可能因DataFrame格式问题显示不全,改用完整字符串输出:
print(models.to_string())
内容的提问来源于stack exchange,提问作者Deepika Chauhan
相关产品推荐
相关产品推荐

