常見回歸算法

sklearn作為機(jī)器學(xué)習(xí)中一個(gè)強(qiáng)大的算法包玩讳,內(nèi)置了許多經(jīng)典的回歸算法议双。

線性回歸

線性回歸擬合一個(gè)帶系數(shù)的線性模型絮姆,以最小化數(shù)據(jù)中的觀測(cè)值與線性預(yù)測(cè)值之間的殘差平方和羊壹。

#X_train侥祭,X_test二維叁执, y_train一維

#加載線性模型算法庫
from sklearn import linear_model
# 創(chuàng)建線性回歸模型的對(duì)象
regr = linear_model.LinearRegression()
# 利用訓(xùn)練集訓(xùn)練線性模型
regr.fit(X_train, y_train)
# 使用測(cè)試集做預(yù)測(cè)
y_pred = regr.predict(X_test)
KNN回歸

在數(shù)據(jù)標(biāo)簽是連續(xù)變量而不是離散變量的情況下,可以使用KNN回歸矮冬。分配給查詢點(diǎn)的標(biāo)簽是根據(jù)其最近鄰居標(biāo)簽的平均值計(jì)算的谈宛。

from sklearn.neighbors import KNeighborsRegressor
neigh = KNeighborsRegressor(n_neighbors=2)
neigh.fit(X_train, y_train)
y_pred=neigh.predict(X_test)
決策樹回歸

決策樹也可以應(yīng)用于回歸問題

from sklearn.tree import  DecisionTreeRegressor
clf = DecisionTreeRegressor()
clf = clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
隨機(jī)森林回歸
from sklearn.ensemble import RandomForestRegressor
regr = RandomForestRegressor(max_depth=2, random_state=0,
                             n_estimators=100)
regr.fit(X_train, y_train)
pred = regr.predict(X_test)
XGBoost回歸

基本所有的機(jī)器學(xué)習(xí)比賽的冠軍方案都使用了XGBoost算法

import xgboost as xgb
xgb_model = xgb.XGBRegressor(max_depth = 3,
                             learning_rate = 0.1,
                             n_estimators = 100,
                             objective = 'reg:linear',
                             n_jobs = -1)

xgb_model.fit(X_train, y_train,
              eval_set=[(X_train, y_train)],
              eval_metric='logloss',
              verbose=100)
y_pred = xgb_model.predict(X_test)
支持向量回歸
from sklearn.svm import SVR
#創(chuàng)建SVR回歸模型的對(duì)象
clf = SVR()
# 利用訓(xùn)練集訓(xùn)練SVR回歸模型
clf.fit(X_train, y_train) 
"""
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,
    gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,
    tol=0.001, verbose=False)
"""
clf.predict(X_test)
神經(jīng)網(wǎng)絡(luò)
from sklearn.neural_network import MLPRegressor
mlp=MLPRegressor()
mlp.fit(X_train,y_train)
"""
MLPRegressor(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,
       beta_2=0.999, early_stopping=False, epsilon=1e-08,
       hidden_layer_sizes=(100,), learning_rate='constant',
       learning_rate_init=0.001, max_iter=200, momentum=0.9,
       n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,
       random_state=None, shuffle=True, solver='adam', tol=0.0001,
       validation_fraction=0.1, verbose=False, warm_start=False)
"""
y_pred = mlp.predict(X_test)
LightGBM回歸

LightGBM作為另一個(gè)使用基于樹的學(xué)習(xí)算法的梯度增強(qiáng)框架。相比于XGBoost胎署,LightGBM有如下優(yōu)點(diǎn)吆录,訓(xùn)練速度更快,效率更高效琼牧;低內(nèi)存的使用量恢筝。

import lightgbm as lgb
gbm = lgb.LGBMRegressor(num_leaves=31,
                        learning_rate=0.05,
                        n_estimators=20)
gbm.fit(X_train, y_train,
        eval_set=[(X_train, y_train)],
        eval_metric='logloss',
        verbose=100)
y_pred = gbm.predict(X_test)

嶺回歸

嶺回歸通過對(duì)系數(shù)進(jìn)行懲罰(L2范式)來解決普通最小二乘法的一些問題,例如巨坊,當(dāng)特征之間完全共線性(有解)或者說特征之間高度相關(guān)撬槽,這個(gè)時(shí)候適合用嶺回歸。

from sklearn.linear_model import Ridge
# 創(chuàng)建嶺回歸模型的對(duì)象
reg = Ridge(alpha=.5)
# 利用訓(xùn)練集訓(xùn)練嶺回歸模型
reg.fit(X_train, y_train)
pred= reg.predict(X_test)
Lasso回歸

Lasso是一個(gè)估計(jì)稀疏稀疏的線性模型趾撵。它在某些情況下很有用侄柔,由于它傾向于選擇參數(shù)值較少的解,有效地減少了給定解所依賴的變量的數(shù)量占调。Lasso模型在最小二乘法的基礎(chǔ)上加入L1范式作為懲罰項(xiàng)暂题。

from sklearn.linear_model import Lasso
# 創(chuàng)建Lasso回歸模型的對(duì)象
reg = Lasso(alpha=0.1)
# 利用訓(xùn)練集訓(xùn)練Lasso回歸模型
reg.fit(X_train, y_train)
"""
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
   normalize=False, positive=False, precompute=False, random_state=None,
   selection='cyclic', tol=0.0001, warm_start=False)
"""
# 使用測(cè)試集做預(yù)測(cè)
pred=reg.predict(X_test)
Elastic Net回歸

Elastic Net 是一個(gè)線性模型利用L1范式和L2范式共同作為懲罰項(xiàng)。這種組合既可以學(xué)習(xí)稀疏模型究珊,同時(shí)可以保持嶺回歸的正則化屬性.

from sklearn.linear_model import ElasticNet
#創(chuàng)建ElasticNet回歸模型的對(duì)象
regr = ElasticNet(random_state=0)
# 利用訓(xùn)練集訓(xùn)練ElasticNet回歸模型
regr.fit(X_train, y_train)
pred=regr.predict(X_test)
SGD回歸

SGD回歸也是一種線性回歸, 它通過隨機(jī)梯度下降最小化正則化經(jīng)驗(yàn)損失.

import numpy as np
from sklearn import linear_model
n_samples, n_features = 10, 5
np.random.seed(0)
clf = linear_model.SGDRegressor(max_iter=1000, tol=1e-3)
clf.fit(X_train, y_train)
pred=clf.predict(X_test)
"""
SGDRegressor(alpha=0.0001, average=False, early_stopping=False,
       epsilon=0.1, eta0=0.01, fit_intercept=True, l1_ratio=0.15,
       learning_rate='invscaling', loss='squared_loss', max_iter=1000,
       n_iter=None, n_iter_no_change=5, penalty='l2', power_t=0.25,
       random_state=None, shuffle=True, tol=0.001, validation_fraction=0.1,
       verbose=0, warm_start=False)
"""

回歸競(jìng)賽問題以及解決方案

入門級(jí)比賽:

Kaggle——房?jī)r(jià)預(yù)測(cè)
這個(gè)比賽作為最基礎(chǔ)的回歸問題之一薪者,很適合入門機(jī)器學(xué)習(xí)的小伙伴們。
網(wǎng)址:https://www.kaggle.com/c/house-prices-advanced-regression-techniques
經(jīng)典解決方案:
XGBoost解決方案: https://www.kaggle.com/dansbecker/xgboost
Lasso解決方案: https://www.kaggle.com/mymkyt/simple-lasso-public-score-0-12102

進(jìn)階比賽:

Kaggle——銷售量預(yù)測(cè)
這個(gè)比賽作為經(jīng)典的時(shí)間序列問題之一苦银,目標(biāo)是為了預(yù)測(cè)下個(gè)月每種產(chǎn)品和商店的總銷售額啸胧。
網(wǎng)址:https://www.kaggle.com/c/competitive-data-science-predict-future-sales
經(jīng)典解決方案:
LightGBM: https://www.kaggle.com/sanket30/predicting-sales-using-lightgbm
XGBoost: https://www.kaggle.com/fabianaboldrin/eda-xgboost
第一名解決方案:https://www.kaggle.com/c/competitive-data-science-predict-future-sales/discussion/74835#latest-503740

TOP比賽方案:

Kaggle——餐廳訪客預(yù)測(cè)
網(wǎng)址:https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting
解決方案:
1st 方案: https://www.kaggle.com/plantsgo/solution-public-0-471-private-0-505
7th 方案:https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting/discussion/49259#latest-284437
8th 方案:https://github.com/MaxHalford/kaggle-recruit-restaurant
12th 方案:https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting/discussion/49251#latest-282765
Kaggle——CorporaciónFavoritaGrocery銷售預(yù)測(cè)
網(wǎng)址:https://www.kaggle.com/c/favorita-grocery-sales-forecasting
解決方案:
1st 方案: https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47582#latest-360306
2st 方案:https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47568#latest-278474
3st 方案:https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47560#latest-302253
4st 方案:https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47529#latest-271077
5st方案:https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47556#latest-270515
6st方案:https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47575#latest-269568

來源:https://mp.weixin.qq.com/s/n0X4aZTtCrSoTJBT5MM9AA

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赶站,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纺念,更是在濱河造成了極大的恐慌贝椿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陷谱,死亡現(xiàn)場(chǎng)離奇詭異烙博,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烟逊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門渣窜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宪躯,你說我怎么就攤上這事乔宿。” “怎么了访雪?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵详瑞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我臣缀,道長(zhǎng)坝橡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任精置,我火速辦了婚禮计寇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脂倦。我一直安慰自己番宁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布赖阻。 她就那樣靜靜地躺著贝淤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪政供。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天朽基,我揣著相機(jī)與錄音布隔,去河邊找鬼。 笑死稼虎,一個(gè)胖子當(dāng)著我的面吹牛衅檀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霎俩,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼哀军,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沉眶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杉适,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤谎倔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后猿推,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體片习,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蹬叭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藕咏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秽五,死狀恐怖孽查,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坦喘,我是刑警寧澤盲再,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站起宽,受9級(jí)特大地震影響洲胖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坯沪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一绿映、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腐晾,春花似錦叉弦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巨柒,卻和暖如春樱拴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洋满。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工晶乔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牺勾。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓正罢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親驻民。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翻具,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容