99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀如何使用線性回歸分析來(lái)預(yù)測(cè)發(fā)電廠的發(fā)電量
如何使用線性回歸分析來(lái)預(yù)測(cè)發(fā)電廠的發(fā)電量
2016-10-17
收藏

如何使用線性回歸分析來(lái)預(yù)測(cè)發(fā)電廠的發(fā)電量

在這篇文章中,我將會(huì)教大家如何通過(guò)擬合一個(gè)線性回歸模型來(lái)預(yù)測(cè)聯(lián)合循環(huán)發(fā)電廠(CCPP)的發(fā)電量。這個(gè)數(shù)據(jù)集則來(lái)自于UCI Machine Learning Repository。這個(gè)數(shù)據(jù)集包含5列,也就是說(shuō),它包含環(huán)境溫度(AT)、環(huán)境壓力(AP)、相對(duì)濕度(RH)、抽真空(EV)已經(jīng)發(fā)電廠的電網(wǎng)每小時(shí)的發(fā)電量。前面4個(gè)變量作為屬性,最后一個(gè)則作為因變量。

讀取和分解數(shù)據(jù)

由于數(shù)據(jù)是xlsx格式,我們需要xlsx包。我們將提取數(shù)據(jù)文件中的第一個(gè)表格。

  1. library(xlsx)
  2. powerData <- read.xlsx('Folds5x2_pp.xlsx', 1)
  3. head(powerData)
  4. AT V AP RH PE
  5. 1 14.96 41.76 1024.07 73.17 463.26
  6. 2 25.18 62.96 1020.04 59.08 444.37
  7. 3 5.11 39.40 1012.16 92.14 488.56
  8. 4 20.86 57.32 1010.24 76.64 446.48
  9. 5 10.82 37.50 1009.23 96.62 473.90
  10. 6 26.27 59.44 1012.23 58.77 443.67

接下來(lái),我們需要把數(shù)據(jù)集分成訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集。就像它們的名字所暗示的那樣,訓(xùn)練數(shù)據(jù)集用于訓(xùn)練和建立模型,然后使用測(cè)試數(shù)據(jù)集對(duì)模型進(jìn)行測(cè)試。現(xiàn)在,我們把75%的數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,和25%的數(shù)據(jù)作為測(cè)試數(shù)據(jù)集。我們可以按照下面的步驟操作:

  1. set.seed(123)
  2. split <- sample(nrow(powerData), size = floor(0.75 * nrow(powerData)))
  3. trainData <- powerData[split, ]
  4. testData <- powerData[-split, ]
  5. head(trainData)
  6. head(testdata)
  7. AT V AP RH PE
  8. 2752 29.14 67.45 1015.51 46.47 433.34
  9. 7542 24.67 70.94 1007.99 75.64 443.51
  10. 3913 20.84 51.19 1008.63 84.11 448.98
  11. 8447 31.73 74.67 1016.38 44.51 425.34
  12. 8995 4.44 38.44 1016.14 75.35 486.53
  13. 436 9.43 37.14 1013.03 74.99 473.57
  14. rating age yearsmarried religiousness prob
  15. 1 3.93178 17 8.177696 3.116473 0.3350834
  16. 2 3.93178 27 8.177696 3.116473 0.2615373
  17. 3 3.93178 37 8.177696 3.116473 0.1992953
  18. 4 3.93178 47 8.177696 3.116473 0.1488796
  19. 5 3.93178 57 8.177696 3.116473 0.1094738

現(xiàn)在,讓我解釋一下上面每一條指令所代表的含義。

第一,我們使用set.seed()函數(shù)使得數(shù)據(jù)具有可重復(fù)性。

然后,我們創(chuàng)建一個(gè)序列,使得它整個(gè)的長(zhǎng)度等于數(shù)據(jù)集的行數(shù)。這些數(shù)字則作為這個(gè)數(shù)據(jù)集的索引。我們隨機(jī)的從序列中選擇75%的數(shù)據(jù)并把它存放到變量split中。

最后,我們把索引數(shù)組里所隱含的所有的行都復(fù)制到訓(xùn)練數(shù)據(jù)集中,把剩下的數(shù)據(jù)則放到測(cè)試數(shù)據(jù)集中。

建立預(yù)測(cè)模型

現(xiàn)在,讓我們預(yù)測(cè)一下這個(gè)模型。我們會(huì)使用lm()函數(shù)。

  1. predictionModel <- lm(PE ~ AT + V + AP + RH, data = trainData)

上面的這個(gè)函數(shù)將會(huì)嘗試從AP、V、AP和RH來(lái)推測(cè)PE。由于我們使用了數(shù)據(jù)集里的所有變量,一個(gè)更簡(jiǎn)短的代碼為(如果這個(gè)數(shù)據(jù)集的變量非常多,這樣寫效果會(huì)很不錯(cuò)):

  1. predictionModel <- lm(PE ~ ., data = trainData)

我們現(xiàn)在用summary()來(lái)匯總一下這個(gè)模型:

  1. summary(predictionModel)
  2. Call:
  3. lm(formula = PE ~ ., data = trainData)
  4. Residuals:
  5. Min 1Q Median 3Q Max
  6. -43.363 -3.148 -0.140 3.162 17.763
  7. Coefficients:
  8. Estimate Std. Error t value Pr(>|t|)
  9. (Intercept) 450.764756 11.331102 39.781 < 2e-16 ***
  10. AT -1.978787 0.017599 -112.435 < 2e-16 ***
  11. V -0.232049 0.008415 -27.575 < 2e-16 ***
  12. AP 0.065590 0.010993 5.967 2.54e-09 ***
  13. RH -0.155561 0.004829 -32.214 < 2e-16 ***
  14. ---
  15. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  16. Residual standard error: 4.574 on 7171 degrees of freedom
  17. Multiple R-squared: 0.9284, Adjusted R-squared: 0.9284
  18. F-statistic: 2.326e+04 on 4 and 7171 DF, p-value: < 2.2e-16

這樣幫助我們決定哪些變量在這個(gè)模型中具有相關(guān)性。一個(gè)線性模型的表達(dá)式可以寫成 y_i = β_1 x_i1 + β_2 x_i2 + β_3 x_i3 + ? + ε,其中y_i代表模型的預(yù)測(cè)輸出,即因變量(PE)的預(yù)測(cè)值,而x_i則代表各個(gè)變量屬性(AT、V、AP和RH),而β則代表系數(shù),ε代表一個(gè)常數(shù)項(xiàng)。

summary的第一行,它列舉了一些預(yù)測(cè)值。第一個(gè)值與ε有關(guān),而剩下的則為各種屬性變量的系數(shù),如果這些系數(shù)為0或者接近0,說(shuō)明這幾個(gè)變量對(duì)預(yù)測(cè)幾乎沒有什么影響。因此, 我們需要把它們剔除掉。表示殘差的那一列給出了一些估計(jì)值,表明了這些系數(shù)的變化幅度有多大。t值通過(guò)劃分標(biāo)準(zhǔn)差列而計(jì)算出來(lái)的估計(jì)值。最后一列則預(yù)測(cè)這些系數(shù)(p(>|t|)的可能性,它與t值成反比。預(yù)測(cè),一個(gè)屬性計(jì)算出較高的t值或是較低的Pr(>|t|)的絕對(duì)值是可以接受的。

想要判斷哪些變量具有較強(qiáng)的相關(guān)性,我們則可以通過(guò)觀察它們的星星數(shù)進(jìn)行判斷。后面帶三顆星的表明這種變量相關(guān)性最強(qiáng)。接下來(lái)是兩顆星,最不想關(guān)的則為一顆星。變量的特征本身是否重要?jiǎng)t通常沒有被包含到預(yù)測(cè)模型的預(yù)測(cè)當(dāng)中,如何這個(gè)變量與其它毫不相干,則這些變量都不重要了。

在我們的模型中,我們可以看到所有變量都重要。當(dāng)你要處理一個(gè)數(shù)據(jù)集,這里含有多個(gè)不想關(guān)的變量的時(shí)候,建議在此同時(shí)先把無(wú)關(guān)變量刪去。這時(shí)因?yàn)樽兞恐g是高度相關(guān)的,其它則可能是顯著的。這就歸于它的多重共線性。你可以在這里找到更多關(guān)于多重共線性的內(nèi)容。

想要知道模型的精度,最簡(jiǎn)單的方法就是查看它的判定系數(shù)。summary里提供了兩個(gè)判定系數(shù),即多重判定系數(shù)和調(diào)整判定系數(shù)。多重判定系數(shù)的計(jì)算過(guò)程如下:
多元判定系數(shù)=1-SSE/SST,其中:

SSE代表殘差平方和。殘差就是預(yù)測(cè)值與真實(shí)值之間的差,并可以由predictionModel$residuals來(lái)估算。

SST就是總平方和。它可以由真實(shí)值和均值之差的平方和計(jì)算出來(lái)。

比如說(shuō),我們有5、6、7和8這4個(gè)數(shù),而模型的預(yù)測(cè)值分別為4.5,6.3,7.2和7.9。

然后,SSE可以這樣計(jì)算:SSE = (5 – 4.5) ^ 2 + (6 – 6.3) ^ 2 + (7 – 7.2) ^ 2 + (8 – 7.9) ^ 2,而SST則要這樣計(jì)算:mean = (5 + 6 + 7 + 8) / 4 = 6.5; SST = (5 – 6.5) ^ 2 + (6 – 6.5) ^ 2 + (7 – 6.5) ^ 2 + (8 – 6.5) ^ 2。

調(diào)整判定系數(shù)和多重判定系數(shù)很相似,但是它由變量的個(gè)數(shù)來(lái)決定。這意味著,在預(yù)測(cè)模型中,每增加一個(gè)變量,其調(diào)整判定系數(shù)也隨之增加。但是,如果一個(gè)變量在預(yù)測(cè)模型中顯示不相關(guān),調(diào)整判定系數(shù)也會(huì)下降。關(guān)于更多判定系數(shù)的信息,請(qǐng)看這里。

調(diào)整判定系數(shù)為1的時(shí)候意味著,這是一個(gè)完美的預(yù)測(cè)模型;如果它為0,說(shuō)明它沒有在基準(zhǔn)模型上有任何提高(基準(zhǔn)模型就是預(yù)測(cè)它總與均值相等)。從summary來(lái)看,我們看到判定系數(shù)為0.9284,相當(dāng)高了

測(cè)試預(yù)測(cè)模型

現(xiàn)在,我們使用測(cè)試數(shù)據(jù)集來(lái)預(yù)測(cè)模型了。

  1. prediction <- predict(predictionModel, newdata = testData)

現(xiàn)在,觀察一下最初幾個(gè)預(yù)測(cè)值,并與測(cè)試數(shù)據(jù)集上的PE的真實(shí)值作比較:

  1. head(prediction)
  2. 2 4 12 13 14 17
  3. 444.0433 450.5260 456.5837 438.7872 443.1039 463.7809
  4. head(testData$PE)[1] 444.37 446.48 453.99 440.29 451.28 467.54

對(duì)于PE的真實(shí)值為444.37,我們的預(yù)測(cè)值為440.0433,而對(duì)于446.48,其預(yù)測(cè)值為450.5260,以此類推。

我們可以基于上面的利用測(cè)試數(shù)據(jù)集而模擬出的模型來(lái)計(jì)算其判定系數(shù):

  1. SSE <- sum((testData$PE - prediction) ^ 2)
  2. SST <- sum((testData$PE - mean(testData$PE)) ^ 2)
  3. 1 - SSE/SST
  4. 0.9294734

這里,我們來(lái)到了文章的末尾。我希望你能在此感到很享受,找到了它的價(jià)值。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }