吴恩达 房价预测 python
时间: 2023-10-29 17:08:01 浏览: 82
利用多元线性回归模型可以预测房价。在这个问题中,我们收集了最近售出的房屋的数据,包括房子的大小(以平方英尺为单位),卧室数量和房价。为了使数据具有可比性,我们需要对所有的训练数据进行归一化处理。使用不同的学习率(alpha)值,在运行梯度下降算法时,会得到不同的效果。在这个任务中,我们设置了四个不同的alpha值[0.01, 0.03, 0.1, 0.3],并计算了在迭代50次的情况下,代价值的变化情况,并绘制了相应的图表进行展示。
以下是使用Python进行房价预测的示例代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
path_file = "../code/ex1-linear regression/ex1data2.txt"
data = pd.read_csv(path_file, names=['Size', 'Bedrooms', 'Price'])
data.head()
# 归一化处理
data = (data - data.mean()) / data.std()
# 添加一列偏置项
data.insert(0, 'Ones', 1)
# 初始化特征矩阵X和目标变量y
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
# 将特征矩阵X和目标变量y转换为数组
X = np.array(X.values)
y = np.array(y.values)
# 初始化参数theta
theta = np.zeros(X.shape)
# 定义代价函数
def cost_function(X, y, theta):
inner = np.power(((X @ theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))
# 定义梯度下降函数
def gradient_descent(X, y, theta, alpha, iters):
temp = np.zeros(theta.shape)
parameters = theta.size
cost = np.zeros(iters)
for i in range(iters):
error = (X @ theta.T) - y
for j in range(parameters):
term = np.multiply(error, X[:, j])
temp[j] = theta[j] - ((alpha / len(X)) * np.sum(term))
theta = temp
cost[i] = cost_function(X, y, theta)
return theta, cost
# 设置学习率和迭代次数
alpha_values = [0.01, 0.03, 0.1, 0.3]
iters = 50
# 初始化参数theta和代价值cost
thetas = []
costs = []
# 每个学习率下运行梯度下降算法,并记录参数theta和代价值cost的变化
for alpha in alpha_values:
theta_initial = np.zeros(X.shape)
theta_final, cost_values = gradient_descent(X, y, theta_initial, alpha, iters)
thetas.append(theta_final)
costs.append(cost_values)
# 绘制代价值的变化情况
plt.figure(figsize=(10, 6))
for i in range(len(alpha_values)):
plt.plot(range(iters), costs[i], label=f"alpha = {alpha_values[i]}")
plt.xlabel("Iterations")
plt.ylabel("Cost")
plt.title("Cost vs. Iterations")
plt.legend()
plt.show()
阅读全文