簡體   English   中英

為什么corr()給我的結果只有int,uint或float類型而不是對象類型?

[英]Why does corr() give me results with only int, uint or float type and not with object type?

為了澄清,我在Jupyter Notebook中使用Python

我想提高我在數據科學方面的技能,所以我接手了一個上周結束的項目。

在這個項目中,我的目的是建立一個邏輯回歸。 我做了數據准備等等,然后我做了一個功能選擇,然后,為了優化我的模型,我做了一個corr()並找出了相關的最后一個功能。

但我認為這不是完成工作的最佳方式。 我認為corr()需要在特征選擇之前進行。 所以我嘗試在功能選擇之前制作corr(),但我遇到了問題。

讓我們看看我是如何第一次這樣做的(這是在我的所有數據准備之后等等):

  • 我用我的分類專欄制作了假人
df1=pd.get_dummies(df[[cat_cols]])

  • 我與我的定量專欄相結合
df2=df[[cols]]

df_c=pd.concat([df1,df2],axis=1)

我嘗試了邏輯回歸,auc等等,我做了一個低方差的特征選擇


Features = np.array(T)
Labels = np.array(z)

#T and z are my X and y

sel = fs.VarianceThreshold(threshold=(.8 * (1 - .8)))
Features_reduced = sel.fit_transform(Features)

憑借我的剩余功能,我觀察了相關性以進行最終選擇

T.corr()


corr = T.corr()
fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(111)
cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,len(T.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(T.columns)
ax.set_yticklabels(T.columns)
plt.show()

我得到了這樣的東西:

https://image.noelshack.com/fichiers/2019/14/5/1554459054-stack.png

到目前為止這么好,我的變量是“uint”或“int”或浮動類型“所以每個人都很好。

但我認為在我的模型化之前看到相關性會更好。 盡快拒絕變量。

所以我在數據准備之后但在我的功能選擇之前嘗試做這段代碼:

T.corr()


corr = T.corr()
fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(111)
cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,len(T.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(T.columns)
ax.set_yticklabels(T.columns)
plt.show()

但是我的一些變量(分類)在'str'中,而不是int“uint”,因為我沒有用它們做假。 因此corr()對它們不起作用,它只適用於“int”和“float”類型。

我試圖在“類別”中轉換我的分類變量,但corr()也不適用於它們。

我嘗試在“int”或“float”中對它們進行轉換,但是它無法工作,因為我的分類列是由“Front_Website”之類的字符串組成的,依此類推。

所以我用虛擬變換它們但現在我在corr()中有很多功能,因為它在我的特征選擇之前。

所以我的問題是:如何看待我的數據庫的相關性而不是之前在虛擬中轉換它們?

我只想從頭開始看到我的變量之間的相關性。 而不僅僅是“int”或“float”類型。

我希望我的帖子很清楚。

謝謝。

編輯:

我試過了

table = pd.crosstab(df['Club Member'], df['Profil Price Club'])

from scipy.stats import chi2_contingency

chi2, p, dof, expected = chi2_contingency(table.values)

print(chi2, p)

但是對於我的所有分類專欄來說,這是非常繁瑣的。

我無法同時為所有分類列獲取此內容嗎?

嘗試將分類變量轉換為虛擬變量或立即轉換為int或float是徒勞的,並且會拋出錯誤。 找到分類變量之間的相關性也沒有任何意義。

您可以使用卡方分析來查找分類變量之間的關聯,使用此模塊:

from scipy.stats import chisquare

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM