LazyPredict检测到0特征致分类器失效的问题求助
解决lazypredict检测到0特征的问题
问题出在目标变量y的类型上:你传入的y是二维DataFrame,而LazyClassifier要求目标变量必须是一维的Series(或一维数组)。这种二维结构会导致内部处理逻辑出错,误判特征数为0,只有DummyClassifier能正常运行。
修改方案
把y从DataFrame转为一维Series,有两种方式:
- 创建时直接生成Series:
y = pd.Series(np.random.choice([True, False], size=(10,)), name='F') - 从已有的DataFrame中提取:
y = y.iloc[:, 0]
修改后的完整代码
import numpy as np import pandas as pd from lazypredict.Supervised import LazyClassifier from sklearn.model_selection import train_test_split X = pd.DataFrame(np.random.choice([True, False], size=(10, 3)), columns=list('ABC')) y = pd.Series(np.random.choice([True, False], size=(10,)), name='F') X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=123) clf = LazyClassifier(verbose=0, ignore_warnings=False, custom_metric=None) models, predictions = clf.fit(X_train, X_test, y_train, y_test) print(models)
补充说明
官方示例中的目标变量都是一维结构(比如直接从DataFrame中提取单列得到的Series),所以能正常运行。处理自有数据时,同样要确保y是一维的,就能解决特征数为0的问题。
内容的提问来源于stack exchange,提问作者Enrico R.
相关产品推荐
相关产品推荐

