乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何用幾行代碼運(yùn)行 40 個回歸模型

       板橋胡同37號 2021-05-15

      圖片


      這篇文章教你如何使用 Lazy Predict 運(yùn)行超過 40 個機(jī)器學(xué)習(xí)模型進(jìn)行回歸項(xiàng)目。

      假設(shè)你需要執(zhí)行一項(xiàng)回歸機(jī)器學(xué)習(xí)項(xiàng)目。你已經(jīng)分析了你的數(shù)據(jù),進(jìn)行了一些數(shù)據(jù)清洗,創(chuàng)建了一些虛擬變量,現(xiàn)在,是時候運(yùn)行機(jī)器學(xué)習(xí)回歸模型了。你想到的十大模型有哪些?大多數(shù)人可能都不知道有“十大回歸模型”。如果你不知道,也不必?fù)?dān)心,因?yàn)樵诒疚牡淖詈?,你不僅可以運(yùn)行 10 個機(jī)器學(xué)習(xí)回歸模型,而且能運(yùn)行 40 多個機(jī)器學(xué)習(xí)回歸模型。

      幾周前,我在博客上發(fā)表了一篇名為《如何用幾行代碼運(yùn)行 30 個機(jī)器學(xué)習(xí)模型》(How to Run 30 Machine Learning Models with a Few Lines of Code)的文章,反響非常好。實(shí)際上,這是我到目前為止最受歡迎的博文。在那篇博文中,我創(chuàng)建了一個分類項(xiàng)目來嘗試 Lazy Predict。現(xiàn)在,我要在一個回歸項(xiàng)目測試 Lazy Predict。因此,我將使用典型的西雅圖房價數(shù)據(jù)集,在 Kaggle 上就能找到。

      Lazy Predict 是什么?

      不需要很多代碼,Lazy Predict 就能幫助構(gòu)建幾十個模型,并幫助了解哪些模型在不經(jīng)過任何參數(shù)調(diào)整的情況下工作得更好。說明其工作原理的最好方法就是使用一個小項(xiàng)目,現(xiàn)在就開始吧。

      回歸項(xiàng)目使用 Lazy Predict

      首先,要安裝 Lazy Predict,你可以pip install lazypredict回歸項(xiàng)目到你的終端。簡單得很。接下來,讓我們導(dǎo)入一些用于本項(xiàng)目的庫。你可以在這里找到完整的 Notebook。

      # Importing important libraries
      import pyforest
      from lazypredict.Supervised import LazyRegressor
      from pandas.plotting import scatter_matrix
      # Scikit-learn packages
      from sklearn.linear_model import LinearRegression
      from sklearn.tree import DecisionTreeRegressor
      from sklearn.ensemble import ExtraTreesRegressor
      from sklearn import metrics
      from sklearn.metrics import mean_squared_error
      # Hide warnings
      import warnings
      warnings.filterwarnings(“ignore”)
      # Setting up max columns displayed to 100
      pd.options.display.max_columns = 100

      你可以看到我導(dǎo)入了pyforest而非 Pandas 和 Numpy。在 Notebook 中,PyForest 可以非??焖俚貙?dǎo)入所有重要的庫。我寫了一篇關(guān)于它的博文,你可以在 這里 找到。接下來,讓我們來導(dǎo)入數(shù)據(jù)集。

      # Import dataset
      df = pd.read_csv('../data/kc_house_data_train.csv', index_col=0)

      看看這個數(shù)據(jù)集是什么樣子。 

      圖片

      下面我們來檢查一下數(shù)據(jù)類型。

      # Checking datatimes and null values
      df.info()

      圖片

      下面是吸引我注意力的幾件事情。第一件是id列與這個小項(xiàng)目沒有任何關(guān)聯(lián)。但是,如果你想更深入地研究這個項(xiàng)目,你應(yīng)該檢查是否存在重復(fù)項(xiàng)。另外,date列是一個對象類型。應(yīng)將其改為 DateTime 類型。這些列中的zipcode,latlong可能與價格幾乎或者根本沒有關(guān)聯(lián)。然而,因?yàn)楸卷?xiàng)目的目標(biāo)是演示lazy predict,所以我會保留它們。

      接下來,在運(yùn)行第一個模型之前,讓我們檢查一些統(tǒng)計數(shù)據(jù),以找出需要修改的地方。

      圖片

      是的,我看到了一些有趣的事情。首先,有一所房子有 33 間臥室,那不可能是真的。所以我在網(wǎng)上查了一下,結(jié)果發(fā)現(xiàn)我用它的id找到了這套房子,它實(shí)際上有 3 間臥室。你可以在 這里 找到這套房子。此外,有些房子看上去沒有衛(wèi)生間。我會包括至少 1 個衛(wèi)生間,這樣我們就可以完成數(shù)據(jù)清理了。

      # Fixing house with 33 bedrooms
      df[df['bedrooms'] == 33] = df[df['bedrooms'] == 3]
      # This will add 1 bathroom to houses without any bathroom
      df['bathrooms'] = df.bedrooms.apply(lambda x: 1 if x < 1 else x)
      拆分訓(xùn)練集和測試集

      我們現(xiàn)在可以拆分訓(xùn)練集和測試集了。但是在此之前,讓我們確保代碼不會出現(xiàn)naninfinite的值。

      # Removing nan and infinite values
      df.replace([np.inf, -np.inf], np.nan, inplace=True)
      df.dropna(inplace=True)

      現(xiàn)在將數(shù)據(jù)集分為 X 和 Y 兩個變量。我會給訓(xùn)練集分配 75% 的數(shù)據(jù)集,給測試集 25%。

      # Creating train test split
      X = df.drop(columns=['price])
      y = df.price
      # Call train_test_split on the data and capture the results
      X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=3,test_size=0.25)

      是時候找點(diǎn)樂子了!下面的代碼將運(yùn)行 40 多個模型,并顯示每個模型的 R-Squared 和 RMSE。做好準(zhǔn)備,開始!

      reg = LazyRegressor(ignore_warnings=False, custom_metric=None)
      models, predictions = reg.fit(X_train, X_test, y_train, y_test)
      print(models)

      圖片

      哇!對于花費(fèi)在上面的工作來說,這些結(jié)果非常好。對普通模型而言,這些都是非常好的 R-Squared 和 RMSE。就像我們看到的,我們運(yùn)行了 41 個普通模型,并且得到了我們需要的指標(biāo),你可以看到每個模型所花費(fèi)的時間。一點(diǎn)也不差。那么,你如何確定這些結(jié)果是否正確呢?通過運(yùn)行一個模型,我們可以查看結(jié)果,看它是否和我們得到的結(jié)果相近。我們要不要測試一下基于直方圖的梯度提升回歸樹?如果你從未聽說過這種算法,不要擔(dān)心,因?yàn)槲乙矎臎]聽說過它。你可以在 這里 找到一篇關(guān)于它的文章。

      復(fù)核結(jié)果

      首先,讓我們用 scikit-learn 導(dǎo)入這個模型。

      # Explicitly require this experimental feature
      from sklearn.experimental import enable_hist_gradient_boosting
      # Now you can import normally from ensemble
      from sklearn.ensemble import HistGradientBoostingRegressor

      此外,我們還創(chuàng)建了一個函數(shù)來檢查模型的度量。

      # Evaluation Functions
      def rmse(model, y_test, y_pred, X_train, y_train):
      r_squared = model.score(X_test, y_test)
      mse = mean_squared_error(y_test, y_pred)
      rmse = np.sqrt(mse)
      print('R-squared: ' + str(r_squared))
      print('Mean Squared Error: '+ str(rmse))
      # Create model line scatter plot
      def scatter_plot(y_test, y_pred, model_name):
      plt.figure(figsize=(10,6))
      sns.residplot(y_test, y_pred, lowess=True, color='#4682b4',
      line_kws={'lw': 2, 'color': 'r'})
      plt.title(str('Price vs Residuals for '+ model_name))
      plt.xlabel('Price',fontsize=16)
      plt.xticks(fontsize=13)
      plt.yticks(fontsize=13)
      plt.show()

      最后,我們來運(yùn)行這個模型并查看結(jié)果。

      # Histogram-based Gradient Boosting Regression Tree
      hist = HistGradientBoostingRegressor()
      hist.fit(X_train, y_train)
      y_pred = hist.predict(X_test)

      圖片

      瞧!我們用 Lazy Predict 得到的結(jié)果和這個結(jié)果非常接近。看來這確實(shí)很管用。

      最后想法

      Lazy Predict 是一個神奇的庫,易于使用,并且非??焖?,只需要很少的代碼就可以運(yùn)行普通模型。你可以使用 2 到 3 行的代碼來手動設(shè)置,而不需要手工設(shè)置多個普通模型。切記,不要把結(jié)果作為最終的模型,應(yīng)該始終對結(jié)果進(jìn)行復(fù)核,以確保庫工作正常。就像我在其他博文中提到的那樣,數(shù)據(jù)科學(xué)是一個復(fù)雜的領(lǐng)域,Lazy Predict 并不能取代那些優(yōu)化模型的專業(yè)人員的專業(yè)知識。請讓我知道它是如何為你工作的。

      作者介紹:

      Ismael Araujo,在紐約工作,數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師。

      原文鏈接:

      https:///how-to-run-40-regression-models-with-a-few-lines-of-code-5a24186de7d


      你也「在看」嗎???

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多