1

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

出力:

DataFrameMapper(features=[([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
       n_neighbors=3, p=2, weights='uniform'))])

ここまでは順調ですね。しかし、私はフィット感を試します

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 は論理的に適合しているように見えました。

4

1 に答える 1

1

sklearn_pandasは現在、ラベル付きのベクトルを受け入れるエスティメーターをサポートしていないため、すべての機能を Numpy マトリックスに変換してから、別のステップでyを使用するためにのみ使用する必要があります。KNeighborsClassifier

UPDATE 2015-08-10 -sklearn_pandas DataFrameMapper変換 + モデル フィッティングのパイプラインとして使用することは意図されていませんが、列を選択的に変換するためだけに使用されます。変換してからモデルを推定する場合は、sklearn Pipeline最初のステップとしてデータフレーム マッパーでプレーンを使用します。

于 2015-03-05T11:08:54.257 に答える