TypeError:fit()使用sklearn和sklearn\u pandas精确地接受3个参数(给定2个)

2024-05-16 03:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用sklearn_pandas模块来扩展我在pandas中所做的工作,并尝试使用机器学习,但我正在努力解决一个错误,我不知道如何修复。在

我正在处理Kaggle上的以下数据集。在

它本质上是一个无头表(1000行,40个特性),具有浮点值。在

import pandas as pdfrom sklearn import neighbors
from sklearn_pandas import DataFrameMapper, cross_val_score
path_train ="../kaggle/scikitlearn/train.csv"
path_labels ="../kaggle/scikitlearn/trainLabels.csv"
path_test = "../kaggle/scikitlearn/test.csv"

train = pd.read_csv(path_train, header=None)
labels = pd.read_csv(path_labels, header=None)
test = pd.read_csv(path_test, header=None)
mapper_train = DataFrameMapper([(list(train.columns),neighbors.KNeighborsClassifier(n_neighbors=3))])
mapper_train

输出:

^{pr2}$

到目前为止还不错。但我试着合身

mapper_train.fit_transform(train, labels)

输出:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-e3897d6db1b5> in <module>()
----> 1 mapper_train.fit_transform(train, labels)

//anaconda/lib/python2.7/site-packages/sklearn/base.pyc in fit_transform(self, X, y,     **fit_params)
    409         else:
    410             # fit method of arity 2 (supervised transformation)
--> 411             return self.fit(X, y, **fit_params).transform(X)
    412 
    413 

//anaconda/lib/python2.7/site-packages/sklearn_pandas/__init__.pyc in fit(self, X, y)
    116         for columns, transformer in self.features:
    117             if transformer is not None:
--> 118                 transformer.fit(self._get_col_subset(X, columns))
    119         return self
    120 

TypeError: fit() takes exactly 3 arguments (2 given)`

我做错什么了?虽然本例中的数据都是相同的,但我计划为分类、标称和浮点特性建立一个工作流程,sklearn_pandas似乎符合逻辑。在


Tags: csvpathintestimportselfnonepandas
1条回答
网友
1楼 · 发布于 2024-05-16 03:55:40

由于sklearn_pandas当前不支持接受带有标签的y向量的估计器,您只需使用它将所有特征转换为Numpy矩阵,然后在单独的步骤中使用KNeighborsClassifier。在

更新2015-08-10-sklearn_pandasDataFrameMapper不打算用作转换+模型拟合的管道,而仅用于选择性地转换列。如果您想转换然后估计一个模型,第一步使用一个普通的sklearnPipeline,并将其作为第一步。在

相关问题 更多 >