import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import SGDRegressor
from sklearn.preprocessing import PolynomialFeatures
设置图像参数
# 设置字体的大小
# 设置图像的尺寸
plt.rcParams['font.size'] = 18
plt.figure(figsize=(9, 6))
创建数据
# 创建2009-2020年数据
X = np.arange(2009, 2020)
y = np.array([0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684])
plt.bar(X, y, width=0.5, color='green')
plt.plot(X, y, color='red')
# ticks:横轴的值 rotation:标签的旋转读书
_ = plt.xticks(ticks=X, rotation=60)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import SGDRegressor
from sklearn.preprocessing import PolynomialFeatures
# 创建2009-2020年数据
X = np.arange(2009, 2020)
y = np.array([0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684])
均值移除
# 均值移除
X_ = X - X.mean()
X_ = X_.reshape(-1, 1)
构建多项式
# 对创建的数据进行升维 interaction_only设置为false 只进行自乘
# 构建多项式特征 3 次幂
poly = PolynomialFeatures(degree=3, interaction_only=False)
X_poly = poly.fit_transform(X_)
from sklearn.preprocessing import StandardScaler
归一化
scaler = StandardScaler()
x_norm = scaler.fit_transform(X_poly)
创建模型
model = SGDRegressor(penalty='l2', eta0=0.5, max_iter=5000)
model.fit(x_norm, y)
模型预测
# 模型预测
# 6 代表2020年
X_test = np.linspace(-5, 6, 100).reshape(-1, 1)
X_test_poly = poly.transform(X_test)
x_test_norm = scaler.transform(X_test_poly)
y_pred = model.predict(x_test_norm)
对数据进行可视化
# 可视化
plt.figure(figsize=(12, 9))
plt.plot(X_test_poly[:, 1], y_pred, color='g')
plt.bar(X_poly[:, 1], y) #2009,2019 历史数据
# 2020年预测的结果
plt.bar(6, y_pred, color='red')
# 显示预测的结果
plt.text(6, y_pred[-1] + 100, round(y_pred[-1],1),ha='center')
plt.ylim(0, 4096)
_ = plt.xticks(np.arange(-5, 7), np.arange(2009, 2021))
坚持学习,整理复盘