首页 > 解决方案 > python Erorr 中的逻辑回归:ValueError:无法将字符串转换为浮点数:'concavity_worst'

问题描述

我正在尝试为如下所示的数据集制作一个简单的逻辑回归程序:https ://imgur.com/a/dJvb8Si 在此处输入图像描述

我的程序应该对数据集使用逻辑回归,并输出一些关于回归结果的信息。使用示例我制作了以下代码:

import matplotlib.pyplot as plt
from scipy import stats

import pandas as pd
col_names = ['id', 'diagnosis', 'radius_mean', 'texture_mean', 'perimeter_mean', 'area_mean', 'smoothness_mean','compactness_mean', 'symmetry_se', 'perimeter_worst', 'smoothness_worst', 'concavity_worst']

# load dataset
data = pd.read_csv("DatasetTest.csv", header=None, names=col_names)
data.head()

feature_cols = ['diagnosis', 'radius_mean','texture_mean','perimeter_mean','area_mean', 'smoothness_mean','compactness_mean', 'symmetry_se', 'perimeter_worst','smoothness_worst', 'concavity_worst']
X = data[feature_cols]
y = data.diagnosis

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train,y_train)
y_pred=logreg.predict(X_test)

from sklearn import metrics
cnf_matrix = metrics.confusion_matrix(y_test, y_pred)
cnf_matrix

运行代码时出现此错误:

无法将字符串转换为浮点数:'concavity_worst'

在stackoverflow上找不到类似的问题。经过研究,我发现函数 fit() 显然不能接受字符串。但我不确定如何将字符串转换为浮点数。在进行了一些谷歌搜索后,我仍然找不到适用于这种情况的解决方案。

用于代码的示例:https ://towardsdatascience.com/a-beginners-guide-to-linear-regression-in-python-with-scikit-learn-83a8f7ae2b4f

标签: pythondata-sciencelogistic-regression

解决方案


根据 pandas 的文档pd.read_csv您需要

显式传递 header=0 以便能够替换现有名称

如果你不这样做,它将把文件头作为数据的一部分。因此,现在您的所有列名都与您的数据混合在一起,并且您的所有列都包含一个字符串。这将使回归崩溃,因为它不能将字符串作为输入。


推荐阅读