人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程_第1頁
人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程_第2頁
人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程_第3頁
人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程_第4頁
人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

人工智能和機器學(xué)習(xí)之回歸算法:LightGBM回歸:數(shù)據(jù)預(yù)處理與特征工程1LightGBM回歸簡介1.11什么是LightGBMLightGBM是由Microsoft開發(fā)的一種梯度提升框架,它使用樹基算法,特別設(shè)計用于處理大規(guī)模數(shù)據(jù)。LightGBM在效率和性能上都有顯著提升,尤其在處理具有大量特征和數(shù)據(jù)集時表現(xiàn)優(yōu)異。它通過使用直方圖的差分來減少數(shù)據(jù)處理時間,并采用Leaf-wise的葉子生長策略來提高模型的準確性。1.22LightGBM回歸的工作原理LightGBM回歸是LightGBM框架應(yīng)用于回歸問題的實例。它通過構(gòu)建決策樹來預(yù)測連續(xù)值。在訓(xùn)練過程中,LightGBM使用梯度提升方法,這意味著它會逐步添加新的樹來修正現(xiàn)有模型的預(yù)測錯誤。每棵樹的添加都是基于前一棵樹的殘差,即實際值與預(yù)測值之間的差異。1.2.12.1梯度提升梯度提升是一種迭代的機器學(xué)習(xí)技術(shù),它通過構(gòu)建一系列弱預(yù)測模型(通常是決策樹),并將它們組合成一個強預(yù)測模型。在每一輪迭代中,新的模型會專注于減少前一輪模型的預(yù)測錯誤。具體來說,它會基于損失函數(shù)的負梯度來訓(xùn)練新的樹,這些負梯度可以被視為殘差或預(yù)測誤差。1.2.22.2Leaf-wise生長策略LightGBM采用Leaf-wise的生長策略,這意味著它會優(yōu)先選擇信息增益最大的葉子進行分裂,而不是像傳統(tǒng)的GBDT那樣按層生長。這種策略可以更快地降低損失函數(shù),但可能會導(dǎo)致過擬合。為了防止過擬合,LightGBM引入了最大深度和最小數(shù)據(jù)點數(shù)等參數(shù)來控制樹的生長。1.33LightGBM回歸的優(yōu)勢與應(yīng)用場景1.3.13.1優(yōu)勢高效性:LightGBM使用直方圖算法和并行學(xué)習(xí),大大提高了訓(xùn)練速度。內(nèi)存效率:它使用了更少的內(nèi)存,即使在處理大規(guī)模數(shù)據(jù)集時也能保持良好的性能??蓴U展性:LightGBM支持并行和分布式訓(xùn)練,適用于大規(guī)模數(shù)據(jù)處理。準確度:Leaf-wise的生長策略提高了模型的預(yù)測準確性。1.3.23.2應(yīng)用場景LightGBM回歸適用于各種需要預(yù)測連續(xù)值的場景,包括但不限于:房價預(yù)測:基于房屋的特征(如位置、大小、年齡等)預(yù)測房屋的售價。銷售預(yù)測:預(yù)測未來一段時間內(nèi)的產(chǎn)品銷售量,幫助企業(yè)進行庫存管理。能源消耗預(yù)測:預(yù)測家庭或企業(yè)的能源消耗,以優(yōu)化能源使用和減少浪費。1.3.33.3示例:房價預(yù)測假設(shè)我們有一個房價數(shù)據(jù)集,包含房屋的特征和售價。我們將使用LightGBM回歸模型來預(yù)測房價。importlightgbmaslgb

importpandasaspd

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.metricsimportmean_squared_error

#加載數(shù)據(jù)

data=pd.read_csv('house_prices.csv')

X=data.drop('price',axis=1)

y=data['price']

#劃分訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

#創(chuàng)建LightGBM數(shù)據(jù)集

lgb_train=lgb.Dataset(X_train,y_train)

lgb_eval=lgb.Dataset(X_test,y_test,reference=lgb_train)

#設(shè)置參數(shù)

params={

'boosting_type':'gbdt',

'objective':'regression',

'metric':{'l2','l1'},

'num_leaves':31,

'learning_rate':0.05,

'feature_fraction':0.9,

'bagging_fraction':0.8,

'bagging_freq':5,

'verbose':0

}

#訓(xùn)練模型

gbm=lgb.train(params,

lgb_train,

num_boost_round=20,

valid_sets=lgb_eval,

early_stopping_rounds=5)

#預(yù)測

y_pred=gbm.predict(X_test,num_iteration=gbm.best_iteration)

#評估

mse=mean_squared_error(y_test,y_pred)

print(f'MeanSquaredError:{mse}')在這個例子中,我們首先加載了房價數(shù)據(jù)集,并將其分為特征(X)和目標變量(y)。然后,我們使用train_test_split函數(shù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。接下來,我們創(chuàng)建了LightGBM的數(shù)據(jù)集,并設(shè)置了模型參數(shù)。我們訓(xùn)練模型,并在測試集上進行預(yù)測,最后計算預(yù)測結(jié)果的均方誤差(MSE)來評估模型的性能。通過上述代碼,我們可以看到LightGBM回歸模型在房價預(yù)測中的應(yīng)用,它能夠有效地處理大量特征,并提供準確的預(yù)測結(jié)果。2數(shù)據(jù)預(yù)處理2.11數(shù)據(jù)清洗:處理缺失值和異常值數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理的第一步,主要涉及處理數(shù)據(jù)集中的缺失值和異常值。這一步驟對于提高模型的準確性和穩(wěn)定性至關(guān)重要。2.1.1處理缺失值缺失值的處理方法有多種,包括刪除、填充和預(yù)測。在機器學(xué)習(xí)中,我們通常采用填充或預(yù)測的方法,因為刪除數(shù)據(jù)可能會導(dǎo)致信息損失。2.1.1.1示例:使用Pandas填充缺失值假設(shè)我們有一個包含缺失值的DataFrame:importpandasaspd

importnumpyasnp

data={

'A':[1,2,np.nan,4],

'B':[5,np.nan,np.nan,8],

'C':[9,10,11,12]

}

df=pd.DataFrame(data)我們可以使用fillna方法填充缺失值:#使用列的平均值填充缺失值

df.fillna(df.mean(),inplace=True)2.1.2處理異常值異常值是指數(shù)據(jù)集中明顯偏離其他值的觀測值。處理異常值的方法包括刪除、替換和使用統(tǒng)計方法進行修正。2.1.2.1示例:使用Z-score識別并處理異常值Z-score是一種統(tǒng)計方法,用于識別數(shù)據(jù)點與平均值之間的標準差數(shù)。我們可以使用scipy庫中的zscore函數(shù)來計算Z-score:fromscipyimportstats

importnumpyasnp

#計算Z-score

z_scores=stats.zscore(df['A'])

abs_z_scores=np.abs(z_scores)

#定義閾值

threshold=3

#識別異常值

outliers=(abs_z_scores>threshold)

#替換異常值為列的平均值

df['A'][outliers]=df['A'].mean()2.22數(shù)據(jù)轉(zhuǎn)換:數(shù)值化與歸一化數(shù)據(jù)轉(zhuǎn)換是將數(shù)據(jù)轉(zhuǎn)換為適合模型訓(xùn)練的格式。這包括將分類數(shù)據(jù)轉(zhuǎn)換為數(shù)值數(shù)據(jù),以及對數(shù)值數(shù)據(jù)進行歸一化處理。2.2.1數(shù)值化對于分類數(shù)據(jù),我們通常使用獨熱編碼(One-HotEncoding)或標簽編碼(LabelEncoding)將其轉(zhuǎn)換為數(shù)值數(shù)據(jù)。2.2.1.1示例:使用Pandas進行獨熱編碼假設(shè)我們有一個包含分類數(shù)據(jù)的DataFrame:data={

'A':['cat','dog','cat','bird'],

'B':['red','blue','green','red']

}

df=pd.DataFrame(data)我們可以使用get_dummies方法進行獨熱編碼:#對'A'和'B'列進行獨熱編碼

df=pd.get_dummies(df,columns=['A','B'])2.2.2歸一化歸一化是將數(shù)值數(shù)據(jù)縮放到一個特定的范圍,如0到1之間。這有助于提高模型的收斂速度和性能。2.2.2.1示例:使用Scikit-learn進行歸一化假設(shè)我們有一個包含數(shù)值數(shù)據(jù)的DataFrame:data={

'A':[1,2,3,4],

'B':[10,20,30,40]

}

df=pd.DataFrame(data)我們可以使用MinMaxScaler進行歸一化:fromsklearn.preprocessingimportMinMaxScaler

scaler=MinMaxScaler()

df[['A','B']]=scaler.fit_transform(df[['A','B']])2.33特征選擇:相關(guān)性分析與特征重要性評估特征選擇是選擇對模型預(yù)測最有貢獻的特征,以減少模型的復(fù)雜度和提高預(yù)測性能。2.3.1相關(guān)性分析相關(guān)性分析用于識別特征之間的相關(guān)性。高相關(guān)性的特征可能會導(dǎo)致多重共線性問題,影響模型的解釋性和預(yù)測性能。2.3.1.1示例:使用Pandas計算特征之間的相關(guān)性#計算特征之間的相關(guān)性

correlation_matrix=df.corr()2.3.2特征重要性評估特征重要性評估是使用模型(如LightGBM)來確定特征對模型預(yù)測的貢獻度。2.3.2.1示例:使用LightGBM評估特征重要性首先,我們需要將數(shù)據(jù)集分為特征和目標變量:X=df.drop('target',axis=1)

y=df['target']然后,訓(xùn)練LightGBM模型:importlightgbmaslgb

model=lgb.LGBMRegressor()

model.fit(X,y)最后,我們可以使用feature_importances_屬性來評估特征重要性:#獲取特征重要性

feature_importance=model.feature_importances_我們可以將特征重要性可視化,以幫助我們選擇最重要的特征:importmatplotlib.pyplotasplt

#繪制特征重要性

plt.barh(range(len(feature_importance)),feature_importance,align='center')

plt.yticks(range(len(feature_importance)),X.columns)

plt.xlabel('FeatureImportance')

plt.title('FeatureImportanceinLightGBMModel')

plt.show()通過以上步驟,我們可以有效地進行數(shù)據(jù)預(yù)處理,為LightGBM回歸模型提供高質(zhì)量的輸入數(shù)據(jù)。3特征工程特征工程是機器學(xué)習(xí)項目中至關(guān)重要的一步,它直接影響模型的性能。在本章中,我們將深入探討特征工程的三個方面:特征創(chuàng)建、特征編碼和特征組合,以優(yōu)化LightGBM回歸模型。3.11特征創(chuàng)建:基于業(yè)務(wù)邏輯的特征衍生特征創(chuàng)建涉及從現(xiàn)有數(shù)據(jù)中衍生出新的特征,這些特征能夠捕捉到數(shù)據(jù)中隱藏的模式,從而提高模型的預(yù)測能力?;跇I(yè)務(wù)邏輯的特征衍生,意味著利用領(lǐng)域知識來創(chuàng)造對模型有用的特征。3.1.1示例:房價預(yù)測假設(shè)我們正在預(yù)測房價,數(shù)據(jù)集中包含房屋的建造年份和當(dāng)前年份。我們可以創(chuàng)建一個新特征,表示房屋的年齡。importpandasaspd

#假設(shè)數(shù)據(jù)集

data={

'year_built':[2000,1990,2005,1980,2010],

'current_year':[2023,2023,2023,2023,2023]

}

df=pd.DataFrame(data)

#創(chuàng)建房屋年齡特征

df['house_age']=df['current_year']-df['year_built']3.1.2描述在上述代碼中,我們首先導(dǎo)入了pandas庫,然后創(chuàng)建了一個包含房屋建造年份和當(dāng)前年份的DataFrame。通過簡單的算術(shù)操作,我們計算了每棟房屋的年齡,并將其作為新特征添加到數(shù)據(jù)集中。3.22特征編碼:類別特征的處理方法在機器學(xué)習(xí)中,類別特征需要被轉(zhuǎn)換為數(shù)值形式,以便模型能夠理解和使用。常見的編碼方法包括獨熱編碼(One-HotEncoding)和標簽編碼(LabelEncoding)。3.2.1示例:獨熱編碼假設(shè)我們有一個數(shù)據(jù)集,其中包含房屋的類型(如公寓、別墅、聯(lián)排別墅)作為類別特征。我們可以使用pandas的get_dummies函數(shù)進行獨熱編碼。#假設(shè)數(shù)據(jù)集

data={

'house_type':['Apartment','Villa','Townhouse','Apartment','Villa']

}

df=pd.DataFrame(data)

#獨熱編碼

df_encoded=pd.get_dummies(df,columns=['house_type'])3.2.2描述在代碼示例中,我們首先創(chuàng)建了一個包含房屋類型的DataFrame。然后,我們使用pd.get_dummies函數(shù)對house_type列進行獨熱編碼,生成了三個新的二進制列,分別對應(yīng)三種房屋類型。3.2.3示例:標簽編碼對于有序的類別特征,我們可以使用標簽編碼,將每個類別映射到一個整數(shù)。#假設(shè)數(shù)據(jù)集

data={

'house_type':['Apartment','Villa','Townhouse','Apartment','Villa']

}

df=pd.DataFrame(data)

#標簽編碼

fromsklearn.preprocessingimportLabelEncoder

le=LabelEncoder()

df['house_type_encoded']=le.fit_transform(df['house_type'])3.2.4描述在標簽編碼的示例中,我們同樣從一個包含房屋類型的DataFrame開始。我們導(dǎo)入了sklearn.preprocessing中的LabelEncoder,并使用它來編碼house_type列。fit_transform方法將每個類別映射到一個整數(shù),從而完成編碼過程。3.33特征組合:交叉特征的生成特征組合是將兩個或多個特征組合成一個新的特征,以捕捉特征之間的交互效應(yīng)。這在處理非線性關(guān)系時特別有用。3.3.1示例:交叉特征假設(shè)我們正在預(yù)測房屋銷售價格,數(shù)據(jù)集中包含房屋的面積和臥室數(shù)量。我們可以創(chuàng)建一個交叉特征,表示每間臥室的平均面積。#假設(shè)數(shù)據(jù)集

data={

'area':[1200,1500,1800,2000,2200],

'bedrooms':[3,4,3,5,4]

}

df=pd.DataFrame(data)

#創(chuàng)建交叉特征

df['avg_area_per_bedroom']=df['area']/df['bedrooms']3.3.2描述在交叉特征的示例中,我們創(chuàng)建了一個包含房屋面積和臥室數(shù)量的DataFrame。通過計算每間臥室的平均面積,我們生成了一個新的交叉特征,這可能有助于模型更好地理解房屋大小與臥室數(shù)量之間的關(guān)系,從而提高預(yù)測準確性。通過以上三個方面的特征工程,我們可以顯著提升LightGBM回歸模型的性能,確保模型能夠從數(shù)據(jù)中學(xué)習(xí)到更豐富的信息。特征工程是一個迭代過程,需要根據(jù)模型的反饋不斷調(diào)整和優(yōu)化特征。4模型訓(xùn)練與評估4.11構(gòu)建LightGBM回歸模型在構(gòu)建LightGBM回歸模型之前,我們已經(jīng)完成了數(shù)據(jù)預(yù)處理和特征工程的步驟,確保了數(shù)據(jù)的質(zhì)量和模型輸入的合理性。接下來,我們將使用Python的lightgbm庫來構(gòu)建和訓(xùn)練模型。4.1.1數(shù)據(jù)準備假設(shè)我們已經(jīng)將數(shù)據(jù)集分為訓(xùn)練集和測試集,使用train_test_split函數(shù):fromsklearn.model_selectionimporttrain_test_split

#假設(shè)X是特征數(shù)據(jù),y是目標變量

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)4.1.2構(gòu)建模型使用LGBMRegressor類來創(chuàng)建LightGBM回歸模型:importlightgbmaslgb

#創(chuàng)建LightGBM數(shù)據(jù)集

lgb_train=lgb.Dataset(X_train,y_train)

lgb_eval=lgb.Dataset(X_test,y_test,reference=lgb_train)

#設(shè)置參數(shù)

params={

'boosting_type':'gbdt',

'objective':'regression',

'metric':{'l2','l1'},

'num_leaves':31,

'learning_rate':0.05,

'feature_fraction':0.9,

'bagging_fraction':0.8,

'bagging_freq':5,

'verbose':0

}

#訓(xùn)練模型

gbm=lgb.train(params,

lgb_train,

num_boost_round=20,

valid_sets=lgb_eval,

early_stopping_rounds=5)4.1.3模型解釋在上述代碼中,我們首先創(chuàng)建了LightGBM的數(shù)據(jù)集對象,分別用于訓(xùn)練和評估。然后,我們設(shè)置了模型的參數(shù),包括boosting_type(梯度提升決策樹類型)、objective(回歸目標)、metric(評估指標,這里使用了均方誤差和絕對誤差)、num_leaves(樹的葉子節(jié)點數(shù))、learning_rate(學(xué)習(xí)率)、feature_fraction(每棵樹使用的特征比例)、bagging_fraction(每棵樹使用的數(shù)據(jù)比例)、bagging_freq(袋裝的頻率)和verbose(輸出信息的詳細程度)。通過lgb.train函數(shù),我們訓(xùn)練模型,設(shè)置了迭代次數(shù)num_boost_round,并使用了early_stopping_rounds來防止過擬合,即如果在驗證集上的性能在連續(xù)5輪中沒有提升,則停止訓(xùn)練。4.22超參數(shù)調(diào)優(yōu):網(wǎng)格搜索與隨機搜索超參數(shù)調(diào)優(yōu)是提升模型性能的關(guān)鍵步驟。我們將使用網(wǎng)格搜索和隨機搜索兩種方法來尋找最佳的超參數(shù)組合。4.2.1網(wǎng)格搜索網(wǎng)格搜索是一種窮舉搜索方法,它在預(yù)定義的超參數(shù)空間中搜索最佳參數(shù)組合:fromsklearn.model_selectionimportGridSearchCV

#定義參數(shù)網(wǎng)格

param_grid={

'num_leaves':[20,30,40],

'learning_rate':[0.01,0.05,0.1],

'feature_fraction':[0.7,0.8,0.9],

'bagging_fraction':[0.7,0.8,0.9],

'bagging_freq':[3,5,7]

}

#創(chuàng)建模型

gbm=lgb.LGBMRegressor(objective='regression',metric='l2',verbose=-1)

#創(chuàng)建網(wǎng)格搜索對象

grid_search=GridSearchCV(gbm,param_grid,cv=5,scoring='neg_mean_squared_error',n_jobs=-1)

#執(zhí)行網(wǎng)格搜索

grid_search.fit(X_train,y_train)

#輸出最佳參數(shù)

print("Bestparametersfoundbygridsearchare:",grid_search.best_params_)4.2.2隨機搜索隨機搜索在超參數(shù)空間中隨機選擇參數(shù)組合進行評估,通常比網(wǎng)格搜索更高效:fromsklearn.model_selectionimportRandomizedSearchCV

importscipy.statsasst

#定義參數(shù)分布

param_dist={

'num_leaves':st.randint(20,50),

'learning_rate':st.uniform(0.01,0.09),

'feature_fraction':st.uniform(0.7,0.2),

'bagging_fraction':st.uniform(0.7,0.2),

'bagging_freq':st.randint(3,10)

}

#創(chuàng)建隨機搜索對象

random_search=RandomizedSearchCV(gbm,param_distributions=param_dist,n_iter=100,cv=5,scoring='neg_mean_squared_error',n_jobs=-1)

#執(zhí)行隨機搜索

random_search.fit(X_train,y_train)

#輸出最佳參數(shù)

print("Bestparametersfoundbyrandomsearchare:",random_search.best_params_)4.2.3模型解釋網(wǎng)格搜索和隨機搜索都是通過交叉驗證來評估不同參數(shù)組合下的模型性能。網(wǎng)格搜索通過遍歷所有可能的參數(shù)組合,而隨機搜索則隨機選擇參數(shù)組合進行評估。在上述代碼中,我們定義了超參數(shù)的搜索空間,使用了GridSearchCV和RandomizedSearchCV類來執(zhí)行搜索,并通過scoring參數(shù)指定了評估指標(這里使用了均方誤差的負值,因為scoring參數(shù)期望最大化值)。4.33模型評估:使用交叉驗證和評估指標模型訓(xùn)練完成后,我們需要評估模型的性能。這通常通過交叉驗證和計算評估指標來完成。4.3.1交叉驗證交叉驗證是一種評估模型性能的方法,它將數(shù)據(jù)集分為k個子集,每次將其中一個子集作為測試集,其余子集作為訓(xùn)練集,重復(fù)k次,最后計算k次評估結(jié)果的平均值:fromsklearn.model_selectionimportcross_val_score

#計算交叉驗證得分

scores=cross_val_score(gbm,X_train,y_train,cv=5,scoring='neg_mean_squared_error')

#輸出平均得分

print("Cross-validationscores(MSE):",scores)

print("AverageMSE:",scores.mean())4.3.2評估指標除了交叉驗證,我們還可以計算模型在測試集上的評估指標,如均方誤差(MSE)、均方根誤差(RMSE)和決定系數(shù)(R^2):fromsklearn.metricsimportmean_squared_error,r2_score

#預(yù)測測試集

y_pred=gbm.predict(X_test)

#計算MSE和RMSE

mse=mean_squared_error(y_test,y_pred)

rmse=mse**0.5

#計算R^2

r2=r2_score(y_test,y_pred)

#輸出評估指標

print("MeanSquaredError(MSE):",mse)

print("RootMeanSquaredError(RMSE):",rmse)

print("R^2Score:",r2)4.3.3模型解釋在交叉驗證中,我們使用了cross_val_score函數(shù),它自動執(zhí)行k折交叉驗證,并返回每折的評估結(jié)果。評估指標的選擇取決于問題的性質(zhì),對于回歸問題,MSE和RMSE是常用的指標,它們衡量了預(yù)測值與真實值之間的平均差異。R^2分數(shù)則表示模型解釋了數(shù)據(jù)中多少變異,值越接近1,表示模型的解釋能力越強。通過上述步驟,我們不僅構(gòu)建了LightGBM回歸模型,還通過超參數(shù)調(diào)優(yōu)和模型評估確保了模型的性能。在實際應(yīng)用中,這些步驟是迭代進行的,可能需要多次調(diào)整參數(shù)和評估模型,以達到最佳性能。5模型優(yōu)化與部署5.11模型優(yōu)化:特征選擇與降維在構(gòu)建LightGBM回歸模型時,特征選擇與降維是提升模型性能的關(guān)鍵步驟。通過這些技術(shù),我們可以減少模型的復(fù)雜度,避免過擬合,同時提高模型的預(yù)測準確性和運行效率。5.1.1特征選擇特征選擇旨在從原始特征集中挑選出最相關(guān)的特征,以構(gòu)建更高效、更準確的模型。在LightGBM中,可以利用模型訓(xùn)練后的特征重要性進行特征選擇。5.1.1.1示例代碼importlightgbmaslgb

fromsklearn.datasetsimportload_boston

fromsklearn.model_selectionimporttrain_test_split

#加載數(shù)據(jù)

data=load_boston()

X=data.data

y=data.target

#劃分數(shù)據(jù)集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

#創(chuàng)建LightGBM數(shù)據(jù)集

lgb_train=lgb.Dataset(X_train,y_train)

lgb_eval=lgb.Dataset(X_test,y_test,reference=lgb_train)

#設(shè)置參數(shù)

params={

'boosting_type':'gbdt',

'objective':'regression',

'metric':'rmse',

'num_leaves':31,

'learning_rate':0.05,

'feature_fraction':0.9,

}

#訓(xùn)練模型

gbm=lgb.train(params,

lgb_train,

num_boost_round=20,

valid_sets=lgb_eval,

early_stopping_rounds=5)

#獲取特征重要性

feature_importance=gbm.feature_importance(importance_type='gain')

#打印特征重要性

fori,featureinenumerate(data.feature_names):

print(f'特征{feature}:重要性{feature_importance[i]}')5.1.2降維降維技術(shù)如主成分分析(PCA)可以減少特征數(shù)量,同時保留數(shù)據(jù)集中的大部分信息。這有助于提高模型的訓(xùn)練速度和預(yù)測性能。5.1.2.1示例代碼fromsklearn.decompositionimportPCA

#創(chuàng)建PCA對象

pca=PCA(n_components=0.95)

#擬合并轉(zhuǎn)換訓(xùn)練數(shù)據(jù)

X_train_pca=pca.fit_transform(X_train)

#轉(zhuǎn)換測試數(shù)據(jù)

X_test_pca=pca.transform(X_test)

#使用降維后的數(shù)據(jù)重新訓(xùn)練LightGBM模型

gbm_pca=l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論