Python 归一化后的皮尔逊相关
我想标准化我的数据并计算皮尔逊相关。如果我在没有标准化的情况下尝试这个,它会起作用。通过规范化,我得到以下错误消息:AttributeError:'numpy.ndarray'对象没有属性'corr' 我能做些什么来解决这个问题Python 归一化后的皮尔逊相关,python,pandas,numpy,scikit-learn,pearson,Python,Pandas,Numpy,Scikit Learn,Pearson,我想标准化我的数据并计算皮尔逊相关。如果我在没有标准化的情况下尝试这个,它会起作用。通过规范化,我得到以下错误消息:AttributeError:'numpy.ndarray'对象没有属性'corr' 我能做些什么来解决这个问题 import numpy as np import pandas as pd filename_train = 'C:\Users\xxx.xxx\workspace\Dataset\!train_data.csv' names = ['a', 'b', 'c',
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'))
您需要
DataFrame
构造函数,因为fit\u transform
的输出是numpy数组
,可以使用:
您需要
DataFrame
构造函数,因为fit\u transform
的输出是numpy数组
,可以使用:
可能需要从numy数组创建数据帧-
normalizeddf\u train=pd.dataframe(normalizeddf\u train)
可能需要从numy数组创建数据帧-normalizeddf\u train=pd.dataframe(normalizeddf\u train)
谢谢您的回答。另一个问题是:怎么可能只有功能“F”的前三名?因此,您可以在第一个视图中看到“F”的前3个相关性。e、 g.与F的最高相关性:特征3:-0.998906,特征0:-0.994805,特征1:-0.872187
我认为需要打印(pd.DataFrame(normalizeddf_train).corr(method='pearson').nsmallest(3,5))
或打印(pd.DataFrame(normalizeddf_train).corr(method='pearson').nlargest(3,5))
其中3
是值的数目,5是列名。同时检查和。下一个问题是,如何为进一步的预测模型选择A列和D列。我这样问是因为我只有索引,但没有列名。嗯,您可以向Dataframe
构造函数添加参数列,就像print(pd.Dataframe(normalizeddf\u train,columns=df\u train.columns).corr(method='pearson'))
,然后在输出中获取原始列。熊猫的corr函数不是自动线性化数据吗?所以不需要事先做吗?谢谢你的回答。另一个问题是:怎么可能只有功能“F”的前三名?因此,您可以在第一个视图中看到“F”的前3个相关性。e、 g.与F的最高相关性:特征3:-0.998906,特征0:-0.994805,特征1:-0.872187
我认为需要打印(pd.DataFrame(normalizeddf_train).corr(method='pearson').nsmallest(3,5))
或打印(pd.DataFrame(normalizeddf_train).corr(method='pearson').nlargest(3,5))
其中3
是值的数目,5是列名。同时检查和。下一个问题是,如何为进一步的预测模型选择A列和D列。我这样问是因为我只有索引,但没有列名。嗯,您可以向Dataframe
构造函数添加参数列,就像print(pd.Dataframe(normalizeddf\u train,columns=df\u train.columns).corr(method='pearson'))
,然后在输出中获取原始列。熊猫的corr函数不是自动线性化数据吗?所以不需要事先做吗?
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