5

Tôi đang sử dụng Scikit-learn để phân loại văn bản. Tôi muốn tính toán mức tăng thông tin cho mỗi thuộc tính đối với một lớp trong ma trận thuật ngữ tài liệu (thưa thớt). Độ tăng thông tin được định nghĩa là H (Class) - H (Class | Attribute), trong đó H là entropy.Tính toán Tăng thông tin với Scikit-learn

Sử dụng weka, điều này có thể được thực hiện với InfoGainAttribute. Nhưng tôi đã không tìm thấy biện pháp này trong việc học hỏi.

Tuy nhiên, nó đã được suggested rằng công thức ở trên cho thông tin tăng là cùng một biện pháp như thông tin lẫn nhau. Điều này cũng khớp với định nghĩa trong wikipedia.

Có thể sử dụng một cài đặt cụ thể cho thông tin chung trong việc tìm hiểu để thực hiện tác vụ này không?

Trả lời

5

Bạn có thể sử dụng của mutual_info_classif đây là một ví dụ

from sklearn.datasets import fetch_20newsgroups 
from sklearn.feature_selection import mutual_info_classif 
from sklearn.feature_extraction.text import CountVectorizer 

categories = ['talk.religion.misc', 
       'comp.graphics', 'sci.space'] 
newsgroups_train = fetch_20newsgroups(subset='train', 
             categories=categories) 

X, Y = newsgroups_train.data, newsgroups_train.target 
cv = CountVectorizer(max_df=0.95, min_df=2, 
            max_features=10000, 
            stop_words='english') 
X_vec = cv.fit_transform(X) 

res = dict(zip(cv.get_feature_names(), 
       mutual_info_classif(X_vec, Y, discrete_features=True) 
       )) 
print(res) 

này sẽ ra một cuốn từ điển của mỗi thuộc tính, tức là mục trong từ vựng như phím và tăng thông tin của họ scikit-học như đánh giá cao

đây là mẫu của đầu ra

{'bible': 0.072327479595571439, 
'christ': 0.057293733680219089, 
'christian': 0.12862867565281702, 
'christians': 0.068511328611810071, 
'file': 0.048056478042481157, 
'god': 0.12252523919766867, 
'gov': 0.053547274485785577, 
'graphics': 0.13044709565039875, 
'jesus': 0.09245436105573257, 
'launch': 0.059882179387444862, 
'moon': 0.064977781072557236, 
'morality': 0.050235104394123153, 
'nasa': 0.11146392824624819, 
'orbit': 0.087254803670582998, 
'people': 0.068118370234354936, 
'prb': 0.049176995204404481, 
'religion': 0.067695617096125316, 
'shuttle': 0.053440976618359261, 
'space': 0.20115901737978983, 
'thanks': 0.060202010019767334} 
Các vấn đề liên quan