Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 建模中的字符串变量_Python_Dataframe - Fatal编程技术网

Python 建模中的字符串变量

Python 建模中的字符串变量,python,dataframe,Python,Dataframe,只是想听听大家对字符串变量建模的想法。 假设一个dataframe(df),其字符串变量(Sex)编码为('M'或'F')。 即使df['Sex']是一个分类变量,尝试拟合考克斯模型也会产生错误: df['Sex']=df['Sex'].astype('category) cph = CoxPHFitter() cph.fit(df, duration_col='time', event_col='event') 这将产生一个错误,这是可以理解的 ValueError: could not c

只是想听听大家对字符串变量建模的想法。 假设一个
dataframe
df
),其字符串变量(Sex)编码为('M'或'F')。 即使
df['Sex']
是一个分类变量,尝试拟合考克斯模型也会产生错误:

df['Sex']=df['Sex'].astype('category)
cph = CoxPHFitter()
cph.fit(df, duration_col='time', event_col='event')
这将产生一个错误,这是可以理解的

ValueError: could not convert string to float: 'M'
通过使用以下几种方法之一将“Sex”编码为0,1,可以很容易地对其进行排序,例如:

df['Sex2']=df['Sex'].replace({'F':1, 'M':0})
然后使用新的柱来拟合模型,这将平稳运行。 然而。。。 问题(相当不方便)是,您需要对所有字符串变量重复此过程,并且如果您有许多变量,那么在查看cox.plot()时,就很难记住哪个是引用变量,因为您需要返回代码以记住如何对每个变量进行编码

来自其他统计平台(R和SAS),我确实觉得这有点不方便,R和SAS都可以在模型中管理字符串变量而不会出现问题。SAS还可以标记列内容,使其在最终输出中更具可读性。
有没有关于如何避免这种情况的想法或建议?

所以这里的问题是你不想重复编码过程,对吗

您可以尝试对数据帧中的所有分类列使用sklearn的one hot编码。请阅读此处的文档:


此外,这里还有一个用于两个或更多列的示例:

Thank@Snedecor,这非常有用,但这只是问题的一半。假设您有一个可变颜色编码为“白、红、绿”。要将该变量包括在分析中,需要将其编码为0,1,2。如果随后生成一个cox.plot来显示危险比,那么该图将显示三个等级,一个参考(0)和两个附加等级(1,2),或者将它们编码为虚拟变量。很难直接从图中看出哪个数字对应不同的颜色,您需要重新标记图以理解它。有办法解决这个问题吗?