机器学习基础(一)
一元线性回归-代价函数
求预测值和真实值的误差平方和,并使其达到最小
一元线性回归-梯度下降法
初始化θ0和θ1,不断改变θ0和θ1,直到J(θ0,θ1)达到一个全局最小值或者局部最小值
α为学习率
一元线性回归-实现
一元线性回归方程
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt("../data/csv/data.csv", delimiter=",")
x_data = data[:, 0, np.newaxis]
y_data = data[:, 1, np.newaxis]
model = LinearRegression()
model.fit(x_data, y_data)
# 画图
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, model.predict(x_data), 'r')
plt.show()
多元线性回归-代价函数
多元线性回归-梯度下降法
x0=1,为了描述方便,让x的下标与θ下标一一对应
多元线性回归-实现
多元线性回归方程
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 导入数据
data = genfromtxt(r'E:/project/python/data/csv/Delivery.csv', delimiter=',')
# 切分数据
x_data = data[:, :-1]
y_data = data[:, -1]
# 建立模型
model = linear_model.LinearRegression()
model.fit(x_data, y_data)
print("系数:", model.coef_)
print("截距:", model.intercept_)
# 画图
ax = plt.figure().add_subplot(111, projection='3d')
ax.scatter(x_data[:, 0], x_data[:, 1], y_data, c='r', marker='o', s=100)
x0 = x_data[:, 0]
x1 = x_data[:, 1]
x0, x1 = np.meshgrid(x0, x1)
z = model.intercept_ + x0 * model.coef_[0] + x1 * model.coef_[1]
ax.plot_surface(x0, x1, z)
ax.set_xlabel('Miles')
ax.set_ylabel('Num of Deliveries')
ax.set_zlabel('Time')
plt.show()
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: