我正在训练一个模型,根据一些数据预测真或假。在训练和测试模型时,我从特征列表中删除了产品编号。
X = df.drop(columns = 'Product Number', axis = 1)y = df['result']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)SVC = LinearSVC(max_iter = 1200)SVC.fit(X_train, y_train)y_pred = SVC.predict(X_test)
有没有办法让我恢复通过或未通过项目的产品编号及其特征?我如何获取/关联y_pred的结果与对应的产品编号?
我还计划使用交叉验证,这样数据会被打乱,仍然有办法恢复每个测试项目的产品编号吗?
回答:
我意识到我使用交叉验证只是为了评估模型的性能,所以我决定不打乱数据,直接运行代码,看看每个数据点的效果。
编辑: 对于不使用交叉验证的评估,我只在将数据传递给分类器时才删除不相关的列,如下所示:
cols = ['id', 'label']X = train_data.copy()y = train_data['label']X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=2)knn = make_pipeline(StandardScaler(),KNeighborsClassifier(n_neighbors=10))y_val_pred = knn.fit(X_train.drop(columns=cols), y_train).predict(X_val.drop(columns=cols))X_val['y_val_pred'] = y_val_pred
预测后我将y_val_pred
加入,以便检查哪些数据点被错误分类。