import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib as mpl # 画图中文显示:不报错 mpl.rcParams['font.sans-serif'] = [u'simHei'] mpl.rcParams['axes.unicode_minus'] = False # 设置训练集特征属性X,特征属性Y X1 = np.array([10, 15, 20, 30, 50, 60, 60, 70]).reshape((-1, 1)) Y = np.array([0.8, 1.0, 1.8, 2.0, 3.2, 3.0, 3.1, 3.5]).reshape((-1, 1)) # 添加一个截距项对应的X值 np.column_stack(),也就是theta0 X = np.column_stack((np.ones_like(X1), X1)) # 转换X1,Y的数据变成矩阵,方便后续计算 X = np.mat(X) Y = np.mat(Y) # 设置线性回归训练,找出最优theta,theta0 theta = (X.T * X).I * X.T * Y # 根据训练数据,找出测试值 y_predict = X * theta x_test = [[1, 55]] y_test_hat = x_test * theta print('价格:', y_test_hat) # 画图显示 plt.plot(X1, Y, 'r', linewidth=3, linestyle='-', marker='o', markersize='10', label=u'真实值') plt.plot(X1, y_predict, 'b', linewidth=3, linestyle='--', marker='o', markersize='10', label=u'预测值') plt.legend(loc='best') plt.show() # plt.plot(X1, Y, 'bo', label=u'真实值') # plt.plot(X1, y_predict, 'r--o', label=u'预测值') # plt.legend(loc='lower right') # plt.show()