1. 程式人生 > >python資料相關性分析實踐

python資料相關性分析實踐

分析特徵之間的相關性,得到哪個兩個特徵的具有關係,這樣對於後期的資料分析可以提供幫助。

資料來源示例: (每列都是一個特徵,每行為一個使用者)

[10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0]
[4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 5, 0]
[3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0]
[7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
[6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0]
[9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2, 0, 0]

#-*- coding: utf-8 -*-

import pandas as pd
import numpy as np
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import seaborn as sns

datas = []
for line in open('pre_matrix.txt'):
    datas.append(eval(line))
datas = np.array(datas)
#print(datas)

new_data = pd.DataFrame(datas)
#datas.corr()[u'健身'] #只顯示“健身”與其他特徵的相關係數
#datas[u'健身'].corr(datas[u'教育']) #計算“健身”與“教育”的相關係數
corr = new_data.corr()

#corr.to_csv('corr.txt')

#儲存圖片
f, ax= plt.subplots(figsize = (14, 10))
sns.heatmap(corr,cmap='RdBu', linewidths = 0.05, ax = ax)
# 設定Axes的標題
ax.set_title('Correlation between features')
f.savefig('corr.png', dpi=100, bbox_inches='tight')

藍色越深相關性越高,比如第64行, 第13列的資料相關性高一些,深藍色斜線行列都是同一個特徵,所以相關度為1