0
字幕組雙語原文:如何在 Python 中建立和訓練線性和 logistic 回歸 ML 模型?
英語原文:How to Build and Train Linear and Logistic Regression ML Models in Python
翻譯:雷鋒字幕組(Key、君思)

線性回歸與logistic回歸,是目前最流行的兩個機器學習模型。
在我的上一篇教程里,你們已經學習了線性回歸機器學習算法背后的歷史和理論。
本教程的主題是:如何用Python中的scikit-learn庫,建立、訓練和測試你的第一個線性回歸機器學習模型。
本教程中將使用的數據集
由于線性回歸是我們在本課程中學習的第一種機器學習模型,在本教程中我們將使用人工創建的數據集。因為這樣我們可以專注于學習機器學習的概念,避免在清洗和處理數據上浪費不必要的時間。
具體來說,我們將使用住房數據的數據集并嘗試預測住房價格。在建立模型之前,我們首先要導入所需的庫。
本教程中將使用的庫
我們將導入的第一個庫是pandas,它是源于"panel data"(面板數據)的復合詞,是處理表格數據最受歡迎的Python庫。
按照慣例,以別名pd導入pandas。你可以使用以下語句導入pandas:
import pandas as pd
接下來,我們需要導入NumPy,一個流行的數值計算庫。 Numpy因其NumPy array型數據結構,以及reshape,arrange,append這些非常實用的方法而聞名。
按照慣例,以別名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)
該指令的輸入如下:

下一步,就讓我們開始建立我們的線性回歸模型吧。
我們要做的第一件事,是將我們的數據分為一個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'])
這里的輸出就好理解多了:

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)
這是此代碼生成的散點圖:

如您所見,我們的預測值非常接近數據集中觀測值的實際值。該散點圖中的一條完美的對角線將表明我們的模型完美地預測了 y數組 值。
直觀地評估模型性能的另一種方法是繪制其 殘差,即實際 y數組 值與預測 y數組 值之間的差。
下面的語句是實現此目的簡單方法:
plt.hist(y_test - predictions)
這是此代碼生成的可視化效果:

這是我們的機器學習模型殘差的直方圖。
您可能會注意到,我們的機器學習模型中的殘差似乎呈正態分布。這是一個很好的信號!
它表明我們已經選擇了適當的模型類型(在這種情況下為線性回歸)來根據我們的數據集進行預測。在本課程的后面,我們將詳細了解如何確保使用正確的模型。
在本課程開始時,我們了解到,回歸機器學習模型使用了三個主要性能指標:
平均絕對誤差
均方誤差
均方根誤差
現在,我們將看到如何為本教程中構建的模型計算這些指標中的每一個。在繼續之前,請在Jupyter Notebook中運行以下import語句:
from sklearn import metrics
平均絕對誤差(MAE)
您可以使用以下語句在Python中計算平均絕對錯誤:
metrics.mean_absolute_error(y_test, predictions)
同樣,您可以使用以下語句在Python中計算均方誤差:
metrics.mean_squared_error(y_test, predictions)
與均值絕對誤差和均方誤差不同, 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))注意-如果到目前為止您已經在本教程中進行編碼,并且已經建立了線性回歸模型,則在繼續之前,您需要打開一個新的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代碼來比較Sex的Male 和 Female 值 之間的生存率 :
sns.countplot(x='Survived', hue='Sex', data=titanic_data)
這將生成以下圖:

如您所見, 性別 為 男性的 乘客比性別 為 女性的乘客更有可能是非幸存者 。
我們可以使用Pclass 變量執行類似的分析, 以查看哪個旅客類別最有(和最少)可能有幸存者。
這是執行此操作的代碼:
sns.countplot(x='Survived', hue='Pclass', data=titanic_data)
這將生成以下圖:

從該圖中最明顯的觀察結果是, 當泰坦尼克號墜毀時,Pclass 值為 3的乘客-表示最便宜,最不豪華的第三等艙的乘客 更有可能死亡。
首先,讓我們檢查數據集中包含缺失數據的位置。為此,請運行以下命令:
titanic_data.isnull()
這將生成一個布爾值的DataFrame,如果該單元格 為空值,則該單元格包含 True,否則為 False 。這是它的樣子的圖像:

評估此數據集中缺失數據的一種更為有用的方法是創建快速可視化。為此,我們可以使用 seaborn 可視化庫。這是快速命令,可用于 使用 seaborn 庫創建 熱圖:
sns.heatmap(titanic_data.isnull(), cbar=False)
這是生成的可視化效果:

在此可視化中,白線表示數據集中缺少的值。您會看到“ 年齡” 和“ 機艙”列包含“泰坦尼克號”數據集中大部分丟失的數據。
特別是“ 年齡”列包含的缺失量很小,我們可以使用某種形式的數學來填充缺失數據。另一方面, 機艙 數據缺少足夠的數據,因此我們有可能將其完全從模型中刪除。
用其余數據集中的平均數據填充缺失數據的過程稱為 歸因。現在,我們將使用 插補 來填充“ 年齡” 列中的缺失數據 。
估算的最基本形式是 用 整個數據集中的平均年齡值 填充缺失的 年齡數據 。但是,有更好的方法。
我們將 使用 該乘客所屬 的特定Pclass乘客艙的平均Age值來 填充缺少的 Age值 。要了解為什么這樣做有用,請考慮以下箱線圖:
sns.boxplot(titanic_data['Pclass'], titanic_data['Age'])

如您所見, 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回歸模型了。
首先,我們刪除“ 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'])

如您所見,這將創建兩個新列: 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 列),因此其余兩列都不是彼此的完美預測變量,因此 在修改后的新數據集中不存在多重共線性。
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現在具有以下外觀:

如您所見,該數據集中的每個字段現在都是數字,這使其成為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回歸模型創建了訓練數據和測試數據。我們將在本教程的下一部分中訓練我們的模型。
要訓練我們的模型,我們首先需要 使用以下命令從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回歸模型對測試數據進行一組預測 。我們將這些預測存儲在一個名為predictions的變量中 :
predictions = model.predict(x_test_data)
我們已經做出了預測。接下來讓我們檢查模型的準確性。
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
轉載請聯系字幕組微信并注明出處:雷鋒字幕組
雷鋒網雷鋒網雷鋒網
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。