【问题标题】:ValueError: could not convert string to float - kmeans (pandas)ValueError:无法将字符串转换为浮点数 - kmeans(熊猫)
【发布时间】:2020-11-05 13:45:22
【问题描述】:

我正在尝试与 kmeans 集群合作,试图确定一定数量的患者的感染率是否与他们在一次手术中完成的手术数量有关,或者他们是住院患者还是新入院的患者。

这是我桌子上的一张 sn-p:我正在与 TerProNam 一起工作,这是手术中完成的第三个程序。患者类别是患者是否已经住院或刚刚入院接受手术。 PII_Dur 是手术持续了多长时间(以分钟为单位)。 PI_7DPI_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


【解决方案1】:

所以经过大量搜索,为了将字符串数据转换为浮点数或数字,这是解决上述问题的代码: #为 Ter Pro Nam 创建标签编码以应用数值

labelEncoder = LabelEncoder()
labelEncoder.fit(cases['TerProNam'])
cases['TerProNam'] = labelEncoder.transform(cases['TerProNam'])

您必须导入: 导入mglearn 从 sklearn.preprocessing 导入 LabelEncoder 从 sklearn.preprocessing 导入 MinMaxScaler

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2018-06-13
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多