T-SNE输出功能
T-SNE输出功能描述
一种tsne
输出功能is a function that runs after every数字
T-SNE算法的优化迭代。输出功能可以创建图或将数据记录到文件或工作区变量。该函数不能改变算法的进度,但可以停止迭代。
Set output functions using the选项
名称值对参数tsne
功能。Set选项
使用使用Statset
or结构
。设置'outputfcn'
领域选项
函数手柄或函数手柄的单元格数组的结构。
例如,设置一个名称的输出函数OUTFUN.M
,,,,use the following commands.
opts = statset('outputfcn',,,,@outfun); Y = tsne(X,'选项',选择);
使用以下语法编写输出函数。
功能stop = offun(optimvalues,state)stop = false;%不要默认停止switch状态案子'init'%设置图或打开文件案子'iTer'%绘制图或更新变量案子'完毕'%清理图或文件结尾
tsne
通过状态
andOptimValues
变量到您的功能。状态
接收值'init'
,,,,'iTer'
, 或者'完毕'
如代码段所示。
tsne
OptimValues
结构
OptimValues 场地 |
描述 |
---|---|
'迭代' |
迭代编号 |
'fval' |
Kullback-Leibler divergence, modified by exaggeration during the first 99 iterations |
'grad' |
Kullback-Leibler Divergence的梯度,在前99个迭代中通过夸张修改 |
'夸张' |
当前迭代中使用的夸张参数的值 |
'y' |
当前嵌入 |
T-SNE自定义输出功能
此示例显示了如何在tsne
。
Custom Output Function
以下代码是执行这些任务的输出函数:
在工作区变量中保留kullback-leibler差异的历史及其梯度的规范。
随着迭代的进行,绘制解决方案和历史记录。
显示
停止
图上的按钮可以尽早停止迭代而不会丢失任何信息。
输出函数具有额外的输入变量,物种
,这使其图能够显示数据的正确分类。有关包含额外参数的信息,例如物种
在功能中,请参阅参数化功能。
功能stop = kllogging(最佳价值,状态,物种)执着的H Kllog Iters停止switch状态案子'init'stopnow = false;kllog = [];iters = [];h =图;c = uicontrol('风格',,,,“ pusphtton',,,,'细绳',,,,'停止',,,,'Position',,,,...[10 10 50 20],'打回来',@阻止我);案子'iTer'kllog = [kllog;optimvalues.fval,log(norm(optimvalues.grad))];分配(的基本',,,,'历史',kllog)iters = [iters;OptimValues.Iteration];如果长度(iTers)> 1图(H)子图(2,1,2)图(Iters,kllog);Xlabel('Iterations') ylabel(“损失和梯度”) 传奇(“分歧”,,,,“日志(norm(渐变))”) 标题(“分歧和日志(norm(渐变))”)子图(2,1,1)gScatter(optimvalues.y(:,1),optimvalues.y(::,2),物种)标题(“嵌入”)绘制结尾案子'完毕'% 这里没有什么结尾stop = stopnow;功能stopme(〜,〜)stopnow = true;结尾结尾
使用自定义输出功能
使用Fisher Iris数据(4-D数据集)绘制使用的二维tsne
。迭代100处的差异值下降,因为差异是通过早期迭代的夸张值缩放的。在过去的几百个迭代中,嵌入在很大程度上保持不变,因此您可以通过单击来节省时间停止
迭代过程中的按钮。
加载渔业rng默认%可再现性opts = statset('outputfcn',@(OptimValues,State)Kllogging(OptimValues,state,stelt));y = tsne(MEAS,'选项',选择,'算法',,,,'exact');