我正在尝试通过进行聚类来改进分类结果,并将聚类数据用作另一个功能(或者单独使用它而不是所有其他功能-还不确定)
假设我使用的是无监督算法-GMM:
gmm = GaussianMixture(n_components=4, random_state=RSEED)
gmm.fit(X_train)
pred_labels = gmm.predict(X_test)
利用训练数据对模型进行训练,并利用测试数据对聚类进行预测
现在我想使用一个分类器(例如KNN)并使用其中的集群数据。所以我试着:
#define the model and parameters
knn = KNeighborsClassifier()
parameters = {'n_neighbors':[3,5,7],
'leaf_size':[1,3,5],
'algorithm':['auto', 'kd_tree'],
'n_jobs':[-1]}
#Fit the model
model_gmm_knn = GridSearchCV(knn, param_grid=parameters)
model_gmm_knn.fit(pred_labels.reshape(-1, 1),Y_train)
model_gmm_knn.best_params_
但我得到了:
ValueError: Found input variables with inconsistent numbers of samples: [418, 891]
列车和试验的尺寸不相同。 那么,我如何实施这种方法呢
您的方法不正确-您正试图将测试数据
pred_labels
的群集标签用作单一功能,以便将分类器与您的培训标签Y_train
相匹配。即使在这些数据集的维度相同的巨大巧合情况下(因此,这里没有给出维度不匹配错误),这在概念上是错误的,实际上没有任何意义你真正想做的是:
总之,假设您的
X_train
和X_test
是数据帧,以下是过程:请注意,您应该而不是将您的集群模型与您的测试数据相匹配-仅与您的培训数据相匹配,否则您会出现类似于using the test set for feature selection时遇到的数据泄漏,并且您的结果将是无效和误导的
相关问题 更多 >
编程相关推荐