<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給AI研習社-譯站
      發送

      0

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      本文作者: AI研習社-譯站 編輯:李書田 2020-07-13 11:20
      導語:本教程的主題是:如何用Python中的scikit-learn庫,建立、訓練和測試你的第一個線性回歸機器學習模型。

      字幕組雙語原文:如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      英語原文:How to Build and Train Linear and Logistic Regression ML Models in Python

      翻譯:雷鋒字幕組(Key、君思)

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      線性回歸與logistic回歸,是目前最流行的兩個機器學習模型

      在我的上一篇教程里,你們已經學習了線性回歸機器學習算法背后的歷史和理論。

      本教程的主題是:如何用Python中的scikit-learn庫,建立、訓練和測試你的第一個線性回歸機器學習模型。


      第1節:線性回歸

      本教程中將使用的數據集

          由于線性回歸是我們在本課程中學習的第一種機器學習模型,在本教程中我們將使用人工創建的數據集。因為這樣我們可以專注于學習機器學習的概念,避免在清洗和處理數據上浪費不必要的時間。

          具體來說,我們將使用住房數據的數據集并嘗試預測住房價格。在建立模型之前,我們首先要導入所需的庫。

      本教程中將使用的庫

          我們將導入的第一個庫是pandas,它是源于"panel data"(面板數據)的復合詞,是處理表格數據最受歡迎的Python庫。

          按照慣例,以別名pd導入pandas。你可以使用以下語句導入pandas

      import pandas as pd

          接下來,我們需要導入NumPy,一個流行的數值計算庫。 Numpy因其NumPy array型數據結構,以及reshapearrangeappend這些非常實用的方法而聞名。

          按照慣例,以別名np導入NumPy。你可以使用以下語句導入numpy

      import numpy as np

          接下來,我們需要導入matplotlib,Python中最受歡迎的數據可視化庫。matplotlib通常以別名plt導入, 你可以使用以下語句導入matplotlib:

      import matplotlib.pyplot as plt
      %matplotlib inline

          語句%matplotlib inline將使我們的matplotlib可視化效果直接嵌入到Jupyter Notebook中,使它們更易于訪問和解釋。

          最后,導入seaborn,這是另一個Python數據可視化庫,可以讓我們更輕松地使用matplotlib創建美觀的可視化結果。

          你可以使用以下語句導入seaborn:

      import seaborn as sns

          總結一下,以下是本教程中需要導入的所有庫:

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      %matplotlib inline
      import seaborn as sns

          在以后的課程中,我會說明必需導入哪些庫,但不會再像這樣進行詳細的解釋。


      導入數據集

      正如之前所提到的,我們將用到一個房屋信息的數據集。數據集已經以csv文件的形式上傳到我的個人網站,鏈接如下:

      https://nickmccullum.com/files/Housing_Data.csv

      要向你的Jupyter Notebook中導入數據集,首先復制上述鏈接,粘貼到你的瀏覽器中進行下載。然后,將該文件移動到與你的Jupyter Notebook相同的文件夾下。

      完成這一步后,輸入以下Python指令將向你的Jupyter Notebook導入房屋數據集:

      raw_data = pd.read_csv('Housing_Data.csv')

      這一數據集有著一系列特征,包括:

      • 該區域居住人口的平均收入

      • 該區域房屋的平均房間個數

      • 房屋的出售價格

      • 房屋的具體地址

      這些數據都是隨機生成的,所以你會發現一些不太合理的細節(如某個數字本應該是整數,卻有著多個小數位數)。


      了解數據集

      現在,數據集已被導入并存儲為名為raw_data的變量。你可以用名為info的方法(method)得到該數據集的一些大致信息。具體來說,運行指令raw_data.info()將得到:

      RangeIndex: 5000 entries, 0 to 4999Data columns (total 7 columns):Avg. Area Income                5000 non-null float64Avg. Area House Age             5000 non-null float64Avg. Area Number of Rooms       5000 non-null float64

      另一個有效獲取數據集信息的途徑,是生成散點圖矩陣。你可以用seaborn庫中的pairplot方法,并傳入整個數據框作為該方法的參數。完整指令如下:

      sns.pairplot(raw_data)

      該指令的輸入如下:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      下一步,就讓我們開始建立我們的線性回歸模型吧。


      建立機器學習的線性回歸模型

      我們要做的第一件事,是將我們的數據分為一個x數組(包含我們用于預測的所有數據)以及一個y數組(包含我們試圖預測的所有數據)。

      首先,我們要選擇包含哪幾列。你可以通過raw_data.columns指令得到該數據框的所有列名。其輸出為:

      Index(['Avg. Area Income', 'Avg. Area House Age', 'Avg. Area Number of Rooms',       'Avg. Area Number of Bedrooms', 'Area Population', 'Price', 'Address'],      dtype='object')

      我們的x數組將包含以上的大部分變量,只排除Price(因為這就是我們試圖預測的一列)和Address(因為它只有文本信息)。

      讓我們建立x數組,并將它存儲為變量x:

      x = raw_data[['Avg. Area Income', 'Avg. Area House Age', 'Avg. Area Number of Rooms',       'Avg. Area Number of Bedrooms', 'Area Population']]

      然后,建立y數組,并存儲為變量y:

      y = raw_data['Price']

      于是,我們便成功地將數據集分成了一個x數組(即模型的輸入值)與一個y數組(即模型的輸出值)。在下一節,我們將學習如何進一步將數據集劃分為訓練數據與測試數據。


      劃分數據集為訓練數據和測試數據

      scikit-learn庫令我們可以很簡單地將我們的數據集劃分為訓練數據和測試數據。要做到這一步,我們需要從scikit-learn的model_selection模塊導入train_test_split函數:

      from sklearn.model_selection import train_test_split

      train_test_split函數需要三個輸入值:

      • 我們的x數組

      • 我們的y數組

      • 我們想要的測試數據大小

      有了這些參數,train_test_split函數便會為我們劃分數據了!如果我們希望我們的測試數據占全部數據的30%,可以通過以下代碼來實現:

      x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

      讓我們打開黑箱,看看里面到底發生了什么。

      train_test_split函數返回了一個長度為4的Python列表,其中的元素分別為x_train,x_test,y_train和y_test。然后,我們便可以通過Python的列表解包,將這些變量分配到各自對應的變量名下。現在,我們已經很好地劃分了我們的數據集,是時候建立和訓練機器學習的線性回歸模型了。


      建立和訓練模型

      首先,我們需要從scikit-learn庫中導入LinearRegression估計器。其Python指令如下:

      from sklearn.linear_model import LinearRegression

      然后,我們需要建立LinearRegression這個Python對象的一個實例。我們將它存儲為變量model。相應代碼如下:

      model = LinearRegression()

      我們可以用scikit-learn庫的fit方法,在我們的訓練數據上訓練這個模型。

      model.fit(x_train, y_train)

      現在,我們已經將這個模型訓練好了。你可以通過以下指令查看這個模型的每個參數:

      print(model.coef_)

      上述指令將輸出:

      [2.16176350e+01 1.65221120e+05 1.21405377e+05 1.31871878e+03
       1.52251955e+01]

      類似地,也可以通過以下指令查看所得回歸方程的截距:

      print(model.intercept_)

      上述指令將輸出:

      -2641372.6673013503

      還有一個更好的方法來查看所有參數,那就是將它們一并放進一個數據框里。這一步可以通過以下指令完成:

      pd.DataFrame(model.coef_, x.columns, columns = ['Coeff'])

      這里的輸出就好理解多了:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      讓我們花點時間,來看看這些參數分別是什么意思。我們具體查看變量Area Population,其參數大概為15。

      這一數字表示,若其他所有變量保持不變,而Area Population增加了1個單位的話,那么我們預測的變量——在這里是Price——將增加15個單位。

      換句話說,一個變量有著很大的參數,說明它對你試圖預測的變量有著很大的影響。而一個有著小參數的變量,其影響也同樣較小。

      現在我們已經建立了我們的第一個機器學習線性回歸模型,是時候用這個模型去為我們的測試數據做預測了。


      根據我們的模型做出預測

      scikit-learn  使從機器學習模型進行預測變得非常容易。您只需要 在 我們之前創建的模型變量上調用  預報方法  。

      由于  預測  變量旨在進行預測,因此它僅接受  x數組  參數。它將 為您生成  y值!

      這是您需要使用predict  方法從我們的模型生成預測的代碼  :

      predictions = model.predict(x_test)

       x_test 特征值 存儲在 predictions 預測變量中。由于我們使用  train_test_split  方法將實際  值存儲  在  y_test中,因此下一步要做的是將  預測  數組的值與y_test的值進行  比較。

      一種簡單的方法是使用散點圖繪制兩個數組。 使用  plt.scatter  方法很容易構建  

      plt.scatter(y_test, predictions)

      這是此代碼生成的散點圖:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,我們的預測值非常接近數據集中觀測值的實際值。該散點圖中的一條完美的對角線將表明我們的模型完美地預測了  y數組  值。

      直觀地評估模型性能的另一種方法是繪制其  殘差,即實際  y數組  值與預測  y數組  值之間的差。

      下面的語句是實現此目的簡單方法:

      plt.hist(y_test - predictions)

      這是此代碼生成的可視化效果:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      這是我們的機器學習模型殘差的直方圖。

      您可能會注意到,我們的機器學習模型中的殘差似乎呈正態分布。這是一個很好的信號!

      它表明我們已經選擇了適當的模型類型(在這種情況下為線性回歸)來根據我們的數據集進行預測。在本課程的后面,我們將詳細了解如何確保使用正確的模型。


      測試模型的性能

      在本課程開始時,我們了解到,回歸機器學習模型使用了三個主要性能指標:

      • 平均絕對誤差

      • 均方誤差

      • 均方根誤差

      現在,我們將看到如何為本教程中構建的模型計算這些指標中的每一個。在繼續之前,請在Jupyter Notebook中運行以下import語句:

      from sklearn import metrics

      平均絕對誤差(MAE)

      您可以使用以下語句在Python中計算平均絕對錯誤:

      metrics.mean_absolute_error(y_test, predictions)


      均方誤差(MSE)

      同樣,您可以使用以下語句在Python中計算均方誤差:

      metrics.mean_squared_error(y_test, predictions)


      均方根誤差(RMSE)

      與均值絕對誤差和均方誤差不同,  scikit-learn  實際上沒有內置的方法來計算均方根誤差。

      幸運的是,它確實不需要。由于均方根誤差只是均方根誤差的平方根,因此您可以使用NumPy的  sqrt  方法輕松地進行計算:

      np.sqrt(metrics.mean_squared_error(y_test, predictions))


      本教程的完整代碼

      這是此Python線性回歸機器學習教程的全部代碼。您也可以在此GitHub存儲庫中查看它  。

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      import seaborn as sns
      %matplotlib inline
      raw_data = pd.read_csv('Housing_Data.csv')
      x = raw_data[['Avg. Area Income', 'Avg. Area House Age', 'Avg. Area Number of Rooms',
             'Avg. Area Number of Bedrooms', 'Area Population']]
      y = raw_data['Price']
      from sklearn.model_selection import train_test_split
      x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3)
      from sklearn.linear_model import LinearRegression
      model = LinearRegression()
      model.fit(x_train, y_train)
      print(model.coef_)
      print(model.intercept_)
      pd.DataFrame(model.coef_, x.columns, columns = ['Coeff'])
      predictions = model.predict(x_test)
      # plt.scatter(y_test, predictions)
      plt.hist(y_test - predictions)
      from sklearn import metrics
      metrics.mean_absolute_error(y_test, predictions)
      metrics.mean_squared_error(y_test, predictions)
      np.sqrt(metrics.mean_squared_error(y_test, predictions))


      第2節:logistic 回歸

      注意-如果到目前為止您已經在本教程中進行編碼,并且已經建立了線性回歸模型,則在繼續之前,您需要打開一個新的Jupyter Notebook(其中沒有代碼)。


      我們將在本教程中使用的數據集

      泰坦尼克號數據集是非常著名的數據集,其中包含有關泰坦尼克號上乘客的特征。它通常用作logistic回歸問題的入門數據集。

      在本教程中,我們將結合泰坦尼克號數據集和Python logistic回歸模型來預測乘客是否在泰坦尼克號墜機事故中幸免。

      在  原來的泰坦尼克號數據集  是公開的上  Kaggle.com,這是一個網站,主機的數據集和數據科學競賽。

      為了使您本課程的學生更輕松,我們將使用Titanic數據集的半清潔版本,這將節省您在數據清潔和處理上的時間。

      實際上,已清理的Titanic數據集已可供您使用。您可以通過單擊以下鏈接下載數據文件:

      下載此文件后, 在同一工作目錄中打開  Jupyter Notebook,我們可以開始構建 logistic回歸模型。


      我們將在本教程中使用的導入

      和以前一樣,本教程中將使用多個開源軟件庫。這是我通過Python Logistic回歸模型進行編碼時需要遵循的導入:

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      %matplotlib inline
      import seaborn as sns

      接下來,我們需要將Titanic數據集導入到我們的Python腳本中。


      通過探索性數據分析了解我們的數據集

      每個分類類別的普遍性

      在使用機器學習技術對分類問題進行建模時,了解類別之間的比率始終是一個好主意。對于此特定問題,查看我們的訓練數據中有多少幸存者與非幸存者是有用的。

      一種簡單的可視化方法是使用  seaborn  plot  countplot。在此示例中,您可以 使用以下Python代碼創建適當的  seasborn繪圖:

      sns.countplot(x='Survived', data=titanic_data)

      這將生成以下圖:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,與幸存者相比,非幸存者的發病率要高得多。


      性別之間的成活率

      比較相對于某些其他數據特征的生存率也很有用。例如,我們可以 使用以下Python代碼來比較Sex的Male  和  Female  值  之間的生存率  :

      sns.countplot(x='Survived', hue='Sex', data=titanic_data)

      這將生成以下圖:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,  性別  為  男性的  乘客比性別  為  女性的乘客更有可能是非幸存者  。


      旅客艙位之間的成活率

      我們可以使用Pclass  變量執行類似的分析,  以查看哪個旅客類別最有(和最少)可能有幸存者。

      這是執行此操作的代碼:

      sns.countplot(x='Survived', hue='Pclass', data=titanic_data)

      這將生成以下圖:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      從該圖中最明顯的觀察結果是, 當泰坦尼克號墜毀時,Pclass  值為  3的乘客-表示最便宜,最不豪華的第三等艙的乘客  更有可能死亡。


      從我們的數據集中刪除空數據

      首先,讓我們檢查數據集中包含缺失數據的位置。為此,請運行以下命令:

      titanic_data.isnull()

      這將生成一個布爾值的DataFrame,如果該單元格 為空值,則該單元格包含  True,否則為  False  。這是它的樣子的圖像:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      評估此數據集中缺失數據的一種更為有用的方法是創建快速可視化。為此,我們可以使用  seaborn  可視化庫。這是快速命令,可用于 使用  seaborn  庫創建  熱圖:

      sns.heatmap(titanic_data.isnull(), cbar=False)

      這是生成的可視化效果:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      在此可視化中,白線表示數據集中缺少的值。您會看到“  年齡”  和“  機艙”列包含“泰坦尼克號”數據集中大部分丟失的數據。

       特別是“  年齡”列包含的缺失量很小,我們可以使用某種形式的數學來填充缺失數據。另一方面,  機艙  數據缺少足夠的數據,因此我們有可能將其完全從模型中刪除。

      用其余數據集中的平均數據填充缺失數據的過程稱為  歸因。現在,我們將使用  插補  來填充“ 年齡”  列中的缺失數據  。

      估算的最基本形式是   用 整個數據集中的平均年齡值 填充缺失的  年齡數據  。但是,有更好的方法。

      我們將 使用 該乘客所屬 的特定Pclass乘客艙的平均Age值來  填充缺少的  Age值  。要了解為什么這樣做有用,請考慮以下箱線圖:

      sns.boxplot(titanic_data['Pclass'], titanic_data['Age'])

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,  Pclass  值為  1  (最昂貴的乘客艙)的乘客往往是最老的,而Pclass  值為  3  (最便宜的乘客)的乘客  往往是最年輕的。這是非常符合邏輯的,所以我們將使用的平均  年齡  不同范圍內的值  Pclass  數據  imputate  我們丟失的數據  年齡  列。

      對像泰坦尼克號數據集這樣的數據集執行插補的最簡單方法  是構建自定義函數。首先,我們需要確定 每個  Pclass  值的平均  Age值。

      #Pclass value 1
      titanic_data[titanic_data['Pclass'] == 1]['Age'].mean()
      #Pclass value 2
      titanic_data[titanic_data['Pclass'] == 2]['Age'].mean()
      #Pclass 3
      titanic_data[titanic_data['Pclass'] == 2]['Age'].mean()

      這是我們將用來估算  缺少的  Age  變量的最終函數  :

      def impute_missing_age(columns):
          age = columns[0]
          passenger_class = columns[1]
          
          if pd.isnull(age):
              if(passenger_class == 1):
                  return titanic_data[titanic_data['Pclass'] == 1]['Age'].mean()
              elif(passenger_class == 2):
                  return titanic_data[titanic_data['Pclass'] == 2]['Age'].mean()
              elif(passenger_class == 3):
                  return titanic_data[titanic_data['Pclass'] == 3]['Age'].mean()
              
          else:
              return age

      現在,該插補功能已經完成,我們需要將其應用于titanic_data  DataFrame 中的每一行  。Python的  apply  方法是一個出色的工具:

      titanic_data['Age'] = titanic_data[['Age', 'Pclass']].apply(impute_missing_age, axis = 1)

      既然我們已經 對每一行執行了  估算以處理丟失的  Age  數據,那么讓我們研究一下原始箱形圖:

      sns.heatmap(titanic_data.isnull(), cbar=False)

      您會 發現我們的熊貓DataFrame 的Age列中不再缺少任何數據  !

      您可能想知道為什么我們要花費大量時間 專門處理“ 年齡”列中的丟失數據  。這是因為考慮到年齡  對大多數災難和疾病生存的影響,  在我們的數據集中,該變量可能具有很高的預測價值。

      現在我們已經了解了該數據集的結構并刪除了缺失的數據,讓我們開始構建logistic回歸機器學習模型。


      建立logistic回歸模型

      現在是時候刪除我們的logistic回歸模型了。


      刪除缺少太多數據的列

      首先,我們刪除“  Cabin” 列。正如我們所提到的,此列中丟失數據的普遍性意味著 對丟失數據進行估算是不明智的  ,因此我們將使用以下代碼將其完全刪除:

      titanic_data.drop('Cabin', axis=1, inplace = True)

      接下來,讓我們使用pandas dropna()  方法刪除包含丟失數據的所有其他列  :

      titanic_data.dropna(inplace = True)


      使用虛擬變量處理分類數據

      我們需要處理的下一個任務是處理分類特征。即,我們需要找到一種方法來對非自然數值的觀測值進行數值處理。

      性別  列就是一個很好的例子,該  列具有兩個值:  Male  和  Female。同樣,“  登船”一  欄包含一個字母,表示該乘客離開的城市。

      為了解決這個問題,我們將創建  偽變量。這些為非數值特征的每個類別分配一個數值。

      幸運的是,  pandas  具有一個名為get_dummies()的內置方法   ,可輕松創建虛擬變量。該  get_dummies  方法確實有一個問題-它會在數據幀列中的每個值創建新列。

      讓我們考慮一個示例,以幫助您更好地理解這一點。如果我們 在Age  列上調用  get_dummies()方法,  則會得到以下輸出:

      pd.get_dummies(titanic_data['Sex'])

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,這將創建兩個新列:  female  和  male。這些列都將是彼此的完美預測,由于值  0  在  雌性列指示的值  1  在  雄性  柱,反之亦然。

      這稱為  多重共線性  ,它會大大降低算法的預測能力。要刪除它,我們可以將參數drop_first = True添加   到  get_dummies  方法中,如下所示:

      pd.get_dummies(titanic_data['Sex'], drop_first = True)

      現在,讓我們為我們的虛擬變量列  性別  和  走上  列,并將它們分配給變量稱為  性  和  進發。

      sex_data = pd.get_dummies(titanic_data['Sex'], drop_first = True)
      embarked_data = pd.get_dummies(titanic_data['Embarked'], drop_first = True)

      還有就是要注意的一個重要的事情有關  走上  下面定義的變量。它有兩列:  Q  和  S,但是由于我們已經刪除了另一列(  C  列),因此其余兩列都不是彼此的完美預測變量,因此   在修改后的新數據集中不存在多重共線性。


      將虛擬變量添加到  pandas  DataFrame

      Next we need to add our sex and embarked columns to the DataFrame.

      您可以   使用以下代碼 將這些數據列連接到現有的  pandas DataFrame中:

      titanic_data = pd.concat([titanic_data, sex_data, embarked_data], axis = 1)

      現在,如果您運行命令  print(titanic_data.columns),那么Jupyter Notebook將生成以下輸出:

      Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
             'Parch', 'Ticket', 'Fare', 'Embarked', 'male', 'Q', 'S'],
            dtype='object')

      的存在  男性,  Q和  S  列顯示,我們的數據被成功地連接起來。


      從數據集中刪除不必要的列

      這意味著我們現在可以 從DataFrame中刪除原始的  Sex  和  Embarked列。還有其他一些列(如  Name  ,  PassengerId,  Ticket)無法預測泰坦尼克號的撞車幸存率,因此我們也將其刪除。以下代碼為我們處理了此問題:

      titanic_data.drop(['Name', 'Ticket', 'Sex', 'Embarked'], axis = 1, inplace = True)

      如果您 現在打印  titanic_data.columns,那么Jupyter Notebook將生成以下輸出:

      Index(['Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare',
             'male', 'Q', 'S'],
            dtype='object'

      DataFrame現在具有以下外觀:

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      如您所見,該數據集中的每個字段現在都是數字,這使其成為logistic回歸機器學習算法的理想候選者。


      創建培訓數據和測試數據

      接下來,是時候將我們的  titanic_data  分為訓練數據和測試數據了。和以前一樣,我們將使用scikit-learn的內置功能   來執行此操作。

      首先,我們需要將我們的數據分為  x  值(我們將用于進行預測 的數據)和  y值(我們正在嘗試預測的數據)。以下代碼處理此問題:

      y_data = titanic_data['Survived']
      x_data = titanic_data.drop('Survived', axis = 1)

      接下來,我們需要 從scikit-learn導入  train_test_split函數  。以下代碼執行此導入:

      from sklearn.model_selection import train_test_split

      最后,我們可以 結合使用  train_test_split函數和列表解壓縮來生成我們的訓練數據和測試數據:

      x_training_data, x_test_data, y_training_data, y_test_data = train_test_split(x_data, y_data, test_size = 0.3)

      請注意,在這種情況下,測試數據是參數test_size = 0.3指定的原始數據集的30%  。

      現在,我們為logistic回歸模型創建了訓練數據和測試數據。我們將在本教程的下一部分中訓練我們的模型。


      訓練logistic回歸模型

      要訓練我們的模型,我們首先需要 使用以下命令從scikit-learn導入適當的模型  :

      from sklearn.linear_model import LogisticRegression

      接下來,我們需要通過實例化LogisticRegression  對象的實例來創建模型  :

      model = LogisticRegression()

      要訓練模型,我們需要 在 剛剛創建的LogisticRegression對象上調用  fit方法,  并傳入  x_training_data  和  y_training_data  變量,如下所示:

      model.fit(x_training_data, y_training_data)

      我們的模型現已訓練完畢。我們將在本教程的下一部分中開始使用此模型進行預測。


      使用我們的Logistic回歸模型進行預測

      讓我們使用 剛剛創建的模型logistic回歸模型對測試數據進行一組預測  。我們將這些預測存儲在一個名為predictions的變量中  :

      predictions = model.predict(x_test_data)

      我們已經做出了預測。接下來讓我們檢查模型的準確性。


      測量Logistic回歸機器學習模型的性能

      scikit-learn具有一個出色的內置模塊,稱為分類 _報告   ,可輕松衡量分類機器學習模型的性能。我們將使用此模塊來評估我們剛剛創建的模型的性能。

      首先,讓我們導入模塊:

      from sklearn.metrics import classification_report

      接下來,讓我們使用該模塊為我們的logistic回歸機器學習模塊計算性能指標:

      classification_report(y_test_data, predictions)

      這是此命令的輸出:

                   precision    recall  f1-score   support
                 0       0.83      0.87      0.85       169
                 1       0.75      0.68      0.72        98
          accuracy                           0.80       267
         macro avg       0.79      0.78      0.78       267
      weighted avg       0.80      0.80      0.80       267

      如果您有興趣查看原始的混淆矩陣并手動計算性能指標,則可以使用以下代碼進行操作:

      from sklearn.metrics import confusion_matrix
      print(confusion_matrix(y_test_data, predictions))

      這將產生以下輸出:

      [[145  22]
       [ 30  70]]


      本教程的完整代碼

      您可以在GitHub存儲庫中查看本教程的完整代碼  。還將其粘貼在下面以供您參考:

      import pandas as pd
      import numpy as np
      import matplotlib.pyplot as plt
      %matplotlib inline
      import seaborn as sns
      #Import the data set
      titanic_data = pd.read_csv('titanic_train.csv')
      #Exploratory data analysis
      sns.heatmap(titanic_data.isnull(), cbar=False)
      sns.countplot(x='Survived', data=titanic_data)
      sns.countplot(x='Survived', hue='Sex', data=titanic_data)
      sns.countplot(x='Survived', hue='Pclass', data=titanic_data)
      plt.hist(titanic_data['Age'].dropna())
      plt.hist(titanic_data['Fare'])
      sns.boxplot(titanic_data['Pclass'], titanic_data['Age'])
      #Imputation function
      def impute_missing_age(columns):
          age = columns[0]
          passenger_class = columns[1]
          
          if pd.isnull(age):
              if(passenger_class == 1):
                  return titanic_data[titanic_data['Pclass'] == 1]['Age'].mean()
              elif(passenger_class == 2):
                  return titanic_data[titanic_data['Pclass'] == 2]['Age'].mean()
              elif(passenger_class == 3):
                  return titanic_data[titanic_data['Pclass'] == 3]['Age'].mean()
              
          else:
              return age
      #Impute the missing Age data
      titanic_data['Age'] = titanic_data[['Age', 'Pclass']].apply(impute_missing_age, axis = 1)
      #Reinvestigate missing data
      sns.heatmap(titanic_data.isnull(), cbar=False)
      #Drop null data
      titanic_data.drop('Cabin', axis=1, inplace = True)
      titanic_data.dropna(inplace = True)
      #Create dummy variables for Sex and Embarked columns
      sex_data = pd.get_dummies(titanic_data['Sex'], drop_first = True)
      embarked_data = pd.get_dummies(titanic_data['Embarked'], drop_first = True)
      #Add dummy variables to the DataFrame and drop non-numeric data
      titanic_data = pd.concat([titanic_data, sex_data, embarked_data], axis = 1)
      titanic_data.drop(['Name', 'PassengerId', 'Ticket', 'Sex', 'Embarked'], axis = 1, inplace = True)
      #Print the finalized data set
      titanic_data.head()
      #Split the data set into x and y data
      y_data = titanic_data['Survived']
      x_data = titanic_data.drop('Survived', axis = 1)
      #Split the data set into training data and test data
      from sklearn.model_selection import train_test_split
      x_training_data, x_test_data, y_training_data, y_test_data = train_test_split(x_data, y_data, test_size = 0.3)
      #Create the model
      from sklearn.linear_model import LogisticRegression
      model = LogisticRegression()
      #Train the model and create predictions
      model.fit(x_training_data, y_training_data)
      predictions = model.predict(x_test_data)
      #Calculate performance metrics
      from sklearn.metrics import classification_report
      print(classification_report(y_test_data, predictions))
      #Generate a confusion matrix
      from sklearn.metrics import confusion_matrix
      print(confusion_matrix(y_test_data, predictions))


      總結

      在本教程中,您學習了如何在Python中構建線性回歸和logistic回歸機器學習模型。

      如果您想了解有關構建,培訓和部署前沿機器學習模型的更多信息,我的電子書  實用機器學習  將教您如何使用實際項目構建9種不同的機器學習模型。

      您可以將代碼從電子書部署到GitHub或個人投資組合,以向潛在雇主展示。這本書將于8月3日發行,  現在可以50%的價格預訂

      這是您從本文中學到的內容的簡短摘要:

      • 如何導入構建線性回歸機器學習算法所需的庫

      • 如何使用scikit-learn將數據集分為訓練數據和測試數據 

      • 如何使用  scikit-learn  訓練線性回歸模型并使用該模型進行預測

      • 如何使用scikit-learn計算線性回歸性能指標 

      • 為什么Titanic數據集經常用于學習機器學習分類技術

      • 處理分類機器學習問題的數據集時如何執行探索性數據分析

      • 如何處理Pandas DataFrame中的缺失數據

      • 什么  歸集  手段,以及如何使用它來填補丟失的數據

      • 如何為機器學習數據集中的分類數據創建虛擬變量

      • 如何在Python中訓練Logistic回歸機器學習模型

      • 如何在Python中使用logistic回歸模型進行預測

      • 如何將  scikit-的  classification_report  為機器學習分類問題快速計算性能指標



      雷鋒字幕組是由AI愛好者組成的志愿者翻譯團隊;團隊成員有大數據專家、算法工程師、圖像處理工程師、產品經理、產品運營、IT咨詢人、在校師生;志愿者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。

      了解字幕組請聯系微信:tlacttlact

      轉載請聯系字幕組微信并注明出處:雷鋒字幕組

      雷鋒網雷鋒網雷鋒網

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?

      分享:
      相關文章

      知情人士

      AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲国产麻豆一区二区三区| 中文字幕亚洲综合久久| 国产在线观看网址不卡一区| 92在线精品视频在线播放| 激情综合一区二区三区| 丝袜shi在线播放| 国产激情一区二区三区午夜| 国产精品偷伦费观看一次| av中文无码韩国亚洲色偷偷| 欧美人与动人物牲交免费观看久久| 91丨国产丨白浆秘?3D动漫| 丰腴饱满的极品熟妇| 亚洲综合图片区| 亚洲精品av一区在线观看| 黑人av无码一区| 男人的天堂av一二区| 无码h肉动漫在线观看| 日韩午夜福利无码专区a| 女人被狂c躁到高潮视频| 人妻2| 欧美freesex黑人又粗又大 | 亚洲の无码国产の无码步美| 亚洲中文字幕2025| 色婷婷久久| 国产亚洲av手机在线观看| 亚洲国产成人无码av在线播放| 欧美 日韩 国产 成人 在线观看| 国产精品无码久久综合网| 色中色中文字幕| 中文字幕在线日韩| 日本不卡一区二区高清中文| 夜夜高潮夜夜爽国产伦精品| 黑人免费一区二区三区| 少妇高潮灌满白浆毛片免费看| 蓝田县| 欧美成人影院亚洲综合图| 国产AV一二三| 久久久久亚洲精品中文字幕| 爱豆传媒午夜福利| 影音先锋av中文字幕| 国产乱妇无码毛片A片在线看下载 国产成人无码A片免费看 |