机器学习之linear_model (线性回归算法模型)
阅读原文时间:2023年07月12日阅读:5

首先看一下这个静态图绘制模块

  • 静态图形处理

  • 数据分析三剑客

    • Numpy : 主要为了给pandas提供数据源
    • pandas : 更重要的数据结构
    • matplotlib : 静态图形处理

海滨城市温度分析案例

  1. 导包

    # 导包
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    
    import matplotlib.pyplot as plt
    
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
    mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
  2. 导入数据(各个海滨城的数据)

    # 导入数据(各个海滨城市数据)
    
    ferrara1 = pd.read_csv('./ferrara_150715.csv')
    ferrara2 = pd.read_csv('./ferrara_250715.csv')
    ferrara3 = pd.read_csv('./ferrara_270615.csv')
    ferrara=pd.concat([ferrara1,ferrara1,ferrara1],ignore_index=True)
    
    torino1 = pd.read_csv('./torino_150715.csv')
    torino2 = pd.read_csv('./torino_250715.csv')
    torino3 = pd.read_csv('./torino_270615.csv')
    torino = pd.concat([torino1,torino2,torino3],ignore_index=True)
    ...

  1. 去除没用的列

    city_list = [faenza,cesena,piacenza,bologna,asti,ravenna,milano,mantova,torino,ferrara]
    for city in city_list:
        city.drop(labels='Unnamed: 0',axis=1,inplace=True)
  2. 构造数据,显示最高温度与离海远近的关系

    max_temp = []
    dist_list = []
    for city in city_list:
        temp = city["temp"].max()
        max_temp.append(temp)
        dist = city['dist'][0]
        dist_list.append(dist)
    
    plt.scatter(dist_list,max_temp)   # 传入两个列表
    plt.xlabel("距离")  # x
    plt.xlabel("最高温度") # y
    plt.title("最高温度和距离之间的关系") # 标题

2.1 线性回归算法模型

  • 多用于预测

  • sklearn.linear_model

    • 创建一个温度模型,让其可以根据一个距离预测出该距离对应城市的最高温度.

      #样本数据的提取
      feature = np.array(dist_list) # 数组形式的特征数据
      target = np.array(max_temp) # 数组形式的目标数据

      线性回归算法模型 y = ax + b --> 通过训练求出最匹配的a和b

      from sklearn.linear_model import LinearRegression
      linear = LinearRegression() # 实例化算法模型

      训练模型

      linear.fit(feature.reshape(-1,1),target) # 特征数据必须是二维的 !!!

      基于训练好的模型对象实现预测功能

      linear.predict([[226],[333]])

    • 绘制关系图

      # 使用多个点绘制最高温度和距离之间的关系
      x = np.linspace(0,400,num=100)
      y = linear.predict(x.reshape(-1,1))
      plt.scatter(dist_list,max_temp)
      plt.scatter(x,y)
      plt.xlabel('距离')
      plt.ylabel('最高温度')
      plt.title('最高温度和距离直接的关系')