python相關分析和關聯分析

2021-09-29 22:43:18 字數 3771 閱讀 4653

函式關係:

相關分析不具有傳遞性,a和c相關,b和c相關,a和b不一定相關

#1.兩兩相關性[有相關係數有p值]

correlation=

for i in car_corr[['weight','circle','horsepower']].columns:

#1.2 僅有p值

from sklearn.feature_selection import f_regression

f,p_value=f_regression(car_corr[['weight','circle','horsepower']],car_corr['max_speed'])

#2. df的相關係數矩陣[只有相關係數,沒有p值]

car_corr[['weight','circle','horsepower','max_speed']].corr()

#2.2

np.corrcoef((car_corr['weight'],car_corr['circle'],car_corr['horsepower'],car_corr['max_speed']))

發動機作為汽車的心臟,對各項指標有影響。因此,在研究其他指標和最高時速指標之間的相關關係是,會不知不覺在變數之間加入發動機相關指標,對所研究的變數有影響,而這種影響由於相關關係的不可傳遞性,往往會得到錯誤的結論

剔除其他變數影響之後再進行相關分析

def partial_corr(x,y,partical=):

#x,y為考察相關關係的變數,partical為控制變數

xy,xyp=stats.pearsonr(x,y)

xp,xpp=stats.pearsonr(x,partical)

yp,ypp=stats.pearsonr(y,partical)

n=len(x)

df=n-3

r=(xy-xp*yp)/(np.sqrt(1-xp*xp)*np.sqrt(1-yp*yp))

if abs(r)==1:

prob=0.0

else:

t=(r*np.sqrt(df))/np.sqrt(1-r*r)

prob=(1-stats.t.cdf(abs(t),df))*2

return r,prob

pcorrelation=

for i in car_corr[['weight','circle']].columns:

乙個連續變數乙個分類變數

stats.pointbiserialr(scorebygender['gender'],scorebygender['score'])

# 第乙個引數要求是0,1布林形式的資料

spearman相關係數kendall相關係數hoeffding相關係數

資料變成0,1型

sign='-->'

class apriori(object):

def __init__(self,minsupport=0.1,minconfidence=0.4):

self.minsupport=minsupport

self.minconfidence=minconfidence

def link(self,x,sign):

'''該函式用於連線前項和後項

'''x=list(map(lambda i:sorted(i.split(sign)),x))

l=len(x[0])

r=for i in range(len(x)):

for j in range(i,len(x)):

if x[i][:l-1]==x[j][:l-1] and x[i][l-1]!=x[j][l-1]:

return r

def apriori(self,data):

'''該函式用於頻繁項集的挖掘

'''final = pd.dataframe(index=['support','confidence'])

support_series=1.0*data.sum()/len(data)

column=list(support_series[support_series>self.minsupport].index)

k=0while len(column)>1:

k = k+1

column=self.link(column,sign)

sf=lambda i :data[i].prod(axis=1,numeric_only=true)

data_2=pd.dataframe(list(map(sf,column)),

index=[sign.join(i) for i in column]).t

support_series_2=1.0*data_2[[sign.join(i) for i in column]].sum()/len(data)

#column=list(support_series_2[support_series_2>self.minsupport].index)

#column2=

for i in column:

i=i.split(sign)

for j in range(len(i)):

#cofidence_series=pd.series(index=[sign.join(i) for i in column2])

for i in column2:

confidence_series[sign.join(i)]=

support_series[sign.join(sorted(i))]/support_series[sign.join(i[:len(i)-1])]

for i in confidence_series[confidence_series>self.minconfidence].index:

final[i]=0.0

final[i]['confidence']=confidence_series[i]

final[i]['support']=support_series[sign.join(sorted(i.split(sign)))]

final=final.t.sort(['confidence','support'],ascending=false)

return final

rule=apriori()

rule.apriori(mpb)

fp-growth要求資料格式:出現就出現為原名字,不出現這一行就nan

from fp_growth import find_frequent_itemsets as ffi

for itemset in ffi(array(mpb_fpg),minimum_support=int(len(array(mpb_fpg)*0.1)):

if nan in itemset:

pass

elif len(itemset)==1:

pass

else:

print(itemset[::-1])

Python的相關分析和RFM分析

檢視兩列之間的相關度 wa 人口 corr wa 文盲率 檢視兩兩之間的相關度 選擇多列的方法 wa 人口 平均收入 文盲率 超市購物率 網上購物率 wa 人口 平均收入 文盲率 超市購物率 網上購物率 corr 結果為 rfm分析 import pandas import numpy rfm da...

R語言 相關分析和典型相關分析

r語言相關分析與典型相關分析 相關分析與典型相關分析 pearson相關係數 a c 1,3,5,7,9 b c 1,4,6,9,10 cor a,b pearson相關係數 cor.test a,b 檢驗相關係數的顯著性 cor iris 1 4 相關係數,引數填資料集,則計算相關係數矩陣 spe...

關聯分析演算法

關聯分析演算法 關聯分析演算法的應用非常廣泛,它可以在大規模資料集中找出一組有關聯的資料。例如 商品分析中,我們可以分析出哪些商品之間有購買的關聯,也就是買了其中乙個商品之後,顧客就很有可能買另外乙個商品。頻繁項集是指那些經常出現在一起的物品集合,那麼如何評價這裡的頻繁程度呢?我們用支援度和可信度 ...