项目场景:
在进行机器学习代码练习时,出现了<function regularized_cost at 0x000001E9244B5A60>报错
问题描述
print 输出 regularized_cost 函数内存地址,而不是函数返回值
原因分析:
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat
from scipy.optimize import minimize
data = loadmat('ex5data1.mat')
# 训练集
X_train, y_train = data['X'], data['y'] # (12,1) (12,1)
# 测试集
X_test, y_test = data['Xtest'], data['ytest'] # (21,1) (21,1)
# 验证集
X_val, y_val = data['Xval'], data['yval'] # (21,1) (21,1)
X_train = np.insert(X_train, 0, 1, axis=1) # (12,2) (12,1)
X_test = np.insert(X_test, 0, 1, axis=1) # (21,2) (21,1)
X_val = np.insert(X_val, 0, 1, axis=1) # (21,2) (21,1)
def regularized_cost(theta, X, y, lamda):
'''
# X:m*n (12,1)
Y:n*1--n y需要是一维数组 (12,)
theta:n 维度是训练集x的维度(n,)
'''
first = np.sum(np.power((X @ theta - y.flatten()), 2))
# thrta第一项不参与正则化
reg = theta[1:] @ theta[1:] * lamda
reg_cost = (first + reg) / (2 * len(X))
return reg_cost
theta = np.ones(X_train.shape[1])
lamda = 1
# 输出 regularized_cost 函数内存地址
regularized_cost(theta, X_train, y_train, lamda)
print('regularized_cost', regularized_cost)
我使用的是vscode 环境,而参考代码是pycharm平台,vacode 与pycharm语法规则不同
解决方案:
reg_cost = regularized_cost(theta, X_train, y_train, lamda)
print('reg_cost', reg_cost)