最大熵模型的理论部分可以参考李航的《统计学习方法》或皮果提的最大熵学习笔记,本次使用的训练算法为GIS(Generalized Iterative Scaling),这个Python代码主要是作为理解最大熵模型而用。
# -*- coding: utf-8 -*-
from collections import defaultdict
import math
class MaxEnt(object):
def __init__(self):
self.feats = defaultdict(int)
self.trainset = [] #训练集
self.labels = set() #标签集
def load_data(self,file):
for line in open(file):
fields = line.strip().split()
if len(fields) < 2: continue #特征数要大于等于2列
label = fields[0] #默认第一列为标签
self.labels.add(label)
for f in set(fields[1:]):