國內方面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的...