我正在尝试使用scikit学习逻辑回归对多类数据进行分类。我使用一个热编码器对该类进行了编码。但是,当我尝试使用相同的方法时,输入形状错误。可以在sklearn logistic回归中使用一个热编码值吗?
from sklearn.preprocessing import OneHotEncoder
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
onehot_encoder = OneHotEncoder(sparse=False)
y = np.array(y)
ok = onehot_encoder.fit_transform(y.reshape(len(y),1))
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(df2["order_description"])
LogisticRegression().fit(X,ok)
输入: Y-“ [0,0,1,0]”
答案 0 :(得分:1)
如果您的问题是多类的,则不要使用单热编码形式。 Scikit-learn能够自行处理二进制和多类标签,而无需用户进行任何预处理。所以只要这样做:
clf = LogisticRegression().fit(X,y)
在scikit-learn中,标签的一键编码矢量具有不同的含义。它被解释为标签指示器矩阵,该矩阵打开了多标签(可以定位多个标签,例如电影流派预测),而不是多类。