我有这个代码序列
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
我的想法是仅使用tf-idf结果的900个中的前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的更新值吗?
答案 0 :(得分:-1)
通过SelectKBest放置X_train_S数据会将列的数量从900个减少到500个,但不会影响数据中行的数量,因此不应引起y_train_S和X_train中的元素数量不匹配的问题。
您看到的错误很可能是由this引起的。