無監(jiān)督學(xué)習(xí)

無監(jiān)督學(xué)習(xí):利用無標(biāo)簽的數(shù)據(jù)學(xué)習(xí)數(shù)據(jù)的分布或數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系土浸,常用于聚類、降維汇四。與有監(jiān)督學(xué)習(xí)最大區(qū)別在于數(shù)據(jù)是否有標(biāo)簽

1. 聚類

聚類(clustering):根據(jù)數(shù)據(jù)的相似性將數(shù)據(jù)分為多類的過程

聚類方法 加載模塊 聚類方法 加載模塊
K-means cluster.KMeans AP聚類 cluster.AffinityPropagation
均值漂移 cluster.MeanShift 層次聚類 cluster.AgglomerativeClustering
BIRCH cluster.Birch 譜聚類 cluster.SpectralClustering
DBSCAN cluster.DBSCAN

2個樣本的相似性:計算2個樣本之間的距離
使用不同方法計算樣本間距離會關(guān)系到聚類結(jié)果的好壞

1.1 距離算法

歐氏距離:最常用的一種距離度量方法鬼店,源于歐式空間中2點的距離


歐氏距離.png

曼哈頓距離:也稱“城市街區(qū)距離”,類似于在城市之中駕車行駛师骗,從一個十字路口到另外一個十字路口的距離

曼哈頓距離.png

馬氏距離:數(shù)據(jù)的協(xié)方差距離历等,是一種尺度無關(guān)的度量方式,即會將樣本各個屬性標(biāo)準(zhǔn)化辟癌,再計算樣本間距離

馬氏距離.png

夾角余弦:余弦相似度用向量空間中2個向量夾角余弦值作為衡量2個樣本樣差異大小寒屯。值越接近1,表明越相相似


夾角余弦.png

1.2 sklearn.cluster模塊

sklearn庫提供常用的聚類算法函數(shù)包含在sklearn.cluster模塊中

同樣數(shù)據(jù)黍少,不同算法寡夹,結(jié)果不同,耗時不同厂置,這些由算法特性決定

標(biāo)準(zhǔn)數(shù)據(jù)輸入格式:[樣本個數(shù)菩掏,特征個數(shù)]定義的矩陣形式
相似性矩陣輸入格式:由[樣本數(shù)目]定義的矩陣形式,矩陣中每一個元素為2個樣本的相似度昵济。如DBSCAN智绸、AffinityPropagation接受這種輸入。如果以余弦相似度為例访忿,則對角線的數(shù)值都為1瞧栗,其他每個元素取值范圍為[0,1]

算法 參數(shù) 可擴展性 相似性度量
K-means 聚類個數(shù) 大規(guī)模數(shù)據(jù) 點間距離
DBSCAN 鄰域大小 大規(guī)模數(shù)據(jù) 點間距離
Gaussian Mixtures 聚類個數(shù)及其他超參 復(fù)雜度高,不適合處理大規(guī)模數(shù)據(jù) 馬氏距離
Birch 分支因子海铆、閾值等其他超參 大規(guī)模數(shù)據(jù) 歐氏距離

1.3 K-means方法

K-means算法:以k為參數(shù)迹恐,把n個對象分成k個簇,使簇內(nèi)具有較高的相似度卧斟,而簇間相似度較低

1.隨機選擇k個點作為初始的聚類中心
2.剩下的點系草,根據(jù)與中心的距離將其歸入最近的簇
3.對每個簇,計算所有點的均值作為新的聚類中心
4.重復(fù)2唆涝、3直到聚類中心不再發(fā)生變化


K-means.png

明日方舟掉落情況聚類

# 導(dǎo)入sklearn相關(guān)包
import numpy as np
from sklearn.cluster import KMeans

'''調(diào)試加載文件代碼'''
with open('111.txt') as fr:
    # 逐行讀取找都,并存儲
    contents = fr.readlines()
    print(contents) # 【輸出結(jié)果】
# 存儲名字和數(shù)據(jù)
RetData = []
RetName = []
for content in contents:
    print(content) # 扭轉(zhuǎn)醇    3   3   54【部分?jǐn)?shù)據(jù)】
    # strip()刪除字符串前后空格;split()以空格為分隔符將字符串拆分成多個部分廊酣,并將這些存儲到一個列表中
    a = content.strip().split()
    print(a) # ['扭轉(zhuǎn)醇', '3', '3', '54']【部分?jǐn)?shù)據(jù)】
    print(len(a)) # 4
    RetName.append(a[0])
    print(RetName) # ['扭轉(zhuǎn)醇']【部分?jǐn)?shù)據(jù)】
    RetData.append([float(a[i]) for i in range(1, len(a))])
    print(RetData) # [[3.0, 3.0, 54.0]]【部分?jǐn)?shù)據(jù)】

加載數(shù)據(jù)模塊能耻,被加載的文件數(shù)據(jù)格式如下:

關(guān)卡1 3 3 54 ······
關(guān)卡2 10 3.33 60 ······
······

def LoadData(FilePath):
    '''加載數(shù)據(jù)文件'''
    with open(FilePath) as fr:
        contents = fr.readlines()
    RetData = []
    RetName = []
    for content in contents:
        a = content.strip().split()
        RetName.append(a[0])
        RetData.append([float(a[i]) for i in range(1, len(a))])
    return RetName, RetData
# 調(diào)用
LoadData(r'C:\Users\Administrator\Desktop\111.txt') #【能成功打印數(shù)據(jù)】

調(diào)用K-means方法所需要參數(shù):

  1. n_clusters:用于指定聚類中心的個數(shù)
  2. init:初始聚類中心的初始化方法,默認(rèn)是k-means++
  3. max_iter:最大的迭代次數(shù),默認(rèn)是300
  4. data:加載的數(shù)據(jù)
  5. label:聚類后各數(shù)據(jù)所屬的標(biāo)簽
  6. fit_predict():計算簇中心以及為簇分配序號
if __name__ == '__main__':
    '''Kmeans聚類算法'''
    import numpy as np
    from sklearn.cluster import KMeans
    # 讀取數(shù)據(jù)晓猛,分別存儲到data和name中
    name, data = LoadData(r'C:\Users\Administrator\Desktop\111.txt')
    # 調(diào)用KMeans()和fit_predict()進(jìn)行聚類計算
    km = KMeans(n_clusters=3)
    label = km.fit_predict(data)
    # expense:聚類中心點的數(shù)值加和
    expenses = np.sum(km.cluster_centers_, axis = 1)
    # 設(shè)定變量饿幅,接收關(guān)卡label的分簇
    NameCluster = [[], [], []]
    # 將關(guān)卡按照簇分別存儲
    for i in range(len(name)):
        NameCluster[label[i]].append(name[i])
    # 將每個簇的聚類中心點的數(shù)值加和進(jìn)行輸出
    for i in range(len(NameCluster)):
        print('聚類中心點的數(shù)值加和: %.2f'% expenses[i])
        print(NameCluster[i])

修改 km = KMeans(n_clusters=3)中的數(shù)值,可以分層不同簇
相應(yīng)的NameCluster = [[], [], []]需要改變

計算2條數(shù)據(jù)相似性是戒职,Sklearn的K-Means默認(rèn)用的是歐氏距離

1.4 DBSCAN方法

DBSCAN密度聚類栗恩,是一種基于面膜度的距離算法

  1. 不需要預(yù)先指定簇的個數(shù)
  2. 最終的簇個數(shù)不定

DBSCAN算法將數(shù)據(jù)分為3類:

  1. 核心點:在半徑Eps內(nèi)含有超過MinPts數(shù)目點
  2. 邊界點:在半徑Eps內(nèi)點的數(shù)量小于MinPts,但是落在核心點的鄰域 內(nèi)
  3. 噪音點:既不是核心點也不是邊界點的點


    DBACAN 1.png

其核心點中鄰域內(nèi)的點是圖片中黃色的點洪燥,超過5個

DBSCAN算法流程

  1. 將所有點標(biāo)記為核心點磕秤、邊界點或噪音點
  2. 刪除噪聲點
  3. 為距離在Eps內(nèi)的所核心點之間賦予一條邊
  4. 每組連通的核心點形參一個簇
  5. 將每個邊界點指派到一個與之關(guān)聯(lián)的核心點的簇中

DBSCAN主要參數(shù):

  1. eps:2個樣本被看做鄰居點的最大距離
  2. min_samples:簇的樣本數(shù)
  3. metric:距離的計算方式
import numpy as np
import sklearn.cluster as skc
from sklearn import metrics
import matplotlib.pyplot as plt

# 定義一個字典
mac2id=dict()
# 定義一個列表
onlinetimes=[]
f=open(r'E:\TDRDIS Book\編程\Python應(yīng)用\DBSCAN算法實例數(shù)據(jù)\DBSCAN.txt')
# 遍歷f,獲得mac地址捧韵,開始上網(wǎng)時間市咆,上網(wǎng)時長
for line in f:
    # 定義一個變量,接收以逗號分隔的第3個數(shù)據(jù)(具體數(shù)據(jù)格式如下顯示)
    mac=line.split(',')[2]
    onlinetime=int(line.split(',')[6])
    starttime=int(line.split(',')[4].split(' ')[1].split(':')[0])
    if mac not in mac2id:
        mac2id[mac]=len(onlinetimes)
        onlinetimes.append((starttime,onlinetime))
    else:
        onlinetimes[mac2id[mac]]=[(starttime,onlinetime)]
real_X=np.array(onlinetimes).reshape((-1,2))

# 定義上網(wǎng)時間再来,用于聚類分析的變量蒙兰,
X=real_X[:,0:1]
# 開始上網(wǎng)時間聚類
db=skc.DBSCAN(eps=0.01,min_samples=20).fit(X)
# labels為每個數(shù)據(jù)的簇標(biāo)簽
labels = db.labels_
 
print('Labels:')
print(labels)
# -1為噪聲數(shù)據(jù),定義噪聲數(shù)據(jù)的比例
raito=len(labels[labels[:] == -1]) / len(labels)
print('Noise raito:',format(raito, '.2%'))

# 計算簇的個數(shù)
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
 
print('Estimated number of clusters: %d' % n_clusters_)
# 評價聚類效果
print("Silhouette Coefficient: %0.3f"% metrics.silhouette_score(X, labels))

# 打印各簇標(biāo)號芒篷,及其數(shù)據(jù)
for i in range(n_clusters_):
    print('Cluster ',i,':')
    print(list(X[labels == i].flatten()))

# 根據(jù)上網(wǎng)時間搜变,繪制直方圖
plt.hist(X,24)

數(shù)據(jù)格式如下:

2c929293466b97a6014754607e457d68,U201215025,A417314EEA7B,10.12.49.26,2014-07-20 22:44:18.540000000,2014-07-20 23:10:16.540000000,1558,15,本科生動態(tài)IP模版,100元每半年,internet
2c929293466b97a60147546099a57d81,U201116197,F0DEF1C78366,222.20.71.38,2014-07-20 12:14:21.380000000,2014-07-20 23:25:22.380000000,40261,1,本科生動態(tài)IP模版,20元每月,internet
······

DBSCAN 2.png
DBACAN 3.png
DBSCAN 4.png
# 以上網(wǎng)時長作為標(biāo)簽
# 將X和db改為如下代碼即可
X=np.log(1+real_X[:,1:])
db=skc.DBSCAN(eps=0.14,min_samples=10).fit(X)

輸出結(jié)果類似開始上網(wǎng)時間
如下圖所示,類似于這樣的原始數(shù)據(jù)分布式不能用于聚類的针炉,可以對數(shù)據(jù)進(jìn)行對數(shù)變幻(如上網(wǎng)時長聚類代碼)

DBSCAN 5.png

2. 降維

在保證數(shù)據(jù)所具有的代表性或者分布的情況下挠他,將高緯數(shù)據(jù)轉(zhuǎn)化為低維數(shù)據(jù)的過程
可用于數(shù)據(jù)可視化、精簡數(shù)據(jù)

降維方法 加載模塊 降維方法 加載模塊
主成分分析 decomposition.PCA 字典學(xué)習(xí) decomposition.SparseCoder
截斷SVD和LSA decomposition.TruncatedSVD 因子分析 decomposition.FactorAnalysis
非負(fù)矩陣分解 decomposition.NMF LDA decomposition.LatentDirichletAllocation
獨立成分分析 decomposition.FastICA

目前sklearn提供7種降維算法糊识,需要調(diào)用sklearn.decomposition模塊

算法 參數(shù) 可擴展性 適用任務(wù)
PCA 所降維度及其他參數(shù) 大規(guī)模數(shù)據(jù) 信號處理等
FastICA 所降維度及其他參數(shù) 超大規(guī)模數(shù)據(jù) 圖像圖形特征提取
NMF 所降維度及其他參數(shù) 大規(guī)模數(shù)據(jù) 圖像圖形特征提取
LDA 所降維度及其他參數(shù) 大規(guī)模數(shù)據(jù) 文本數(shù)據(jù)绩社、主題挖掘

2.1 PCA

主成分分析(PCA)通常用于高緯數(shù)據(jù)集的探索與可視化,還可以用作數(shù)據(jù)的壓縮和預(yù)處理
PCA可以把具有相關(guān)性的高緯變量合成線性無關(guān)的低維變量赂苗,稱為主成分愉耙。主成分能夠盡可能保留原始數(shù)據(jù)的信息
PCA原理:矩陣的主成分就是協(xié)方差矩陣對應(yīng)的特征向量,安裝對應(yīng)的特征值大小進(jìn)行排序拌滋,最大的特征值就是第一主成分朴沿,其次是第二主成分,以此類推

方差:各個樣本和樣本均值的差的平方和的均值败砂,用來度量一組數(shù)據(jù)的分散程度
協(xié)方差:用于度量2個變量之間的線性關(guān)系程度
矩陣特征向量:描述數(shù)據(jù)集結(jié)構(gòu)的非零向量

過程:

  1. 對所有樣本進(jìn)行中心化
  2. 計算樣本的協(xié)方差矩陣
  3. 對協(xié)方差矩陣做特征值分解
  4. 取最的d個大特征值所對應(yīng)的特征向量

輸出:投影矩陣

在sklearn庫中赌渣,使用sklearn.decomposition.PCA,加載PCA進(jìn)行降維昌犹,主要參數(shù)有:

  1. n_components:指定主成分的個數(shù)坚芜,即降維后數(shù)據(jù)的維度
  2. svd_solver:設(shè)置特征值分解的方法,默認(rèn)auto斜姥,其他可選有full,arpack,randomized

實例:將鳶尾花數(shù)據(jù)(4維)的三類樣本鸿竖,使用PCA對數(shù)據(jù)進(jìn)行降維沧竟,實現(xiàn)在二維平面的可視化

# 加載數(shù)據(jù)可視化包
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# 加載鳶尾花數(shù)據(jù)集
from sklearn.datasets import load_iris

# 調(diào)用載鳶尾花數(shù)據(jù)集,查看數(shù)據(jù),發(fā)現(xiàn)是字典型
data = load_iris()
# 用字典方法缚忧,把數(shù)據(jù)和標(biāo)簽分別調(diào)取出來
y = data['target']
X = data['data']
# 加載PCA算法悟泵,設(shè)定降成二維數(shù)據(jù)
pca = PCA(n_components=2)
# 對數(shù)據(jù)進(jìn)行降維,并保持到變量中
reduced_X = pca.fit_transform(X)

# 設(shè)定變量闪水,按類別對降維后的數(shù)據(jù)進(jìn)行保存
red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []

# 按照類別將降維后的數(shù)據(jù)保存在不同列表中
for i in range(len(reduced_X)):
    if y[i] == 0:
        red_x.append(reduced_X[i][0])
        red_y.append(reduced_X[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_X[i][0])
        blue_y.append(reduced_X[i][1])
    else:
        green_x.append(reduced_X[i][0])
        green_y.append(reduced_X[i][1])

# 數(shù)據(jù)可視化糕非,用散點圖表示
plt.scatter(red_x, red_y, c='r', marker='x')
plt.scatter(blue_x, blue_y, c='b', marker='D')
plt.scatter(green_x, green_y, c='g', marker='.')
plt.show()

因為類別是之前已經(jīng)分類好的,這里直接設(shè)定3類球榆,并按3類輸出

鳶尾花降維散點圖 1.png

可以看出朽肥,降維后,數(shù)據(jù)仍能清晰的分成3類芜果。即降維后再聚類鞠呈,降低分類工作量融师,還能保證質(zhì)量

2.2 NMF

非負(fù)矩陣分解(NMF):在矩陣中所有元素均為非負(fù)數(shù)約束條件之下的矩陣分解方法
基本思想:給定一個非負(fù)矩陣V右钾,NMF能夠找到一個非負(fù)矩陣W和一個非負(fù)矩陣H,使得矩陣W和H的乘積近似等于矩陣V中的值

W矩陣:基礎(chǔ)圖像矩陣旱爆,相當(dāng)于從原矩陣V中抽出來的特征
H矩陣:系數(shù)矩陣
NMF:廣泛應(yīng)用于圖像分析舀射、文本挖掘、語言處理等

矩陣分解優(yōu)化目標(biāo):最小化H和W的乘積與原始矩陣的差
在sklearn庫中怀伦,使用sklearn.decomposition.NMF脆烟,加載NMF進(jìn)行降維,主要參數(shù)有:

  1. n_components:指定分解后矩陣的單個維度k房待,通過設(shè)定k大小邢羔,設(shè)置提取特征的數(shù)目
  2. init:W和H的初始化方式,默認(rèn)為nudsvdar

實例:Olivetti臉部圖像數(shù)據(jù)集桑孩。其中有400個人臉數(shù)據(jù)拜鹤,每個數(shù)據(jù)時64*64大小。使用NMF對400個人臉數(shù)據(jù)進(jìn)行特征提攘鹘贰(W矩陣)敏簿,并還原圖形

from numpy.random import RandomState
import matplotlib.pyplot as plt
# 用于創(chuàng)建隨機種子
from sklearn.datasets import fetch_olivetti_faces
from sklearn import decomposition

# 設(shè)置圖形展示時的排列情況,2行3列
n_row, n_col = 2, 3
# 設(shè)置提取的特征數(shù)目
n_components = n_row * n_col
# 設(shè)置人臉數(shù)據(jù)圖片大小
image_shape = (64, 64)

# 加載數(shù)據(jù),并打亂順序
dataset = fetch_olivetti_faces(shuffle=True, random_state=RandomState(0))
# 提取數(shù)據(jù)
faces = dataset.data

def plot_gallery(title, images, n_col=n_col, n_row=n_row):
    # 創(chuàng)建圖片宣虾,并指明圖片大小
    plt.figure(figsize=(2. * n_col, 2.26 * n_row)) 
    # 設(shè)置標(biāo)題及字號大小
    plt.suptitle(title, size=16)
 
    for i, comp in enumerate(images):
        # 選擇繪制的子圖
        plt.subplot(n_row, n_col, i + 1)
        vmax = max(comp.max(), -comp.min())
        # 對數(shù)值歸一化惯裕,并以灰度圖顯示
        plt.imshow(comp.reshape(image_shape), cmap=plt.cm.gray,
                   interpolation='nearest', vmin=-vmax, vmax=vmax)
        # 去除子圖的坐標(biāo)軸標(biāo)簽
        plt.xticks(())
        plt.yticks(())
    # 調(diào)整子圖的位置間隔
    plt.subplots_adjust(0.01, 0.05, 0.99, 0.94, 0.04, 0.)
     
plot_gallery("First centered Olivetti faces", faces[:n_components])

# 對NMF和PCA進(jìn)行實例化,并存儲在一個列表中
estimators = [
    ('Eigenfaces - PCA using randomized SVD',
         decomposition.PCA(n_components=6,whiten=True)),
 
    ('Non-negative components - NMF',
         decomposition.NMF(n_components=6, init='nndsvda', tol=5e-3))
]

# 分別調(diào)用PCA和NMF
for name, estimator in estimators:
    print("Extracting the top %d %s..." % (n_components, name))
    print(faces.shape)
    # 調(diào)用提取特征
    estimator.fit(faces)
    # 獲取提取特征
    components_ = estimator.components_
    # 按照固定格式進(jìn)行排序
    plot_gallery(name, components_[:n_components])

# 可視化
plt.show()
NMF 0.png
NMF 1.png
NMF 2.png

3. 圖像分隔

圖像分隔:利用圖像的灰度绣硝、顏色蜻势、紋理、形狀等特征鹉胖,把圖像分成若干個互不重疊的區(qū)域握玛,并使這些特征在同一區(qū)域內(nèi)呈現(xiàn)相似性猜煮,在不同區(qū)域內(nèi)存在明顯差異。然后提取具有獨特性質(zhì)的區(qū)域用于不同研究
圖像分隔常用方法:

  1. 閾值分割:對圖像灰度進(jìn)行度量败许,設(shè)置不同類別的閾值王带,達(dá)到分隔目的
  2. 邊緣分隔:對圖像邊緣進(jìn)行檢測。即灰度值發(fā)生跳變的地方市殷,則魏一片區(qū)域的邊緣
  3. 直方圖法:對圖像的顏色建立直方圖愕撰,波峰波谷能夠表示一塊區(qū)域的顏色范圍,來達(dá)到分隔目的
  4. 特定理律:基于聚類分析醋寝、小波變換等理論完成分隔

實例描述:

  1. 目的:利用K-means算法對圖像像素點顏色進(jìn)行聚類搞挣,實現(xiàn)簡單的圖像分隔
  2. 輸出:同一聚類中的點使用相同顏色標(biāo)記
  3. 技術(shù)路線:sklearn.cluster.KMeans
import numpy as np
# 加載圖像處理包
import PIL.Image as image
from sklearn.cluster import KMeans
 
def loadData(filePath):
    # 以二進(jìn)制形式打開文件
    f = open(filePath,'rb')
    data = []
    # 以列表形式返回拖像素值,即獲得圖片像素數(shù)據(jù)
    img = image.open(f)
    # 獲得圖片的大小音羞。
    m,n = img.size
    # 將每個像素點RGB顏色處理到0-1
    for i in range(m):
        for j in range(n):
            x,y,z = img.getpixel((i,j))
            # 將像素點數(shù)據(jù)存儲在列表data中
            data.append([x/256.0,y/256.0,z/256.0])
    f.close()
    # 以矩陣形式輸出data以圖片大小
    return np.mat(data),m,n

# 調(diào)用函數(shù)囱桨,加載圖片
imgData,row,col = loadData(r'E:\TDRDIS Book\編程\Python應(yīng)用\pig\doctor.jpg')
# 設(shè)定聚類個數(shù),對數(shù)據(jù)進(jìn)行聚類嗅绰,結(jié)果存儲到變量中
label = KMeans(n_clusters=4).fit_predict(imgData)
# 還原聚類結(jié)果的維度信息
label = label.reshape([row,col])
# 創(chuàng)建一張新的灰度圖保存聚類后的結(jié)果
pic_new = image.new("L", (row, col))
# 根據(jù)所屬類別向圖片中添加灰度值
for i in range(row):
    for j in range(col):
        pic_new.putpixel((i,j), int(256/(label[i][j]+1)))
# 以JPEG格式保存圖像
pic_new.save(r'E:\TDRDIS Book\編程\Python應(yīng)用\pig\doctor_new.jpg', "JPEG")
doctor.jpg
doctor_new.jpg

目錄
Python機器學(xué)習(xí)應(yīng)用
一舍肠、Sklearn庫
二、無監(jiān)督學(xué)習(xí)
三窘面、有監(jiān)督學(xué)習(xí)

Python機器學(xué)習(xí)應(yīng)用.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翠语,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子财边,更是在濱河造成了極大的恐慌肌括,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酣难,死亡現(xiàn)場離奇詭異谍夭,居然都是意外死亡,警方通過查閱死者的電腦和手機憨募,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門紧索,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馋嗜,你說我怎么就攤上這事齐板。” “怎么了葛菇?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵甘磨,是天一觀的道長。 經(jīng)常有香客問我眯停,道長济舆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任莺债,我火速辦了婚禮滋觉,結(jié)果婚禮上签夭,老公的妹妹穿的比我還像新娘。我一直安慰自己椎侠,他們只是感情好第租,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著我纪,像睡著了一般慎宾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浅悉,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天趟据,我揣著相機與錄音,去河邊找鬼术健。 笑死汹碱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荞估。 我是一名探鬼主播咳促,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泼舱!你這毒婦竟也來了等缀?” 一聲冷哼從身側(cè)響起枷莉,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤娇昙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笤妙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冒掌,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年蹲盘,在試婚紗的時候發(fā)現(xiàn)自己被綠了股毫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡召衔,死狀恐怖铃诬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苍凛,我是刑警寧澤趣席,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站醇蝴,受9級特大地震影響宣肚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悠栓,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一霉涨、第九天 我趴在偏房一處隱蔽的房頂上張望按价。 院中可真熱鬧,春花似錦笙瑟、人聲如沸楼镐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸠蚪。三九已至,卻和暖如春师溅,著一層夾襖步出監(jiān)牢的瞬間茅信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工墓臭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蘸鲸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓窿锉,卻偏偏與公主長得像酌摇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗡载,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348