scikit中的预测和评分如何工作学习

时间:2018-08-05 03:57:38

标签: python machine-learning scikit-learn linear-regression

我正在尝试使用线性回归基于一组输入来预测输出:

type A = 'one' | 'two' | 'three';

type Distribute<U> = U extends any ? {type: U} : never;

type B = Distribute<A>;

/*
type B = {
    type: "one";
} | {
    type: "two";
} | {
    type: "three";
}
*/

我已经传递了X值作为输入,并期望y作为输出

它将分数显示为负值,预计输出为[[0.9694444444444441]],我希望该分数为1。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

线性回归尝试使用最佳超平面使均方误差最小化。大多数数据(包括您的数据)不是完全线性的,因此预测将不是完美的。但是,给定线性约束,它们将具有尽可能低的误差。在您的示例中,0.97和1.00之间相差不大。

请考虑以下以较小数量维进行的线性回归,以使可视化更加容易。回归所做的只是选择最适合数据的。这并不意味着它贯穿了每一点。当您使用那条线进行预测时,它会稍微偏离一点。 Linear Regression

负分数(直接来自文档)仅意味着该模型的性能比您仅预测数据的平均值要差。模型的表现可能会很差。在您的情况下,由于线性回归能够学习这样的常数模型,因此这表明对训练集过度拟合(可能是由于样本量较小)。如果您对火车数据进行了评分,则应该得到一个非否定的答案,并且可能是肯定的。

更仔细地检查模型,您会发现,由于类不平衡现象严重,预测的真实值是1相对较近(1几乎是其他所有值的两倍)。 2的情况稍差一些,而3的预测则很糟糕。线性模型在艰难的时期内很难停留在点云其余部分中间的几个点上,而从1和2跃升至3。