我有一个如下所示的样本数据框。我希望使用X=df.filter(regex='x_')
构建一个基准模型来预测y_combined
:
df = pd.DataFrame({ 'x_1':[0.1,0.2,0.1,0], 'x_2':[0.5,0.1,0.3,0.4], 'x_3':[0.2,0.1,0.6,0.1], 'x_4':[0,0.5,0.2,0.3], 'y_1': [0, 1, 1, 0], 'y_2': [0, 0, 1, 0], 'y_3': [0, 1, 0, 1], 'y_combined': [np.array([0, 0, 0]), np.array([1, 0, 1]), np.array([1, 1, 0]), np.array([0, 0, 1])]})
我对构建基准模型还不太熟悉。为了获得y_predicted
,我应该如何指定DummyClassifer()
模型并使用strategy="constant"
?或者应该使用其他策略吗?
例如,如果y_predicted = [1,1,1]
,那么我将通过获取y_combined
和y_predicted
之间的平均质心来查看预测模型的表现如何。
回答:
在你希望使用strategy='constant'
设置的DummyClassifier
来构建一个多标签分类问题的基准模型的前提下,我将回答你的问题,其中输出等于df
的y_combined
。在这种情况下,以下代码将有效:
from sklearn.dummy import DummyClassifierimport numpy as npimport pandas as pdX = pd.DataFrame({ 'x_1': [0.1,0.2,0.1,0], 'x_2': [0.5,0.1,0.3,0.4], 'x_3': [0.2,0.1,0.6,0.1], 'x_4': [0,0.5,0.2,0.3]})y = np.array([[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 0, 1]])clf = DummyClassifier(strategy='constant', constant=np.array([1, 1, 1]))clf.fit(X, y)
请注意,当你使用strategy='constant'
时,你还必须通过DummyClassifier
的constant=...
参数声明应该预测的常数值。你会发现基准模型现在将始终预测指定的常数值,无论输入如何:
y_pred = clf.predict(X)print(y_pred)# output[[1 1 1] [1 1 1] [1 1 1] [1 1 1]]
由于你还询问了其他策略,你基本上可以选择DummyClassifier
文档中提到的任何策略。所有策略都有一个共同的行为,如用户指南中所述:
请注意,使用所有这些策略时,预测方法完全忽略输入数据!