import numpy as np
import matplotlib.pyplot as plt
#加载数据
def loaddata():
data = np.loadtxt('data/data1.txt',delimiter=',')
n = data.shape[1] - 1 #特征数
X = data[:,0:n]
y = data[:,-1].reshape(-1,1)
return X,y
#特征归一化
def featureNormalize(X):
mu = np.average(X,axis=0)
sigma = np.std(X,axis=0,ddof=1)
X = (X - mu) / sigma
return X,mu,sigma
#LASSO回归核心代码
def lasso_regression(X,y,iterations,lambd=0.2):
m,n = X.shape
theta = np.matrix(np.zeros((n,1)))
for it in range(iterations):
for k in range(n): #n个特征
#计算常量值s_k和p_k
z_k = np.sum(X[:,k]**2)
p_k = 0
for i in range(m):
p_k += X[i,k]*(y[i,0] - np.sum([X[i,j]*the