自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)挖掘從入門到放棄之一線性回歸和邏輯回歸

人工智能 機器學(xué)習(xí)
在機器學(xué)習(xí)推導(dǎo)里面引入線性代數(shù)的思想,將假設(shè)我們用一個表達式來描述放假預(yù)測模型,x代表一個房子的特征集,它是一個n×1的列向量,總共有m個特征集,θ是一個n×1的列向量,是我們想要求得未知數(shù)。

“ 數(shù)據(jù)挖掘算法基于線性代數(shù)、概率論、信息論推導(dǎo),深入進去還是很有意思的,能夠理解數(shù)學(xué)家、統(tǒng)計學(xué)家、計算機學(xué)家的智慧,這個專欄從比較簡單的常用算法入手,后續(xù)研究基于TensorFlow的高級算法,最好能夠參與到人臉識別和NLP的實際項目中,做出來一定的效果。”

一、理解線性回歸模型

首先講回歸模型,回歸模型研究的是因變量(目標(biāo))和自變量(預(yù)測器)之間的關(guān)系,因變量可以是連續(xù)也可以離散,如果是離散的就是分類問題。思考房價預(yù)測模型,我們可以根據(jù)房子的大小、戶型、位置、南北通透等自變量預(yù)測出房子的售價,這是最簡單的回歸模型,在初中里面回歸表達式一般這樣寫,其中x是自變量,y是因變量,w是特征矩陣,b是偏置。

在機器學(xué)習(xí)推導(dǎo)里面引入線性代數(shù)的思想,將假設(shè)我們用一個表達式來描述放假預(yù)測模型,x代表一個房子的特征集,它是一個n×1的列向量,總共有m個特征集,θ是一個n×1的列向量,是我們想要求得未知數(shù)。

我們采用誤差最小的策略,比如有預(yù)測表達式:y工資=Θ1*學(xué)歷+Θ2*工作經(jīng)驗+Θ3*技術(shù)能力+.......+Θn*x+基本工資,預(yù)測的y值和實際值y_存有差距,策略函數(shù)就是使得m個特征集的(真實值y-預(yù)測值)的平方和最小。(差值可能是負(fù)數(shù),所以采用平方和);

按照對于正規(guī)方程的求法,我們對θ 求偏導(dǎo):

也就是,給定特征矩陣X和因變量y,即可以求使誤差率最小的θ值,滿足后續(xù)的回歸模型。了解線性代數(shù)的童靴可以看出來問題,在θ的表達式中有求逆運算,需要保證矩陣可逆,這一般是無法保證的,這樣就會造成θ無解,策略失效;

二、計算機的做法:梯度下降

常規(guī)的方程需要大量的矩陣運算,尤其是矩陣的逆運算,在矩陣很大的情況下,會大大增加計算復(fù)雜性。,且正規(guī)方程法對矩陣求偏導(dǎo)有一定的局限性(無法保證矩陣可逆),下面介紹梯度下降法,也就是計算機的解決方法,每次走一小步,保證這一小步是最有效的一步,可以想象自己正在下山,你不知道目的地(全局最小值)在哪,但是你能夠保證自己每次走的都是最陡峭的一步;

我們的策略仍然保持不變,就是使得m個特征集的(真實值y-預(yù)測值)的平方和最?。?/p>

梯度下降法實現(xiàn):賦予初始θ 值,并根據(jù)公式逐步更新θ 使得J(θ) 不斷減少,最終至收斂,對應(yīng)的參數(shù)θ 即為解。為了推導(dǎo)方便,首先研究只有一個訓(xùn)練樣本時,如何計算推導(dǎo)公式。

θ 的每個分量更新公式為:

推廣到m個訓(xùn)練數(shù)據(jù),參數(shù)更新公式為:

三、邏輯回歸模型

邏輯回歸與線性回歸同屬廣義線性模型,邏輯回歸是以線性回歸為理論支持,是一個二分類模型,也可以推廣多到分類問題,通過Sigmoid函數(shù)引入了非線性因素,因此可以輕松處理0/1分類問題,首先介紹一下Sigmoid函數(shù):

sigmoid函數(shù)圖像是一個S曲線,取值在[0, 1]之間,在遠離0的地方函數(shù)的值會很快接近0或者1,sigmoid函數(shù)的求導(dǎo)特性是:

邏輯回歸的預(yù)測函數(shù)是下圖,只是在特征到結(jié)果的映射中加入了一層函數(shù)映射,先把特征線性求和,然后使用函數(shù)g(z)將最為假設(shè)函數(shù)來預(yù)測。g(z)可以將連續(xù)值映射到0到1之間:

通過求似然函數(shù),兩邊取log后,對θ求偏導(dǎo):

這樣我們就得到了梯度上升每次迭代的更新方向,那么θ的迭代表達式為:

發(fā)現(xiàn)同線性回歸模型是同一個表達式,這并不僅僅是巧合,兩者存在深層的聯(lián)系;

四、回歸模型使用

數(shù)據(jù)是2014年5月至2015年5月美國King County的房屋銷售價格以及房屋的基本信息。數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),分別保存在kc_train.csv和kc_test.csv兩個文件中,其中訓(xùn)練數(shù)據(jù)主要包括10000條記錄,14個字段:銷售日期,銷售價格,臥室數(shù),浴室數(shù),房屋面積,停車面積,樓層數(shù),房屋評分,建筑面積,地下室面積,建筑年份,修復(fù)年份,緯度,經(jīng)度。

數(shù)據(jù)集地址:https://github.com/yezonggang/house_price,按照流程完成模型建立:

  1. import pandas as pd 
  2. from pandas import DataFrame 
  3. import numpy as np 
  4. import matplotlib.pyplot as plt 
  5. %matplotlib inline 
  6. import seaborn as sns 
  7. from sklearn.linear_model import LogisticRegression 
  8. from sklearn.ensemble import RandomForestClassifier 
  9. from sklearn.linear_model import LinearRegression 
  10. # 數(shù)據(jù)讀取 
  11. baseUrl="C:\\Users\\71781\\Desktop\\2020\\ML-20200422\\houre_price\\" 
  12. house_df=pd.read_csv(baseUrl+'train.csv' ) 
  13. test_df=pd.read_csv(baseUrl+'test.csv'
  14. house_df.head() 
  15.  
  16. # 刪除無關(guān)變量 
  17. house_df=house_df.drop(['saleTime','year','repairYear','latitude','longitude','buildingSize'],axis=1) 
  18. test_df=test_df.drop(['saleTime','year','repairYear','latitude','longitude','buildingSize'],axis=1) 
  19.  
  20. # 模型建立 
  21. X_price=house_df.drop(['price'],axis=1) 
  22. # X_price.head() 
  23. Y_price=house_df['price'
  24. Y_price.head() 
  25.  
  26. LR_reg=LinearRegression() 
  27. LR_reg.fit(X_price, Y_price) 
  28. Y_pred = LR_reg.predict(test_df) 
  29. LR_reg.score(X_price, Y_price) 
  30.  
  31.  
  32. # 可以選擇進行特征縮放 
  33. #new_house=house_df.drop(['price'],axis=1) 
  34. #from sklearn.preprocessing import MinMaxScaler 
  35. #minmax_scaler=MinMaxScaler().fit(new_house)   #進行內(nèi)部擬合,內(nèi)部參數(shù)會發(fā)生變化 
  36. #scaler_housing=pd.DataFrame(minmax_scaler.transform(new_house),columns=new_house.columns) 
  37.  
  38. #mm=MinMaxScaler() 
  39. #mm.fit(test_df) 
  40. #scaler_t=mm.transform(test_df) 
  41. #scaler_t=pd.DataFrame(scaler_t,columns=test_df.columns)薦 

本文轉(zhuǎn)載自微信公眾號「數(shù)據(jù)社」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系數(shù)據(jù)社公眾號。

 

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)社
相關(guān)推薦

2021-11-08 07:11:49

決策樹數(shù)據(jù)分類器

2012-12-10 13:24:15

回歸分析數(shù)據(jù)挖掘

2017-05-26 08:53:27

數(shù)據(jù)挖掘算法

2022-03-28 11:00:34

JVMJava對象

2022-04-19 11:25:31

JVMZGC垃圾收集器

2023-11-10 15:47:06

線性回歸內(nèi)核技巧

2019-07-02 14:17:18

API網(wǎng)關(guān)網(wǎng)關(guān)流量

2025-04-27 04:02:00

機器學(xué)習(xí)模型網(wǎng)絡(luò)

2017-03-25 20:30:15

2020-07-07 10:50:19

Python丄則表達文本

2017-12-25 11:15:06

JavaArray數(shù)組

2018-04-26 08:40:33

線性回歸算法機器學(xué)習(xí)

2019-06-23 15:21:42

Google谷歌平板

2018-06-05 10:30:28

KotlinJava語言

2025-04-22 02:00:00

芯片晶圓光刻機

2021-10-15 22:19:15

電腦藍屏重啟

2020-12-19 10:54:25

機器學(xué)習(xí)線性回歸算法

2020-10-10 12:53:57

邏輯回歸機器學(xué)習(xí)分析

2016-08-03 16:01:47

GitLinux開源

2022-01-17 08:52:32

CPUCPU工具顯卡
點贊
收藏

51CTO技術(shù)棧公眾號