错误:未知标签类型:'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:未知标签类型:RandomForestClassifier 中的“未知”
伯努利朴素贝叶斯错误:ValueError:未知标签类型:(array([0, 0, 0, ..., 0, 0, 0], dtype=object),)
错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”