日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,機(jī)器學(xué)習(xí)在各行各業(yè)中已經(jīng)成為一個(gè)不可或缺的工具。其中,回歸算法是機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)關(guān)鍵組成部分,它被廣泛用于預(yù)測(cè)數(shù)值型的輸出結(jié)果。本文將重點(diǎn)介紹幾種常見(jiàn)的回歸算法,包括線性回歸、多項(xiàng)式回歸、決策樹(shù)回歸以及隨機(jī)森林回歸,并通過(guò)案例來(lái)解釋什么是回歸分析。

回歸分析是一種統(tǒng)計(jì)學(xué)方法,用于建立一個(gè)數(shù)學(xué)模型,以了解一個(gè)或多個(gè)自變量(獨(dú)立變量)與一個(gè)因變量(依賴變量)之間的關(guān)系。這個(gè)關(guān)系通常用一個(gè)方程來(lái)表示,該方程可以用來(lái)預(yù)測(cè)因變量的值。回歸分析的目標(biāo)是找到最合適的模型,以最好地?cái)M合觀測(cè)數(shù)據(jù)點(diǎn),從而使我們能夠進(jìn)行有效的預(yù)測(cè)和推斷。

回歸分析在現(xiàn)實(shí)生活中有許多應(yīng)用。以孩子的身高預(yù)測(cè)為例,我們可以收集大量不同家庭的數(shù)據(jù),包括父母的身高和他們孩子的身高。然后,我們可以使用回歸算法來(lái)建立一個(gè)模型,該模型可以根據(jù)父母的身高預(yù)測(cè)孩子的身高,考慮到遺傳因素。這個(gè)模型可以幫助我們更好地理解身高的遺傳規(guī)律,并在醫(yī)學(xué)或遺傳學(xué)研究中有重要的應(yīng)用價(jià)值。

 

回歸(Regression)簡(jiǎn)介

回歸是一種簡(jiǎn)單而強(qiáng)大的預(yù)測(cè)模型,旨在學(xué)習(xí)輸入變量和目標(biāo)變量之間的關(guān)系。為了簡(jiǎn)單理解回歸,我們回歸熟悉簡(jiǎn)單直線方程(線性回歸):y=ax+b

這個(gè)既熟悉又簡(jiǎn)單的方程:y=ax+b用于在二維坐標(biāo)系上畫(huà)一條線。對(duì)這個(gè)方程進(jìn)行分解以了解其每個(gè)術(shù)語(yǔ)。

  • y變量,隨自變量變化而改變的量。
  • x:一個(gè)自變量,是一種可以改變的變量,是因果關(guān)系中的因變量。
  • a:這是線的斜率,它告訴線的實(shí)際陡峭程度。
  • b:這是 y 截距,它是y什么時(shí)候x等于 0。

回歸算法的作用是嘗試學(xué)習(xí)或近似求解a和b使得對(duì)于任何值x我們可以準(zhǔn)確預(yù)測(cè)的值y. y=ax+b 是一條線或直線,所以稱之為線性回歸,是回歸家族最為簡(jiǎn)單、直觀的。如果數(shù)據(jù)之間的關(guān)系更加復(fù)雜,線性模型可能無(wú)法很好地?cái)M合數(shù)據(jù),需要考慮使用其他回歸方法,例如多項(xiàng)式回歸、決策樹(shù)回歸或隨機(jī)森林回歸,以更好地適應(yīng)數(shù)據(jù)的復(fù)雜性;這些方法更好適應(yīng)非線性關(guān)系,從而提高了對(duì)數(shù)據(jù)的擬合能力。接下來(lái)先從最簡(jiǎn)單線性回歸開(kāi)始。

線性回歸(LinearRegression)

為了更直觀地理解線性回歸概念,假設(shè)我們想要根據(jù)房屋的面積來(lái)預(yù)測(cè)房屋的價(jià)格。我們所關(guān)心的預(yù)測(cè)值是房?jī)r(jià)(house price),這個(gè)預(yù)測(cè)值依賴于房屋的面積(area)。如果房屋的面積與價(jià)格存在關(guān)聯(lián),那么隨著面積的增加,我們應(yīng)該觀察到價(jià)格也相應(yīng)上升的趨勢(shì)。這有助于我們理解這兩個(gè)變量之間的關(guān)系,從而使我們能夠?qū)θ魏谓o定面積的房屋價(jià)格做出預(yù)測(cè)。

房屋特征及價(jià)格的數(shù)據(jù)集來(lái)源于Kaggle,包含有關(guān)房屋屬性和價(jià)格的信息:https://www.kaggle.com/datasets/yasserh/housing-prices-dataset

 

利用SNB快速創(chuàng)建一個(gè)散點(diǎn)圖,可視化房?jī)r(jià)與面積兩個(gè)變量之間關(guān)系。

 

數(shù)據(jù)中似乎存在上升趨勢(shì),然而,在散點(diǎn)圖的左下角也似乎有一些輕微的聚集。這可能表明我們的數(shù)據(jù)存在一定程度的偏斜,因此,讓我們也來(lái)可視化每個(gè)變量的分布情況。

 

正如預(yù)想的一樣,數(shù)據(jù)呈右偏態(tài)(right skewed)。在大多數(shù)機(jī)器學(xué)習(xí)項(xiàng)目中,數(shù)據(jù)的偏斜性對(duì)預(yù)測(cè)產(chǎn)生不理想的結(jié)果,但,有方法可以解決這個(gè)問(wèn)題。需要使用"對(duì)數(shù)(log/ln)"對(duì)數(shù)據(jù)轉(zhuǎn)換到更接近正態(tài)分布的情況。

regression_data = df1[['area', 'price']]
transformed = np.log(regression_data)

 

 

現(xiàn)在數(shù)據(jù)是基本對(duì)稱的,接下來(lái)可以將數(shù)據(jù)分割成訓(xùn)練集和測(cè)試集,并開(kāi)始訓(xùn)練我們的模型。

import pandas as pd
import seaborn as sns
import numpy as np
from math import sqrt
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import trAIn_test_split


inputs = np.array(transformed['area']).reshape(-1, 1)
target = transformed['price']
x_train, x_test, y_train, y_test = train_test_split(inputs, target, test_size=0.2, random_state = 2023)


model = LinearRegression()


model.fit(x_train, y_train)

 

模型評(píng)估(Evaluation)

變量model是已經(jīng)訓(xùn)練好的回歸模型,評(píng)估/檢查模型在預(yù)測(cè)房屋價(jià)格方面的性能(效果和準(zhǔn)確性)。首先,我們會(huì)在測(cè)試數(shù)據(jù)集上調(diào)用predict()方法,以獲得一組預(yù)測(cè)的房屋價(jià)格;然后預(yù)測(cè)和實(shí)際的房屋價(jià)格進(jìn)行計(jì)算評(píng)估指標(biāo),比如:r2 score 、rmse(root mean squared error).

  • r2:告訴我們模型與數(shù)據(jù)的擬合程度并解釋我們的數(shù)據(jù)。r2分?jǐn)?shù)為1.0意味著完美擬合,我們的模型可以解釋 100% 的數(shù)據(jù)集。r2 為0意味著模型無(wú)法確定數(shù)據(jù)集中的可預(yù)測(cè)關(guān)系。
  • rmse:是我們預(yù)測(cè)誤差的偏差。它告訴我們數(shù)據(jù)點(diǎn)與回歸線的平均距離有多遠(yuǎn)。換句話說(shuō),它告訴您數(shù)據(jù)在最佳擬合線周?chē)募谐潭取@纾瑀mse為10 意味著無(wú)論我們預(yù)測(cè)什么價(jià)格,我們都應(yīng)該期望實(shí)際價(jià)格與預(yù)測(cè)價(jià)格相差 10 美元以內(nèi)。
predictions = model.predict(x_test)


rmse = round(sqrt(mean_squared_error(y_test, predictions)), 2)
r2 = round(r2_score(y_test, predictions), 2)


print('rmse:',rmse)
print('r2:',r2)
rmse: 0.33
r2: 0.19

 

 

最后,可以提取最佳擬合線: y=ax+b, 過(guò)引用屬性model.coef和model.intercept_模型輸出來(lái)繪制數(shù)據(jù)的回歸線。

slope = model.coef_[0]
intercept = model.intercept_


print(f"slope:{slope}")
print(f"intercept:{intercept}")


x = np.linspace(7, 10, 5)
y = [(slope * val) + intercept for val in x]
var = {'x': x, 'y': y}
line = pd.DataFrame.from_records(var)


import seaborn as sns
fig, ax = plt.subplots(figsize=(8, 5))
sns.scatterplot(x="area", y="price", data=transformed,ax=ax)
sns.regplot(x="x", y="y", data=line,color='r')
plt.show()

 

 

多元線性回歸(Multiple linear regression)

上面示例是簡(jiǎn)單線性回歸模型中,我們只使用一個(gè)輸入值來(lái)預(yù)測(cè)目標(biāo)值。這種簡(jiǎn)單性使得數(shù)據(jù)可視化和模型實(shí)現(xiàn)變得容易。然而,簡(jiǎn)單線性回歸的結(jié)果可能不是最準(zhǔn)確的。為了提高模型的準(zhǔn)確性,可以訓(xùn)練一個(gè)多元線性回歸模型。區(qū)別是:多元線性回歸可以利用多個(gè)輸入值(多個(gè)自變量)來(lái)預(yù)測(cè)目標(biāo)變量,因此得名"多元"線性回歸。

分類變量的編碼

在大多數(shù)機(jī)器學(xué)習(xí)模型中,輸入自變量必須是數(shù)值。這些模型的數(shù)學(xué)性質(zhì)使得類似于 bedrooms = 4 或 bathrooms = 2 的列很容易理解。然而,諸如 basement = Yes 或 furnish_status = furnished 這樣的分類意味著對(duì)于模型來(lái)說(shuō)毫無(wú)意義。我們需要一種方法來(lái)對(duì)這些分類值進(jìn)行編碼,以便模型知道如何賦予這些值含義。LabelEncoder編碼是一種常見(jiàn)編碼方式:將類別型進(jìn)行排序并賦值。

 

使用LabelEncoder 對(duì)數(shù)據(jù)集分類變量進(jìn)行編碼:

for col in df1.columns :
  if df1[col].dtype == 'object':
    df1[col] = LabelEncoder().fit_transform(df1[col])
df1

 

 

接下來(lái)使用多元線性回歸進(jìn)行建模和評(píng)估:

inputs = df1[df1.columns[1:]]
target = df1['price']
mul_x_train, mul_x_test, mul_y_train, mul_y_test = train_test_split(inputs, target, test_size=.2, random_state = 222)


model = LinearRegression()
model.fit(mul_x_train, mul_y_train)


y_pred = model.predict(mul_x_test)


multiple_mse = round(sqrt(mean_squared_error(mul_y_test, y_pred)), 2)
multiple_r2 = round(r2_score(mul_y_test, y_pred), 2)
print(f'multiple_mse:{multiple_mse}')
print(f'multiple_r2:{multiple_r2}')

模型性能指標(biāo)如下:

multiple_mse:0.22
multiple_r2:0.71

 

 

模型比較

就最佳擬合而言,簡(jiǎn)單模型具有 19% 的 R² 分?jǐn)?shù),而多元線性回歸模型具有 71% 的 R² 分?jǐn)?shù)。性能提高了 373%.

就誤差范圍而言,簡(jiǎn)單模型具有 0.33 的 RMSE 分?jǐn)?shù),而多元線性回歸模型具有 0.22 的 RMSE 分?jǐn)?shù)。誤差范圍減小了 66.67%!

理想情況下:希望一個(gè)模型具有高的 R² 分?jǐn)?shù)和低的 RMSE。多元線性回歸模型是更好的模型,因?yàn)樗鼘⑻峁└_的、更準(zhǔn)確的預(yù)測(cè)。

本文介紹了一些在實(shí)際機(jī)器學(xué)習(xí)任務(wù)中非常基礎(chǔ)的概念,例如如何進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)劃分成訓(xùn)練集和測(cè)試集,以及如何擬合線性回歸模型并評(píng)估其性能。在以后的教程中,我們將繼續(xù)介紹更復(fù)雜的回歸算法,如多項(xiàng)式回歸、決策樹(shù)回歸和隨機(jī)森林回歸等。

分享到:
標(biāo)簽:算法
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定