错误:未知标签类型:'unknown'....y_train 值与 x_train 值不一致

Posted

技术标签:

【中文标题】错误:未知标签类型:\'unknown\'....y_train 值与 x_train 值不一致【英文标题】:Error: Unknown label type: 'unknown'....y_train values doesn't coincide with x_train values错误:未知标签类型:'unknown'....y_train 值与 x_train 值不一致 【发布时间】:2019-09-24 19:08:48 【问题描述】:

我有这个代码序列

from sklearn.feature_extraction.text import TfidfVectorizer
tfidfconverter = TfidfVectorizer(max_features=900, min_df=5, max_df=0.7, stop_words='english')
X = tfidfconverter.fit_transform(nlistRawDocs)

注意顶部:max_features 为 900

from sklearn.model_selection import train_test_split
X_train_S, X_test, y_train_S, y_test = train_test_split(X, trainDF['label'], test_size=0.2, random_state=0)

chi2 = SelectKBest(score_func=chi2, k=500)
X_train = chi2.fit_transform(X_train_S, y_train_S)

这里 k=500

我的想法只是在 900 个 tf-idf 结果中仅使用前 500 个选定的最佳特征

现在问题出在 y_train_S 的值上,我相信它与 X_train 中的元素数量不一致

那我该怎么做呢?

当这是喂给

classifier = RandomForestClassifier(n_estimators=1000, random_state=0)  
classifier.fit(X_train, y_train_S)  

它返回一个错误:

未知标签类型:'未知'

我知道X_train和y_train与其编号不一致只是我不知道要获取y_train_S的更新值吗?

【问题讨论】:

您能否edit 您的问题并使用代码块(“”按钮)格式化代码?这将使您的问题更具可读性。 当你classifier.fit(X_train, y_train_S)时会发生什么 它返回一个错误:未知标签类型:'unknown'....我相信这是 X_train 的结果与 y_train_S 的目标标签数不对应 唯一的问题是如何在 selectkbest 之后获得 y_train_S 的更新值 打印来自y_train_S 的示例。它有什么样的价值观? 【参考方案1】:

通过 SelectKBest 放入 X_train_S 数据会将 列数 从 900 减少到 500,但不会影响数据中的 行数,因此它不应导致 y_train_S 和 X_train 中元素数量不匹配的问题。

您看到的错误很可能是由this 引起的。

【讨论】:

我发现了问题,在 selectkbest X_train 变为 (1598,500) 之后,TF-IDF 之后的 X_train 值是 (1598, 900) 现在问题我怎样才能使 X_train 值像这样 (1598, 500),第二个值应该取决于selectkbest的K值 这是喂给雨林后的新错误模型的特征数必须与输入相匹配。模型 n_features 为 500,输入 n_features 为 900,但我尝试这样做 nfeatures = 500, X_train.reshape(1598, nfeatures) 但仍然不起作用 如果在训练模型之前先使用 TF-IDF 然后 SelectKBest,则需要在管道中对任何新数据执行此确切过程。例如,X_900d_vectors = tfidfconverter.transform(new_text),然后是 X_500d_vectors = chi2.transform(X_900d_vectors)。最后,predictions = classifier.predict(X_500d_vectors) 实际上它遵循过程 tfidf 然后 selectkbest 但我的问题是目标标签如何根据您的示例 X_500d_vectors = chi2.transform(X_900d_vectors) 获得更新的标签,我将如何提取这个标签X_500d_vectors, s 我可以将它分配给 y_train 变量

以上是关于错误:未知标签类型:'unknown'....y_train 值与 x_train 值不一致的主要内容,如果未能解决你的问题,请参考以下文章

当 Sklearn 朴素贝叶斯与浮点数一起使用时出现未知标签类型错误

ValueError:未知标签类型:“未知”-标签是数字

ValueError:未知标签类型:RandomForestClassifier 中的“未知”

伯努利朴素贝叶斯错误:ValueError:未知标签类型:(array([0, 0, 0, ..., 0, 0, 0], dtype=object),)

错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”

Unknown tag (c:forEach) 未知的标签