zoukankan      html  css  js  c++  java
  • 7,城市气候与海洋的关系研究

    导入包

    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # 设置显示汉字
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    
    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) 
    
    mantova1 = pd.read_csv('./mantova_150715.csv')
    mantova2 = pd.read_csv('./mantova_250715.csv')
    mantova3 = pd.read_csv('./mantova_270615.csv')
    mantova = pd.concat([mantova1,mantova2,mantova3],ignore_index=True) 
    
    milano1 = pd.read_csv('./milano_150715.csv')
    milano2 = pd.read_csv('./milano_250715.csv')
    milano3 = pd.read_csv('./milano_270615.csv')
    milano = pd.concat([milano1,milano2,milano3],ignore_index=True) 
    
    ravenna1 = pd.read_csv('./ravenna_150715.csv')
    ravenna2 = pd.read_csv('./ravenna_250715.csv')
    ravenna3 = pd.read_csv('./ravenna_270615.csv')
    ravenna = pd.concat([ravenna1,ravenna2,ravenna3],ignore_index=True)
    
    asti1 = pd.read_csv('./asti_150715.csv')
    asti2 = pd.read_csv('./asti_250715.csv')
    asti3 = pd.read_csv('./asti_270615.csv')
    asti = pd.concat([asti1,asti2,asti3],ignore_index=True)
    
    bologna1 = pd.read_csv('./bologna_150715.csv')
    bologna2 = pd.read_csv('./bologna_250715.csv')
    bologna3 = pd.read_csv('./bologna_270615.csv')
    bologna = pd.concat([bologna1,bologna2,bologna3],ignore_index=True)
    
    piacenza1 = pd.read_csv('./piacenza_150715.csv')
    piacenza2 = pd.read_csv('./piacenza_250715.csv')
    piacenza3 = pd.read_csv('./piacenza_270615.csv')
    piacenza = pd.concat([piacenza1,piacenza2,piacenza3],ignore_index=True)
    
    cesena1 = pd.read_csv('./cesena_150715.csv')
    cesena2 = pd.read_csv('./cesena_250715.csv')
    cesena3 = pd.read_csv('./cesena_270615.csv')
    cesena = pd.concat([cesena1,cesena2,cesena3],ignore_index=True)
    
    faenza1 = pd.read_csv('./faenza_150715.csv')
    faenza2 = pd.read_csv('./faenza_250715.csv')
    faenza3 = pd.read_csv('./faenza_270615.csv')
    faenza = pd.concat([faenza1,faenza2,faenza3],ignore_index=True)
    faenza.head()
    

     

    4,去除没用的列

    city_list = [ferrara,torino,mantova,milano,ravenna,asti,bologna,piacenza,cesena,faenza]
    for city in city_list:
        city.drop(labels='Unnamed: 0',axis=1,inplace=True)
    

    5,显示最高温度于离海远近的关系(观察多个城市) 

    city_max_temp = []
    city_dist = []
    for city in city_list:
        max_temp = city['temp'].max()
        city_max_temp.append(max_temp)
        dist = city['dist'][0]
        city_dist.append(dist)
    
    #查看各个城市的最高温度数据
    city_max_temp
    

     

    plt.scatter(city_dist,city_max_temp)
    plt.xlabel('距离')
    plt.ylabel('最高温度')
    plt.title('距离和温度之间的关系图')
    

    观察发现,离海近的可以形成一条直线,离海远的也能形成一条直线。

    - 分别以100公里和50公里为分界点,划分为离海近和离海远的两组数据(近海:小于100  远海:大于50)
    #找出所有的近海城市(温度和距离)
    np_city_dist = np.array(city_dist)
    np_city_max_temp = np.array(city_max_temp)
    
    near_condition = np_city_dist < 100
    near_city_dist = np_city_dist[near_condition]
    near_city_max_temp = np_city_max_temp[near_condition]
    
    plt.scatter(near_city_dist,near_city_max_temp)
    

    机器学习

    - 算法模型对象:特殊的对象.在该对象中已经集成好个一个方程(还没有求出解的方程).
    - 模型对象的作用:通过方程实现预测或者分类
    - 样本数据(df,np):
        - 特征数据:自变量
        - 目标(标签)数据:因变量
    - 模型对象的分类:
        - 有监督学习:模型需要的样本数据中存在特征和目标
        - 无监督学习:模型需要的样本数据中存在特征
        - 半监督学习:模型需要的样本数据部分需要有特征和目标,部分只需要特征数据
    - sklearn模块:封装了多种模型对象.

     导入sklearn,建立线性回归算法模型对象

    #1.导包
    from sklearn.linear_model import LinearRegression
    #2.实例化模型对象
    linner = LinearRegression()
    #3.提取样本数据
    #4.训练模型
    linner.fit(near_city_dist.reshape(-1,1),near_city_max_temp)
    #5.预测
    linner.predict(38)  
    #array([33.16842645])
    
    linner.score(near_city_dist.reshape(-1,1),near_city_max_temp)
    0.77988083971852
    
    #绘制回归曲线
    x = np.linspace(10,70,num=100)
    y = linner.predict(x.reshape(-1,1))
    
    plt.scatter(near_city_dist,near_city_max_temp)
    plt.scatter(x,y,s=0.2)
    

      

    #将近海和远海的散点图合并显示
    plt.scatter(far_city_dists,far_max_temps,s=100)
    plt.scatter(near_city_dists,near_max_temps)
    plt.scatter(far_city_dists,far_max_temps)
    plt.plot(x,y)
    plt.scatter(near_city_dists,near_max_temps)
    plt.plot(x1,y1)
    plt.title('最高温度和距海洋距离的关系图',fontsize=20)
    plt.xlabel('距海洋距离',fontsize=15)
    plt.ylabel('最高温度',fontsize=15)
    

      

  • 相关阅读:
    Android自定义之仿360Root大师水纹效果
    Android之TextView的Span样式源码剖析
    Android之TextView的样式类Span的使用详解
    随着ScrollView的滑动,渐渐的执行动画View
    仿微信主界面导航栏图标字体颜色的变化
    android自定义之 5.0 风格progressBar
    Android性能优化之内存篇
    Android性能优化之运算篇
    How to install Zabbix5.0 LTS version with Yum on the CentOS 7.8 system?
    How to install Zabbix4.0 LTS version with Yum on the Oracle Linux 7.3 system?
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/10497943.html
Copyright © 2011-2022 走看看