1.导入必要的库
在PyCharm中新建项目machine_learning,在machine_learning项目下新建Linear_regression.py,在PyCharm中编写以下代码。
import matplotlib.pyplot as plt
import numpy as np
需要NumPy库转换数据类型,需要Matplotlib的pyplot实现画图可视化。
2.设置一个初始的W和b
y = W * x + b
W = 0.9
b = 15
写代码的时候使用W代表权重,不使用k。为了保证名词统一以及专业性,之后的斜率k统一改为权重W。
3.在二维平面上创造一些数据
train_data = []
for i in range(150):
# 从[0.0,80.0)中随机采样,注意定义域是左闭右开,即包含0.0,不包含80.0
tr_x = np.random.uniform(0.0, 80.0)
# 高斯分布的概率密度函数
# tr_x:float,此概率分布的均值(对应着整个分布的中心center)
# 3:float,此概率分布的标准差(对应于分布的宽度)
tr_y = tr_x * W + b
train_data.append([np.random.normal(tr_x, 3), np.random.normal(tr_y, 3)])
随机生成一些横纵坐标数据,横坐标为学习的小时数,纵坐标为最后的成绩,生成150个点进行拟合。由于直接使用随机数生成的点还是分布在一条直线上,所以采用高斯分布的密度函数对生成的x和y值进行范围性的随机化,使这些点不完全在一条直线上,而是散落在该直线的两侧。
4.将数据在水平方向上平铺,形成一个新的数组
data = np.hstack(train_data).reshape(-1, 2)
5.绘制散点图
plt.xlim((0, 85))
plt.ylim((10, 95))
plt.xlabel('time/h')
plt.ylabel('fraction')
冒号左边是行范围,冒号右边是列范围
第一维全取,第二维取第0个和第1个方向
plt.scatter(data[:, 0], data[:, 1], color="cyan", edgecolor="white")
plt.show()
plt.xlim()函数规定了x轴范围,plt.xlabel()函数绘制x轴的标签,plt.scatter()函数绘制散点图,颜色为cyan(青色),边缘为white(白色)。