—— 其中

### 0.引入依赖
import numpy as np
import matplotlib.pyplot as plt

### 1.导入数据

points = np.genfromtxt(‘data.csv’,delimiter=’,’)

x = points[:, 0]
y = points[:, 1]

## 用plt画出散点图

plt.scatter(x, y)
plt.show()

### 2.定义损失函数

## 损失函数是系数的函数，另外还要传入数据的x，y

def compute_cost(w, b, points):
total_cost = 0
M = len(points)

```#逐点计算平方损失，然后计算平均值
for i in range(M):
x = points\[i, 0\]
y = points\[i, 1\]```

total_cost += (y – w*x -b) ** 2     return total_cost/M

## 先定义一个求均值的函数

def average(data):
sum = 0
num = len(data)
for i in range(num):
sum += data[i]

`return sum/num`

## 定义核心拟合函数

def fit(points):
M = len(points)
x_bar = average(points[:,0])

```sum\_yx = 0
sum\_x2 = 0
sum\_delta = 0
for i in range(M):
x = points\[i, 0\]
y = points\[i, 1\]
sum\_yx += y \* (x - x\_bar)
sum\_x2 += x \*\* 2
# 根据公式计算w
w = sum\_yx / (sum\_x2 - M \* (x\_bar \*\* 2))
for i in range(M):
x = points\[i, 0\]
y = points\[i, 1\]
sum\_delta += (y - w \* x)
b = sum\_delta / M
return w, b```

### 4. 测试

w ,b = fit(points)
print(“w is: “, w)
print(“b is: “, b)
cost = compute_cost(w, b, points)
print(“cost is : “,cost)

### 5.画出拟合曲线

plt.scatter(x,y)
#针对每一个x，计算得出预测的y值
pred_y = w * x + b
plt.plot(x, pred_y, c=’r’)
plt.show()

Matlab版本感兴趣的读者可以自己试一下求解，