这是入门机器学习的第一个案例, 就是利用sklearn里的模型来预测未来10几年的蜂蜜产值. 代码如下.
线性函数: $$ y(x) = w^T*x+b $$
import seaborn
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
# 使用相对路径来读取数据(.csv)
# 数据集下载地址 https://content.codecademy.com/programs/data-science-path/linear_regression/honeyproduction.csv
df = pd.read_csv("pytorch基础训练\honey_prediction\honeyproduction.csv")
# print(df.head(5))
prod_per_year = df.groupby("year").totalprod.mean().reset_index()
# 以 year 为分类标准, 对每年的 totalprod 进行求平均操作 reset_index()为重置索引(创建新的索引)
X = prod_per_year["year"]
X = X.values.reshape(-1,1)
y = prod_per_year["totalprod"]
# print(prod_per_year)
plt.scatter(X,y) # 以 X 为横坐标 y为纵坐标
# plt.show()
# Create and Fit a Linear Regression Model
regr = linear_model.LinearRegression() # make a constructor
regr.fit(X,y)
# print(regr.coef_[0]) regr.coef_ 存储的是 系数
print(regr.coef_[0])
# print(regr.intercept_[0]) regr.intercept_ 存储的是截距
print(regr.intercept_)
# 利用 linear_model 里的一个模型 LinearRegression 线性回归 来对输入的X 进行预测
y_predict = regr.predict(X)
plt.scatter(X,y_predict) # 可见绘制的是以一个个点 绘制的一条直线 (线性的)
# plt.show()
# 接下来我们预测从现在到 2050年蜂蜜的产量
# 从2013 预测到2050年
start_year = 2013
end_year = 2050
X_feature = np.array(range(start_year,end_year))
X_feature = X_feature.reshape(-1,1) # 变成竖着的vector
future_predict = regr.predict(X_feature)
print(future_predict) # 就是通过输入 X_feature 的值来进行模型的预测
plt.scatter(X_feature,future_predict) # X_feature 为时间(年份) future_predict 为预测蜂蜜的产量
plt.show() # 看起来预测效果不错
坚持每天分享一个小案例, 每天成长一小步。