Python 如何利用skLearn建立多值预测Y的基线模型

Python 如何利用skLearn建立多值预测Y的基线模型,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我有一个示例数据框,如下所示。我想建立一个基线模型,使用X=df.filter(regex='X')预测y\u组合: 我不熟悉基线模型构建。要获得y\u predicted,我应该如何使用strategy=“constant”指定DummyClassifer()模型?还是我应该使用不同的策略 例如,如果y\u predicted=[1,1,1],然后,我将通过获得y\u combined和y\u predicted之间的平均质心来了解预测模型的性能。我将回答您的问题,前提是您希望使用strat

我有一个示例数据框,如下所示。我想建立一个基线模型,使用
X=df.filter(regex='X')
预测
y\u组合

我不熟悉基线模型构建。要获得
y\u predicted
,我应该如何使用
strategy=“constant”
指定DummyClassifer()模型?还是我应该使用不同的策略


例如,如果
y\u predicted=[1,1,1]
,然后,我将通过获得
y\u combined
y\u predicted
之间的平均质心来了解预测模型的性能。我将回答您的问题,前提是您希望使用
strategy='constant'
设置为多标签分类问题构建基线模型,其中输出等于
df
y\u组合
。在这种情况下,以下代码将起作用:

从sklearn.dummy导入DummyClassifier
将numpy作为np导入
作为pd进口熊猫
X=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.数组([[0,0,0],[1,0,1],[1,1,0],[0,0,1]]
clf=DummyClassifier(strategy='constant',constant=np.array([1,1,1]))
clf.配合(X,y)
请注意,当您使用
strategy='constant'
时,还必须说明应通过
DummyClassifier的
constant=…
参数预测的常量值。您将看到,无论输入是什么,基线模型现在总是预测指定的常量值:

y_pred=clf.predict(X)
打印(y_pred)
#输出
[[1 1 1]
[1 1 1]
[1 1 1]
[1 1 1]]
由于您还询问了其他策略,您基本上可以选择的文档中提到的任何策略。如《用户指南》中所述,它们都有一个共同的行为:

注意,对于所有这些策略,预测方法完全忽略了输入数据


非常感谢!因为我的实际数据有48个Y列,所以我设置了常量=np.full(shape=48,fill_value=1,dtype=np.int),但是,这给了我一个错误“常量目标值应该有shape(1,1)。”设置常量的方式没有问题。错误消息显示了数组的形状与目标值相同(
y
在本例中)是
(1,1)
,与常量值不同,常量值显然具有
(48,)
。您必须将数组的形状与目标值和常量的形状对齐。然后它将工作。
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])]
})