<p>如果要将相同的数据结构(类型和形状)传递给分类器的<code>fit</code>方法和<code>predict</code>方法,则有点不清楚。随机森林需要很长时间才能运行大量的功能,因此建议减少链接到的帖子中的维度。</p>
<p>您应该将SVD应用于训练和测试数据,以便分类器在与您希望预测的数据相同的形状输入上进行训练。检查输入是否匹配,预测方法的输入具有相同数量的特征,并且都是数组而不是稀疏矩阵。</p>
<p><strong>更新示例:</strong>
<strong>更新为使用数据帧</strong></p>
<pre><code>from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vect= TfidfVectorizer( use_idf=True, smooth_idf=True, sublinear_tf=False)
from sklearn.cross_validation import train_test_split
df= pd.DataFrame({'text':['cat on the','angel eyes has','blue red angel','one two blue','blue whales eat','hot tin roof','angel eyes has','have a cat']\
,'class': [0,0,0,1,1,1,0,3]})
X = tfidf_vect.fit_transform(df['text'].values)
y = df['class'].values
from sklearn.decomposition.truncated_svd import TruncatedSVD
pca = TruncatedSVD(n_components=2)
X_reduced_train = pca.fit_transform(X)
a_train, a_test, b_train, b_test = train_test_split(X, y, test_size=0.33, random_state=42)
from sklearn.ensemble import RandomForestClassifier
classifier=RandomForestClassifier(n_estimators=10)
classifier.fit(a_train.toarray(), b_train)
prediction = classifier.predict(a_test.toarray())
</code></pre>
<p>注意SVD发生在分割成训练集和测试集之前,因此传递给predictor的数组与调用<code>fit</code>方法的数组具有相同的<code>n</code>。</p>