版权声明:转载请联系作者,获得允许后,添加链接及作者到页首 https://blog.csdn.net/weixin_40683253/article/details/82734698
数据建模的目的就是获得从自变量映射到因变量的函数,在建模的探索过程中,不同的方式总会得出不同的函数模型,而这些函数大多是由一些参数构成的,比如 y = f( x; w0, w1, w2, w3, ...)。
平方损失函数
为了选择在某种方式下最好的参数值( w0, w1, w2, w3, ...的值),这个衡量方法一般是比较原始数据与模型的预测数据之间的平方差,平方差定义为:
[(y(原始)-y(预测))**2 ] / N = [(y(原始)- f( x; w0, w1, w2, w3, ...))**2 ] / N
这个数值越小,说明模型的预测值越接近原始值,也就代表模型越好。上述表达式也称为平方损失函数。
绝对损失函数
平方损失是非常常见的选择,其他的损失函数比较适合回归,比如另一个常见的是绝对损失函数。
| y(原始)-y(预测)| / N = | y(原始)- f( x; w0, w1, w2, w3, ...)| / N
准确率
用准确率判断模型好坏比较适合分类问题,即因变量是固定的几个值,比如自变量是0或1的二分类问题。准确率就是看模型分类的结果与原始数据中的分类结果相同的占比。
准确率 = S(模型与原始数据的分类结果一致) / S(该分类下的所有数据量)
下面是python代码示例:
y32 = lr.predict(x3)#用检验集x3的数据通过模型进行预测,结果储存在变量y32中。
print(u'模型的平均准确率(检验集)为:%s'% lr.score(x3, y3))
print(u'模型的平均准确率(检验集,y=0)为:%s'% (sum(y32[i] == 0 for i,v in enumerate(y3) if v == 0) / sum(1 for i,v in enumerate(y3) if v == 0)))
print(u'模型的平均准确率(检验集,y=1)为:%s'% (sum(y32[i] == 1 for i,v in enumerate(y3) if v == 1) / sum(1 for i,v in enumerate(y3) if v == 1)))