基于Python的信用評(píng)分卡模型分析(一)

信用風(fēng)險(xiǎn)計(jì)量體系包括主體評(píng)級(jí)模型和債項(xiàng)評(píng)級(jí)兩部分姑曙。主體評(píng)級(jí)和債項(xiàng)評(píng)級(jí)均有一系列評(píng)級(jí)模型組成模叙,其中主體評(píng)級(jí)模型可用“四張卡”來表示,分別是A卡新啼、B卡追城、C卡和F卡;債項(xiàng)評(píng)級(jí)模型通常按照主體的融資用途燥撞,分為企業(yè)融資模型座柱、現(xiàn)金流融資模型和項(xiàng)目融資模型等。 我們主要討論主體評(píng)級(jí)模型的開發(fā)過程物舒。

一色洞、項(xiàng)目流程

典型的信用評(píng)分模型如圖1-1所示。信用風(fēng)險(xiǎn)評(píng)級(jí)模型的主要開發(fā)流程如下:
(1) 數(shù)據(jù)獲取冠胯,包括獲取存量客戶及潛在客戶的數(shù)據(jù)火诸。存量客戶是指已經(jīng)在證券公司開展相關(guān)融資類業(yè)務(wù)的客戶,包括個(gè)人客戶和機(jī)構(gòu)客戶涵叮;潛在客戶是指未來擬在證券公司開展相關(guān)融資類業(yè)務(wù)的客戶惭蹂,主要包括機(jī)構(gòu)客戶伞插,這也是解決證券業(yè)樣本較少的常用方法,這些潛在機(jī)構(gòu)客戶包括上市公司盾碗、公開發(fā)行債券的發(fā)債主體媚污、新三板上市公司、區(qū)域股權(quán)交易中心掛牌公司廷雅、非標(biāo)融資機(jī)構(gòu)等耗美。
(2) 數(shù)據(jù)預(yù)處理,主要工作包括數(shù)據(jù)清洗航缀、缺失值處理商架、異常值處理,主要是為了將獲取的原始數(shù)據(jù)轉(zhuǎn)化為可用作模型開發(fā)的格式化數(shù)據(jù)芥玉。
(3) 探索性數(shù)據(jù)分析蛇摸,該步驟主要是獲取樣本總體的大概情況,描述樣本總體情況的指標(biāo)主要有直方圖灿巧、箱形圖等赶袄。
(4) 變量選擇,該步驟主要是通過統(tǒng)計(jì)學(xué)的方法抠藕,篩選出對(duì)違約狀態(tài)影響最顯著的指標(biāo)饿肺。主要有單變量特征選擇方法和基于機(jī)器學(xué)習(xí)模型的方法 。
(5) 模型開發(fā)盾似,該步驟主要包括變量分段敬辣、變量的WOE(證據(jù)權(quán)重)變換和邏輯回歸估算三部分。
(6) 模型評(píng)估零院,該步驟主要是評(píng)估模型的區(qū)分能力溉跃、預(yù)測(cè)能力、穩(wěn)定性告抄,并形成模型評(píng)估報(bào)告喊积,得出模型是否可以使用的結(jié)論。
(7) 信用評(píng)分玄妈,根據(jù)邏輯回歸的系數(shù)和WOE等確定信用評(píng)分的方法。將Logistic模型轉(zhuǎn)換為標(biāo)準(zhǔn)評(píng)分的形式髓梅。
(8) 建立評(píng)分系統(tǒng)拟蜻,根據(jù)信用評(píng)分方法,建立自動(dòng)信用評(píng)分系統(tǒng)枯饿。


圖1-1 信用評(píng)分模型開發(fā)流程

PS:有些時(shí)候?yàn)榱吮阌诿凸鄳?yīng)的變量用標(biāo)號(hào)代替

二、數(shù)據(jù)獲取

數(shù)據(jù)來自Kaggle的Give Me Some Credit奢方,有15萬條的樣本數(shù)據(jù)搔扁,下圖可以看到這份數(shù)據(jù)的大致情況爸舒。
數(shù)據(jù)屬于個(gè)人消費(fèi)類貸款,只考慮信用評(píng)分最終實(shí)施時(shí)能夠使用到的數(shù)據(jù)應(yīng)從如下一些方面獲取數(shù)據(jù):
– 基本屬性:包括了借款人當(dāng)時(shí)的年齡稿蹲。
– 償債能力:包括了借款人的月收入扭勉、負(fù)債比率。
– 信用往來:兩年內(nèi)35-59天逾期次數(shù)苛聘、兩年內(nèi)60-89天逾期次數(shù)涂炎、兩年內(nèi)90
天或高于90天逾期的次數(shù)。
– 財(cái)產(chǎn)狀況:包括了開放式信貸和貸款數(shù)量设哗、不動(dòng)產(chǎn)貸款或額度數(shù)量唱捣。
– 貸款屬性:暫無。
– 其他因素:包括了借款人的家屬數(shù)量(不包括本人在內(nèi))网梢。
– 時(shí)間窗口:自變量的觀察窗口為過去兩年震缭,因變量表現(xiàn)窗口為未來兩年。

圖2-1 原始數(shù)據(jù)的變量

三战虏、數(shù)據(jù)預(yù)處理

在對(duì)數(shù)據(jù)處理之前拣宰,需要對(duì)數(shù)據(jù)的缺失值和異常值情況進(jìn)行了解。Python內(nèi)有describe()函數(shù)活烙,可以了解數(shù)據(jù)集的缺失值徐裸、均值和中位數(shù)等。

    #載入數(shù)據(jù)
    data = pd.read_csv('cs-training.csv')
    #數(shù)據(jù)集確實(shí)和分布情況
    data.describe().to_csv('DataDescribe.csv')

數(shù)據(jù)集的詳細(xì)情況:


圖3-1 變量詳細(xì)情況

從上圖可知啸盏,變量MonthlyIncome和NumberOfDependents存在缺失重贺,變量MonthlyIncome共有缺失值29731個(gè),NumberOfDependents有3924個(gè)缺失值回懦。

3.1 缺失值處理

這種情況在現(xiàn)實(shí)問題中非常普遍气笙,這會(huì)導(dǎo)致一些不能處理缺失值的分析方法無法應(yīng)用,因此怯晕,在信用風(fēng)險(xiǎn)評(píng)級(jí)模型開發(fā)的第一步我們就要進(jìn)行缺失值處理潜圃。缺失值處理的方法,包括如下幾種舟茶。
(1) 直接刪除含有缺失值的樣本谭期。
(2) 根據(jù)樣本之間的相似性填補(bǔ)缺失值。
(3) 根據(jù)變量之間的相關(guān)關(guān)系填補(bǔ)缺失值吧凉。
變量MonthlyIncome缺失率比較大隧出,所以我們根據(jù)變量之間的相關(guān)關(guān)系填補(bǔ)缺失值,我們采用隨機(jī)森林法:

# 用隨機(jī)森林對(duì)缺失值預(yù)測(cè)填充函數(shù)
def set_missing(df):
    # 把已有的數(shù)值型特征取出來
    process_df = df.ix[:,[5,0,1,2,3,4,6,7,8,9]]
    # 分成已知該特征和未知該特征兩部分
    known = process_df[process_df.MonthlyIncome.notnull()].as_matrix()
    unknown = process_df[process_df.MonthlyIncome.isnull()].as_matrix()
    # X為特征屬性值
    X = known[:, 1:]
    # y為結(jié)果標(biāo)簽值
    y = known[:, 0]
    # fit到RandomForestRegressor之中
    rfr = RandomForestRegressor(random_state=0, 
    n_estimators=200,max_depth=3,n_jobs=-1)
    rfr.fit(X,y)
    # 用得到的模型進(jìn)行未知特征值預(yù)測(cè)
    predicted = rfr.predict(unknown[:, 1:]).round(0)
    print(predicted)
    # 用得到的預(yù)測(cè)結(jié)果填補(bǔ)原缺失數(shù)據(jù)
    df.loc[(df.MonthlyIncome.isnull()), 'MonthlyIncome'] = predicted
    return df

NumberOfDependents變量缺失值比較少阀捅,直接刪除胀瞪,對(duì)總體模型不會(huì)造成太大影響。對(duì)缺失值處理完之后饲鄙,刪除重復(fù)項(xiàng)凄诞。

    data=set_missing(data)#用隨機(jī)森林填補(bǔ)比較多的缺失值
    data=data.dropna()#刪除比較少的缺失值
    data = data.drop_duplicates()#刪除重復(fù)項(xiàng)
    data.to_csv('MissingData.csv',index=False)

3.2 異常值處理

缺失值處理完畢后圆雁,我們還需要進(jìn)行異常值處理。異常值是指明顯偏離大多數(shù)抽樣數(shù)據(jù)的數(shù)值帆谍,比如個(gè)人客戶的年齡為0時(shí)伪朽,通常認(rèn)為該值為異常值。找出樣本總體中的異常值既忆,通常采用離群值檢測(cè)的方法驱负。
首先,我們發(fā)現(xiàn)變量age中存在0患雇,顯然是異常值跃脊,直接剔除:

    # 年齡等于0的異常值進(jìn)行剔除
    data = data[data['age'] > 0]

對(duì)于變量NumberOfTime30-59DaysPastDueNotWorse、NumberOfTimes90DaysLate苛吱、NumberOfTime60-89DaysPastDueNotWorse這三個(gè)變量酪术,由下面的箱線圖圖3-2可以看出,均存在異常值翠储,且由unique函數(shù)可以得知均存在96绘雁、98兩個(gè)異常值,因此予以剔除援所。同時(shí)會(huì)發(fā)現(xiàn)剔除其中一個(gè)變量的96庐舟、98值,其他變量的96住拭、98兩個(gè)值也會(huì)相應(yīng)被剔除挪略。


圖3-2 箱形圖

剔除變量NumberOfTime30-59DaysPastDueNotWorse、NumberOfTimes90DaysLate滔岳、NumberOfTime60-89DaysPastDueNotWorse的異常值杠娱。另外,數(shù)據(jù)集中好客戶為0谱煤,違約客戶為1摊求,考慮到正常的理解,能正常履約并支付利息的客戶為1刘离,所以我們將其取反室叉。

    #剔除異常值
    data = data[data['NumberOfTime30-59DaysPastDueNotWorse'] < 90]
    #變量SeriousDlqin2yrs取反
    data['SeriousDlqin2yrs']=1-data['SeriousDlqin2yrs']

3.3 數(shù)據(jù)切分

為了驗(yàn)證模型的擬合效果,我們需要對(duì)數(shù)據(jù)集進(jìn)行切分硫惕,分成訓(xùn)練集和測(cè)試集太惠。

from sklearn.cross_validation import train_test_split
    Y = data['SeriousDlqin2yrs']
    X = data.ix[:, 1:]
    #測(cè)試集占比30%
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
    # print(Y_train)
    train = pd.concat([Y_train, X_train], axis=1)
    test = pd.concat([Y_test, X_test], axis=1)
    clasTest = test.groupby('SeriousDlqin2yrs')['SeriousDlqin2yrs'].count()
    train.to_csv('TrainData.csv',index=False)
    test.to_csv('TestData.csv',index=False)

四、探索性分析

在建立模型之前疲憋,我們一般會(huì)對(duì)現(xiàn)有的數(shù)據(jù)進(jìn)行 探索性數(shù)據(jù)分析(Exploratory Data Analysis) 。 EDA是指對(duì)已有的數(shù)據(jù)(特別是調(diào)查或觀察得來的原始數(shù)據(jù))在盡量少的先驗(yàn)假定下進(jìn)行探索梁只。常用的探索性數(shù)據(jù)分析方法有:直方圖缚柳、散點(diǎn)圖和箱線圖等埃脏。
客戶年齡分布如圖4-1所示,可以看到年齡變量大致呈正態(tài)分布秋忙,符合統(tǒng)計(jì)分析的假設(shè)彩掐。


圖4-1 客戶年齡分布

客戶年收入分布如圖4-2所示,月收入也大致呈正態(tài)分布灰追,符合統(tǒng)計(jì)分析的需要堵幽。


圖4-2 客戶收入分布

五、變量選擇

特征變量選擇(排序)對(duì)于數(shù)據(jù)分析弹澎、機(jī)器學(xué)習(xí)從業(yè)者來說非常重要朴下。好的特征選擇能夠提升模型的性能,更能幫助我們理解數(shù)據(jù)的特點(diǎn)苦蒿、底層結(jié)構(gòu)殴胧,這對(duì)進(jìn)一步改善模型、算法都有著重要作用佩迟。至于Python的變量選擇代碼實(shí)現(xiàn)可以參考結(jié)合Scikit-learn介紹幾種常用的特征選擇方法团滥。
在本文中,我們采用信用評(píng)分模型的變量選擇方法报强,通過WOE分析方法灸姊,即是通過比較指標(biāo)分箱和對(duì)應(yīng)分箱的違約概率來確定指標(biāo)是否符合經(jīng)濟(jì)意義。首先我們對(duì)變量進(jìn)行離散化(分箱)處理秉溉。

5.1 分箱處理

變量分箱(binning)是對(duì)連續(xù)變量離散化(discretization)的一種稱呼力惯。信用評(píng)分卡開發(fā)中一般有常用的等距分段、等深分段坚嗜、最優(yōu)分段夯膀。其中等距分段(Equval length intervals)是指分段的區(qū)間是一致的,比如年齡以十年作為一個(gè)分段诱建;等深分段(Equal frequency intervals)是先確定分段數(shù)量俺猿,然后令每個(gè)分段中數(shù)據(jù)數(shù)量大致相等;最優(yōu)分段(Optimal Binning)又叫監(jiān)督離散化(supervised discretizaion)谊惭,使用遞歸劃分(Recursive Partitioning)將連續(xù)變量分為分段圈盔,背后是一種基于條件推斷查找較佳分組的算法铁蹈。
我們首先選擇對(duì)連續(xù)變量進(jìn)行最優(yōu)分段握牧,在連續(xù)變量的分布不滿足最優(yōu)分段的要求時(shí)沿腰,再考慮對(duì)連續(xù)變量進(jìn)行等距分段矫俺。最優(yōu)分箱的代碼如下:

# 定義自動(dòng)分箱函數(shù)
def mono_bin(Y, X, n = 20):
    r = 0
    good=Y.sum()
    bad=Y.count()-good
    while np.abs(r) < 1:
        d1 = pd.DataFrame({"X": X, "Y": Y, "Bucket": pd.qcut(X, n)})
        d2 = d1.groupby('Bucket', as_index = True)
        r, p = stats.spearmanr(d2.mean().X, d2.mean().Y)
        n = n - 1
    d3 = pd.DataFrame(d2.X.min(), columns = ['min'])
    d3['min']=d2.min().X
    d3['max'] = d2.max().X
    d3['sum'] = d2.sum().Y
    d3['total'] = d2.count().Y
    d3['rate'] = d2.mean().Y
    d3['woe']=np.log((d3['rate']/(1-d3['rate']))/(good/bad))
    d4 = (d3.sort_index(by = 'min')).reset_index(drop=True)
    print("=" * 60)
    print(d4)
    return d4

針對(duì)我們將使用最優(yōu)分段對(duì)于數(shù)據(jù)集中的RevolvingUtilizationOfUnsecuredLines厘托、age铅匹、DebtRatio和MonthlyIncome進(jìn)行分類包斑。


圖5-1 RevolvingUtilizationOfUnsecuredLines分箱情況.png

圖5-2 age分箱情況.png

圖5-3 DebtRatio分箱情況.png

圖5-4 MonthlyIncome分箱情況.png

針對(duì)不能最優(yōu)分箱的變量萌抵,分箱如下:

    # 連續(xù)變量離散化
    cutx3 = [ninf, 0, 1, 3, 5, pinf]
    cutx6 = [ninf, 1, 2, 3, 5, pinf]
    cutx7 = [ninf, 0, 1, 3, 5, pinf]
    cutx8 = [ninf, 0,1,2, 3, pinf]
    cutx9 = [ninf, 0, 1, 3, pinf]
    cutx10 = [ninf, 0, 1, 2, 3, 5, pinf]

5.2 WOE

WoE分析, 是對(duì)指標(biāo)分箱讨永、計(jì)算各個(gè)檔位的WoE值并觀察WoE值隨指標(biāo)變化的趨勢(shì)揭糕。其中WoE的數(shù)學(xué)定義是:
woe=ln(goodattribute/badattribute)
在進(jìn)行分析時(shí)插佛,我們需要對(duì)各指標(biāo)從小到大排列,并計(jì)算出相應(yīng)分檔的WoE值量窘。其中正向指標(biāo)越大氢拥,WoE值越小嫩海;反向指標(biāo)越大,WoE值越大叁怪。正向指標(biāo)的WoE值負(fù)斜率越大审葬,反響指標(biāo)的正斜率越大奕谭,則說明指標(biāo)區(qū)分能力好血柳。WoE值趨近于直線膝宁,則意味指標(biāo)判斷能力較弱根吁。若正向指標(biāo)和WoE正相關(guān)趨勢(shì)介返、反向指標(biāo)同WoE出現(xiàn)負(fù)相關(guān)趨勢(shì),則說明此指標(biāo)不符合經(jīng)濟(jì)意義愚争,則應(yīng)當(dāng)予以去除钠乏。
woe函數(shù)實(shí)現(xiàn)在上一節(jié)的mono_bin()函數(shù)里面已經(jīng)包含,這里不再重復(fù)着倾。

5.3 相關(guān)性分析和IV篩選

接下來寺旺,我們會(huì)用經(jīng)過清洗后的數(shù)據(jù)看一下變量間的相關(guān)性。注意鞍陨,這里的相關(guān)性分析只是初步的檢查步淹,進(jìn)一步檢查模型的VI(證據(jù)權(quán)重)作為變量篩選的依據(jù)从隆。
相關(guān)性圖我們通過Python里面的seaborn包,調(diào)用heatmap()繪圖函數(shù)進(jìn)行繪制缭裆,實(shí)現(xiàn)代碼如下:

    corr = data.corr()#計(jì)算各變量的相關(guān)性系數(shù)
    xticks = ['x0','x1','x2','x3','x4','x5','x6','x7','x8','x9','x10']#x軸標(biāo)簽
    yticks = list(corr.index)#y軸標(biāo)簽
    fig = plt.figure()
    ax1 = fig.add_subplot(1, 1, 1)
    sns.heatmap(corr, annot=True, cmap='rainbow', ax=ax1, annot_kws={'size': 9, 'weight': 'bold', 'color': 'blue'})#繪制相關(guān)性系數(shù)熱力圖
    ax1.set_xticklabels(xticks, rotation=0, fontsize=10)
    ax1.set_yticklabels(yticks, rotation=0, fontsize=10)
    plt.show()

生成的圖形如圖5-5所示:


圖5-5 數(shù)據(jù)集各變量的相關(guān)性

由上圖可以看出键闺,各變量之間的相關(guān)性是非常小的。NumberOfOpenCreditLinesAndLoans和NumberRealEstateLoansOrLines的相關(guān)性系數(shù)為0.43澈驼。
接下來辛燥,我進(jìn)一步計(jì)算每個(gè)變量的Infomation Value(IV)。IV指標(biāo)是一般用來確定自變量的預(yù)測(cè)能力缝其。 其公式為:
IV=sum((goodattribute-badattribute)*ln(goodattribute/badattribute))
通過IV值判斷變量預(yù)測(cè)能力的標(biāo)準(zhǔn)是:
< 0.02: unpredictive
0.02 to 0.1: weak
0.1 to 0.3: medium
0.3 to 0.5: strong
> 0.5: suspicious
IV的實(shí)現(xiàn)放在mono_bin()函數(shù)里面挎塌,代碼實(shí)現(xiàn)如下:

# 定義自動(dòng)分箱函數(shù)
def mono_bin(Y, X, n = 20):
    r = 0
    good=Y.sum()
    bad=Y.count()-good
    while np.abs(r) < 1:
        d1 = pd.DataFrame({"X": X, "Y": Y, "Bucket": pd.qcut(X, n)})
        d2 = d1.groupby('Bucket', as_index = True)
        r, p = stats.spearmanr(d2.mean().X, d2.mean().Y)
        n = n - 1
    d3 = pd.DataFrame(d2.X.min(), columns = ['min'])
    d3['min']=d2.min().X
    d3['max'] = d2.max().X
    d3['sum'] = d2.sum().Y
    d3['total'] = d2.count().Y
    d3['rate'] = d2.mean().Y
    d3['woe']=np.log((d3['rate']/(1-d3['rate']))/(good/bad))
    d3['goodattribute']=d3['sum']/good
    d3['badattribute']=(d3['total']-d3['sum'])/bad
    iv=((d3['goodattribute']-d3['badattribute'])*d3['woe']).sum()
    d4 = (d3.sort_index(by = 'min')).reset_index(drop=True)
    print("=" * 60)
    print(d4)
    cut=[]
    cut.append(float('-inf'))
    for i in range(1,n+1):
        qua=X.quantile(i/(n+1))
        cut.append(round(qua,4))
    cut.append(float('inf'))
    woe=list(d4['woe'].round(3))
    return d4,iv,cut,woe

生成的IV圖代碼:

    ivlist=[ivx1,ivx2,ivx3,ivx4,ivx5,ivx6,ivx7,ivx8,ivx9,ivx10]#各變量IV
    index=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10']#x軸的標(biāo)簽
    fig1 = plt.figure(1)
    ax1 = fig1.add_subplot(1, 1, 1)
    x = np.arange(len(index))+1
    ax1.bar(x, ivlist, width=0.4)#生成柱狀圖
    ax1.set_xticks(x)
    ax1.set_xticklabels(index, rotation=0, fontsize=12)
    ax1.set_ylabel('IV(Information Value)', fontsize=14)
    #在柱狀圖上添加數(shù)字標(biāo)簽
    for a, b in zip(x, ivlist):
        plt.text(a, b + 0.01, '%.4f' % b, ha='center', va='bottom', fontsize=10)
    plt.show()

輸出圖像:


圖5-6 輸出的各變量IV圖

可以看出,DebtRatio内边、MonthlyIncome榴都、NumberOfOpenCreditLinesAndLoans、NumberRealEstateLoansOrLines和NumberOfDependents變量的IV值明顯較低漠其,所以予以刪除嘴高。

小結(jié)

本文主要介紹了信用評(píng)分模型開發(fā)過程中的數(shù)據(jù)預(yù)處理、探索性分析和變量選擇和屎。數(shù)據(jù)預(yù)處理主要針對(duì)缺失值用隨機(jī)森林法和直接剔除法進(jìn)行處理拴驮,對(duì)于異常值主要根據(jù)實(shí)際情況和箱形圖的數(shù)據(jù)分布,對(duì)異常值進(jìn)行剔除眶俩;探索性分析主要對(duì)各變量的分布情況進(jìn)行初始的探究莹汤;變量選擇主要考慮了變量的分箱方法,根據(jù)分箱結(jié)果計(jì)算WOE值颠印,然后檢查變量之間的相關(guān)性纲岭,根據(jù)各變量的IV值來選擇對(duì)數(shù)據(jù)處理有好效果的變量。
接下來會(huì)介紹信用評(píng)分模型的模型開發(fā)线罕、模型評(píng)估和信用評(píng)分等止潮。
基于Python的信用評(píng)分卡模型分析(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钞楼,隨后出現(xiàn)的幾起案子喇闸,更是在濱河造成了極大的恐慌,老刑警劉巖询件,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燃乍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宛琅,警方通過查閱死者的電腦和手機(jī)刻蟹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘿辟,“玉大人舆瘪,你說我怎么就攤上這事片效。” “怎么了英古?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵淀衣,是天一觀的道長。 經(jīng)常有香客問我召调,道長膨桥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任唠叛,我火速辦了婚禮国撵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玻墅。我一直安慰自己,他們只是感情好壮虫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布澳厢。 她就那樣靜靜地躺著,像睡著了一般囚似。 火紅的嫁衣襯著肌膚如雪剩拢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天饶唤,我揣著相機(jī)與錄音徐伐,去河邊找鬼。 笑死募狂,一個(gè)胖子當(dāng)著我的面吹牛办素,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祸穷,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼性穿,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了雷滚?” 一聲冷哼從身側(cè)響起需曾,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祈远,沒想到半個(gè)月后呆万,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡车份,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年谋减,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躬充。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逃顶,死狀恐怖讨便,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情以政,我是刑警寧澤霸褒,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站盈蛮,受9級(jí)特大地震影響废菱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抖誉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一殊轴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袒炉,春花似錦旁理、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夺艰,卻和暖如春芋哭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郁副。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工减牺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人存谎。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓拔疚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愕贡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子草雕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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