【问题标题】:how to fit one hot encoded class in scitkit model如何在 scikit 模型中拟合一个热编码类
【发布时间】:2019-09-15 17:51:45
【问题描述】:

我正在尝试使用 scikit 学习逻辑回归对多类数据进行分类。我使用一个热编码器对课程进行了编码。但是当我尝试同样的方法时,我得到了错误的输入形状错误。是否可以在 sklearn 逻辑回归中使用一个热编码值?

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]”

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    如果您的问题是多类问题,则不要使用 one-hot 编码形式。 Scikit-learn 能够自行处理二进制和多类标签,无需用户进行任何预处理。所以就这样做吧:

    clf = LogisticRegression().fit(X,y)
    

    标签的 one-hot 编码向量在 scikit-learn 中具有不同的含义。它被解释为一个标签-指示矩阵,它开启了多标签(其中多个标签可以作为目标,例如电影类型预测)而不是多类。

    【讨论】:

    • 但是这些类是不相关的,因此我想使用 OneHotEncoder 而不是 LabelEncoder。默认识别是考虑类无关还是使用 LabelEncoder ?
    • @Udhaikumar 是的。类是独立的。对于大多数模型,scikit-learn 在内部将多类问题转换为多个二进制文件,因此它们是独立的。有关更多信息,请参阅此内容:- scikit-learn.org/stable/modules/multiclass.html
    猜你喜欢
    • 2016-05-08
    • 2019-10-08
    • 2021-06-09
    • 1970-01-01
    • 2021-05-09
    • 2015-12-01
    • 1970-01-01
    • 2021-09-26
    • 2019-12-03
    相关资源
    最近更新 更多