返回顶部

机器学习之linear_model (线性回归算法模型)

1.matplotlib

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

  • 静态图形处理

  • 数据分析三剑客

    • 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.创建算法模型

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('最高温度和距离直接的关系')
      

posted @ 2019-09-06 17:09  高薪程序员  阅读(6602)  评论(0编辑  收藏  举报