秦培煜 胡艷芬
1.武漢軟件工程職業(yè)學(xué)院; 2.中國(guó)地質(zhì)大學(xué)(武漢)
隨著大數(shù)據(jù)和人工智能時(shí)代的到來(lái),機(jī)器學(xué)習(xí)應(yīng)用的場(chǎng)景越來(lái)越多。機(jī)器學(xué)習(xí)分為監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí),回歸屬于監(jiān)督學(xué)習(xí)范疇[1]。本文對(duì)scikit-learn自帶的房?jī)r(jià)數(shù)據(jù)進(jìn)行了回歸分析。
數(shù)據(jù)使用scikit-learn自帶的boston房?jī)r(jià)數(shù)據(jù),使用load_boston函數(shù)加載。
import numpy as np
from sklearn.datasets import load_boston
house = load_boston()
首先導(dǎo)入numpy和sklearn.datasets中l(wèi)oad_boston函數(shù),使用 load_boston加載boston房?jī)r(jià)數(shù)據(jù),其中house.data是特征數(shù)據(jù),house.target是標(biāo)簽數(shù)據(jù)。
from sklearn.preprocessing import StandardScaler
stdHouse = StandardScaler().fit_transform(house.data)
特征數(shù)據(jù)中有些特征量綱比較大,有些特征量綱比較小,如果放在一起使用,會(huì)對(duì)最終分析結(jié)果產(chǎn)生不好影響。這里使用sklearn.preprocessing里的StandardScaler對(duì)房?jī)r(jià)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。house是標(biāo)準(zhǔn)化前的數(shù)據(jù),stdHouse是標(biāo)準(zhǔn)化后的數(shù)據(jù)。
from sklearn.model_selection import train_test_split
data_train,data_test,target_train,target_test = train_test_split(stdHouse,house.target,random_state=100)
這里使用sklearn.model_selection里train_test_split對(duì)數(shù)據(jù)進(jìn)行劃分。默認(rèn)數(shù)據(jù)的75%劃分為訓(xùn)練集,25%劃分為測(cè)試集。
from sklearn.linear_model import LinearRegression
linReg = LinearRegression().fit(data_train,target_train)
pred = linReg.predict(data_test)
使用sklearn.linear_model里的LinearRegression模型對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練和預(yù)測(cè)。得到的pred是預(yù)測(cè)數(shù)據(jù)。
from sklearn.metrics import mean_squared_error
mean_squared_error(target_test,pred)
mean_squared_error是均方誤差指標(biāo),最后得到真實(shí)值target_test和預(yù)測(cè)值之間的均方誤差為27.18。
本文用scikit-learn,對(duì)boston房?jī)r(jià)數(shù)據(jù)進(jìn)行了回歸分析。首先加載房?jī)r(jià)數(shù)據(jù);其次對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化;然后將數(shù)據(jù)劃分成訓(xùn)練集和測(cè)試集,并用線性回歸模型對(duì)訓(xùn)練集進(jìn)行訓(xùn)練,對(duì)測(cè)試集進(jìn)行預(yù)測(cè);最后用均方誤差指標(biāo)對(duì)真實(shí)值和預(yù)測(cè)值進(jìn)行評(píng)價(jià)。整個(gè)過(guò)程對(duì)于回歸分析有著重要的指導(dǎo)作用。