2017-10-10 16 views
0

다음 코드를 사용합니다. 동일한 무작위 종자에 대해 동일한 결과를 얻고 싶습니다. 나는 동일한 무작위 종자 (이 경우에는 1)를 사용하고 다른 결과를 얻는다.왜 무작위 시드가 파이썬에서 결과를 일정하게하지 않는지

import numpy as np 
from random import seed 
seed(1) ### <----- 

파이썬의 random-class의 랜덤 씨앗을 설정

import pandas as pd 
import numpy as np 
from random import seed 
# Load scikit's random forest classifier library 
from sklearn.ensemble import RandomForestClassifier 

from sklearn.model_selection import train_test_split 
seed(1) ### <----- 

file_path = 'https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data' 
dataset2 = pd.read_csv(file_path, header=None, sep=',') 

from sklearn import preprocessing 
le = preprocessing.LabelEncoder() 

#Encoding 
y = le.fit_transform(dataset2[60]) 
dataset2[60] = y 
train, test = train_test_split(dataset2, test_size=0.1) 
y = train[60] 
y_test = test[60] 
clf = RandomForestClassifier(n_jobs=100, random_state=0) 
features = train.columns[0:59] 
clf.fit(train[features], y) 

# Apply the Classifier we trained to the test data 
y_pred = clf.predict(test[features]) 

# Decode 
y_test_label = le.inverse_transform(y_test) 
y_pred_label = le.inverse_transform(y_pred) 


from sklearn.metrics import accuracy_score 
print (accuracy_score(y_test_label, y_pred_label)) 

# Two following results: 
# 0.761904761905 
# 0.90476190476 
+2

에 적용, 선'기차, 테스트 = train_test_split (dataset2, test_size = 0.1)'임의의 종자가 설정되어 있지 않습니다. – ShreyasG

답변

1

귀하의 코드 : 다음은 코드입니다.

그러나 sklearn 완전히 explained here로, NumPy와의 random class을 기반으로합니다 테스트 및 반복 가능성에 대한

,에서 사용되는 의사 난수 생성기에 대한 하나의 씨앗에 의해 제어 전체 실행을하는 것이 중요하다 무작위로 구성된 구성 요소가있는 알고리즘 Scikit-learn은 자체 전역 무작위 상태를 사용하지 않습니다. RandomState 인스턴스 또는 정수 임의 시드가 인수로 제공되지 않을 때마다 numpy.random.seed를 사용하여 설정할 수있는 numpy 전역 임의 상태에 의존합니다. 일반적으로

import numpy as np

그래서

np.random.seed(42)

당신이 수행해야합니다 : 예를 들어, 하나는 자신의 스크립트에서 다음을 실행할 수 있습니다, (42)에 실행의 NumPy와 글로벌 임의의 상태를 설정하는

np.random.seed(1) 

그러나 이것은 실제로 사용되는 모든 Sklearn 구성 요소와 조심할 때 필요하지 않기 때문에 진리의 일부일뿐입니다. 명시 적으로 th 그들과 씨앗을!

언급 ShreyasG 마찬가지로이 또한 최대한 멀리 볼 수 train_test_split