机器学习第5天:逻辑回归
文章目錄
- 一、環境
- 二、具體實現步驟
- 第1步:數據預處理
- 導入庫
- 導入數據
- 將數據集分成訓練集和測試集
- 第2步:邏輯回歸模型
- 第3步:預測結果
- 第4步:評估預測結果
- 可視化
- 三、可視化結果展示
- 四、邏輯回歸是什么
- 五、利用matplotlib實現可視化
- 1. 函數講解
- 2. 關于X_set[y_set==j,0]
一、環境
- Python3.6.5
- 編譯器:jupyter notebook
二、具體實現步驟
第1步:數據預處理
導入庫
import numpy as np import matplotlib.pyplot as plt import pandas as pd導入數據
dataset = pd.read_csv('Social_Network_Ads.csv') X = dataset.iloc[ : , [2,3]].values Y = dataset.iloc[ : ,4].values將數據集分成訓練集和測試集
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)第2步:邏輯回歸模型
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression() classifier.fit(X_train, Y_train)第3步:預測結果
Y_pred = classifier.predict(X_test)第4步:評估預測結果
可視化
from matplotlib.colors import ListedColormap #1.訓練集可視化 X_set,y_set=X_train,Y_trainx = np.arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01) y = np.arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01) #把x,y綁定為網格的形式 X1,X2=np. meshgrid(x,y)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()#2.測試集可視化 X_set,y_set=X_test,Y_testx = np.arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01) y = np.arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01) #把x,y綁定為網格的形式 X1,X2=np. meshgrid(x,y)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()三、可視化結果展示
四、邏輯回歸是什么
簡單來說, 邏輯回歸(Logistic Regression)是一種用于解決二分類(0 or 1)問題的機器學習方法,用于估計某種事物的可能性。比如某用戶購買某商品的可能性,某病人患有某種疾病的可能性,以及某廣告被用戶點擊的可能性等。
邏輯回歸是為了解決分類問題,根據一些已知的訓練集訓練好模型,再對新的數據進行預測屬于哪個類。
邏輯回歸(Logistic Regression)與線性回歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。邏輯回歸假設因變量 y 服從伯努利分布,而線性回歸假設因變量 y 服從高斯分布。(這部分暫時了解了即可)
這篇博客簡單介紹一下邏輯回歸是個什么東西,下一篇博客將展開對邏輯回歸的具體介紹。
五、利用matplotlib實現可視化
1. 函數講解
(1) np.arange(): arange([start,] stop[, step,], dtype=None)根據start與stop指定的范圍以及step設定的步長,生成一個 ndarray可迭代對象。
(2) .ravel(): 將多維數組降為一維數組。
(3) .reshape(): A.reshape(X1.shape)將A的類型重塑為X1的shape。
(4) T: 實現數組轉置和軸對換。例如:
arr = np.arange(15).reshape(3,5) """ 輸出: array([[ 0, 1, 2, 3, 4],[ 5, 6, 7, 8, 9],[10, 11, 12, 13, 14]]) """ arr.T """ 輸出: array([[ 0, 5, 10],[ 1, 6, 11],[ 2, 7, 12],[ 3, 8, 13],[ 4, 9, 14]]) """(5).meshgrid(): meshgrid函數用兩個坐標軸上的點在平面上畫網格。
(6).contourf(): 用來畫紅綠兩種結果的分界線, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),這個是利用邏輯回歸模型預測分界線。
(7)xlim: plt.xlim設置x坐標軸范圍。
(8)ylim: plt.ylim設置y坐標軸范圍。
(9)unque(): 是一個去重函數。
(10)enumerate: 用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
今天先了解一下利用matplotlib實現可視化,明天將對matplotlib進行詳細介紹。
2. 關于X_set[y_set==j,0]
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)關于這個點小編也是半懂,簡單談一下我的理解。y_set == j的結果是一個布爾值這個是肯定的,當y_set == j的結果為False時,plt.scatter語句不執行;當y_set == j的結果為True時,plt.scatter語句執行,X_set[y_set==j,0]的作用效果相當于X_set[ : ,0]。
附上老外的看法:What does X_set[y_set == j, 0] mean?
有不同見解的童鞋可以在下方留言,我們一起交流。
總結
以上是生活随笔為你收集整理的机器学习第5天:逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习第4天:线性回归及梯度下降
- 下一篇: 机器学习第6天:数据可视化神器--Mat