利用邏輯回歸進(jìn)行圖片分類

邏輯回歸脉漏,又稱logistic回歸分析苞冯,是一種廣義的線性回歸分析模型。
下面是回歸分析的分類思維導(dǎo)圖:


回歸分析的分類

邏輯回歸是很多分類算法的基礎(chǔ)組件鸠删,它的好處是輸出值自然地落在0到1之間抱完,并且有概率意義。因?yàn)樗举|(zhì)上是一個(gè)線性的分類器刃泡,雖然很多時(shí)候效果一般巧娱,卻勝在模型清晰碉怔,背后的概率學(xué)經(jīng)得住推敲,它擬合出來(lái)的參數(shù)就代表了每一個(gè)特征(feature)對(duì)結(jié)果的影響禁添。

邏輯回歸的數(shù)據(jù)表達(dá)式

本篇文章撮胧,我們主要介紹如果利用邏輯回歸進(jìn)行圖片分類。
首先老翘,我們利用 sklearn.datasets 庫(kù)中的 fetch_lfw_people 數(shù)據(jù)集芹啥,這個(gè)數(shù)據(jù)集中有1288 張人臉圖片,對(duì)應(yīng)的是7個(gè)公眾人物('Ariel Sharon' ,'Colin Powell' ,'Donald Rumsfeld', 'George W Bush',
'Gerhard Schroeder' ,'Hugo Chavez' ,'Tony Blair')铺峭。我們用邏輯回歸對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行建模墓怀,然后對(duì)測(cè)試數(shù)據(jù)集進(jìn)行準(zhǔn)確性驗(yàn)證。

進(jìn)行數(shù)據(jù)導(dǎo)入卫键,初步的探索:

from sklearn.datasets import fetch_lfw_people
#加載數(shù)據(jù)
lfw_people=fetch_lfw_people(min_faces_per_person=70,resize=0.4)
n_samples,h,w=lfw_people.images.shape
#X作為邏輯回歸的自變量
X=lfw_people.data
#有作為因變量
y=lfw_people.target
n_features=X.shape[1]
#輸出圖片集的屬性傀履,可以看到有1288張圖片,每張圖片有1850個(gè)特征
print(X.shape)

繼續(xù)做更多的探索:

#導(dǎo)入 matplotlib 作為畫圖工具
import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(X[0].reshape((h,w)),cmap=plt.cm.gray)
#輸入一個(gè)樣本圖片的人物名稱
print(lfw_people.target_names[y[0]])

target_names=lfw_people.target_names
n_classes=target_names.shape[0]
#輸出樣本數(shù)據(jù)集的屬性
print("Total dataset size: n_samples",n_samples,"n_features:",n_features,"n_classes:",n_classes)
圖像展示

對(duì)更多圖片進(jìn)行瀏覽:

def plot_grid(images,titles,n_row=3,n_col=4):
    plt.figure(figsize=(1.8*n_col,2.4*n_row))
    plt.subplots_adjust(bottom=0,left=.01,right=.99,top=.90,hspace=.35)
    for i in range(n_row*n_col):
        plt.subplot(n_row,n_col,i+1)
        plt.imshow(images[i],cmap=plt.cm.gray)
        #plt.imshow(images[i])
        plt.title(titles[i],size=12)
eigenface_titles=[lfw_people.target_names[y[i]]  for i in range(75)] 
plot_grid(X[:75].reshape((n_components,h,w)),eigenface_titles)
plt.show()
更多圖片的瀏覽

下面開(kāi)始建模:

#導(dǎo)入邏輯回歸進(jìn)行建模分類
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
#對(duì)數(shù)據(jù)集進(jìn)行分組莉炉,80%的圖片作為訓(xùn)練集钓账,20%的數(shù)據(jù)作為測(cè)試集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=1)
logreg = LogisticRegression(random_state=1).fit(X_train,y_train)
print(logreg)
#打印模型在訓(xùn)練數(shù)據(jù)集上的準(zhǔn)確率
print("accuracy:",accuracy_score(logreg.predict(X_train),y_train))

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='warn',
n_jobs=None, penalty='l2', random_state=1, solver='warn',
tol=0.0001, verbose=0, warm_start=False)
accuracy: 1.0

可以看到,在訓(xùn)練數(shù)據(jù)集上的準(zhǔn)確率是1,100%準(zhǔn)確絮宁。那么梆暮,在測(cè)試集上的表現(xiàn)是怎么樣的呢?

y_pred = logreg.predict(X_test)
print("accuracy:",accuracy_score(y_pred,y_test))

accuracy: 0.8255813953488372
在測(cè)試集上的分類準(zhǔn)確率是82%绍昂,好像還不算太差~

我們進(jìn)一步看看在各個(gè)類別上的正確率啦粹,召回率以及F1值:

from sklearn.metrics import classification_report
print(classification_report(y_test,y_pred))
分類報(bào)告圖

今天我們用邏輯回歸在7類別的圖片進(jìn)行了分類,小試牛刀~ 后面治专,我會(huì)陸續(xù)介紹決策樹(shù)卖陵,集成學(xué)習(xí)(隨機(jī)森林,adboost)等模型以及模型的評(píng)價(jià)參數(shù)张峰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泪蔫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喘批,更是在濱河造成了極大的恐慌撩荣,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶深,死亡現(xiàn)場(chǎng)離奇詭異餐曹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)敌厘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門台猴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事饱狂〔懿剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵休讳,是天一觀的道長(zhǎng)讲婚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)俊柔,這世上最難降的妖魔是什么筹麸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮雏婶,結(jié)果婚禮上物赶,老公的妹妹穿的比我還像新娘。我一直安慰自己留晚,他們只是感情好块差,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著倔丈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪状蜗。 梳的紋絲不亂的頭發(fā)上需五,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音轧坎,去河邊找鬼宏邮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缸血,可吹牛的內(nèi)容都是我干的蜜氨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捎泻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼飒炎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起笆豁,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤郎汪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后闯狱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體煞赢,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年哄孤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了照筑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凝危,靈堂內(nèi)的尸體忽然破棺而出波俄,到底是詐尸還是另有隱情,我是刑警寧澤媒抠,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布弟断,位于F島的核電站,受9級(jí)特大地震影響趴生,放射性物質(zhì)發(fā)生泄漏阀趴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一苍匆、第九天 我趴在偏房一處隱蔽的房頂上張望刘急。 院中可真熱鬧,春花似錦浸踩、人聲如沸叔汁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)据块。三九已至,卻和暖如春折剃,著一層夾襖步出監(jiān)牢的瞬間另假,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工怕犁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘩缆,地道東北人许帐。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親剧包。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裂明,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容