11-SVM與K均值聚類

一.SVM

什么是SVM?

SVM主要針對(duì)小樣本數(shù)據(jù)進(jìn)行學(xué)習(xí)、分類和預(yù)測(cè)(有時(shí)也叫回歸)的一種方法表牢,能解決神經(jīng)網(wǎng)絡(luò)不能解決的過(guò)學(xué)習(xí)問(wèn)題污抬,而且有很好的泛化能力

1.1 SVM原理

舉個(gè)例子:
好吧账千,故事是這樣子的:

在很久以前的情人節(jié)侥蒙,大俠要去救他的愛(ài)人,但魔鬼和他玩了一個(gè)游戲匀奏。

魔鬼在桌子上似乎有規(guī)律放了兩種顏色的球鞭衩,說(shuō):“你用一根棍分開(kāi)它們?要求:盡量在放更多球之后娃善,仍然適用论衍。”


1.png

于是大俠這樣放聚磺,干的不錯(cuò)坯台?.png

然后魔鬼,又在桌上放了更多的球瘫寝,似乎有一個(gè)球站錯(cuò)了陣營(yíng).png

SVM就是試圖把棍放在最佳位置蜒蕾,好讓在棍的兩邊有盡可能大的間隙.png

現(xiàn)在即使魔鬼放了更多的球,棍仍然是一個(gè)好的分界線.png

增加難度


然后焕阿,在SVM 工具箱中有另一個(gè)更加重要的 trick咪啡。 魔鬼看到大俠已經(jīng)學(xué)會(huì)了一個(gè)trick,于是魔鬼給了大俠一個(gè)新的挑戰(zhàn).png

現(xiàn)在暮屡,大俠沒(méi)有棍可以很好幫他分開(kāi)兩種球了撤摸,現(xiàn)在怎么辦呢?當(dāng)然像所有武俠片中一樣大俠桌子一拍褒纲,球飛到空中准夷。然后,憑借大俠的輕功莺掠,大俠抓起一張紙衫嵌,插到了兩種球的中間.png

現(xiàn)在,從魔鬼的角度看這些球汁蝶,這些球看起來(lái)像是被一條曲線分開(kāi)了.png

再后來(lái)
無(wú)聊的大人們渐扮,把這些球叫做 「data」论悴,把棍子 叫做 「classifier」, 最大間隙trick 叫做「optimization」掖棉, 拍桌子叫做「kernelling」, 那張紙叫做「hyperplane」
1.2 SVM實(shí)戰(zhàn):線性

直線斜率計(jì)算公式:k=(y2-y1)/(x2-x1)
1.導(dǎo)入

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.svm import SVC

2.隨機(jī)生成數(shù)據(jù),并且進(jìn)行訓(xùn)練

np.random.seed(0)
X = np.r_[np.random.randn(20,2) - [2,2], np.random.randn(20,2)+[2,2]]
y = [0]*20 + [1]*20

clf = SVC(kernel='linear')
# 第一步:訓(xùn)練
clf.fit(X,y)

3.提取系數(shù)獲取斜率

# 提取出系數(shù)
w = clf.coef_[0]
# 斜率 k=(y2-y1)/(x2-x1)
a = -w[0]/w[1]

4.線性方程的截距

# 分類邊界
xx = np.linspace(-5,5)
#intercept截距/X軸方向的系數(shù) == 線性方程的截距
yy = a*xx -(clf.intercept_[0])/w[1]

5.上邊界和下邊界

# 下邊界
b = clf.support_vectors_[0]
yy_down = a*xx + (b[1]-a*b[0])

# 上邊界
b = clf.support_vectors_[-1]
yy_up = a*xx + (b[1]-a*b[0])

6.繪制圖形

# 畫出三個(gè)邊界
plt.figure(figsize=(12,8))
plt.plot(xx,yy,'k-')
plt.plot(xx,yy_down,'k--')
plt.plot(xx,yy_up,'k--',c = 'r')

# 畫出支持向量
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=200)
# 畫出所有點(diǎn)
plt.scatter(X[:,0],X[:,1],c=y)
線性.png
1.3 SVM實(shí)戰(zhàn):基于半徑(rbf)

1.導(dǎo)入

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

2.創(chuàng)造-3到3范圍的點(diǎn)以及meshgrid

xx, yy = np.meshgrid(np.linspace(-3, 3, 500),
                     np.linspace(-3, 3, 500))
np.random.seed(0)
X = np.random.randn(300, 2)
#xor異或
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

3.創(chuàng)造模型(rbf)膀估,訓(xùn)練數(shù)據(jù)

clf = svm.SVC(kernel='rbf')
clf.fit(X, Y)

4.繪制圖形

plt.figure(figsize=(8,8))

# 樣本xy到分離超平面的距離
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.imshow(Z,extent=(xx.min(), xx.max(), yy.min(), yy.max()), 
            cmap=plt.cm.PuOr_r)
#繪制輪廓
# contours = plt.contour(xx, yy, Z)

plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired,
            edgecolors='k')
plt.axis('off')
plt.axis([-3, 3, -3, 3])
plt.show()
基于半徑.png
1.4 SVM實(shí)戰(zhàn):使用多種核函數(shù)對(duì)iris數(shù)據(jù)集進(jìn)行分類

1.導(dǎo)入

from sklearn.svm import SVC
from sklearn.svm import LinearSVC
from sklearn import datasets 

2.隨機(jī)生成數(shù)據(jù)幔亥,并且進(jìn)行訓(xùn)練

iris = datasets.load_iris()

# 只取兩個(gè)特征(方便畫圖)
X = iris.data[:,:2]
y = iris.target

# 建立模型
svc_linear = SVC(kernel='linear')
svc_rbf = SVC(kernel='rbf')#Radial Based Function 基于半徑的函數(shù)
svc_poly = SVC(kernel='poly') # poly是多項(xiàng)式的意思
linear_svc = LinearSVC() # SVC(kernel = 'linear')相近方法更多,可以處理更多的數(shù)據(jù)

# 訓(xùn)練模型
svc_linear.fit(X,y)
svc_rbf.fit(X,y)
svc_poly.fit(X,y)
linear_svc.fit(X,y)

3.圖片背景云點(diǎn)

# 網(wǎng)格密度
h = 0.02

# 設(shè)置x軸y軸的界限
x_min,x_max = X[:,0].min()-1, X[:,0].max()+1
y_min,y_max = X[:,1].min()-1, X[:,1].max()+1
# 得到網(wǎng)格的坐標(biāo)
xx,yy = np.meshgrid(np.arange(x_min,x_max,h),
                   np.arange(y_min,y_max,h))

4.繪制圖形

# 設(shè)置圖片標(biāo)題
titles = ['svc_linear',
         'svc_rbf',
         'svc_poly',
         'linear_svc']

plt.figure(figsize=(12,8))

# 在2*2子圖中畫出四種SVC
for i,clf in enumerate((svc_linear,svc_rbf,svc_poly,linear_svc)):
    plt.subplot(2,2,i+1)
    Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])
    Z = Z.reshape(xx.shape)
    # 等高線以及背景
    plt.contourf(xx,yy,Z,alpha=0.2,cmap = 'cool')
    
    # 實(shí)際點(diǎn)的圖
    plt.scatter(X[:,0],X[:,1],c=y,cmap='rainbow')
    plt.title(titles[i])
分類.png
1.5 使用SVM多種核函數(shù)進(jìn)行回歸

1.導(dǎo)入

from sklearn.svm import SVR
import numpy as np

2.隨機(jī)生成數(shù)據(jù)察纯,并且進(jìn)行訓(xùn)練

#自定義樣本點(diǎn)
X = 5*np.random.rand(40,1)
X.sort(axis = 0)
y = np.sin(X).ravel()

#添加噪聲
y[::5] += 3*(0.5 - np.random.rand(8))

#建立模型
svr_linear = SVR(kernel='linear')
svr_rbf = SVR(kernel = 'rbf')
svr_poly = SVR(kernel = 'poly')

#訓(xùn)練并預(yù)測(cè)
p_y_linear = svr_linear.fit(X,y).predict(X)
p_y_rbf = svr_rbf.fit(X,y).predict(X)
p_y_poly = svr_poly.fit(X,y).predict(X)

3.繪制圖形

# 畫圖
plt.figure(figsize=(12,8))
# 畫出真實(shí)樣本點(diǎn)
plt.scatter(X,y,c='k',label='data')
# 畫出預(yù)測(cè)曲線
plt.plot(X,p_y_linear,c='navy',label='linear')
plt.plot(X,p_y_rbf,c='r',label='rbf')
plt.plot(X,p_y_poly,c='g',label='poly')
plt.legend()
回歸.png

二.K-Means

什么是K-means?

K均值算法(K-means)聚類
關(guān)鍵詞:K個(gè)種子帕棉,均值
聚類的概念:一種無(wú)監(jiān)督的學(xué)習(xí)针肥,事先不知道類別,自動(dòng)將相似的對(duì)象歸到同一個(gè)簇中

K-Means算法是一種聚類分析(cluster analysis)的算法香伴,其主要是來(lái)計(jì)算數(shù)據(jù)聚集的算法慰枕,主要通過(guò)不斷地取離種子點(diǎn)最近均值的算法
K-Means算法的思想很簡(jiǎn)單,對(duì)于給定的樣本集即纲,按照樣本之間的距離大小具帮,將樣本集劃分為K個(gè)簇。讓簇內(nèi)的點(diǎn)盡量緊密的連在一起低斋,而讓簇間的距離盡量的大

2.1 K-Means原理

歐氏距離


歐氏距離.png

步驟圖


步驟圖.png
2.2 K-Means主要最重大的缺陷——都和初始值有關(guān)

K是事先給定的蜂厅,這個(gè)K值的選定是非常難以估計(jì)的。很多時(shí)候膊畴,事先并不知道給定的數(shù)據(jù)集應(yīng)該分成多少個(gè)類別才最合適掘猿。(ISODATA算法通過(guò)類的自動(dòng)合并和分裂,得到較為合理的類型數(shù)目K)
K-Means算法需要用初始隨機(jī)種子點(diǎn)來(lái)搞唇跨,這個(gè)隨機(jī)種子點(diǎn)太重要稠通,不同的隨機(jī)種子點(diǎn)會(huì)有得到完全不同的結(jié)果。(K-Means++算法可以用來(lái)解決這個(gè)問(wèn)題买猖,其可以有效地選擇初始點(diǎn))

2.3 K-Means步驟總結(jié)

1采记、從數(shù)據(jù)中選擇k個(gè)對(duì)象作為初始聚類中心;
2、計(jì)算每個(gè)聚類對(duì)象到聚類中心的距離來(lái)劃分政勃;
3唧龄、再次計(jì)算每個(gè)聚類中心;
4、計(jì)算標(biāo)準(zhǔn)測(cè)度函數(shù)奸远,直到達(dá)到最大迭代次數(shù)既棺,則停止,否則懒叛,繼續(xù)操作;
5丸冕、確定最優(yōu)的聚類中心

2.4 K-Means算法應(yīng)用

看到這里,你會(huì)說(shuō)薛窥,K-Means算法看來(lái)很簡(jiǎn)單胖烛,而且好像就是在玩坐標(biāo)點(diǎn),沒(méi)什么真實(shí)用處诅迷。而且佩番,這個(gè)算法缺陷很多,還不如人工呢罢杉。是的趟畏,前面的例子只是玩二維坐標(biāo)點(diǎn),的確沒(méi)什么意思滩租。但是你想一下下面的幾個(gè)問(wèn)題:
1)如果不是二維的赋秀,是多維的利朵,如5維的,那么猎莲,就只能用計(jì)算機(jī)來(lái)計(jì)算了绍弟。
2)二維坐標(biāo)點(diǎn)的X,Y 坐標(biāo)著洼,其實(shí)是一種向量晌柬,是一種數(shù)學(xué)抽象。現(xiàn)實(shí)世界中很多屬性是可以抽象成向量的郭脂,比如年碘,我們的年齡声旺,我們的喜好奢米,我們的商品阔蛉,等等空幻,能抽象成向量的目的就是可以讓計(jì)算機(jī)知道某兩個(gè)屬性間的距離枷莉。如:我們認(rèn)為风宁,18歲的人離24歲的人的距離要比離12歲的距離要近铸鹰,鞋子這個(gè)商品離衣服這個(gè)商品的距離要比電腦要近趁冈,等等忍弛。

2.5 K-Means實(shí)戰(zhàn)
  • make_blobs隨機(jī)生成點(diǎn)
    1.導(dǎo)包隨機(jī)生成數(shù)據(jù)
from sklearn.cluster import KMeans

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
from sklearn.datasets import make_blobs

#生成樣本點(diǎn)
X_train,y_train = make_blobs(n_samples=300,centers=4,cluster_std=  0.6, random_state = 9)

2.建立模型

# 建立模型
kmeans = KMeans(n_clusters=4)
kmeans.fit(X_train)
y_ = kmeans.predict(X_train)

3.畫圖

#畫圖
plt.figure(figsize = (12,8))
centers = kmeans.cluster_centers_
plt.scatter(X_train[:,0],X_train[:,1],c = y_)
plt.scatter(centers[:,0],centers[:,1],c = 'r',s = 100,alpha = 0.4)
make_blobs.png
  • 三問(wèn)中國(guó)足球幾多愁
    1.導(dǎo)包讀取數(shù)據(jù)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
data = pd.read_csv('../data/AsiaZoo.txt',header = None)

2.處理數(shù)據(jù)修改列名

#處理數(shù)據(jù)响迂,添加列名
data.columns = ["國(guó)家","2006世界杯","2010世界杯","2007亞洲杯"]

3.建立模型

#使用K-Means進(jìn)行數(shù)據(jù)處理
kMeans = KMeans(n_clusters=3)
X_train = data[['2006世界杯','2010世界杯','2007亞洲杯']]
y_ = kMeans.fit(X_train).predict(X_train)

4.根據(jù)模型將這些國(guó)家按照水平進(jìn)行分類

country = data['國(guó)家']
for i in range(3):
    ind = np.argwhere(kMeans.predict(X_train) == i)
    result  = country[ind.ravel()]
    for i in result.index:
        print(result[i],end = ' ')
    print('\n')

#輸出結(jié)果是:
伊朗 沙特 烏茲別克斯坦 巴林 朝鮮 

日本 韓國(guó) 

中國(guó) 伊拉克 卡塔爾 阿聯(lián)酋 泰國(guó) 越南 阿曼 印尼 

5.畫圖

#繪制三維立體圖,將各個(gè)國(guó)家畫到3D圖中
centers = kMeans.cluster_centers_#KMeans算法得到的中心店
x,y,z = data['2006世界杯'],data['2010世界杯'],data['2007亞洲杯']
plt.figure(figsize = (12,8))
ax=plt.subplot(111,projection='3d')
ax.scatter3D(x,y,z,c = kMeans.predict(X_train),cmap='cool')  
ax.scatter3D(centers[:,0],centers[:,1],centers[:,2],c = kMeans.predict(centers),s = 300,cmap = "rainbow")
ax.set_xlabel("X")  
ax.set_ylabel("Y")  
ax.set_zlabel("Z")  
plt.show() 
國(guó)家足球.png
  • K-Means常見(jiàn)錯(cuò)誤
    1.導(dǎo)包
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

2.建立樣本點(diǎn)

# 建立樣本點(diǎn)
n_samples = 1500
random_state = 170
#默認(rèn)情況下make_blobs有三個(gè)中心點(diǎn)
X,y = make_blobs(n_samples=n_samples,random_state=random_state)

第一種錯(cuò)誤:incorrect number of cluster

#第一種錯(cuò)誤细疚,k值不合適蔗彤,make_blobs默認(rèn)中心點(diǎn)三個(gè)
y_ = KMeans(n_clusters=2).fit_predict(X)
#繪制圖形
plt.figure(figsize = (12,8))
plt.subplot(221)
plt.scatter(X[:,0],X[:,1],c = y_)
錯(cuò)誤1.png

第二種錯(cuò)誤:數(shù)據(jù)偏差

#第二種錯(cuò)誤,數(shù)據(jù)偏差
trans = [[0.6,-0.6],[-0.4,0.8]]
X2 = np.dot(X,trans)
y2_ = KMeans(n_clusters=3).fit_predict(X2)
#繪制圖形
plt.figure(figsize = (12,8))
plt.subplot(222)
plt.scatter(X2[:,0],X2[:,1],c = y2_)
錯(cuò)誤2.png

第三種錯(cuò)誤:數(shù)據(jù)標(biāo)準(zhǔn)差不同

# 第三個(gè)錯(cuò)誤:標(biāo)準(zhǔn)偏差
X3,y3 = make_blobs(n_samples=n_samples,
                  cluster_std = [1.0,2.5,0.5],
                  random_state = random_state)
y3_ = KMeans(n_clusters=3).fit_predict(X3)
plt.figure(figsize = (12,8))
plt.subplot(223)
plt.scatter(X3[:,0],X3[:,1],c=y3_)
plt.title('failed 3: unequal std')
錯(cuò)誤3.png

第四種錯(cuò)誤:樣本數(shù)量不同

# 第四個(gè)錯(cuò)誤:樣本數(shù)量不同
X4 = np.vstack((X[y==0][:500],X[y==1][:100],X[y==2][:10]))
y4_ = KMeans(n_clusters=3).fit_predict(X4)
plt.figure(figsize = (12,8))
plt.subplot(224)
plt.scatter(X4[:,0],X4[:,1],c=y4_)
plt.title('failed 4: unequal number of samples')
錯(cuò)誤4.png
2.6 K-Means圖片顏色點(diǎn)分類

1.導(dǎo)包

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import pairwise_distances_argmin
from sklearn.datasets import load_sample_image
from sklearn.utils import shuffle
n_colors = 64

2.加載圖片/創(chuàng)建模型/訓(xùn)練數(shù)據(jù)/獲取labels

# 加載圖片
china = load_sample_image("china.jpg")
# 圖片顏色值轉(zhuǎn)換成[0,1]之間float類型數(shù)據(jù)
china = np.array(china, dtype=np.float64) / 255

# 將3D的圖片數(shù)據(jù)轉(zhuǎn)換成2D數(shù)組.
w, h, d  = china.shape
image_array = np.reshape(china, (w * h, d))

#使用shuffle打亂數(shù)據(jù),并進(jìn)行訓(xùn)練
image_array_sample = shuffle(image_array, random_state=0)[:1000]
kmeans = KMeans(n_clusters=n_colors, random_state=0).fit(image_array_sample)

# 獲取標(biāo)簽點(diǎn)
labels = kmeans.predict(image_array)

3.使用pairwise_distances_argmin算法生成隨機(jī)labels

codebook_random = shuffle(image_array, random_state=0)[:n_colors]
labels_random = pairwise_distances_argmin(codebook_random,image_array,axis=0)

4.創(chuàng)造方法疯兼,重新合成圖片

def recreate_image(codebook, labels, w, h):
    d = codebook.shape[1]
    image = np.zeros((w, h, d))
    label_idx = 0
    for i in range(w):
        for j in range(h):
            image[i][j] = codebook[labels[label_idx]]
            label_idx += 1
    return image

5.數(shù)據(jù)可視化

# 數(shù)據(jù)可視化
plt.figure(1)
plt.clf()
ax = plt.axes([0, 0, 1, 1])
plt.axis('off')
plt.title('Original image (96,615 colors)')
plt.imshow(china)

plt.figure(2)
plt.clf()
ax = plt.axes([0, 0, 1, 1])
plt.axis('off')
plt.title('Quantized image (64 colors, K-Means)')
plt.imshow(recreate_image(kmeans.cluster_centers_, labels, w, h))

plt.figure(3)
plt.clf()
ax = plt.axes([0, 0, 1, 1])
plt.axis('off')
plt.title('Quantized image (64 colors, Random)')
plt.imshow(recreate_image(codebook_random, labels_random, w, h))
plt.show()
顏色分類1.png

顏色分類2.png

顏色分類3.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末然遏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吧彪,更是在濱河造成了極大的恐慌待侵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姨裸,死亡現(xiàn)場(chǎng)離奇詭異秧倾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)傀缩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門那先,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扑毡,你說(shuō)我怎么就攤上這事胃榕∈⑾眨” “怎么了瞄摊?”我有些...
    開(kāi)封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵勋又,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我换帜,道長(zhǎng)楔壤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任惯驼,我火速辦了婚禮蹲嚣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祟牲。我一直安慰自己隙畜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布说贝。 她就那樣靜靜地躺著议惰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乡恕。 梳的紋絲不亂的頭發(fā)上言询,一...
    開(kāi)封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音傲宜,去河邊找鬼运杭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛函卒,可吹牛的內(nèi)容都是我干的辆憔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼报嵌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼躁愿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起沪蓬,我...
    開(kāi)封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤彤钟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后跷叉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逸雹,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年云挟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梆砸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡园欣,死狀恐怖帖世,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沸枯,我是刑警寧澤日矫,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布赂弓,位于F島的核電站,受9級(jí)特大地震影響哪轿,放射性物質(zhì)發(fā)生泄漏盈魁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一窃诉、第九天 我趴在偏房一處隱蔽的房頂上張望杨耙。 院中可真熱鬧,春花似錦飘痛、人聲如沸珊膜。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辅搬。三九已至,卻和暖如春脖旱,著一層夾襖步出監(jiān)牢的瞬間堪遂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工萌庆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溶褪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓践险,卻偏偏與公主長(zhǎng)得像猿妈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子巍虫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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