我正在阅读T-SNE的Python实现的源代码。 (https://lvdmaaten.github.io/tsne/code/tsne_python.zip)
我对Hbeta函数的实现感到困惑。在计算熵时,作者使用以下代码行。
public void CFExport(string jsonFile)
{
string ItemIDField;
string ItemIDValue;
using (StreamReader r = new StreamReader(jsonFile))
{
JsonSerializer s = new JsonSerializer();
var Idx = (JSONMain)s.Deserialize(r, typeof(JSONMain));
var flds = (Fields)s.Deserialize(r, typeof(Fields));
if (flds != null)
{
foreach (var _field in flds.Field)
{
ItemIDField = _field.Name;
ItemIDValue = _field.Value;
}
}
}
}
public class JSONMain
{
public Index Index { get; set; }
}
public class Index
{
public string LibraryName { get; set; }
public string FormName { get; set; }
public string User { get; set; }
public string FilingPriority { get; set; }
public string FileDescription { get; set; }
}
public class Fields
{
public List<Field> Field { get; set; }
}
public class Field
{
public string Name { get; set; }
public string Value { get; set; }
}
我在论文中找不到相应的公式。相反,计算熵的公式为:
似乎H的计算和公式不匹配。
有人可以向我解释我错过了什么吗?
H = np.log(sumP) + beta * np.sum(D * P) / sumP