2016-06-26 3 views
1

safety 클래스에 대해 가장 유익한 20 가지 기능을 인쇄하기 위해 파이프 라인을 반복합니다.팬더 데이터 프레임 헤더 행이 for 문에서 반복되지 않도록하기

classnum_saf = 3 
inds = np.argsort(clf_3.named_steps['clf'].coef_[classnum_saf, :])[-20:] 
for i in inds: 
    f = feature_names[i] 
    c = clf_3.named_steps['clf'].coef_[classnum_saf, [i]] 
    print(f,c) 
    output = {'features':f, 'coefficients':c} 
    df = pd.DataFrame(output, columns = ['features', 'coefficients']) 
    print(df) 

나는 오직 하나의 헤더로 출력 된 데이터 프레임을 원하지만, 대신에 나는 [i]를 통해 반복 이후 또 다시 헤더를 반복 나타납니다이 출력을 반환하고 있습니다.

1800 [-8.73800344] 
    hr [-8.73656027] 
    wa [-8.7336777] 
    1400 [-8.72197545] 
    hrwa [-8.71952656] 
    perimeter [-8.71173264] 
    response [-8.67388885] 
    analysis [-8.65460329] 
    00 [-8.58386785] 
    raw [-8.56148006] 
    run [-8.51374794] 
    factor [-8.50725691] 
    200 [-8.50334896] 
    file [-8.39990841] 
    pb [-8.38173753] 
    mar [-8.21304343] 
    1998 [-8.21239836] 
    signal [-8.02426499] 
    area [-8.01782987] 
    98 [-7.3166918] 

내가 연구 : 지금 내가 인쇄 돌아올 때

  features  coefficients 
    0  1800   -8.738003 
    ..  ...   ... 
    18  area   -8.01783 
    19  98   -7.316692 

의 (d, F)은 다음과 같은 최고 값을 보여줍니다

1800 [-8.73800344] 
    features coefficients 
    0  1800  -8.738003 
    hr [-8.73656027] 
    features coefficients 
    0  hr  -8.73656 
    wa [-8.7336777] 
    features coefficients 
    0  wa  -8.733678 
    1400 [-8.72197545] 
    features coefficients 
    0  1400  -8.721975 
    hrwa [-8.71952656] 
    features coefficients 
    0  hrwa  -8.719527 
    perimeter [-8.71173264] 
    features coefficients 
    0 perimeter  -8.711733 
    response [-8.67388885] 
    features coefficients 
    0 response  -8.673889 
    analysis [-8.65460329] 
    features coefficients 
    0 analysis  -8.654603 
    00 [-8.58386785] 
    features coefficients 
    0  00  -8.583868 
    raw [-8.56148006] 
    features coefficients 
    0  raw  -8.56148 
    run [-8.51374794] 
    features coefficients 
    0  run  -8.513748 
    factor [-8.50725691] 
    features coefficients 
    0 factor  -8.507257 
    200 [-8.50334896] 
    features coefficients 
    0  200  -8.503349 
    file [-8.39990841] 
    features coefficients 
    0  file  -8.399908 
    pb [-8.38173753] 
    features coefficients 
    0  pb  -8.381738 
    mar [-8.21304343] 
    features coefficients 
    0  mar  -8.213043 
    1998 [-8.21239836] 
    features coefficients 
    0  1998  -8.212398 
    signal [-8.02426499] 
    features coefficients 
    0 signal  -8.024265 
    area [-8.01782987] 
    features coefficients 
    0  area  -8.01783 
    98 [-7.3166918] 
    features coefficients 
    0  98  -7.316692 

는 어떻게이 data frame처럼 반환 않는다 몇 가지 유사한 질문 here, herehere,하지만 직접 내 질문에 대답하지 않는 것.

미리 감사드립니다. 아직 배우고 있습니다.

답변

1

나는 일부 데이터를 시뮬레이션 시도하고 당신은 dfL에서 루프의 각 단계에서 Llist를 추가하고 만들 지속될 수 :

L = [] 
classnum_saf = 3 
inds = np.argsort(clf_3.named_steps['clf'].coef_[classnum_saf, :])[-20:] 
for i in inds: 
    f = feature_names[i] 
    c = clf_3.named_steps['clf'].coef_[classnum_saf, [i]] 
    print(f,c) 
    #add [0] for removing list of list (it works nice if len of f[i] == 1) 
    L.append([c[i], f[i][0]]) 

df = pd.DataFrame(L, columns = ['features', 'coefficients']) 
print(df) 

샘플 :

import pandas as pd 

f = [[1],[2],[3]] 
c = ['a','b','c'] 

L = [] 
for i in range(3): 
# print(f[i],c[i]) 
    #swap c and f 
    L.append([c[i], f[i][0]]) 

print (L) 
[['a', 1], ['b', 2], ['c', 3]] 

df = pd.DataFrame(L, columns = ['features', 'coefficients']) 
print(df) 

    features coefficients 
0  a    1 
1  b    2 
2  c    3 
+0

당신의 도움을 주셔서 감사합니다! 내 것은 반면 numpy.ndarray 귀하의 C 목록입니다. 이것은 "인덱스 1169가 크기 0의 축 0에 대해 범위를 벗어났습니다"라는 실행시의 오류를 설명합니다. 내가 C를 목록으로 만들 필요가 있다고 생각 하나? – baldr009

+0

시도해 볼 수도 있지만 ndarray와 잘 작동한다고 생각합니다. 가장 좋은 방법은 f와 c를 ndarrays로 변경하고 테스트 해보는 것입니다. – jezrael