「机器学习」案例-通过海拔高度预测气温
in 机器学习 with 0 comment

「机器学习」案例-通过海拔高度预测气温

in 机器学习 with 0 comment

线性回归案例

# 导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
data = pd.read_csv("exercise/height.vs.temperature.csv")
data.head()
height temperature
0 0.0 12.834044
1 500.0 10.190649
2 1000.0 5.500229
3 1500.0 2.854665
4 2000.0 -0.706488
data.columns
Index(['height', 'temperature'], dtype='object')

通过数据可视化分析数据

# data数据可视化
plt.figure(figsize=(16, 8))
plt.scatter(data['height'], data['temperature'], c ='black')
plt.xlabel("Temperature on Height")
plt.ylabel("Temperature")
plt.show()

output_7_0.png

不多说了,这简直是标准线性关系。随着海拔的升高,气温也逐渐降低

训练线性回归模型

# 将数据转换成二维矩阵
X = data['height'].values.reshape(-1,1)
y = data['temperature'].values.reshape(-1,1)

# 模型定义
reg = LinearRegression()
# 模型训练(拟合数据)
reg.fit(X, y)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
print('a = {:.5}'.format(reg.coef_[0][0]))
print('b = {:.5}'.format(reg.intercept_[0]))

print("线性模型为: Y = {:.5}X + {:.5} ".format(reg.coef_[0][0], reg.intercept_[0]))
a = -0.0065695
b = 12.719
线性模型为: Y = -0.0065695X + 12.719 

可视化训练好的线性回归模型

predictions = reg.predict(X)

plt.figure(figsize=(16, 8))
plt.scatter(data['height'], data['temperature'], c ='black')
plt.plot(data['height'], predictions,c ='blue', linewidth=2)
plt.xlabel("Temperature on Height")
plt.ylabel("Temperature")
plt.show()

output_13_0.png

预测气温

predictions = reg.predict([[8000]])
print('在8000米的海拔, 预计气温为{:.5}摄氏度'.format( predictions[0][0]) )
在8000米的海拔, 预计气温为-39.838摄氏度