![](/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.