Python數(shù)模筆記-Sklearn(3)主成分分析

主成分分析(Principal Components Analysis,PCA)是一種數(shù)據(jù)降維技術(shù),通過正交變換將一組相關(guān)性高的變量轉(zhuǎn)換為較少的彼此獨立、互不相關(guān)的變量,從而減少數(shù)據(jù)的維數(shù)枯冈。


1、數(shù)據(jù)降維

1.1 為什么要進(jìn)行數(shù)據(jù)降維办悟?

為什么要進(jìn)行數(shù)據(jù)降維尘奏?降維的好處是以略低的精度換取問題的簡化。

人們在研究問題時病蛉,為了全面炫加、準(zhǔn)確地反映事物的特征及其發(fā)展規(guī)律,往往要考慮很多相關(guān)指標(biāo)的變化和影響铺然。尤其在數(shù)據(jù)挖掘和分析工作中俗孝,前期收集數(shù)據(jù)階段總是盡量收集能夠獲得的各種數(shù)據(jù),能收盡收魄健,避免遺漏赋铝。多變量、大樣本的數(shù)據(jù)為后期的研究和應(yīng)用提供了豐富的信息沽瘦,從不同角度反映了問題的特征和信息革骨,但也給數(shù)據(jù)處理和分析工作帶來了很多困難。

為了避免遺漏信息需要獲取盡可能多的特征變量析恋,但是過多的變量又加劇了問題的復(fù)雜性良哲。由于各種變量都是對同一事物的反映,變量之間經(jīng)常會存在一定的相關(guān)性助隧,這就造成大量的信息重復(fù)筑凫、重疊,有時會淹沒甚至扭曲事物的真正特征與內(nèi)在規(guī)律并村。因此漏健,我們希望數(shù)據(jù)分析中涉及的變量較少,而得到的信息量又較多橘霎。這就需要通過降維方法,在減少需要分析的變量數(shù)量的同時殖属,盡可能多的保留眾多原始變量所包含的有效信息姐叁。

變量之間具有一定的相關(guān)關(guān)系,意味著相關(guān)變量所反映的信息有一定程度的重疊,就有可能用較少的綜合指標(biāo)聚合外潜、反映眾多原始變量所包含的全部信息或主要信息原环。 因此,需要研究特征變量之間的相關(guān)性处窥、相似性嘱吗,以減少特征變量的數(shù)量,便于分析影響系統(tǒng)的主要因素滔驾。例如谒麦,對學(xué)生的評價指標(biāo)有很多,作業(yè)哆致、考勤绕德、活動、獎懲摊阀、考試耻蛇、考核,根據(jù)各種指標(biāo)的關(guān)聯(lián)度和相似性胞此,最終可以聚合為德智體美等幾個主要的類別指標(biāo)反映眾多指標(biāo)中大部分信息臣咖。
  
降維方法可以從事物之間錯綜復(fù)雜的關(guān)系中找出一些主要因素,從而能有效利用大量統(tǒng)計數(shù)據(jù)進(jìn)行定量分析漱牵,解釋變量之間的內(nèi)在關(guān)系夺蛇,得到對事物特征及其發(fā)展規(guī)律的一些深層次的啟發(fā)。

1.2 常用的降維思想和方法

降維的數(shù)學(xué)本質(zhì)是將高維特征空間映射到低維特征空間布疙,有線性映射和非線性映射兩類主要方法蚊惯。

線性映射方法主要有主成分分析(PCA)和線性判別函數(shù)(LDA)。主成分分析(PCA)的思想是按均方誤差損失最小化原則灵临,將高維原始空間變換到低維特征向量空間截型。線性判別函數(shù)(LDA)的思想是向線性判別超平面的法向量上投影,使得區(qū)分度最大(高內(nèi)聚儒溉,低耦合) 宦焦。

非線性映射方法主要有:基于核的非線性降維, 將高維向量的內(nèi)積轉(zhuǎn)換成低維的核函數(shù)表示顿涣,如核主成分分析(KPCA)波闹、核線性判別函數(shù)(KLDA) ;二維化和張量化涛碑, 將數(shù)據(jù)映射到二維空間上精堕,如二維主成分分析(2DPCA)、二維線性判別分析(2DLDA)蒲障、二維典型相關(guān)分析(2DCCA)歹篓;流形學(xué)習(xí)方法瘫证, 從高維采樣數(shù)據(jù)中恢復(fù)低維流形結(jié)構(gòu)并求出相應(yīng)的嵌入映射,如等距映射 (ISOMap) 庄撮, 拉普拉斯特征映射 (LE)背捌, 局部線性嵌入 (LPP)。本質(zhì)上洞斯,非線性映射的思想和算法與神經(jīng)網(wǎng)絡(luò)是相通的毡庆。

此外,還可以通過聚類分析烙如、神經(jīng)網(wǎng)絡(luò)方法進(jìn)行數(shù)據(jù)降維么抗。

1.3 SKlearn 中的降維分析方法

SKlearn 工具包提供了多種降維分析方法。

  • 主成分分析
    • decomposition.PCA  主成分分析
    • decomposition.IncrementalPCA  增量主成分分析
    • decomposition.KernelPCA  核主成分分析
    • decomposition.SparsePCA  稀疏主成分分析
    • decomposition.MiniBatchSparsePCA  小批量稀疏主成分分析
    • decomposition.TruncatedSVD  截斷奇異值分解
  • 字典學(xué)習(xí)
    • decomposition.DictionaryLearning  字典學(xué)習(xí)
    • decomposition.MiniBatchDictionaryLearning  小批量字典學(xué)習(xí)
    • decomposition.dict_learning  字典學(xué)習(xí)用于矩陣分解
    • decomposition.dict_learning_online  在線字典學(xué)習(xí)用于矩陣分解
  • 因子分析
    • decomposition.FactorAnalysis  因子分析(FA)
  • 獨立成分分析
    • decomposition.FastICA  快速獨立成分分析
  • 非負(fù)矩陣分解
    • decomposition.NMF  非負(fù)矩陣分解
  • 隱式狄利克萊分布
    • decomposition.LatentDirichletAllocation  在線變分貝葉斯算法(隱式狄利克萊分布)

2厅翔、主成分分析(PCA)方法

2.1 基本思想和原理

主成分分析是最基礎(chǔ)數(shù)據(jù)降維方法乖坠,它只需要特征值分解,就可以對數(shù)據(jù)進(jìn)行壓縮刀闷、去噪熊泵,應(yīng)用十分廣泛。

主成分分析的目的是減少數(shù)據(jù)集變量數(shù)量甸昏,同時要保留盡可能多的特征信息顽分;方法是通過正交變換將原始變量組轉(zhuǎn)換為數(shù)量較少的彼此獨立的特征變量,從而減少數(shù)據(jù)集的維數(shù)施蜜。

主成分分析方法的思想是卒蘸,將高維特征(n維)映射到低維空間(k維)上,新的低維特征是在原有的高維特征基礎(chǔ)上通過線性組合而重構(gòu)的翻默,并具有相互正交的特性缸沃,即為主成分。

通過正交變換構(gòu)造彼此正交的新的特征向量修械,這些特征向量組成了新的特征空間趾牧。將特征向量按特征值排序后,樣本數(shù)據(jù)集中所包含的全部方差肯污,大部分就包含在前幾個特征向量中翘单,其后的特征向量所含的方差很小。因此蹦渣,可以只保留前 k個特征向量哄芜,而忽略其它的特征向量,實現(xiàn)對數(shù)據(jù)特征的降維處理柬唯。

主成分分析方法得到的主成分變量具有幾個特點:(1)每個主成分變量都是原始變量的線性組合认臊;(2)主成分的數(shù)目大大少于原始變量的數(shù)目;(3)主成分保留了原始變量的絕大多數(shù)信息锄奢;(4)各主成分變量之間彼此相互獨立失晴。

2.2 算法步驟

主成分分析的基本步驟是:對原始數(shù)據(jù)歸一化處理后求協(xié)方差矩陣冤议,再對協(xié)方差矩陣求特征向量和特征值;對特征向量按特征值大小排序后师坎,依次選取特征向量,直到選擇的特征向量的方差占比滿足要求為止堪滨。

算法的基本流程如下:

  • (1)歸一化處理胯陋,數(shù)據(jù)減去平均值;
  • (2)通過特征值分解袱箱,計算協(xié)方差矩陣遏乔;
  • (3)計算協(xié)方差矩陣的特征值和特征向量;
  • (4)將特征值從大到小排序发笔;
  • (5)依次選取特征值最大的k個特征向量作為主成分盟萨,直到其累計方差貢獻(xiàn)率達(dá)到要求;
  • (6)將原始數(shù)據(jù)映射到選取的主成分空間了讨,得到降維后的數(shù)據(jù)捻激。

在算法實現(xiàn)的過程中,SKlearn 工具包針對實際問題的特殊性前计,又發(fā)展了各種改進(jìn)算法胞谭,例如:

  • 增量主成分分析:針對大型數(shù)據(jù)集,為了解決內(nèi)存限制問題男杈,將數(shù)據(jù)分成多批丈屹,通過增量方式逐步調(diào)用主成分分析算法,最終完成整個數(shù)據(jù)集的降維伶棒。
  • 核主成分分析:針對線性不可分的數(shù)據(jù)集旺垒,使用非線性的核函數(shù)把樣本空間映射到線性可分的高維空間,然后在這個高維空間進(jìn)行主成分分析肤无。
  • 稀疏主成分分析:針對主成分分析結(jié)果解釋性弱的問題先蒋,通過提取最能重建數(shù)據(jù)的稀疏分量, 凸顯主成分中的主要組成部分舅锄,容易解釋哪些原始變量導(dǎo)致了樣本之間的差異鞭达。

2.3 優(yōu)點和缺點

主成分分析方法的主要優(yōu)點是:
  1)僅以方差衡量信息量,不受數(shù)據(jù)集以外的因素影響皇忿; 
  2)各主成分之間正交畴蹭,可消除原始數(shù)據(jù)各變量之間的相互影響;
  3)方法簡單鳍烁,易于實現(xiàn)叨襟。

主成分分析方法的主要缺點是:
  1)各個主成分的含義具有模糊,解釋性弱幔荒,通常只有信息量而無實際含義糊闽;
  2)在樣本非正態(tài)分布時得到的主成分不是最優(yōu)的梳玫,因此特殊情況下方差小的成分也可能含有重要信息。


3右犹、SKlearn 中的主成分分析(PCA) 方法

3.1 PCA 算法(decomposition.PCA)

sklearn.decomposition.PCA 類是 PCA算法的具體實現(xiàn)提澎,官網(wǎng)介紹詳見:https://scikit-learn.org/stable/modules/decomposition.html#principal-component-analysis-pca

sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)

PCA 類的主要參數(shù):

  • n_components: int,float  n 為正整數(shù),指保留主成分的維數(shù)念链;n 為 (0,1] 范圍的實數(shù)時盼忌,表示主成分的方差和所占的最小閾值。
  • whiten:bool, default=False  是否對降維后的主成分變量進(jìn)行歸一化掂墓。默認(rèn)值 False谦纱。
  • svd_solver:{‘a(chǎn)uto’, ‘full’, ‘a(chǎn)rpack’, ‘randomized’}  指定奇異值分解SVD的算法。'full' 調(diào)用 scipy庫的 SVD君编;'arpack'調(diào)用scipy庫的 sparse SVD跨嘉;'randomized' SKlearn的SVD,適用于數(shù)據(jù)量大吃嘿、變量維度多祠乃、主成分維數(shù)低的場景。默認(rèn)值 'auto'唠椭。

PCA 類的主要屬性:

  • components_:   方差最大的 n-components 個主成分
  • explained_variance_:  各個主成分的方差值
  • explained_variance_ratio_:  各個主成分的方差值占主成分方差和的比例

PCA 類的主要方法:

  • fit(X,y=None)  表示用數(shù)據(jù) X 訓(xùn)練PCA模型
    fit() 是scikit-learn中的通用方法跳纳,實現(xiàn)訓(xùn)練、擬合的步驟贪嫂。PCA是無監(jiān)督學(xué)習(xí)寺庄,y=None。
  • fit_transform(X)  表示用數(shù)據(jù) X 訓(xùn)練PCA模型力崇,并返回降維后的數(shù)據(jù)
  • transform(X)  將數(shù)據(jù) X 轉(zhuǎn)換成降維后的數(shù)據(jù)斗塘,用訓(xùn)練好的 PCA模型對新的數(shù)據(jù)集進(jìn)行降維。
  • inverse_transform()  將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù)

3.2 decomposition.PCA 使用例程

from sklearn.decomposition import PCA  # 導(dǎo)入 sklearn.decomposition.PCA 類
import numpy as np

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
modelPCA = PCA(n_components=2)  # 建立模型亮靴,設(shè)定保留主成分?jǐn)?shù) K=2
modelPCA.fit(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelPCA
print(modelPCA.n_components_)  # 返回 PCA 模型保留的主成份個數(shù)
# 2
print(modelPCA.explained_variance_ratio_)  # 返回 PCA 模型各主成份占比
# [0.9924 0.0075]  # print 顯示結(jié)果
print(modelPCA.singular_values_) # 返回 PCA 模型各主成份的奇異值
# [6.3006 0.5498]  # print 顯示分類結(jié)果

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
modelPCA2 = PCA(n_components=0.9) # 建立模型馍盟,設(shè)定主成份方差占比 0.9
# 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelPCA2,并返回降維后的數(shù)據(jù)
Xtrans = modelPCA2.fit_transform(X)
print(modelPCA2.n_components_)  # 返回 PCA 模型保留的主成份個數(shù)
# 1
print(modelPCA2.explained_variance_ratio_)  # 返回 PCA 模型各主成份占比
# [0.9924]  # print 顯示結(jié)果
print(modelPCA2.singular_values_)  # 返回 PCA 模型各主成份占比
# [6.3006]  # print 顯示結(jié)果
print(Xtrans)  # 返回降維后的數(shù)據(jù) Xtrans
# [[1.3834], [2.2219], [3.6053], [-1.3834], [-2.2219], [-3.6053]]

注意:建立模型時茧吊,PCA(n_components=2) 中的 n_components為正整數(shù)贞岭,表示設(shè)定保留的主成份維數(shù)為 2;PCA(n_components=0.9) 中的 n_components 為 (0,1] 的小數(shù)搓侄,表示并不直接設(shè)定保留的主成份維數(shù)瞄桨,而是設(shè)定保留的主成份應(yīng)滿足其方差和占比 >0.9。

3.3 改進(jìn)算法:增量主成分分析(decomposition.IncrementalPCA)

對于樣本集巨大的問題讶踪,例如樣本量大于 10萬芯侥、特征變量大于100,PCA 算法耗費的內(nèi)存很大,甚至無法處理柱查±螅   
  class sklearn.decomposition.IncrementalPCA 類是增量主成分分析算法的具體實現(xiàn),官網(wǎng)介紹詳見:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.IncrementalPCA.html#sklearn.decomposit

class sklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)

主要參數(shù):
inverse_transform()  將降維后的數(shù)據(jù)轉(zhuǎn)換成原始數(shù)據(jù)

IncrementalPCA 的使用例程如下:

# Demo of sklearn.decomposition.IncrementalPCA

from sklearn.datasets import load_digits
from sklearn.decomposition import IncrementalPCA, PCA
from scipy import sparse

X, _ = load_digits(return_X_y=True)
print(type(X))  # <class 'numpy.ndarray'>
print(X.shape)      # (1797, 64)

modelPCA = PCA(n_components=6)  # 建立模型唉工,設(shè)定保留主成分?jǐn)?shù) K=6
modelPCA.fit(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelPCA
print(modelPCA.n_components_)  # 返回 PCA 模型保留的主成份個數(shù)
# 6
print(modelPCA.explained_variance_ratio_)  # 返回 PCA 模型各主成份占比
# [0.1489 0.1362 0.1179 0.0841 0.0578 0.0492]
print(sum(modelPCA.explained_variance_ratio_))  # 返回 PCA 模型各主成份占比
# 0.5941
print(modelPCA.singular_values_) # 返回 PCA 模型各主成份的奇異值
# [567.0066  542.2518 504.6306 426.1177 353.3350 325.8204]

# let the fit function itself divide the data into batches
Xsparse = sparse.csr_matrix(X)  # 壓縮稀疏矩陣研乒,并非 IPCA 的必要步驟
print(type(Xsparse))  # <class 'scipy.sparse.csr.csr_matrix'>
print(Xsparse.shape)  # (1797, 64)
modelIPCA = IncrementalPCA(n_components=6, batch_size=200)
modelIPCA.fit(Xsparse)  # 訓(xùn)練模型 modelIPCA
print(modelIPCA.n_components_)  # 返回 PCA 模型保留的主成份個數(shù)
# 6
print(modelIPCA.explained_variance_ratio_)  # 返回 PCA 模型各主成份占比
# [0.1486 0.1357 0.1176 0.0838 0.0571 0.0409]
print(sum(modelIPCA.explained_variance_ratio_))  # 返回 PCA 模型各主成份占比
# 0.5838
print(modelIPCA.singular_values_) # 返回 PCA 模型各主成份的奇異值
#[566.4544 541.334 504.0643 425.3197 351.1096 297.0412]

本例程調(diào)用了 SKlearn內(nèi)置的數(shù)據(jù)集 .datasets.load_digits,并給出了 PCA 算法與 IPCA 算法的對比淋硝,兩種算法的結(jié)果非常接近告嘲,說明 IPCA 的性能降低很小。

3.4 改進(jìn)算法:核主成分分析(decomposition.KernelPCA)

對于線性不可分的數(shù)據(jù)集奖地,使用非線性的核函數(shù)可以把樣本空間映射到線性可分的高維空間,然后在這個高維空間進(jìn)行主成分分析赋焕。

class sklearn.decomposition.KernelPCA 類是算法的具體實現(xiàn)参歹,官網(wǎng)介紹詳見:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.KernelPCA.html#sklearn.decomposition.KernelPCA

class sklearn.decomposition.KernelPCA(n_components=None, *, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None, alpha=1.0, fit_inverse_transform=False, eigen_solver='auto', tol=0, max_iter=None, remove_zero_eig=False, random_state=None, copy_X=True, n_jobs=None)

KernelPCA 的使用例程如下:

# Demo of sklearn.decomposition.KernelPCA

from sklearn.datasets import load_iris
from sklearn.decomposition import KernelPCA, PCA
import matplotlib.pyplot as plt
import numpy as np

X, y = load_iris(return_X_y=True)
print(type(X))  # <class 'numpy.ndarray'>

modelPCA = PCA(n_components=2)  # 建立模型,設(shè)定保留主成分?jǐn)?shù) K=2
Xpca = modelPCA.fit_transform(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelKPCA

modelKpcaP = KernelPCA(n_components=2, kernel='poly') # 建立模型隆判,核函數(shù):多項式
XkpcaP = modelKpcaP.fit_transform(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelKPCA

modelKpcaR = KernelPCA(n_components=2, kernel='rbf') # 建立模型犬庇,核函數(shù):徑向基函數(shù)
XkpcaR = modelKpcaR.fit_transform(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelKPCA

modelKpcaS = KernelPCA(n_components=2, kernel='cosine') # 建立模型,核函數(shù):余弦函數(shù)
XkpcaS = modelKpcaS.fit_transform(X)  # 用數(shù)據(jù)集 X 訓(xùn)練 模型 modelKPCA

fig = plt.figure(figsize=(8,6))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
for label in np.unique(y):
    position = y == label
    ax1.scatter(Xpca[position, 0], Xpca[position, 1], label='target=%d' % label)
    ax1.set_title('PCA')
    ax2.scatter(XkpcaP[position, 0], XkpcaP[position, 1], label='target=%d' % label)
    ax2.set_title('kernel= Poly')
    ax3.scatter(XkpcaR[position, 0], XkpcaR[position, 1], label='target=%d' % label)
    ax3.set_title('kernel= Rbf')
    ax4.scatter(XkpcaS[position, 0], XkpcaS[position, 1], label='target=%d' % label)
    ax4.set_title('kernel= Cosine')
plt.suptitle("KernalPCA")
plt.show()

本例程調(diào)用了 SKlearn內(nèi)置的數(shù)據(jù)集 .datasets.load_iris侨嘀,并給出了 PCA 算法與 3種核函數(shù)的KernelPCA 算法的對比臭挽,結(jié)果如下圖所示。不同算法的降維后映射到二維平面的結(jié)果有差異咬腕,進(jìn)一步的討論已經(jīng)超出本文的內(nèi)容欢峰。

Sklearn_07.png

版權(quán)說明:
本文內(nèi)容及例程為作者原創(chuàng),并非轉(zhuǎn)載書籍或網(wǎng)絡(luò)內(nèi)容涨共。
本文中案例問題來自:
1 SciKit-learn 官網(wǎng):https://scikit-learn.org/stable/index.html

YouCans 原創(chuàng)作品
Copyright 2021 YouCans, XUPT
Crated:2021-05-10

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纽帖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子举反,更是在濱河造成了極大的恐慌懊直,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件火鼻,死亡現(xiàn)場離奇詭異室囊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)魁索,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門融撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛾默,你說我怎么就攤上這事懦铺。” “怎么了支鸡?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵冬念,是天一觀的道長趁窃。 經(jīng)常有香客問我,道長急前,這世上最難降的妖魔是什么醒陆? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮裆针,結(jié)果婚禮上刨摩,老公的妹妹穿的比我還像新娘。我一直安慰自己世吨,他們只是感情好澡刹,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耘婚,像睡著了一般罢浇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沐祷,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天嚷闭,我揣著相機(jī)與錄音,去河邊找鬼赖临。 笑死胞锰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兢榨。 我是一名探鬼主播嗅榕,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吵聪!你這毒婦竟也來了誊册?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暖璧,失蹤者是張志新(化名)和其女友劉穎案怯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澎办,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嘲碱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了局蚀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麦锯。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琅绅,靈堂內(nèi)的尸體忽然破棺而出扶欣,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布料祠,位于F島的核電站骆捧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏髓绽。R本人自食惡果不足惜敛苇,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顺呕。 院中可真熱鬧枫攀,春花似錦、人聲如沸株茶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽启盛。三九已至扫夜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驰徊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工堕阔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留棍厂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓超陆,卻偏偏與公主長得像牺弹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子时呀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

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