我一直在使用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
return _fit_binary(estimator, X[ind[cond]], y_binary, classes=[i, j])
这里假设X
是numpy ndarray(实际上是pandas DataFrame)并尝试使用整数索引。这导致例外。