【发布时间】:2020-11-05 13:45:22
【问题描述】:
我正在尝试与 kmeans 集群合作,试图确定一定数量的患者的感染率是否与他们在一次手术中完成的手术数量有关,或者他们是住院患者还是新入院的患者。
这是我桌子上的一张 sn-p:我正在与 TerProNam 一起工作,这是手术中完成的第三个程序。患者类别是患者是否已经住院或刚刚入院接受手术。 PII_Dur 是手术持续了多长时间(以分钟为单位)。 PI_7D和PI_14D代表患者在术后7天或14天是否感染。
P_MRN ProLS PriProNam SecProNam TerProNam P_Clas PII_Dur PI_7D PI_14D ProRead
436772 1 CSection BTL 5 Surgery Admit 214 0 1 0
436773 5 CSection BTL 0 Inpatient 167 0 0 0
如您所见,我不得不将 ProLS 重新编码为手术主导外科医生,因为我在 TerProNam 中遇到的错误相同,即无法将字符串转换为浮点数。 这是我在 ProLS 中使用的代码,它有效:
#Converting ProLS values to float values
ProLS = {'J. PENNY, MD': 1,'R. STRAW, DO': 2, 'K. BONES, DO': 3, 'W. MART, DO': 4, 'R. STRAW, DO': 5, 'HERNANDEZ, HERNAN, MD': 6, 'ESCAMILLA, EMILIO, MD': 7, 'DERICK, ERICK, DO': 8, 'BONE, MARK, DO': 9, 'PALLIATIVE, JACOB, MD': 10, 'ELLISHA, JOHN, MD': 11, 'SMITH, KELLY, MD': 12, 'WATCH, LILAH, DO': 13, 'THOMAS, BRANDY, DO': 14, 'MORE, ELIZABETH, DO': 15, 'KRUMB, TIM, MD': 16, 'COLE, FRED, MD': 17}
cases.ProLS = [ProLS[item] for item in cases.ProLS]
print(ProLS)
现在我用 TerProNam 尝试了同样的事情:
#Converting TerProNam values to float values
TerProNam = {'0': 0, 'Negative Pressure Wound Therapy; Abdomen': 1,'Including Injection Of Non-RadioactiveDye (In Addition To Primary Lymphadenectomy)': 2, 'Omentectomy; And Total Abdominal Hysterectomy': 3, 'Breast Reconstruction With Tissue Expander Insertion': 4, 'Axillary Lymphadenectomy; Complete': 5, 'Radical Dissection For Debulking Including Salpingo-Oophorectomy;': 6, 'Simple Mastectomy; Complete': 7}
cases.TerProNam = [TerProNam[item] for item in cases.TerProNam]
print(TerProNam)
它可以工作,但是当我尝试执行下一个代码时:
#Performing KMeans clustering assuming 2 clusters
kmeans = KMeans(n_clusters=2).fit(X_train)
它给了我这个:
ValueError:无法将字符串转换为浮点数:'包括注入 Non-RadioactiveDye(除了原发性淋巴结切除术)'但是, 此行名称已转换为“2”...
非常感谢任何关于缓慢、简单英语的帮助:)
【问题讨论】:
-
你是如何创建你的
X_train的? -
嗨,这是我的 X_train: X = cases.iloc[:, [6, 10]].values y = cases.iloc[:, [7, 11]].values 和这个是我对数据的拆分:X_train, X_test, y_train, y_test = ( train_test_split(X, y, test_size = 0.25, random_state=0))
标签: python pandas jupyter-notebook k-means keyerror