OneVsOneClassifier因pandas DataFrame而失败

时间:2016-04-04 15:10:28

标签: python numpy pandas scikit-learn

我一直在使用pandas DataFrame和scikit-learn模型。在内部,pandas DataFrame透明地转换为numpy ndarray(例如LogisticRegression,SVC,MultinomialNB等)。 但是,当给定pandas DataFrame时,sklearn.multiclass.OneVsOneClassifier会失败,而在给定numpy ndarray时它会正常运行。
这可以使用此代码重现。

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsOneClassifier

df = pd.DataFrame({'a': range(15), 'b': range(20, 35)})
labels = pd.Series(['a', 'b', 'c'] * 5)

clf = OneVsOneClassifier(LogisticRegression())
# clf = LogisticRegression()   # This works file

clf.fit(df, labels)

有人可以确认这是不是一个错误?
如果没有指向我解释的文档。

其他信息:

我在函数_fit_ovo_binary

的最后一行跟踪了sklearn / multiclass.py的根本原因。
return _fit_binary(estimator, X[ind[cond]], y_binary, classes=[i, j])

这里假设X是numpy ndarray(实际上是pandas DataFrame)并尝试使用整数索引。这导致例外。

0 个答案:

没有答案