mielőtt bármilyen gépi tanulási modellt készítene egy táblázatos adatkészleten, általában ellenőrizzük, hogy van-e kapcsolat a független és a célváltozók között. Ezt két változó közötti korreláció mérésével lehet elvégezni. A Pythonban a Pandas egy dataframe.corr()
függvényt biztosít, hogy megtalálja a korrelációt csak a numerikus változók között.
ebben a cikkben megnézzük, hogyan lehet megtalálni a kategorikus és folyamatos változók közötti korrelációt.
1. eset: ha egy független változónak csak két értéke van
pont Biserial korreláció
ha egy kategorikus változónak csak két értéke van (azaz igaz/hamis), akkor átalakíthatjuk numerikus adattípussá (0 és 1). Mivel numerikus változóvá válik, a korrelációt a dataframe.corr()
függvény segítségével tudjuk megtudni.
hozzunk létre egy adatkeretet, amely két oszlopból áll: Employee Type (Emptyype) és payment.
szándékosan több fizetést rendelünk az EmpType1 – hez. Így kapunk némi összefüggést az Emptyype és a fizetés között.
hozzon létre egy adatkeretet a következő tulajdonságokkal:
-
az átlagos (átlagos) fizetés
EmpType1
60, öt szórással. -
az átlagos (átlagos) fizetés
EmpType2
50, öt szórással.
import pandas as pdimport numpy as npnum1=np.random.normal(loc=60,scale=5,size=100)df1=pd.DataFrame(num1,columns=)df1='EmpType1'num2=np.random.normal(loc=50,scale=5,size=100)df2=pd.DataFrame(num2,columns=)df2='EmpType2'df=pd.concat(,axis=0)# Since Categorical variable 'Type' has only 2 values we will convert it into numeric (0 and 1) datatype.df=(df=='EmpType1').astype(int)df.corr()
Kimenet
Fizetés | Típusnyomat | |
Fizetés | 1 | 0.736262 |
TypeInt | 0.736262 | 1 |
az EmpType és a fizetés közötti korreláció 0,7. Tehát megállapíthatjuk, hogy összefügg.
2.eset: ha a független változóknak kettőnél több értéke van
ANOVA (varianciaanalízis)
több fizetést rendelünk a EmpType1
– hoz, az átlagos fizetést a EmpType2
– hez, az alacsony fizetést pedig a EmpType3
– hoz. Így kapunk némi összefüggést az Emptyype és a fizetés között.
-
az átlagos fizetés
EmpType1
90, öt szórással. -
az átlagos fizetés
EmpType2
70, öt szórással. -
az átlagos fizetés
EmpType3
50, öt szórással.
num1=np.random.normal(loc=90,scale=5,size=100)df1=pd.DataFrame(num1,columns=)df1='EmpType1'num2=np.random.normal(loc=70,scale=5,size=100)df2=pd.DataFrame(num2,columns=)df2='EmpType2'num3=np.random.normal(loc=50,scale=5,size=100)df3=pd.DataFrame(num3,columns=)df3='EmpType3'df=pd.concat(,axis=0)from scipy import statsF, p = stats.f_oneway(df.Salary, df.Salary, df.Salary)print(F)
a kimenet, amit kapunk, az: 1443.6261
- mivel három alkalmazott átlagos fizetése 90, 70 és 50 (öt szórással), az F pontszám 1444.
- ha három alkalmazott átlagos fizetése 60, 55, 50, Az F pontszám 86.
- és ha három alkalmazott átlagos fizetése 51, 50, 49 (majdnem azonos), akkor az F pontszám közel lesz a 0-hoz, azaz. nincs összefüggés.
- minél nagyobb az F pontszám értéke, annál nagyobb lesz a korreláció.
a teljes kódot letöltheti és futtathatja ezen a linken.