Logistic regression in python Erorr: ValueError: could not convert string to float: 'concavity_worst'
Logistic regression in python Erorr: ValueError: could not convert string to float: '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
当运行代码出现此错误:
could not convert string to float: 'concavity_worst'
在 Whosebug 上找不到类似的问题。经过研究,我发现函数 fit() 显然不能接受字符串。但我不确定如何将字符串转换为浮点数。经过一些谷歌搜索后,我仍然找不到适用于这种情况的解决方案。
根据pd.read_csv
的pandasdocumentation,您需要
Explicitly pass header=0 to be able to replace existing names
如果不这样做,它会将文件头作为数据的一部分。所以,现在您所有的列名都与您的数据混合在一起,并且您的所有列都包含一个字符串。这将使回归崩溃,因为它不能将字符串作为输入。
我正在尝试为如下所示的数据集制作一个简单的逻辑回归程序: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
当运行代码出现此错误:
could not convert string to float: 'concavity_worst'
在 Whosebug 上找不到类似的问题。经过研究,我发现函数 fit() 显然不能接受字符串。但我不确定如何将字符串转换为浮点数。经过一些谷歌搜索后,我仍然找不到适用于这种情况的解决方案。
根据pd.read_csv
的pandasdocumentation,您需要
Explicitly pass header=0 to be able to replace existing names
如果不这样做,它会将文件头作为数据的一部分。所以,现在您所有的列名都与您的数据混合在一起,并且您的所有列都包含一个字符串。这将使回归崩溃,因为它不能将字符串作为输入。