機器學習之預測


一、機器學習

1.人工智能與機器學習之間的關系

  • 機器學習是實現人工智能的一種技術手段

2.算法模型

  • 概念:特殊對象。該對象內部封裝了某種還沒有求出解的方程!
  • 作用:算法模型對象內部封裝的方程的解就是算法模型預測或則分類的結果
    • 預測:天氣預報
    • 分類:將一個未知分類的事務歸屬到某一種已知的分類中。

3.樣本數據

  • 樣本數據和算法模型之間的關系是什么?
    • 模型的訓練:需要將樣本數據帶入到模型對象中,讓模型對象的方程求出解。
  • 什么是樣本數據?樣本數據是由什么構成的?
    • 特征數據:自變量。往往是有多種特征組成
    • 目標數據:因變量
  • 算法模型的分類:sklearn模塊中的模型
    • 有監督學習:
      • 如果算法模型對象需要的樣本數據必須有目標數據和特征數據
    • 無監督學習:
      • 如果算法模型對象需要的樣本數據只需要有特征數據即可

 

應用:建立一個溫度模型,讓其根據一個距離預測該距離對應城市的最高溫度是多少

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 # 解決保存圖像是負號'-'顯示為方塊的問題
# 導入數據各個海濱城市數據
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)
# 去除沒用的列
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)
View Code

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('距離')
plt.ylabel('最高溫度')
plt.title('最高溫度和距離直接的關系')
View Code

3.樣本數據的提取

feature = np.array(dist_list) #數組形式的特征數據
target = np.array(max_temp) #數組形式的目標數據

4.利用線性回歸算法模型 y = wx + b 對數據進行訓練

from sklearn.linear_model import LinearRegression
linner = LinearRegression() #算法模型對象
#訓練模型
linner.fit(feature.reshape(-1,1),target) #特征數據必須是二維的!!!

5.基於訓練好的模型對象實現預測功能(獲取方程的解)

x = np.linspace(0,400,num=100)
y = linner.predict(x.reshape(-1,1))


plt.scatter(dist_list,max_temp)
plt.scatter(x,y)
plt.xlabel('距離')
plt.ylabel('最高溫度')
plt.title('最高溫度和距離直接的關系')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM