【问题标题】:sklearn random_state is not working properlysklearn random_state 无法正常工作
【发布时间】:2020-04-09 01:47:48
【问题描述】:

我阅读了与此相关的所有内容,但仍然不明白问题的真正含义。基本上我使用带有random_state 的TruncatedSVD,然后为它打印explained_variance_ratio_.sum()。每次我运行代码时它都会改变。这正常吗?

from sklearn.decomposition import TruncatedSVD
SVD = TruncatedSVD(n_components=40, n_iter=7, random_state=42)

XSVD = SVD.fit_transform(X)
print(SVD.explained_variance_ratio_.sum())

问题是后来我使用 umap 并绘制结果图。每次运行代码时,我都有不同的图表。我不明白这是由于 TruncatedSVD 还是 UMAP。我使用 random_state=42 来阻止事情发生变化,但看起来真的没有效果。

【问题讨论】:

    标签: numpy random scikit-learn sklearn-pandas


    【解决方案1】:

    您可能应该做错什么,因为我无法用 scikit-learn 0.22 重现您的问题

    In [16]: import numpy as np 
        ...: from sklearn.decomposition import TruncatedSVD 
        ...:  
        ...: rng = np.random.RandomState(42) 
        ...: X = rng.randn(10000, 100) 
        ...: def func(X): 
        ...:     SVD = TruncatedSVD(n_components=40, n_iter=7, random_state=42) 
        ...:     XSVD = SVD.fit_transform(X) 
        ...:     print(SVD.explained_variance_ratio_.sum()) 
        ...: func(X);func(X);func(X);                                                                                                                                           
    0.43320350603512425
    0.43320350603512425
    0.43320350603512425
    

    【讨论】:

    • 停止并重新启动服务器时是否给出相同的结果?我的意思是,在我的情况下,数据来自一个 .txt 文件,所以我想在每次运行服务器和代码时重现相同的数字和相同的图表。
    • 是的,它会的。 X 是确定性的,因为我也使用了给定的种子。请注意,如果您的 X 不同,那么变换也会不同。所以我会看这部分而不是 scikit-learn 算法。
    • 感谢您的帮助。在此之前我使用 TfidfVectorizer,我猜那是随机的。所以我会详细检查这里发生的事情。
    猜你喜欢
    • 2019-09-21
    • 2020-04-23
    • 2021-11-06
    • 2017-05-29
    • 2018-12-11
    • 2014-11-23
    • 2017-02-12
    • 2015-10-28
    • 2016-12-01
    相关资源
    最近更新 更多