单变量线性回归python
时间: 2023-11-18 14:03:26 浏览: 119
单变量线性回归是一种用于预测数值型输出的机器学习算法。在Python中,可以使用NumPy库来实现单变量线性回归。
以下是实现单变量线性回归的步骤:
1. 导入NumPy库和matplotlib库(用于可视化)。
2. 读取数据集并将其存储在NumPy数组中。
3. 可以使用散点图来可视化数据集,以便更好地理解数据。
4. 初始化参数theta。
5. 定义代价函数computeCost,用于计算当前参数theta下的代价。
6. 定义梯度下降函数gradientDescent,用于更新参数theta。
7. 调用gradientDescent函数来更新参数theta,并计算代价。
8. 可以使用直线图来可视化拟合的线性模型。
以下是一个简单的单变量线性回归的Python代码示例:
```
import numpy as np
import matplotlib.pyplot as plt
# 读取数据集
data = np.loadtxt('data.txt', delimiter=',')
# 可视化数据集
plt.scatter(data[:, 0], data[:, 1], marker='x')
plt.xlabel('Population of City in 10,000s')
plt.ylabel('Profit in $10,000s')
plt.show()
# 初始化参数theta
theta = np.zeros([2, 1])
# 定义代价函数
def computeCost(X, y, theta):
m = len(y)
J = 0
h = X.dot(theta)
J = 1/(2*m)*np.sum(np.square(h-y))
return J
# 定义梯度下降函数
def gradientDescent(X, y, theta, alpha, num_iters):
m = len(y)
J_history = np.zeros([num_iters, 1])
for i in range(num_iters):
h = X.dot(theta)
theta = theta - alpha*(1/m)*(X.T.dot(h-y))
J_history[i] = computeCost(X, y, theta)
return theta, J_history
# 添加一列全为1的特征
X = np.hstack((np.ones([len(data), 1]), data[:, 0].reshape(-1, 1)))
y = data[:, 1].reshape(-1, 1)
# 运行梯度下降算法
theta, J_history = gradientDescent(X, y, theta, 0.01, 1500)
# 可视化拟合的线性模型
plt.scatter(data[:, 0], data[:, 1], marker='x')
plt.plot(data[:, 0], X.dot(theta), color='r')
plt.xlabel('Population of City in 10,000s')
plt.ylabel('Profit in $10,000s')
plt.show()
```
阅读全文