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