用戶流失預測模型-電信行業(yè)項目實戰(zhàn)

本文以電信行業(yè)數(shù)據(jù)為基礎嫉沽,對其進行用戶流失預警的建模,整理如下钉迷,歡迎拍磚~

一、流失知識點整理

1. 流失定義

不同產(chǎn)品存在不同的使用周期钠署,因此在定義流失用戶上糠聪,需要去進行用戶調(diào)研,比如可以對時隔1周谐鼎、1個月舰蟆、3個月、半年未下單用戶進行用戶調(diào)研狸棍,去了解用戶不再產(chǎn)生瀏覽和購買的行為原因身害,定義流失。

DAU/MAU

這里的DAU是一個月內(nèi)日活均值草戈,MAU是月活躍用戶數(shù)去重塌鸯。
DAU/MAU比值高,說明用戶訪問產(chǎn)品頻率高且穩(wěn)定唐片,用戶粘性高留存率高丙猬;
相反DAU/MAU比值低,說明用戶訪問產(chǎn)品頻率低不穩(wěn)定费韭,用戶粘性差留存率低淮悼;

以社交產(chǎn)品為例,DAU/MAU定義用戶流失
一般來說0.03<DAU/MAU<1揽思,DAU/MAU=0.03說明活躍用戶只來一次,產(chǎn)品粘性太低见擦;=1說明用戶每天都來钉汗。微信的DAU/MAU處于0.8左右,一般產(chǎn)品0.3就比較好了鲤屡。

2. 研究流失的目的

首要目的還是避免用戶繼續(xù)流失损痰,其次才是挽回流失。
這里可以看用戶的生命周期判斷流失原因:
(1)獲取期:新用戶通過推廣酒来、宣傳來到產(chǎn)品中卢未,嘗鮮型;
(2)提升期:用戶有購買行為
(3)成熟期:用戶存在復購和交叉購買行為
(4)衰退期:購買行為和頻次開始衰退,是最需要預警的時期
(5)離開期:達到流失標準
根據(jù)以上五個生命周期為用戶打上標簽辽社,判斷用戶是在哪個時期流失伟墙,相應的流失原因不同,采取不同措施對產(chǎn)品進行改進滴铅。

3. 流失指標
  • 可以通過流失率趨勢圖定位流失率的大小


    image.png

    如圖可知戳葵,當流失率達到40%左右開始流失變緩且達到28天處于平穩(wěn)趨勢,因此30天沒活躍就算成流失用戶汉匙。

  • 細分流失用戶的畫像
    包括與活躍用戶的行為差異拱烁、屬性差異、渠道差異等噩翠,流失之前的訪問頻次戏自、訪問頁面一些列行為。
4. 確定首要挽回用戶

對于老板來說伤锚,成本有限擅笔,挽回流失用戶當然是挑最值得挽回那一波。因此這里用到了RMF模型见芹,總的來說獲取期用戶的優(yōu)先級一定是低于成熟期的剂娄。這里有我寫過的RFM文章:RFM模型分析實戰(zhàn)

5. 流失用戶召回

使用push推送、短信玄呛、微信服務號等方式進行召回
這里也同樣應用到了流失模型阅懦。
比如:根據(jù)購買頻次和金額來細分。
1次也沒購買過的用戶可派發(fā)大額度優(yōu)惠券徘铝、大促活動或超低價商品吸引回訪耳胎,成為首單新客。
購買1—2次且客單價較低的用戶惕它,可精準推送優(yōu)惠專場或在這個客單水平的好貨怕午。
購買3次及以上的用戶,可推送用戶偏好的品牌或品類淹魄,額外增加會員專屬優(yōu)惠券等形式郁惜。

總而言之,根據(jù)用戶流失模型區(qū)分不同行為和屬性的用戶甲锡,以及他們流失的節(jié)點兆蕉、原因,運營才可以做到有的放矢缤沦,強化用戶召回的效果虎韵。

說在后面:用戶的召回很難,更好的做法是避免用戶流失缸废。比如通過區(qū)分用戶生命5個周期找到用戶在各周期的流失原因進行產(chǎn)品或運營改進包蓝;比如通過分析之前已流失的用戶特征屬性驶社,行為建立預警模型,針對現(xiàn)有用戶有流失跡象提前預警提前進行挽回打消用戶流失的念頭测萎,這才是關鍵亡电!

二、電信行業(yè)流失預警模型

分析目的

哪些用戶可能會流失绳泉?
流失概率高的用戶有哪些共同特征逊抡?

數(shù)據(jù)探索EDA
2.1 導入數(shù)據(jù)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import os
os.chdir('/Users/xy/Desktop/專業(yè)知識/電信行業(yè)流失預警/')
df = pd.read_csv('WA_Fn-UseC_-Telco-Customer-Churn.csv')
2.2 數(shù)據(jù)概覽
pd.set_option('display.max_columns', None)
df.head(5)
#各個字段取值個數(shù)
for i in range(21):
    print(df.iloc[:,i].value_counts())
df.shape

customerID:用戶ID
gender:性別 male男性 female女性
SeniorCitizen:是否老年人 0否1是
Partner:是否有配偶 YES是NO否
Dependents:是否經(jīng)濟獨立 YES是NO否
tenure:客戶職位 73個
PhoneService:是否開通電話業(yè)務 YES是NO否
MultipleLines:是否開通多線業(yè)務 YES是NO否 No phoneservice
InternetService:是否開通互聯(lián)網(wǎng)業(yè)務 No, DSL數(shù)字網(wǎng)絡,fiber optic光纖網(wǎng)絡
OnlineSecurity:是否開通網(wǎng)絡安全服務YES是NO否 No phoneservice
OnlineBackup:是否開通在線備份業(yè)務YES是NO否 No phoneservice
DeviceProtection:是否開通了設備保護業(yè)務YES是NO否 No phoneservice
TechSupport:是否開通了技術支持服務YES是NO否 No phoneservice
StreamingTV:是否開通網(wǎng)絡電視YES是NO否 No phoneservice
StreamingMovies:是否開通網(wǎng)絡電影
Contract:簽訂合同方式 按月 一年 二年
PaperlessBilling:是否開通電子賬單YES是NO否
PaymentMethod:付款方式(bank transfer零酪,credit card冒嫡,electronic check,mailed check)
MonthlyCharges:月費用
TotalCharges:總費用
Churn:是否流失 YES是NO否

(7043行, 21列)

其中:
gender:男女比例均衡
SeniorCitizen:非老年人居多
Partner:有無配偶比例均衡
Dependents:經(jīng)濟獨立2k四苇,非獨立5k
PhoneService:開通電話業(yè)務居多
Contract:合同中按月的較多孝凌,按1年和2年的占比相似
Churn:數(shù)據(jù)集中有5174名用戶沒流失,有1869名客戶流失月腋,數(shù)據(jù)集不均衡

2.3 數(shù)據(jù)信息
df.info()
df.isnull().sum()
image.png

未發(fā)現(xiàn)缺失值

df['TotalCharges'].apply(pd.to_numeric, errors='coerce')#object轉為float
df['TotalCharges'].isnull().sum()#再次查看缺失值
df.dropna(inplace=True)#刪除缺失行

將TotalCharges的object轉為float格式蟀架,網(wǎng)上給出的方法大多數(shù)都是dt_df = dt_df.convert_objects(convert_numeric=True),但是因為我現(xiàn)在的版本號低于1.0也不想升級榆骚,因此終于找到上面的方法改變類型啦片拍!()
發(fā)現(xiàn)有11個缺失值,數(shù)量不多刪除

df['Churn'].replace('Yes',1,inplace=True)
df['Churn'].replace('No',0,inplace=True)

將df['Churn']中值變?yōu)閿?shù)值化妓肢,yes變?yōu)?捌省,no變?yōu)?

2.4 數(shù)據(jù)可視化
2.41 流失用戶占比
plt.rcParams['font.sans-serif']=['SimHei']  #正常顯示中文
plt.rcParams['axes.unicode_minus'] = False  #正常顯示負號

labels = ['未流失用戶','流失用戶']
Churn = df['Churn'].value_counts()
plt.pie(Churn,labels=labels,autopct='%.1f%%')
image.png

流失用戶占比26.6%,未流失占比73.4%

2.42 性別碉钠、老年人纲缓、配偶、經(jīng)濟是否獨立對流失用戶的影響
plt.figure(1),plt.title('區(qū)分性別對流失的影響')
sns.countplot(x='gender',hue='Churn',data=df,palette='BuPu_r')
plt.figure(2),plt.title('區(qū)分老年人對流失的影響')
sns.countplot(x='SeniorCitizen',hue='Churn',data=df,palette='BuPu_r')
plt.figure(3),plt.title('區(qū)分配偶對流失的影響')
sns.countplot(x='Partner',hue='Churn',data=df,palette='BuPu_r')
plt.figure(4),plt.title('區(qū)分經(jīng)濟獨立對流失的影響')
sns.countplot(x='Dependents',hue='Churn',data=df,palette='BuPu_r')
image.png

image.png

image.png

image.png

可以得出結論:男性與女性之間的流失沒有差異喊废;老年用戶流失占比比非老年用戶高祝高;沒有配偶的流失占比高于有配偶的流失占比;經(jīng)濟未獨立的流失率遠高于經(jīng)濟獨立污筷;

2.43 特征之間的關系

想知道特征之間的關系工闺,需要將這些特征以數(shù)值形式展現(xiàn)。這里就用到LabelEncoder或pd.factorize瓣蛀,LabelEncoder能將文本或非連續(xù)性數(shù)字進行編號陆蟆,缺點是該編碼方法有順序關系。pd.factorize與LabelEncoder的區(qū)別是:pd.factorize支持None默認不排序揪惦。pd.factorize()返回兩個值前面值為編碼后的值,后面為原來值罗侯。

  • 使用LabelEncoder進行編碼化:
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
lst = []
columns=['gender', 'SeniorCitizen', 'Partner', 'Dependents',
       'tenure', 'PhoneService', 'MultipleLines', 'InternetService',
       'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport',
       'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling',
       'PaymentMethod', 'MonthlyCharges', 'TotalCharges']
for i in range(1,20):
    corrdf = labelencoder.fit_transform(df.iloc[:,i])
    lst.append(corrdf)
df2 = pd.DataFrame(map(list,zip(*lst)),columns=columns)
df2.corr()

用corr相關矩陣難以看出這些列之間的關系器腋,可以用熱力圖。

plt.figure(figsize=(16,8))
sns.heatmap(df2.corr(),cmap='YlGnBu',annot=True)

image.png

通常情況下通過以下取值范圍判斷變量的相關強度:
相關系數(shù)
0.8-1.0 極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關

從熱力圖矩陣中能夠明顯看出配偶與經(jīng)濟獨立有一定關系,職業(yè)與繳納總費用以及合同期限有強相關關系

  • 使用pd.factorize進行編碼化:
charge=df.iloc[:,1:20]#取要編碼的列
for i in range(0,19):
    charge.iloc[:,i] = pd.factorize(charge.iloc[:,i])[0]
plt.figure(figsize=(16,8))
sns.heatmap(charge.corr(),cmap='YlGnBu',annot=True)
image.png

可以看出電話業(yè)務與多線業(yè)務之間存在強相關性纫塌,互聯(lián)網(wǎng)服務诊县、網(wǎng)絡安全服務、在線備份業(yè)務措左、設備保護業(yè)務依痊、技術支持服務、網(wǎng)絡電視和網(wǎng)絡電影之間存在較強的相關性怎披,并且都呈正相關關系胸嘁。

我稍微研究了下兩者編碼后的區(qū)別,都是按照從上到下出現(xiàn)順序對離散非數(shù)值變量進行0凉逛,1性宏,...的編碼;對于離散數(shù)值變量如職業(yè)状飞,labelencoder按照原數(shù)據(jù)大小從0向后依次編碼毫胜,而pd.factorize仍舊按照出現(xiàn)順序不分大小進行編碼。這樣也就解釋了為什么在pd.factorize中有明顯關系的幾個列在labelencoder無明顯關系了诬辈,因為被labelencoder中的有大小順序掩蓋了酵使。(僅個人見解)

2.44 特征與churn之間的關系

首先介紹連續(xù)數(shù)據(jù)離散化相關知識點:
一般在回歸、分類焙糟、聚類算法中口渔,特征之間計算歐式距離來計算相似度十分重要。當特征中既包括離散變量也包括連續(xù)變量酬荞,或存在數(shù)量級不一致的情況下搓劫,就要進行歸一化。
(1)連續(xù)變量處理方法

  • 最大最小值歸一化[0,1] x = (x-x.min)/(x.max-x.min)

  • 標準化z_score x= (x-x.mean)/σ
    (2)離散變量處理方法-onehot編碼混巧,將離散取值擴展到歐式空間上枪向。

  • pd.get_dummies:適合于含有字符串類型的數(shù)據(jù)

  • OneHotEncoder():適用于含有數(shù)值的數(shù)據(jù)

  • Churn與各特征之間相關性

df_churn = pd.get_dummies(df.iloc[:,1:21])
plt.figure(figsize=(16,8)),plt.title('Churn與各特征之間相關性')
df_churn.corr()['Chaurn'].sort_values(ascending=False).plot(kind='bar')
image.png

可見變量gender 和 PhoneService處于中間,相關性非常小咧党,可以舍棄秘蛔。

  • 網(wǎng)絡安全服務、在線備份業(yè)務傍衡、設備保護業(yè)務深员、技術支持服務、網(wǎng)絡電視和網(wǎng)絡電影對流失影響
columns=['OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport',
       'StreamingTV', 'StreamingMovies']
fig,axes = plt.subplots(nrows=2,ncols=3,figsize=(16,10))
for i,item in enumerate(columns):#enumerate變量數(shù)據(jù)對象如列表蛙埂,返回每個數(shù)據(jù)及其下標
    plt.subplot(2,3,(i+1))
    ax = sns.countplot(x=item,hue='Churn',data=df,order=['Yes','No','No internet service'],palette='YlGnBu_r')
    #頻數(shù)柱形圖倦畅,x為每個特征,hue為區(qū)分是否流失绣的,y為頻數(shù)叠赐,order可以規(guī)定x內(nèi)顯示順序
    plt.xlabel(str(item))
    plt.title('Churn與'+str(item)+'的關系')
    i = i+1
plt.show()

image.png

上述可見欲账,網(wǎng)絡安全服務、在線備份業(yè)務芭概、設備保護業(yè)務赛不、技術支持服務、網(wǎng)絡電視和網(wǎng)絡電影這六個變量中沒有開通網(wǎng)絡服務的用戶流失率相同的且較低罢洲,可能因為這六個變量只有在開通網(wǎng)絡服務才會影響用戶決策踢故。因此這六個變量不會對未使用網(wǎng)絡服務用戶的流失產(chǎn)生推論效應。
在這六個變量中前四個變量“網(wǎng)絡安全服務惹苗、在線備份業(yè)務殿较、設備保護業(yè)務、技術支持服務”未開通該服務的用戶流失占比遠高于開通服務的流失占比鸽粉,而“網(wǎng)絡電視和網(wǎng)絡電影”流失幾乎不受是否開通該業(yè)務影響斜脂。猜測是因為前四個變量開通能提高用戶體驗質(zhì)量減少流失,而“網(wǎng)絡電視和網(wǎng)絡電影”不夠成熟導致用戶體驗變差反而造成流失触机。

2.45 合同與流失的關系
plt.title('合同類型與客戶流失的關系')
sns.barplot(x='Contract',y='Churn',data=df,order=['Month-to-month','One year','Two year'])
plt.ylabel('Churn:流失占比')
image.png

簽訂合同方式對流失率的影響是:按月>1年>2年

2.46 付款方式與流失的關系
#付款方式與流失的關系
plt.title('合同類型與客戶流失的關系')
sns.barplot(x='PaymentMethod',y='Churn',data=df,order=['Electronic check','Mailed check','Bank transfer (automatic)','Credit card (automatic)'])
plt.ylabel('Churn:流失占比')

image.png

從上圖可知帚戳,電子賬單的流失率最高,可見電子賬單的流程或設計影響用戶體驗儡首,需要改進片任。

3. 特征工程
3.1 特征篩選

根據(jù)上面的結論得知,變量gender 和 PhoneService對流失影響可忽略蔬胯,刪除這兩列对供。customerID是隨機字符對后續(xù)建模不影響,也刪除氛濒。

df_new= df.iloc[:,2:20]
df_new.drop('PhoneService',inplace=True,axis=1)
df_id = df['customerID']#提取客戶ID

對用戶職位产场、總費用、月費用進行連續(xù)變量歸一化舞竿,使方差為1均值為0京景,這樣預測數(shù)值不會被這些過大的特征值主導

from sklearn.preprocessing import StandardScaler
standard = StandardScaler()
standard.fit(df_new[['tenure','MonthlyCharges','TotalCharges']]

df_new[['tenure','MonthlyCharges','TotalCharges']] = standard.transform(df_new[['tenure','MonthlyCharges','TotalCharges']])
sns.boxplot(data=df_new[['tenure','MonthlyCharges','TotalCharges']])
plt.title('職位、月費用和總費用箱型圖可視化')
image.png

如果不進行歸一化骗奖,得到的箱線圖是這樣的:


image.png

因此歸一化十分重要确徙。
箱線圖中能夠看到,三個特征沒有異常數(shù)據(jù)执桌。

3.2 處理對象類型數(shù)據(jù)
#查看對象類型都有哪些值
def uni(data):
    print(data,'--',df_new[data].unique())
dfobject = df_new.select_dtypes('object')
for i in range(0,len(dfobject.columns)):
    uni(dfobject.columns[i])
image.png

由上面分析可知鄙皇,六個變量中沒有開通網(wǎng)絡業(yè)務對流失影響較小,因此可以將No internet service 和 No 是一樣的效果仰挣,可以使用 No 替代 No internet service伴逸。

df_new.replace('No internet service','No',inplace=True)
df_new.replace('No phone service','No',inplace=True)
for i in range(0,len(dfobject.columns)):
    uni(dfobject.columns[i])
image.png
3.3 將數(shù)值進行編碼

sklearn中的labelencoder進行編碼

def labelend(data):
    df_new[data] = labelencoder.fit_transform(df_new[data])#labelencoder進行編碼
for i in range(0,len(dfobject.columns)):
    labelend(dfobject.columns[i])
for i in range(0,len(dfobject.columns)):
    uni(dfobject.columns[i])
image.png
4. 構造模型
4.1 交叉驗證

由于流失占比不均衡,因此采用分層交叉驗證法

from sklearn.model_selection import StratifiedShuffleSplit
X = df_new#刪除與流失無關的列膘壶,將對象類型進行編碼错蝴,將數(shù)值較大列進行歸一化后得到的特征集
y = df['Churn'].values#標簽集
sss = StratifiedShuffleSplit(n_splits=5,test_size=0.2,random_state=0)
for train_index,test_index in sss.split(X,y):
    print('train',train_index,'test',test_index)#得到訓練集和測試集的index
    X_train,X_test = X.iloc[train_index],X.iloc[test_index]#訓練集特征博烂,測試集特征
    y_train,y_test = y[train_index],y[test_index]#訓練集標簽,測試集標簽
    
image.png
print('原始數(shù)據(jù)特征',X.shape)
print('訓練數(shù)據(jù)特征',X_train.shape)
print('測試數(shù)據(jù)特征',X_test.shape)
image.png
print('原始數(shù)據(jù)標簽',y.shape)
print('訓練數(shù)據(jù)標簽',y_train.shape)
print('測試數(shù)據(jù)標簽',y_test.shape)
image.png
4.2 選擇機器學習算法

由于這里是監(jiān)督學習分類問題漱竖,可選算法有:SVM支持向量機,決策樹畜伐,樸素貝葉斯馍惹,邏輯回歸(當然其他還有很多,比如隨機森林玛界、KNN万矾、xgboost、catboost等慎框,但是暫時沒有掌握)

#算法
from sklearn.svm import SVC #支持向量機
from sklearn.linear_model import LogisticRegression #邏輯回歸
from sklearn.naive_bayes import GaussianNB#樸素貝葉斯
from sklearn.tree import DecisionTreeClassifier#決策樹分類器

from sklearn.metrics import recall_score,f1_score,precision_score
Classifiers = [['SVM',SVC()],
              ['LogisticRegression',LogisticRegression()],
              ['GaussianNB',GaussianNB()],
              ['DecisionTreeClassifier',DecisionTreeClassifier()]]
Classify_results = []
names = []
prediction = []
for name ,classifier in Classifiers:
    classifier.fit(X_train,y_train)#訓練這4個模型
    y_pred = classifier.predict(X_test)#預測這4個模型
    recall = recall_score(y_test,y_pred)#評估這四個模型的召回率
    precision = precision_score(y_test,y_pred)#評估這四個模型的精確率
    f1 = f1_score(y_test,y_pred)#評估這四個模型的f1分數(shù)
    class_eva = pd.DataFrame([recall,precision,f1])#將召回率良狈、精確率和f1分數(shù)放在df中,方便接下來對比
    Classify_results.append(class_eva)
    name = pd.Series(name)
    names.append(name)
    y_pred = pd.DataFrame(y_pred)
    prediction.append(y_pred)

將得到的模型評估指標制作成表格

names = pd.DataFrame(names)
result = pd.concat(Classify_results,axis=1)
result.columns = names
result.index=[['recall','precision','f1']]
result

image.png

綜上所述笨枯,樸素貝葉斯模型的f1分數(shù)最高薪丁,因此使用樸素貝葉斯效果最好。

5. 實施方案

由于沒有給預測數(shù)據(jù)馅精,這里選擇最后10行數(shù)據(jù)作為預測

df_test = df_new.tail(10)#截取數(shù)據(jù)最后10行
cutid_test = df['customerID'].tail(10)#取出最后10行的ID
model = GaussianNB()
model.fit(X_train,y_train)#訓練
pred_test_y = model.predict(df_test)#用最后10行的數(shù)據(jù)做預測
predf = pd.DataFrame({'customerID':cutid_test,'churn':pred_test_y})

image.png

對比了實際數(shù)據(jù)严嗜,返現(xiàn)10行中3行預測錯誤,其余正確洲敢,與f1score=63%相符漫玄。

6. 結論

通過上述分析

  • 老年用戶、單身压彭、經(jīng)濟未獨立的用戶流失率較高睦优;
  • 是否開通電話服務對用戶流失沒有直接的影響;
  • 提供的網(wǎng)絡服務如:網(wǎng)絡安全服務壮不、在線備份業(yè)務汗盘、設備保護業(yè)務、技術支持服務能夠降低用戶的流失率
  • 合同簽訂時間越久留存越高
  • 使用電子賬單付款的用戶更容易流失
    針對以上結論忆畅,給出的建議是:
    (1)推薦老年用戶與青少年用戶采用數(shù)字網(wǎng)絡衡未,且簽訂2年期合同(可以各種輔助優(yōu)惠等營銷手段來提高2年期合同的簽訂率)
    (2)若能開通相關網(wǎng)絡服務可增加用戶粘性,因此可增加這塊業(yè)務的推廣
    (3)考慮改善電子賬單支付的用戶體驗家凯。

參考:
https://mp.weixin.qq.com/s/_20MN6V6aV1T3Ekd7C9neQ 李啟方大佬
https://blog.csdn.net/u013385925/article/details/80142310onehot
https://blog.csdn.net/Li_yi_chao/article/details/80852701onehot
https://blog.csdn.net/ccblogger/article/details/80010974
https://blog.csdn.net/u010986753/article/details/98069124交叉驗證
https://blog.csdn.net/wuzhongqiang/article/details/101560889分層交叉驗證詳解

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缓醋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绊诲,更是在濱河造成了極大的恐慌送粱,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂之,死亡現(xiàn)場離奇詭異抗俄,居然都是意外死亡脆丁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門动雹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來槽卫,“玉大人,你說我怎么就攤上這事胰蝠〖吲啵” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵茸塞,是天一觀的道長躲庄。 經(jīng)常有香客問我,道長钾虐,這世上最難降的妖魔是什么噪窘? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮效扫,結果婚禮上倔监,老公的妹妹穿的比我還像新娘。我一直安慰自己菌仁,他們只是感情好丐枉,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掘托,像睡著了一般瘦锹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闪盔,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天弯院,我揣著相機與錄音,去河邊找鬼泪掀。 笑死听绳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的异赫。 我是一名探鬼主播椅挣,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼塔拳!你這毒婦竟也來了鼠证?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤靠抑,失蹤者是張志新(化名)和其女友劉穎量九,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡荠列,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年类浪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肌似。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡费就,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出川队,到底是詐尸還是另有隱情受楼,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布呼寸,位于F島的核電站,受9級特大地震影響猴贰,放射性物質(zhì)發(fā)生泄漏对雪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一米绕、第九天 我趴在偏房一處隱蔽的房頂上張望瑟捣。 院中可真熱鬧,春花似錦栅干、人聲如沸迈套。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桑李。三九已至,卻和暖如春窿给,著一層夾襖步出監(jiān)牢的瞬間贵白,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工崩泡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留禁荒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓角撞,卻偏偏與公主長得像呛伴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谒所,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355