task5 模型建立和評估

經(jīng)過前面的兩章的知識點的學習,我可以對數(shù)數(shù)據(jù)的本身進行處理租漂,比如數(shù)據(jù)本身的增刪查補,還可以做必要的清洗工作颊糜。那么下面我們就要開始使用我們前面處理好的數(shù)據(jù)了哩治。這一章我們要做的就是使用數(shù)據(jù),我們做數(shù)據(jù)分析的目的也就是衬鱼,運用我們的數(shù)據(jù)以及結(jié)合我的業(yè)務來得到某些我們需要知道的結(jié)果业筏。那么分析的第一步就是建模,搭建一個預測模型或者其他模型鸟赫;我們從這個模型的到結(jié)果之后蒜胖,我們要分析我的模型是不是足夠的可靠消别,那我就需要評估這個模型。今天我們學習建模台谢,下一節(jié)我們學習評估寻狂。

我們擁有的泰坦尼克號的數(shù)據(jù)集,那么我們這次的目的就是朋沮,完成泰坦尼克號存活預測這個任務蛇券。

import pandas as pd ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? import numpy as np ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?import matplotlib.pyplot as plt ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?import seaborn as sns ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from IPython.display import Image

%matplotlib inline

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號 plt.rcParams['figure.figsize'] = (10, 6) # 設(shè)置輸出圖片大小

載入這些庫,如果缺少某些庫樊拓,請安裝他們

【思考】這些庫的作用是什么呢纠亚?你需要查一查

matplotlib.pyplot是一個有命令風格的函數(shù)集合,它看起來和MATLAB很相似

Seaborn是基于matplotlib的圖形可視化python包筋夏。它提供了一種高度交互式界面蒂胞,便于用戶能夠做出各種有吸引力的統(tǒng)計圖表。

ipython是一個python的交互式shell条篷,比默認的python shell好用得多骗随,支持變量自動補全,自動縮進拥娄,支持bash shell命令蚊锹,內(nèi)置了許多很有用的功能和函數(shù)瞳筏。學習ipython將會讓我們以一種更高的效率來使用python稚瘾。同時它也是利用Python進行科學計算和交互可視化的一個最佳的平臺。

載入我們提供清洗之后的數(shù)據(jù)(clear_data.csv)姚炕,大家也將原始數(shù)據(jù)載入(train.csv)摊欠,說說他們有什么不同

train = pd.read_csv('train.csv') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?train.shape


train.head()

data = pd.read_csv('clear_data.csv') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? data.head()

模型搭建

處理完前面的數(shù)據(jù)我們就得到建模數(shù)據(jù),下一步是選擇合適模型

在進行模型選擇之前我們需要先知道數(shù)據(jù)集最終是進行監(jiān)督學習還是無監(jiān)督學習

模型的選擇一方面是通過我們的任務來決定的柱宦。

除了根據(jù)我們?nèi)蝿諄磉x擇模型外些椒,還可以根據(jù)數(shù)據(jù)樣本量以及特征的稀疏性來決定

剛開始我們總是先嘗試使用一個基本的模型來作為其baseline,進而再訓練其他模型做對比掸刊,最終選擇泛化能力或性能比較好的模型

這里我的建模免糕,并不是從零開始,自己一個人完成完成所有代碼的編譯忧侧。我們這里使用一個機器學習最常用的一個庫(sklearn)來完成我們的模型的搭建

下面給出sklearn的算法選擇路徑石窑,供大家參考

# sklearn模型算法選擇路徑圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Image('sklearn.png')

【思考】數(shù)據(jù)集哪些差異會導致模型在擬合數(shù)據(jù)是發(fā)生變化

答:?蚓炬?松逊?

任務一:切割訓練集和測試集

這里使用留出法劃分數(shù)據(jù)集

* 將數(shù)據(jù)集分為自變量和因變量

* 按比例切割訓練集和測試集(一般測試集的比例有30%、25%肯夏、20%经宏、15%和10%)

* 使用分層抽樣

* 設(shè)置隨機種子以便結(jié)果能復現(xiàn)

【思考】

* 劃分數(shù)據(jù)集的方法有哪些犀暑?

* 為什么使用分層抽樣,這樣的好處有什么烁兰?

?任務提示1

* 切割數(shù)據(jù)集是為了后續(xù)能評估模型泛化能力

* sklearn中切割數(shù)據(jù)集的方法為`train_test_split`

* 查看函數(shù)文檔可以在jupyter noteboo里面使用`train_test_split?`后回車即可看到

* 分層和隨機種子在參數(shù)里尋找

要從clear_data.csv和train.csv中提取train_test_split()所需的參數(shù)

from sklearn.model_selection ?import train_test_split ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? X = data ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?y = train['Survived']

X_train,X_test,y_train,y_test = train_test_split(X,y,stratify=y,random_state=0)

X_train.shape,X_test.shape

【思考】

什么情況下切割數(shù)據(jù)集的時候不用進行隨機選取

答:耐亏??

任務二:模型創(chuàng)建

創(chuàng)建基于線性模型的分類模型(邏輯回歸)

創(chuàng)建基于樹的分類模型(決策樹缚柏、隨機森林)

分別使用這些模型進行訓練苹熏,分別的到訓練集和測試集的得分

查看模型的參數(shù),并更改參數(shù)值币喧,觀察模型變化

提示

邏輯回歸不是回歸模型而是分類模型轨域,不要與LinearRegression混淆

隨機森林其實是決策樹集成為了降低決策樹過擬合的情況

線性模型所在的模塊為sklearn.linear_model

樹模型所在的模塊為sklearn.ensemble

from sklearn.linear_model import LogisticRegression ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from sklearn.ensemble import RandomForestClassifier

lr = LogisticRegression() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?lr.fit(X_train,y_train)

print('Training set score:{:.2f}'.format(lr.score(X_train,y_train))) ? ? ? ? ? ? ? ? ? ? ? ? ?print('Training set score:{:.2f}'.format(lr.score(X_test,y_test)))

lr2 = LogisticRegression(C=100) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lr2.fit(X_train,y_train)

print('Training set score:{:.2f}'.format(lr2.score(X_train,y_train))) ? ? ? ? ? ? ? ? ? ? print('Testing set score:{:.2f}'.format(lr2.score(X_test,y_test)))

rfc = RandomForestClassifier() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rfc.fit(X_train,y_train)

print('Training set score:{:.2f}'.format(rfc.score(X_train,y_train))) ? ? ? ? ? ? ? ? ? ? ?print('Testing set score:{:.2f}'.format(rfc.score(X_test,y_test)))

rfc2 = RandomForestClassifier(n_estimators=100,max_depth=5) rfc2.fit(X_train,y_train)

print('Training set score:{:.2f}'.format(rfc2.score(X_train,y_train))) ? ? ? ? ? ? ? ? ?print('testing set score:{:.2f}'.format(rfc2.score(X_test,y_test)))

【思考】

為什么線性模型可以進行分類任務,背后是怎么的數(shù)學關(guān)系

對于多分類問題杀餐,線性模型是怎么進行分類的

任務三:輸出模型預測結(jié)果

輸出模型預測分類標簽

輸出不同分類標簽的預測概率

提示3

一般監(jiān)督模型在sklearn里面有個predict能輸出預測標簽干发,predict_proba則可以輸出標簽概率

pred = lr.predict(X_train)

pred[:10]

pred_proba = lr.predict_proba(X_train)

pred_proba[:10]

【思考】

預測標簽的概率對我們有什么幫助

能知道模型的準確性

模型搭建和評估-評估

根據(jù)之前的模型的建模,我們知道如何運用sklearn這個庫來完成建模史翘,以及我們知道了的數(shù)據(jù)集的劃分等等操作枉长。那么一個模型我們怎么知道它好不好用呢?以至于我們能不能放心的使用模型給我的結(jié)果呢琼讽?那么今天的學習的評估必峰,就會很有幫助。

加載下面的庫

import pandas as pd ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?import numpy as np ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? import seaborn as sns ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?import matplotlib.pyplot as plt ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from IPython.display import Image ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from sklearn.linear_model import LogisticRegression ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from sklearn.ensemble import RandomForestClassifier

任務:加載數(shù)據(jù)并分割測試集和訓練集

from sklearn.model_selection import train_test_split

#一般先取出X和y后再切割钻蹬,有些情況會使用到未切割的吼蚁,這時候X和y就可以用,x是清洗好的數(shù)據(jù),y是我們要預測的存活數(shù)據(jù)'Survived' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?data = pd.read_csv('clear_data.csv') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? train = pd.read_csv('train.csv') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?X = data ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? y = train['Survived']

#對數(shù)據(jù)集進行切割 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?X_train,X_test,y_train,y_test = train_test_split(X,y,stratify=y,random_state=0)

#默認參數(shù)邏輯回歸模型 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lr = LogisticRegression() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lr.fit(X_train,y_train)

模型評估

模型評估是為了知道模型的泛化能力问欠。

交叉驗證(cross-validation)是一種評估泛化性能的統(tǒng)計學方法肝匆,它比單次劃分訓練集和測試集的方法更加穩(wěn)定、全面顺献。

在交叉驗證中旗国,數(shù)據(jù)被多次劃分,并且需要訓練多個模型注整。

最常用的交叉驗證是 k 折交叉驗證(k-fold cross-validation)能曾,其中 k 是由用戶指定的數(shù)字,通常取 5 或 10肿轨。

準確率(precision)度量的是被預測為正例的樣本中有多少是真正的正例

召回率(recall)度量的是正類樣本中有多少被預測為正類

f-分數(shù)是準確率與召回率的調(diào)和平均

任務一:交叉驗證

用10折交叉驗證來評估之前的邏輯回歸模型

計算交叉驗證精度的平均值

#提示:交叉驗證 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Image('Snipaste_2020-01-05_16-37-56.png')

提示4

交叉驗證在sklearn中的模塊為sklearn.model_selection

from sklearn.model_selection import cross_val_score

lr = LogisticRegression(C=100) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scores = cross_val_score(lr,X_train,y_train,cv =10)

scores

print('Average cross-validation score:{:.2f}'.format(scores.mean()))

思考4

k折越多的情況下會帶來什么樣的影響寿冕?

任務二:混淆矩陣

計算二分類問題的混淆矩陣

計算精確率、召回率以及f-分數(shù)

【思考】什么是二分類問題的混淆矩陣萝招,理解這個概念蚂斤,知道它主要是運算到什么任務中的

Image('Snipaste_2020-01-05_16-38-26.png')

#提示:準確率 (Accuracy),精確度(Precision),Recall,f-分數(shù)計算方法 Image('Snipaste_2020-01-05_16-39-27.png')

提示5

混淆矩陣的方法在sklearn中的sklearn.metrics模塊

混淆矩陣需要輸入真實標簽和預測標簽

精確率、召回率以及f-分數(shù)可使用classification_report模塊

from sklearn.metrics import confusion_matrix

# 訓練模型 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lr = LogisticRegression(C=100) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lr.fit(X_train, y_train)

# 模型預測結(jié)果 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pred = lr.predict(X_train)

# 混淆矩陣 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?confusion_matrix(y_train, pred)

from sklearn.metrics import classification_report

# 精確率槐沼、召回率以及f1-score ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print(classification_report(y_train, pred))

【思考】

如果自己實現(xiàn)混淆矩陣的時候該注意什么問題

任務三:ROC曲線

繪制ROC曲線

【思考】什么是OCR曲線曙蒸,OCR曲線的存在是為了解決什么問題捌治?

ROC的全名叫做Receiver Operating Characteristic,中文名字叫“受試者工作特征曲線”纽窟,其主要分析工具是一個畫在二維平面上的曲線——ROC 曲線肖油。平面的橫坐標是false positive rate(FPR),縱坐標是true positive rate(TPR)臂港。對某個分類器而言森枪,我們可以根據(jù)其在測試樣本上的表現(xiàn)得到一個TPR和FPR點對。這樣审孽,此分類器就可以映射成ROC平面上的一個點县袱。調(diào)整這個分類器分類時候使用的閾值,我們就可以得到一個經(jīng)過(0, 0)佑力,(1, 1)的曲線式散,這就是此分類器的ROC曲線。

提示6

ROC曲線在sklearn中的模塊為sklearn.metrics

ROC曲線下面所包圍的面積越大越好

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, lr.decision_function(X_test)) ? ? ? ? ? ? ? ? ? ? plt.plot(fpr, tpr, label="ROC Curve") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plt.xlabel("FPR") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plt.ylabel("TPR (recall)") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 找到最接近于0的閾值 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?close_zero = np.argmin(np.abs(thresholds)) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? plt.plot(fpr[close_zero], tpr[close_zero], 'o', markersize=10, label="threshold zero", fillstyle="none", c='k', mew=2) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?plt.legend(loc=4)

思考6

對于多分類問題如何繪制ROC曲線

【思考】你能從這條OCR曲線的到什么信息打颤?這些信息可以做什么暴拄?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市编饺,隨后出現(xiàn)的幾起案子乖篷,更是在濱河造成了極大的恐慌,老刑警劉巖透且,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撕蔼,死亡現(xiàn)場離奇詭異,居然都是意外死亡石蔗,警方通過查閱死者的電腦和手機罕邀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門畅形,熙熙樓的掌柜王于貴愁眉苦臉地迎上來养距,“玉大人,你說我怎么就攤上這事日熬」餮幔” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵竖席,是天一觀的道長耘纱。 經(jīng)常有香客問我,道長毕荐,這世上最難降的妖魔是什么束析? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮憎亚,結(jié)果婚禮上员寇,老公的妹妹穿的比我還像新娘弄慰。我一直安慰自己,他們只是感情好蝶锋,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布陆爽。 她就那樣靜靜地躺著,像睡著了一般扳缕。 火紅的嫁衣襯著肌膚如雪慌闭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天躯舔,我揣著相機與錄音驴剔,去河邊找鬼。 笑死粥庄,一個胖子當著我的面吹牛仔拟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播飒赃,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼利花,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了载佳?” 一聲冷哼從身側(cè)響起炒事,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔫慧,沒想到半個月后挠乳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡姑躲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年睡扬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黍析。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡卖怜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阐枣,到底是詐尸還是另有隱情马靠,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布蔼两,位于F島的核電站甩鳄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏额划。R本人自食惡果不足惜妙啃,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俊戳。 院中可真熱鬧,春花似錦、人聲如沸坠韩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至突倍,卻和暖如春腔稀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羽历。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工焊虏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秕磷。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓诵闭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親澎嚣。 傳聞我的和親對象是個殘疾皇子疏尿,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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