LDA學習與實踐

2021-10-02 00:17:01 字數 2144 閱讀 9076

國內方面rickjin有著名的《lda數學八卦》,國外的gregor heinrich有著名的《parameter estimation for text analysis》

from sklearn.decomposition import latentdirichletallocation

from keras.preprocessing.text import tokenizer

from keras.preprocessing.sequence import pad_sequences

from keras.utils.np_utils import to_categorical

from sklearn.feature_extraction.text import countvectorizer

from sklearn.feature_extraction.text import tfidfvectorizer

from sklearn.feature_extraction.text import tfidftransformer

from sklearn.externals import joblib

import mglearn

import numpy as np

topic_num =

10'''

資料集為200個隨機生成的字串組成的7維序列,7維代表7組特徵。

在get_data檔案中生成。

'''fanswer_path =

""fa =

open

(fanswer_path)

answer =

for line in fa.readlines():

'''countvectorizer.fit_transform對資料進行分詞與詞表的構建。

countvectorizer()的引數還能設定停用詞等功能。

使用countvectorizer.transform()使用已訓練的模型對文字進行擬合

'''vect = countvectorizer(max_features=

200)

x = vect.fit_transform(answer)

'''將lda應用於資料集,n_topic主題個數,方法為batch可能比預設的好,randomstate保證實驗可重複性,其他引數尚未了解。

'''lda = latentdirichletallocation(n_topics=topic_num, learning_method=

"batch"

,max_iter=

25,random_state=0)

document_topics = lda.fit_transform(x)

joblib.dump(lda,

"lda.pkl"

)'''

對每個主題的特徵進行降序排序,從容器獲得名字並輸出

'''sorting = np.argsort(lda.components_,axis =-1

)feature_names = np.array(vect.get_feature_names())

mglearn.tools.print_topics(topics=

range

(topic_num)

,feature_names=feature_names,sorting=sorting)

'''使用transfrom擬合待測文字,得到文字對應的n個主題的概率

'''test =

['t17 t24 t31 t44 t53 t77 t93\n'

]test_vec = vect.transform(test)

lda.transform(test_vec)

'''使用儲存的模型對文字提取主題

'''model = joblib.load(

"lda.pkl"

)test =

['t17 t24 t31 t44 t53 t77 t93\n'

]test_vec = vect.transform(test)

test_dist = model.transform(test_vec)

print

(test_dist)

機器學習 LDA與PCA演算法

linear discriminant analysis 用途 資料預處理中的降維,分類任務 歷史 ronald a.fisher在1936年提出了線性判別方法 線性判別分析 lda 目標 lda關心的是能夠最大化類間區分度的座標軸成分 將特徵空間 資料集中的多維樣本 投影到乙個維度更小的 k 維子...

LDA與主題模型

1 最近看的東西。於是,這樣就可以對文件進行分類。一篇文件可以由主題的分布來構成,就是說,包含百分之多少的這個主題,百分之多少的那個主題。不同的文章,包含的主題成分不同,這個分布是不同的的,有些文章這個分布可能是相同 相似的。把所有文章都統計一遍,有多少是屬於這個分布的,多少是屬於那個分布的,統計出...

機器學習公式推導 LDA

lda是一種降維的演算法,也可以用來做特徵選擇和聚類。以二維平面為例,平面上有2類樣本點,我們希望將二維平面上的2類樣本點投影到一條直線上,從二維到一維,這可不就降維了嗎?那麼怎麼找到最合適的投影的直線呢?我們期望的目標是,投影之後,同類之間靠得更近,異類之間離得更遠,也就是類內小,類間大。lda的...