热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python怎么算l2范数_回归模型中成本函数的L1范数代替L2范数

你可以用压缩。最小化功能。你必须设置你想要最小化的函数(在我们的例子中,一个平面的形式是ZaXbYc)和误差函数(L1范数),然后用一些起始值运行最小值

你可以用压缩。最小化功能。你必须设置你想要最小化的函数(在我们的例子中,一个平面的形式是Z=aX+bY+c)和误差函数(L1范数),然后用一些起始值运行最小值。在import numpy as np

import scipy.linalg

from scipy.optimize import minimize

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

def fit(X, params):

# 3d Plane Z = aX + bY + c

return X.dot(params[:2]) + params[2]

def cost_function(params, X, y):

# L1- norm

return np.sum(np.abs(y - fit(X, params)))

我们生成3d点

^{pr2}$

最后我们运行最小值output = minimize(cost_function, [0.5,0.5,0.5], args=(np.c_[data[:,0], data[:,1]], data[:, 2]))

y_hat = fit(np.c_[data[:,0], data[:,1]], output.x)

X,Y = np.meshgrid(np.arange(min(data[:,0]), max(data[:,0]), 0.5), np.arange(min(data[:,1]), max(data[:,1]), 0.5))

XX = X.flatten()

YY = Y.flatten()

# # evaluate it on grid

Z = output.x[0]*X + output.x[1]*Y + output.x[2]

fig = plt.figure(figsize=(10,10))

ax = fig.gca(projection='3d')

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.2)

ax.scatter(data[:,0], data[:,1], data[:,2], c='r')

plt.show()

注意:我使用了前面的响应代码和来自github的code作为开始



推荐阅读
author-avatar
Cockroach小小强
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有