我有两个问题,我正在尝试使用bh_sne
库绘制数据,但由于此算法的性质基于每次运行中的随机数,因此我得到的结果不同。我想在每次运行中得到相同的结果。看来random_state
很有帮助。
但我不知道它究竟是什么意思,通过为random_state=0
选择不同的整数。
例如random_state=1
和random_state=42
或random_state=None
..和AttributeError: 'int' object has no attribute 'randint'
其次,当我在我的函数中应用此参数并给出除None之外的任何值时,我得到以下错误。
data = bh_sne(X, random_state =1 )
我的pycharm中没有任何名为random的文件。
这是我的代码:
X
/// <summary>
/// An unsuccessful HTTP result.
/// </summary>
public class UnsuccessfulActionResult : IActionResult, IHttpStatusCodeResult, IErrors
{
/// <inheritdoc />
/// <summary>
/// The HTTP status code.
/// </summary>
public HttpStatusCode StatusCode { get; }
/// <summary>
/// The corresponding error messages, if any.
/// </summary>
public IReadOnlyCollection<string> Errors { get; }
/// <summary>
/// The request Transaction ID.
/// </summary>
public string TransactionId { get; }
/// <summary>
/// Default ctor.
/// </summary>
/// <param name="transactionId">The request Transaction ID.</param>
/// <param name="errors">The corresponding error messages, if any.</param>
/// <param name="httpStatusCode"></param>
public UnsuccessfulActionResult(
string transactionId,
HttpStatusCode httpStatusCode,
IReadOnlyCollection<string> errors = null)
{
TransactionId = transactionId;
StatusCode = httpStatusCode;
Errors = errors ?? new List<string>();
}
/// <summary>
/// Convenient method to create an unsuccessful response model.
/// </summary>
/// <param name="statusCode"></param>
/// <returns></returns>
protected UnsuccessfulResponseModel CreateResponseModel(int statusCode)
{
return new UnsuccessfulResponseModel(TransactionId, statusCode, Errors);
}
/// <inheritdoc />
public virtual Task ExecuteResultAsync(ActionContext context)
{
var objectResult = new ObjectResult(CreateResponseModel((int)StatusCode))
{
StatusCode = (int)StatusCode
};
return objectResult.ExecuteResultAsync(context);
}
}
包含我的功能值。
答案 0 :(得分:3)
这个lib使用numpy的随机模块,更具体:this part。
就这样使用它:
import numpy as np
bh_sne(X, random_state=np.random.RandomState(0)) # init with integer 0
这可以通过简单的随机源搜索(见下图)看到,这也显示了一些单元测试!
整数(上面的0)只是熵的一些来源,这导致内部随机数发生器的某种状态。如果不分析PRNG,就不能保证0的种子数与1或40相比如何表现。它不需要不同(但通常是)!
只有一个保证:决定论!从用数字seed=my_integer
初始化的PRNG中抓取随机数,每次用这个精确种子完成时返回相同的路径/相同的数字(前x个数字每次都相等; x任意)。
但是intro-page可能会给出一个更重要的通知(当我在python中工作时看到你正在使用的lib时,这是我的第一个问题):
注意:Scikit-learn v0.17包含TSNE算法,你应该使用它们而不是它。