代码如下:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
# 1. 读取So2.txt的数据
data = np.loadtxt('D:\Pycharm\code\MY_machine_learning\mydata\SO2.txt', delimiter=',', dtype=np.float32)
# x 就是SO2的特征值
x = data[:, 0].reshape(-1, 1)
# y就是AQI的值
y = data[:, 1].reshape(-1, 1)
# 打印x 和 y值出来查看结果,查看完了结果之后将其注释掉
# print(x)
# print('-------------------')
# print(y)
"""
这里使用一元线性回归 f= w1 * x1 + b
"""
# linear_model = LinearRegression()
# linear_model.fit(x, y)
# y_predict = linear_model.predict(x)
# # 打印mse的值
# print("mse的值为:", mean_squared_error(y, y_predict))
# # 打印出来的值为 mse的值为: 7650.9736 ,值太大
#
# # 将一元线性回归可视化出来对比
# plt.scatter(x, y, c='red')
# plt.plot(x, y_predict, c='blue')
# plt.show()
# # 由图可以看出来,这个一元线性回归的不行 ,将其注释掉
"""
这里使用多项式回归模型
"""
poly_reg = PolynomialFeatures()
x_poly = poly_reg.fit_transform(x)
linead_model = LinearRegression()
linead_model.fit(x_poly, y)
y_predict = linead_model.predict(x_poly)
# 将mse的值打印出来。
print('mse的值为:', mean_squared_error(y, y_predict))
# mse的值为: 513.56396 比一元线性回归的小了很多
# 然后将多项式的模型可视化出来
plt.scatter(x, y, c='blue')
plt.plot(x, y_predict, c='red')
plt.show()
# 由图可知,多项式的模型比一元线性回归的模型更准确
运行结果如下:
附SO2.txt网盘提取:
提取码:nvg3