![](/img/trans.png)
[英]Why does a type hint `float` accept `int` while it is not even a subclass?
[英]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.