[模型移至Azure Machine Learning Studio时会产生不同的结果

问题描述 投票:1回答:1

我们在本地计算机上开发了Jupyter Notebook,以使用Python(V3)库sklearngensim训练模型。当我们将random_state变量设置为固定整数时,结果始终相同。

[此后,我们尝试将笔记本移动到Azure Machine Learning Studio(经典)中的工作区,但是即使我们将random_state保持不变,结果也会有所不同。

按照以下链接的建议,我们安装了相同的库版本,并检查了MKL版本是否相同,并且MKL_CBWR变量设置为AUTO

t-SNE generates different results on different machines

Same Python code, same data, different results on different machines

仍然,我们无法获得相同的结果。

我们还应该检查什么,或者为什么会发生这种情况?

更新

如果我们在本地计算机上生成一个pkl文件并将其导入AML,结果是相同的(因为pkl文件的目的是这样。)>

仍然,我们希望在不导入pkl文件的情况下获得相同的结果(如果可能)。

库版本

gensim 3.8.3.
sklearn 0.19.2.
matplotlib 2.2.3.
numpy 1.17.2.
scipy 1.1.0.

代码

完整代码可在here中找到,示例数据链接在里面。

import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt

from gensim.models import KeyedVectors
%matplotlib inline

import time

from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
import seaborn as sns

wordvectors_file_vec = '../libraries/embeddings-new_large-general_3B_fasttext.vec'
wordvectors = KeyedVectors.load_word2vec_format(wordvectors_file_vec)

math_quests = # some transformations using wordvectors

df_subset = pd.DataFrame()

pca = PCA(n_components=3, random_state = 42)
pca_result = pca.fit_transform(mat_quests)
df_subset['pca-one'] = pca_result[:,0]
df_subset['pca-two'] = pca_result[:,1] 

time_start = time.time()
tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300, random_state = 42)
tsne_results = tsne.fit_transform(mat_quests)

df_subset['tsne-2d-one'] = tsne_results[:,0]
df_subset['tsne-2d-two'] = tsne_results[:,1]

pca_50 = PCA(n_components=50, random_state = 42)
pca_result_50 = pca_50.fit_transform(mat_quests)
print('Cumulative explained variation for 50 principal components: {}'.format(np.sum(pca_50.explained_variance_ratio_)))

time_start = time.time()
tsne = TSNE(n_components=2, verbose=0, perplexity=40, n_iter=300, random_state = 42)
tsne_pca_results = tsne.fit_transform(pca_result_50)
print('t-SNE done! Time elapsed: {} seconds'.format(time.time()-time_start))
    

我们在本地计算机上开发了Jupyter Notebook,以使用python(V3)库sklearn和gensim训练模型。当我们将random_state变量设置为固定整数时,结果始终为...

python scikit-learn gensim azure-machine-learning-studio
1个回答
0
投票

绝对体谅您遇到的问题。每个数据科学家都为此付出了很多努力。

© www.soinside.com 2019 - 2024. All rights reserved.