【6%】100小時機器學習——邏輯迴歸

cnnbull發表於2021-09-09

邏輯迴歸(Logistic Regression)

前言


資料集內容

dataset
Out[12]: 
      User ID  Gender  Age  EstimatedSalary  Purchased0    15624510    Male   19            19000          01    15810944    Male   35            20000          02    15668575  Female   26            43000          03    15603246  Female   27            57000          04    15804002    Male   19            76000          05    15728773    Male   27            58000          06    15598044  Female   27            84000          07    15694829  Female   32           150000          18    15600575    Male   25            33000          0//...

這是一張從社交網路中獲得的使用者年齡性別工資水平是否購買了某公司的SUV的資料集,我們假設前三個變數和第四個變數之間存線上性關係,以此建立模型來進行預測。

Step 1: 資料預處理

(1)匯入庫

import numpy as npimport matplotlib.pyplot as pltimport pandas as pd

ps:我在匯入matplotlib.pyplot時提示缺少Python-tk模組(我已經轉移到Linux上進行試驗了,因為平常工作用Linux比較多,推薦比較穩定好用的Linux版本是Mint,看個人喜好了。),所以使用命令安裝該模組
sudo apt-get install python-tk

(2) 匯入資料集

dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values

(3)劃分訓練集和測試集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

(4)特徵縮放

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Step2:邏輯迴歸模型

(1)將邏輯迴歸應用於訓練集

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

Step3:預測

(1)預測測試集結果

y_pred = classifier.predict(X_test)

Step4:評估預測

(1)生成混淆矩陣

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

(2)視覺化

使用matplotlib庫進行資料視覺化。

from matplotlib.colors import ListedColormap
X_set,y_set=X_train,y_train
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Training set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

圖片描述

訓練集

X_set,y_set=X_test,y_test
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Test set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

圖片描述

測試集



作者:JustMe23
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2524/viewspace-2817504/,如需轉載,請註明出處,否則將追究法律責任。

相關文章