使用线性回归,岭回归,Lasso回归预测鲍鱼年龄
實驗?zāi)康?br /> 掌握數(shù)據(jù)預(yù)處理方法
掌握線性回歸預(yù)測基本原理與實現(xiàn)。
實驗問題背景
鮑魚的年齡可以通過鮑魚殼的“環(huán)數(shù)”來判斷,但是獲取這個“環(huán)數(shù)”是十分耗時的,需要鋸開殼,然后在顯微鏡下觀察得到。
可以通過鮑魚的其他特征比如性別、長度、直徑、高度、整體重量、去殼后重量、臟器重量、殼的重量等,通過機器學習的方法來預(yù)測其環(huán)數(shù),從而得到年齡,具有很大的應(yīng)用價值。
實驗問題描述
現(xiàn)有一份鮑魚的數(shù)據(jù)集abalone.csv,該數(shù)據(jù)集有4177個數(shù)據(jù)樣本,每個樣本有9個特征,具體信息如下:
屬性 數(shù)據(jù)類型 單位 內(nèi)容描述
性別(Sex) 標稱 M, F,I(infant)
長度(Length) 連續(xù) 毫米
直徑(Diameter) 連續(xù) 毫米
高度(Height) 連續(xù) 毫米
整體重量(Whole weight) 連續(xù) 克
去殼后重量(Shucked weight) 連續(xù) 克
臟器重量(Viscera weight) 連續(xù) 克
殼的重量(Shell weight) 連續(xù) 克
環(huán)數(shù)(Rings) 連續(xù)
實驗內(nèi)容:
1.數(shù)據(jù)預(yù)處理:
(1)標稱數(shù)據(jù)的連續(xù)化:利用函數(shù)將性別Sex列中的‘F’,’M’用‘0’,‘1’等數(shù)字表示
程序:
結(jié)果:Sex標稱已經(jīng)實現(xiàn)連續(xù)化
(2)發(fā)現(xiàn)數(shù)據(jù)中的NaN,并用中位值填補
程序?qū)崿F(xiàn)
發(fā)現(xiàn)NaN
中位值填補
結(jié)果:數(shù)據(jù)中空值已被填補
(3)處理極端值,并導出到新的csv文件中
1.為了觀察有沒有明顯錯誤的值,采用了畫圖的方法來觀測極端值
箱型圖:
發(fā)現(xiàn)散點圖更為直觀。
1.在第二三列中發(fā)現(xiàn)極端值,而且極端值的絕對值遠遠大于普通數(shù)據(jù)的絕對值,因此利用其特性將其替換
想法:去掉絕對值大于平均值四倍的數(shù)據(jù),并用該列的中位數(shù)填補
( 選擇臨界點為平均值四倍的原因:為了適應(yīng)每列的情況不同,最好采用每列的特征值,而不是固定數(shù),平均值是反映數(shù)據(jù)集中趨勢的一項重要指標,而且還要給數(shù)據(jù)一些靈活度,因此選擇平均值的四倍作為臨界點。
選擇中位數(shù)的原因:極端值會影響平均值,因此用中位數(shù)來替代。
)
結(jié)果:發(fā)現(xiàn)max,min恢復(fù)正常,原極端值被刪除
2.將數(shù)據(jù)集按照3:1分為訓練集和驗證集
因為目的是通過鮑魚其它特征來預(yù)測鮑魚年齡環(huán)數(shù),因此用X,Y來將變量因變量分開。
然后引入 sklearn.model_selection 中的train_test_split包,劃分訓練集和驗證集。
程序:
3.調(diào)用第三方軟件包(比如Sklearn)實現(xiàn)線性回歸、嶺回歸、LASSO回歸
① 普通線性回歸實現(xiàn)
調(diào)用sklearn.linear_model中的LinearRegression,將訓練集帶入,求出參數(shù),
并將測試集帶入用來檢測,并畫出擬合圖像。
結(jié)果:b = 3.0132231704721466
各列的系數(shù)為:
[ 0.08407275 -2.66150222 15.14972465 10.03392069 8.79095617
-19.95672912 -8.20363118 8.61863201]
Score值,即決定系數(shù)R^2為:
0.5266091889605017
(決定系數(shù)R^2
決定系數(shù)(coefficient ofdetermination),有的教材上翻譯為判定系數(shù),也稱為擬合優(yōu)度。
決定系數(shù)反應(yīng)了y的波動有多少百分比能被x的波動所描述,即表征依變數(shù)Y的變異中有多少百分比,可由控制的自變數(shù)X來解釋。
意義:擬合優(yōu)度越大,說明x對y的解釋程度越高。自變量對因變量的解釋程度越高,自變量引起的變動占總變動的百分比高。觀察點在回歸直線附近越密集。)
可視化圖像:
② 嶺回歸
由于嶺回歸受參數(shù)alpha的影響較大,所以先畫圖分析,選取較好的alpha參數(shù)。
上圖能夠看到各個數(shù)組的回歸系數(shù)隨參數(shù)alpha的變化??梢钥吹?#xff0c;隨著λ的變大,所有回歸系數(shù)都縮減到0。
橫坐標選擇:通過觀察,選取喇叭口附近的值,此時各系數(shù)取值已趨于穩(wěn)定,通過觀察嶺跡線大于10次方 各個特征的權(quán)重就幾乎為0了,而小于10^-2次方 某些特征的權(quán)重的變化幅度就會非常大,很容易出問題,所以猜測,在10^-3次方到10的1次方之間取一個alpha值比較合適。
規(guī)定大致范圍后,選取尚不明顯,因此通過枚舉的方式作圖來更加直觀的觀察。
令alpha取各個不同的值,分別帶入嶺回歸求取score,發(fā)現(xiàn)alpha在接近10^-2到10這一段score值較為平緩,而后隨著alpha的增大,score逐漸變小,這也與上個回歸系數(shù)圖的觀察相吻合,因此選取alpha == 1.
然后借助sklearn函數(shù),帶入訓練測試集,創(chuàng)建嶺回歸。
結(jié)果:
b = 3.272111284388725
各列系數(shù):[ 0.07303543 2.41349521 8.20099343 7.32182758 6.69908352 -17.21552799 -4.83336808 10.46067075]
Score值(R^2):0.5189765084864537
擬合圖像顯示:
③ LASSO回歸
與嶺回歸相似的是,lasso也受參數(shù)alpha的影響,因此先通過可視化選取適合的alpha值。
首先:
畫出lasso的正則化擬合曲線,觀察到在alpha變化的過程中,通過觀察大于0.1各個特征的權(quán)重就已經(jīng)接近0,小于0.05時,而特征權(quán)重變化幅度過大,j極易出問題.因此,初步確定alpha在0.1-0.05這個范圍內(nèi)。
進一步確定:
將alpha的多個值帶入,求出其score值,通過圖像觀察,發(fā)現(xiàn)隨著alpha的增大,score減少,且當alpha的值大于1時,score值幾乎接近于0,因此,選取alpha為0.01,并將參數(shù)帶入,求lasso回歸
得出結(jié)果:
b = 3.610186708754836
各項系數(shù):[ 0. 0. 9.35199529 9.47261795 0. -8.60890724 0. 17.80445353]
Score值:0.49434794625533063
擬合圖像:
4.編程實現(xiàn)線性回歸和嶺回歸算法
1)實現(xiàn)線性回歸
根據(jù)原理,進行編程:
注意:將X,Y轉(zhuǎn)化為矩陣。
另外,引用了numpy的庫,來實現(xiàn)矩陣運算。
輸出結(jié)果:
得到各項系數(shù):[ 0.10762547 5.0079725 15.42687314 12.4400711 8.21075551
-20.84413583 -9.86107619 6.9365935 ]
實現(xiàn)嶺回歸
程序?qū)崿F(xiàn):
得出結(jié)果:
各項系數(shù):[ 0.1007056 8.83355883 11.08854968 9.39323737 5.66562161
-17.8600036 -5.96550196 9.10760764]
發(fā)現(xiàn)分析:
分析:1.由于嶺回歸實質(zhì)上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分信息、降低精度為代價獲得回歸系數(shù)更為符合實際、更可靠的回歸方法,對病態(tài)數(shù)據(jù)的擬合要強于最小二乘法。lasso回歸在線性回歸的損失函數(shù)的基礎(chǔ)上加上了L1正則化參數(shù),L1正則項是為了使得那些原先處于零(即|w|≈0)附近的參數(shù)w往零移動,使得部分參數(shù)為零,從而降低模型的復(fù)雜度(模型的復(fù)雜度由參數(shù)決定),從而防止過擬合,提高模型的泛化能力。也因此,訓練集的擬合能力被限制住了.相比普通線性回歸模型確實不容易過擬, 但是卻有可能出現(xiàn)欠擬。因此,在該已經(jīng)處理過異常值的數(shù)據(jù)下,普通的線性回歸模型所得到的決定系數(shù)要優(yōu)于犧牲了部分信息降低精度的嶺回歸與lasso回歸。
2.Lasso 的基本思想是在回歸系數(shù)的絕對值之和小于一個常數(shù)的約束條件下,使殘差平方和最小化,從而能夠產(chǎn)生某些嚴格等于0 的回歸系數(shù),得到可以解釋的模型。所以在lasso回歸中可以看到許多為0的回歸系數(shù)。
代碼及數(shù)據(jù)集下載:
https://github.com/wmj555/-01
總結(jié)
以上是生活随笔為你收集整理的使用线性回归,岭回归,Lasso回归预测鲍鱼年龄的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件工程之他见——鲍周晓
- 下一篇: 利用决策树算法在鲍鱼数据集上对年龄进行预