2016-10-26 5 views
1

데이터를 정규화하고 피어슨 상관 관계를 계산하고 싶습니다. 정상화하지 않고이 작업을 시도하면 작동합니다. 정규화와 함께이 오류 메시지가 나타납니다. AttributeError : 'numpy.ndarray'객체에 'corr'속성이 없습니다. 이 문제를 해결하려면 어떻게해야합니까? fit_transform의 출력이 DataFrame.corr 작업 numpy array하고 있기 때문에정규화 후 피어슨 상관 관계

import numpy as np 
import pandas as pd 


filename_train = 'C:\Users\xxx.xxx\workspace\Dataset\!train_data.csv' 
names = ['a', 'b', 'c', 'd', 'e', ...] 
df_train = pd.read_csv(filename_train, names=names) 

from sklearn.preprocessing import Normalizer 
normalizeddf_train = Normalizer().fit_transform(df_train) 

#pearson correlation 
pd.set_option('display.width', 100) 
pd.set_option('precision', 2) 
print(normalizeddf_train.corr(method='pearson')) 
+1

어쩌면 numy 배열에서 dataframe를 만들 필요 -'normalizeddf_train = pd.Dataframe (normalizeddf_train)' – jezrael

답변

1

당신은, DataFrame 생성자가 필요합니다

df_train = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6], 
        'C':[7,8,9], 
        'D':[1,3,5], 
        'E':[5,3,6], 
        'F':[7,4,3]}) 

print (df_train) 
    A B C D E F 
0 1 4 7 1 5 7 
1 2 5 8 3 3 4 
2 3 6 9 5 6 3 

from sklearn.preprocessing import Normalizer 
normalizeddf_train = Normalizer().fit_transform(df_train) 
print (normalizeddf_train) 
[[ 0.08421519 0.33686077 0.58950634 0.08421519 0.42107596 0.58950634] 
[ 0.1774713 0.44367825 0.70988521 0.26620695 0.26620695 0.3549426 ] 
[ 0.21428571 0.42857143 0.64285714 0.35714286 0.42857143 0.21428571]] 

print(pd.DataFrame(normalizeddf_train).corr(method='pearson')) 
      0   1   2   3   4   5 
0 1.000000 0.917454 0.646946 0.998477 -0.203152 -0.994805 
1 0.917454 1.000000 0.896913 0.894111 -0.575930 -0.872187 
2 0.646946 0.896913 1.000000 0.603899 -0.878063 -0.565959 
3 0.998477 0.894111 0.603899 1.000000 -0.148832 -0.998906 
4 -0.203152 -0.575930 -0.878063 -0.148832 1.000000 0.102420 
5 -0.994805 -0.872187 -0.565959 -0.998906 0.102420 1.000000 
+0

감사를 당신의 너의 좋은 대답. 다른 질문은 다음과 같습니다. 'F'의 상위 3 점 만 가질 수있는 방법은 무엇입니까? 첫 번째보기에서 'F'의 상위 상관 관계를 볼 수 있습니다. 예 : 'F와 상위 상관 관계 : 특징 3 : -0.998906, 특징 0 : -0.994805, 특징 1 : -0.872187' – matthew

+1

'print (pd.DataFrame (normalizeddf_train) .corr (method = 'pearson') 필요합니다.) nsmallest (3 , 5))'print' (pd.DataFrame (normalizeddf_train) .corr (method = 'pearson'). nlargest (3,5))''3 '은 값의 수이고 5는 열 이름입니다. ['nsmallest'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.nsmallest.html)와 ['nlargest'] (http://pandas.pydata.org)도 확인하십시오. /pandas-docs/stable/generated/pandas.DataFrame.nlargest.html). – jezrael

+0

다음 질문은 어떻게 미래 예측 모델을 위해 열 A와 D를 선택할 수 있는가입니다. 나는 indizes하지만 열 이름이 없기 때문에 묻습니다. – matthew