python分类预测_python做logistic分类预测尝试
首先需要明確一點(diǎn)是logistics回歸和線性回歸的區(qū)別:
1線性回歸的因變量Y是連續(xù)性變量,而logistics回歸是分類變量。
2線性回歸最后可以通過(guò)函數(shù)y=a1x1+a2x2...去描述,而logistics的方程是這樣的
好吧,大學(xué)數(shù)學(xué)忘了差不多了,反正可以理解為是一個(gè)概率函數(shù)吧。所以logistics回歸的因變量y的值是在0-1之間的,得到的數(shù)值y可以看做屬于類別1的概率,當(dāng)0.5≤y≤1,則說(shuō)明是類別1,不然則是類別0。
Logistics主要會(huì)用做二分類的問(wèn)題,典型的一個(gè)場(chǎng)景比如說(shuō):
分類問(wèn)題示例:信用卡
從x1:職業(yè),x2:收入,x3:年齡等等信用卡申請(qǐng)人不同的信息維度,來(lái)判斷y:是否發(fā)放信用卡,發(fā)放哪一類信用卡
這里這次探究的數(shù)據(jù)來(lái)自于《誰(shuí)說(shuō)菜鳥不會(huì)數(shù)據(jù)分析-spss篇》中的華南區(qū)商戶續(xù)約數(shù)據(jù),數(shù)據(jù)大體有這么些維度:
根據(jù)注冊(cè)市場(chǎng),營(yíng)業(yè)收入,成本等維度可以去預(yù)測(cè)這家商戶是否還會(huì)繼續(xù)續(xù)約。
在SPSS中方法是比較簡(jiǎn)單的,直接通過(guò)分析--二元Logistics回歸即可
輸出的總體正確率為73.1%,其中對(duì)角線上的300和797分別表示“未續(xù)約”和“續(xù)約”的預(yù)測(cè)正確個(gè)數(shù)。
而且三個(gè)特征以及常量的顯著性均小于0.01,說(shuō)明都具有極其顯著的統(tǒng)計(jì)學(xué)意義,應(yīng)納入Logistics模型中。那實(shí)際上就可以得到方程式
logit(P)=-2.287+0.099*注冊(cè)時(shí)長(zhǎng)+0.014*營(yíng)業(yè)收入-0.184*成本。
通過(guò)這個(gè)方程式計(jì)算概率的話就可以得到預(yù)測(cè)的分類到底是續(xù)約還是不續(xù)約。
接下來(lái)對(duì)比一下在python中用Logistics回歸得到的結(jié)果會(huì)是如何?數(shù)據(jù)源鏈接如下(CSV格式):
主要還是用numpy,pandas以及scikit-learn三件套為主。
import pandas
sc=pandas.read_csv('D:\\SC-sales.csv',encoding='utf-8')
sc.info()
pandas導(dǎo)入后通過(guò)info看到共1500行數(shù)據(jù),無(wú)空值,可以直接開始后面的操作
import sklearn
import numpy as np
from sklearn import linear_model
lm=linear_model.LogisticRegression() #這里使用LogisticRegression的默認(rèn)參數(shù)
features=['注冊(cè)時(shí)長(zhǎng)','營(yíng)業(yè)收入','成本']
x=sc[features]
y=sc['續(xù)約']
from sklearn.model_selection import cross_val_score
#logistic中的scoring參數(shù)指定為accuracy
scores=cross_val_score(lm,x,y,cv=5,scoring='accuracy') #cv=5即是5折交叉檢驗(yàn)
print(np.mean(scores)) #求平均的交叉檢驗(yàn)的值
#結(jié)果輸出為0.728015363134
可以看到這個(gè)結(jié)果基本上和SPSS做出來(lái)是一樣的,關(guān)于交叉檢驗(yàn)在引用一下說(shuō)明順便也當(dāng)復(fù)習(xí)一下。在機(jī)器學(xué)習(xí)中,交叉檢驗(yàn)常被用來(lái)檢驗(yàn)?zāi)P秃脡?#xff0c;本質(zhì)上好處是可以從有限的數(shù)據(jù)中獲得盡可能多的有效信息,從而可以從多個(gè)角度去學(xué)習(xí)樣本,避免陷入局部的極值。在這個(gè)過(guò)程中,無(wú)論是訓(xùn)練樣本還是測(cè)試樣本都得到了盡可能多的學(xué)習(xí)。
一般檢驗(yàn)方法常見的有:k-folds 交叉驗(yàn)證法(常見用5折或者10折),leave-one-out 法(留一法)k-folds交叉驗(yàn)證法: 也叫k折交叉驗(yàn)證法,將初始數(shù)據(jù)集分割成 k 份,其中1份被保留作為驗(yàn)證模型的數(shù)據(jù),其他 k-1 份用來(lái)訓(xùn)練。交叉驗(yàn)證重復(fù) k 次,每份數(shù)據(jù)作為驗(yàn)證集驗(yàn)證一次,平均 k 次的結(jié)果或者使用其它結(jié)合方式,最終得到一個(gè)單一估測(cè)
leave-one-out 法:也叫留一交叉驗(yàn)證法,只使用原本樣本中的一項(xiàng)來(lái)當(dāng)做驗(yàn)證集, 而剩余的則留下來(lái)當(dāng)做訓(xùn)練集。 這個(gè)步驟一直持續(xù)到每個(gè)樣本都被當(dāng)做一次驗(yàn)證數(shù)據(jù)
所以當(dāng)k取n時(shí)實(shí)際上兩者是等價(jià)的。
綜上來(lái)看,用LR進(jìn)行預(yù)測(cè)總體來(lái)說(shuō)并不是特別好,下一步可以考慮用決策樹和隨機(jī)森林再來(lái)進(jìn)行嘗試。
總結(jié)
以上是生活随笔為你收集整理的python分类预测_python做logistic分类预测尝试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: data transformation
- 下一篇: python用缩进来标明代码的层次关系_