解决Sklearn Pipeline中GaussianNB的fit()缺失'y'参数报错问题
问题解决:Scikit-learn Pipeline中GaussianNB的TypeError报错
错误原因
你在构建Pipeline时,给algo步骤传入的是GaussianNB类本身,而不是该类的实例对象。Scikit-learn的Pipeline要求每一个步骤都必须是已经初始化的可调用实例(比如模型对象),而非类。当执行pipeline.fit()时,程序会尝试调用类方法GaussianNB.fit(),但这个方法需要先传入实例本身(self参数),导致参数匹配错乱,最终抛出"fit() missing 1 required positional argument: 'y'"的错误。
解决步骤
将GaussianNB改为GaussianNB(),即实例化高斯朴素贝叶斯模型类。
修正后的完整代码
X = df.drop(columns="CLASS") y = df.CLASS X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) X_train.shape, X_test.shape, y_train.shape, y_test.shape preprocessor = ColumnTransformer([ ('numeric', num_pipe(), ["PINJAM"]), ('categoric', cat_pipe(encoder='onehot'), ["JENIS KELAMIN", "STATUS PERNIKAHAN", "JUMLAH TANGGUNGAN"]), ]) from sklearn.naive_bayes import GaussianNB # 修正:将GaussianNB改为GaussianNB() pipeline = Pipeline([ ('prep', preprocessor), ('algo', GaussianNB()) ]) pipeline.fit(X_train, y_train)
内容的提问来源于stack exchange,提问作者rckoprstyo
相关产品推荐
相关产品推荐

