用信用卡申請(qǐng)業(yè)務(wù)講通PLA

銀行信用卡

環(huán)境準(zhǔn)備

構(gòu)建notebook 插件環(huán)境

首先安裝anaconda 環(huán)境躏吊,再安裝如下插件
pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install

數(shù)據(jù)準(zhǔn)備

raw_data.jpg

向量

接下來,我們思考如何把每一條數(shù)據(jù)平窘,向量化瑰艘。
這樣在物理上我們就可以按照下圖的方式看待數(shù)據(jù)了肤舞。
我們把房產(chǎn)放在x軸李剖,存款放在y軸,用還款的情況決定點(diǎn)的形狀偶芍。

安裝matplotlib模塊

!pip install matplotlib

%matplotlib inline
#以兩個(gè)點(diǎn)為例
import matplotlib.pyplot as plt
plt.scatter(1, 2000,  marker='x')
plt.scatter(2, 50000, marker='o')
plt.xlabel('house_property')
plt.ylabel('deposit')
plt.show()
image.png

向量的知識(shí)點(diǎn)回顧

import numpy as np
from numpy import linalg
v1=np.array([3, 4]) #創(chuàng)建向量
image.png
v1.shape #查看形狀
(2,)
linalg.norm(v1)  #求模長(zhǎng)
5.0

向量的加減法

v1 = np.array([0, 1])
v2 = np.array([1, 0])
v_sum = v1 + v2 
v_sum
array([1, 1])
向量相加
v_sum - v1
array([1, 0])
v_sum - v2
array([0, 1])
image.png
linalg.norm(v_sum)
1.4142135623730951

向量的距離

v_sum
array([1, 1])
v1
array([0, 1])
dist = linalg.norm(v_sum - v1)
dist
1.0
new_v1 = np.array([1,1])
new_v2 = np.array([2,2])
image.png
new_dist_l1 = linalg.norm(new_v2 - new_v1, 1)
new_dist_l1 #曼哈頓距離
2.0
new_dist_l2 = linalg.norm(new_v2 - new_v1, 2)

image.png
new_dist_l2 #歐氏距離
1.4142135623730951

向量的投影

v1 = np.array([1, 1])
v2 = np.array([1, 0])
image.png
np.dot(v1, v2)
1

|v1| * |v2| * cos45

linalg.norm(v1) * np.cos(45 * np.pi/180) * linalg.norm(v2)
1.0000000000000002
linalg.norm(v1) * linalg.norm(v2) * np.cos(45 * np.pi / 180) 

1.0000000000000002

有一點(diǎn)到直線的距離用向量該如何物理表示:


image.png
image.png
v3 = np.array([-1, 1])
v2 = np.array([1, 0])
np.dot(v3, v2)

-1
image.png

加載數(shù)據(jù)

建立數(shù)據(jù)集合

!pip install pandas
!pip install xlrd

import pandas as pd
!pwd
/Users/mac/pytorch_learn
data = pd.read_excel('/Users/mac/pytorch_learn/card_sample.xlsx',
                     names=['id','name','id_card','age','native_place','house_property','deposit','repayment'])
data
image.png
data['name']
0    張可愛
1    詹姆斯
2     歐文
3     科比
4     喬丹
5    字母哥
6    邢帥帥
Name: name, dtype: object
test_index = [2,3] #行的計(jì)數(shù)從0開始
train_index= data.index.drop(test_index).values
test_data = data.loc[test_index,:]
train_data = data.loc[train_index,:]
test_data
image.png
train_data
image.png

構(gòu)建X段化,Y

features = ['house_property','deposit']
label = ['repayment']
train_X = train_data[features].values
train_Y = train_data[label].values
test_X = test_data[features].values
test_Y = test_data[label].values
train_X
array([[    1,  2000],
       [    1,  2100],
       [    3, 60000],
       [    3, 70000],
       [    4, 80000]])
 train_Y
array([[-1],
       [-1],
       [ 1],
       [ 1],
       [ 1]])
 test_X
array([[    1,  2200],
       [    2, 50000]])
test_Y
array([[-1],
       [ 1]])

建立模型

我們的目標(biāo)是找到一個(gè)函數(shù):  
這個(gè)函數(shù)的輸入是傳入一個(gè)X,返回一個(gè)Y
X是一個(gè)人的房產(chǎn)和存儲(chǔ)
Y是預(yù)測(cè)此人未來是否還款
我們提出一個(gè)假設(shè)
然后用這個(gè)假設(shè)去判斷所有的X特征
本例中我們可以假設(shè)一個(gè)W,
這個(gè)W與X做內(nèi)積為正則返回+1谜疤,
這個(gè)WX做內(nèi)積為負(fù)則返回-1
這里我們思考一下內(nèi)積正負(fù)的物理意義(與向量垂直的向量稱之為法向量)
image.png
PLA.gif

對(duì)數(shù)據(jù)集合里面的所有點(diǎn)重復(fù)做操作夷磕,直到找到一個(gè)適合的W滿足所有需求
如果有一個(gè)點(diǎn)不滿足就要提出新的假設(shè)仔沿,也就是修改W大值
W怎么修改呢?
想想向量+绵跷,向量-

image.png


#init_w = np.random.random(2)
#init_w = np.array([-100000,  10])
init_w = np.array([-100000,  0])
def sign(dot):
    if dot > 0:
        return 1
    elif dot< 0:
        return -1
    else:
        return 0
    
def pla_fit(iter_num=1000,  init_w=None, count=0):
    print(0, init_w)
    for i in range(iter_num):
        
        if count == len(train_X):
            print(i, count , "find")
            return init_w
        else:
            count = 0
        for x , y in zip(train_X, train_Y):
            
            if (sign(np.dot(x, init_w)) != np.asscalar(y) ):
                
                init_w = init_w + np.asscalar(y) * x
                
                break
            else:
                count += 1
                #print(count, init_w)
    print("數(shù)據(jù)在迭代次數(shù)內(nèi)碾局,未找到w,有可能是迭代次數(shù)不夠或數(shù)據(jù)線性不可分", init_w)
            
    

len(train_X)
5
def pla_test(test_X, test_Y, new_w):
    for x, y in zip(test_X, test_Y):
        if sign(np.dot(x, new_w) == np.asscalar(y) ):
            print(x, sign(np.dot(x, new_w)))

訓(xùn)練

iter_num=10000000000
new_w = pla_fit( iter_num, init_w=init_w)
print(new_w)
0 [-100000       0]
4477826 5 find
[-4000041     1900]

驗(yàn)證

def pla_test(test_X, test_Y, new_w):
    for x, y in zip(test_X, test_Y):
        if sign(np.dot(x, new_w)) == np.asscalar(y):
            print(x, y)
            print(sign(np.dot(x, new_w)))
pla_test(train_X, train_Y, new_w)
#可以先看一眼訓(xùn)練集合上的結(jié)果
[   1 2000] [-1]
-1
[   1 2100] [-1]
-1
[    3 60000] [1]
1
[    3 70000] [1]
1
[    4 80000] [1]
1
pla_test(test_X, test_Y, new_w)
#看一下測(cè)試集合的結(jié)果
[    2 50000] [1]
1

只驗(yàn)證對(duì)了一個(gè)

預(yù)測(cè)

現(xiàn)在如果有人來填寫資產(chǎn)調(diào)查清單内斯,你就可以使用剛才的學(xué)習(xí)所得來預(yù)測(cè)效果了

def pred(pred_X, w):
    return sign(np.dot(pred_X, new_w))
        
pred_X = np.array([1, 1900])
#注意俘闯,此時(shí)你只有X忽冻,沒有Y

pred(pred_X,  w=new_w)
-1

這里做一個(gè)大討論
1 如果你的數(shù)據(jù)是線性不可分的怎么辦僧诚?
2 用PDCA總結(jié)這次的內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹭睡,隨后出現(xiàn)的幾起案子赶么,更是在濱河造成了極大的恐慌,老刑警劉巖清钥,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祟昭,死亡現(xiàn)場(chǎng)離奇詭異怖侦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)搬葬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門急凰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抡锈,你說我怎么就攤上這事〈踩” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵擒抛,是天一觀的道長(zhǎng)歧沪。 經(jīng)常有香客問我莲组,道長(zhǎng),這世上最難降的妖魔是什么撵孤? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任竭望,我火速辦了婚禮,結(jié)果婚禮上闭专,老公的妹妹穿的比我還像新娘旧烧。我一直安慰自己,他們只是感情好平委,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布廉赔。 她就那樣靜靜地躺著,像睡著了一般蜡塌。 火紅的嫁衣襯著肌膚如雪扫腺。 梳的紋絲不亂的頭發(fā)上村象,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音躁劣,去河邊找鬼。 笑死账忘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溉浙。 我是一名探鬼主播蒋荚,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼期升,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了颂郎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤乓序,失蹤者是張志新(化名)和其女友劉穎竭缝,沒想到半個(gè)月后沼瘫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿故,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年坛猪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了皂股。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡就斤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坠宴,到底是詐尸還是另有隱情绷旗,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布庄岖,位于F島的核電站角骤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏启搂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一牢撼、第九天 我趴在偏房一處隱蔽的房頂上張望疑苫。 院中可真熱鬧,春花似錦撼短、人聲如沸挺勿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚊丐。三九已至,卻和暖如春麦备,著一層夾襖步出監(jiān)牢的瞬間昭娩,已是汗流浹背栏渺。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工膀捷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留削彬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓壶笼,卻偏偏與公主長(zhǎng)得像雁刷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沛励,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349