python已知人口,平均收入,盈利情况,使用梯度下降法预测人口为320万、人均收入为25万元是否盈利代码
时间: 2023-06-11 16:06:29 浏览: 119
基于Python的梯度下降法实现
以下是一个简单的 Python 代码示例,使用梯度下降法预测人口为320万、人均收入为25万元是否盈利:
```
import numpy as np
# 定义代价函数
def costFunction(X, y, theta):
m = len(y)
J = np.sum((X.dot(theta) - y) ** 2) / (2 * m)
return J
# 定义梯度下降函数
def gradientDescent(X, y, theta, alpha, num_iters):
m = len(y)
J_history = np.zeros((num_iters, 1))
for iter in range(num_iters):
h = X.dot(theta)
theta = theta - alpha * (1 / m) * (X.T.dot(h - y))
J_history[iter] = costFunction(X, y, theta)
return theta, J_history
# 输入训练集数据
data = np.loadtxt('data.txt', delimiter=',')
X = data[:, :-1]
y = data[:, -1]
m = len(y)
# 特征归一化
X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
# 添加一列偏置项
X = np.hstack((np.ones((m, 1)), X))
# 初始化模型参数
theta = np.zeros((3, 1))
# 设置学习率和迭代次数
alpha = 0.01
num_iters = 1000
# 运行梯度下降算法
theta, J_history = gradientDescent(X, y, theta, alpha, num_iters)
# 预测人口为320万、人均收入为25万元的情况是否盈利
x_pred = np.array([1, 320, 25])
x_pred = (x_pred - np.mean(X[:, 1:], axis=0)) / np.std(X[:, 1:], axis=0)
y_pred = x_pred.dot(theta)
if y_pred > 0:
print('盈利')
else:
print('亏损')
```
其中,`data.txt` 是包含训练集数据的文件,每一行包含人口、人均收入和是否盈利三个数据,用逗号分隔。`costFunction` 函数计算代价函数,`gradientDescent` 函数运行梯度下降算法,最后利用训练好的模型参数预测人口为320万、人均收入为25万元的情况是否盈利。
阅读全文