2017-01-22 1 views
0

다른 깊이의 의사 결정 트리에 대한 테스트 및 학습 오류를 계산하려고했습니다.다른 길이의 의사 결정 트리 오류

train_error = [] 
test_error = []  
for i in range (3,21): 
    X_train, X_test, y_train, y_test = train_test_split(womendata, womeny, test_size=0.4, random_state=1) 
    decitiontree = tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=i, class_weight = 'balanced', min_samples_split=i) 
    clf = decitiontree.fit(X_train, y_train) 
    train_error.append(1 - clf.score(X_train, y_train) )  
    test_error.append(1 - clf.score(X_test, y_test) ) 

파이썬 3에서 나는 오류 얻을 : y는 같은 길이입니다

Traceback (most recent call last): 
    File "<stdin>", line 4, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/sklearn/tree/tree.py", line 154, in fit 
    X = check_array(X, dtype=DTYPE, accept_sparse="csc") 
    File "/usr/local/lib/python3.4/dist-packages/sklearn/utils/validation.py", line 398, in check_array 
    _assert_all_finite(array) 
    File "/usr/local/lib/python3.4/dist-packages/sklearn/utils/validation.py", line 54, in _assert_all_finite 
    " or a value too large for %r." % X.dtype) 

ValueError: Input contains NaN, infinity or a value too large for dtype('float32'). 

두 womendata 엔 여성을, 그리고 세트에는 누락 된 데이터가 없습니다.

답변

0

잘못된 값이 포함 된 데이터 배열을 제공하는 중에 오류가 발생했습니다.

ValueError: Input contains NaN, infinity or a value too large for dtype('float32').

데이터가 유효 의미인지 확인 사항 : womendata 또는 womeny에

  1. 없는 NaN의 값은
  2. 값의 범위 안에있는 womendata 또는 womeny에 더 Inf를 값없는 float32 분 및 float32 최대

다음 코드를 사용할 수 있습니다.

import numpy as np 
info = np.finfo(np.float64) 

for x in [womendata, womeny]: 
    assert np.all(x <= info.max) and np.all(x >= info.min), 'not all values in range' 
    assert np.all(x != np.inf) and np.all(x != -np.inf), 'data contains infinity value' 
    assert np.all(x is not np.nan), 'data contains Nan value' 
+0

이 작품은 무엇입니까? 그것을 고치기 위해 관리 하는가? – ShmulikA