在拟合决策树后,我想进行一些预测。
-
如何使此输出预测数组更易读?如您所见,输出对应于特征的输入值,但如何在值上方显示相应的名称?例如,第一个值是
0.28945
,对应于名为time_ms
的列,但由于我有多个列,我无法区分所有这些。如何在输入值上方显示名称? -
这些输入值返回一个分类到
[1]
,对应于值“yes”。如何替换它以显示yes
而不是1
? -
最后,当有多个特征而不是像Iris数据库中的两个特征(花瓣长度、宽度)时,像这样进行预测是否有用(或是最佳方式)?
clf_dt_grid = grid_search_cv.fit(X_train, y_train)y_pred_grid = grid_search_cv.predict(X_test)#训练集上的预测yhat= clf_dt_grid.predict(X_train)acc = accuracy_score(y_train,yhat)print(f'训练预测准确率 : {acc}%')#新的预测输入new_input = [[0.28945,6593,0,178,2,154.5,True,6593.0,4.0,0,1,2.0,0.00,862.0,0.21,524103.0,2]]new_output = clf_dt_grid.predict(new_input)print(new_input,new_output)>>> [[0.28945, 6593, 0, 178, 2, 154.5, True, 6593.0, 4.0, 0, 1, 2.0, 0.0, 862.0, 0.21, 524103.0, 2]] [1]
回答:
您可以将训练/测试数据放入pandas数据框中,这样一切都会更易读。
例如,列出列名,然后像这样使用数据框构造函数:
col_names = ['time_ms', 'col2', 'col3',..., 'colN']train_df = pd.DataFrame(columns=col_names, data=X_train)test_df = pd.DataFrame(columns=col_names, data=X_test)
然后,对于您的新预测,您可以以相同的方式在数据框中构建它(例如,称为new_input
),然后调用预测:
new_output = clf_dt_grid.predict(new_input.iloc[0].values) # 只获取第一行的值print(new_input.iloc[0], new_output)