我正在使用 sklearn
进行分类任务。我希望使用名为“train”的表中的数据来训练模型,并使用名为“test”的不同表中的数据进行测试。这两个表具有完全相同的特征,但行数不同。我有以下代码,但遇到了错误: (<class 'ValueError'>, ValueError('Found input variables with inconsistent numbers of samples: [123, 174]',), <traceback object at 0x0000016476E10C48>).
我做错了什么?
get_train_data = 'select * from train;' get_test_data = 'select * from test;'df_train = pd.read_sql_query(get_train_data, con=connection) df_test = pd.read_sql_query(get_test_data, con=connection)X = df_train[:, 2:30]Y = df_test[:, :30]X_train, X_test, Y_train, Y_test = train_test_split(X, Y)model.fit(X_train, Y_train)predictions = model.predict(X_test)split_mat=confusion_matrix(Y_test, predictions)
回答:
如果你想用数据框 df_train
进行训练,并用数据框 df_test
进行测试,为什么要取 df_train
的特征和 df_test
的目标列,并将它们传递给 train_test_split
函数呢?
你可以简单地这样做:
get_train_data = 'select * from train;' get_test_data = 'select * from test;'df_train = pd.read_sql_query(get_train_data, con=connection) df_test = pd.read_sql_query(get_test_data, con=connection)X_train = df_train[:, 2:30]y_train = df_train.y # 假设 df_train 中的目标变量名为 yX_test = df_test[:, i:j] # 将 i 到 j 改为允许你取与 X_train 相同列的数字y_test = df_test.y # 假设 df_test 中的目标变量名为 ymodel.fit(X_train, y_train)predictions = model.predict(X_test)# 对预测结果做一些处理,例如mean(predictions == y_test)