Python - ValueError: could not convert string to float:

Python - ValueError: could not convert string to float:

我正在尝试制作一个简单的决策树,但我不断收到相同的 ValueError,none 类似的威胁对我有任何帮助。 None 我的变量是字符串,但我仍然在转换时遇到错误。

from pandas import Series, DataFrame
import pandas as pd
import numpy as np
import os
import matplotlib.pylab as plt
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import sklearn.metrics

os.chdir("C:\Mlearning")

"""
Data Engineering and Analysis
"""
#Load the dataset

AH_data = pd.read_csv("gapminder.csv")

data_clean = AH_data.dropna()

#data_clean.dtypes
#data_clean.describe()


"""
Modeling and Prediction
"""
#Split into training and testing sets

predictors = data_clean[['breastcancerper100th','alcconsumption']]

targets = data_clean.employrate

pred_train, pred_test, tar_train, tar_test  =   train_test_split(predictors, targets, test_size=.4)

pred_train.shape
pred_test.shape
tar_train.shape
tar_test.shape

#Build model on training data
classifier=DecisionTreeClassifier()
classifier=classifier.fit(pred_train,tar_train)

predictions=classifier.predict(pred_test)

sklearn.metrics.confusion_matrix(tar_test,predictions)
sklearn.metrics.accuracy_score(tar_test, predictions)

#Displaying the decision tree
from sklearn import tree
#from StringIO import StringIO
from io import StringIO
#from StringIO import StringIO 
from IPython.display import Image
out = StringIO()
tree.export_graphviz(classifier, out_file=out)
import pydotplus
graph=pydotplus.graph_from_dot_data(out.getvalue())
graph.write_pdf("graph.pdf")

但我得到的结果是这个:

   array = np.array(array, dtype=dtype, order=order, copy=copy)

ValueError: could not convert string to float: 

很有可能是数据的问题。由于您在尝试转换为浮点数的代码中没有任何意义,因此您所拥有的数据的形式一定会阻止您的解析命令将其读取为数字。

您可以使用pd.to_numeric(在0.17版本中引入)将列或Series转换为数字类型。该函数也可以使用 apply 应用于 DataFrame 的多个列。

重要的是,该函数还带有一个错误关键字参数,可让您将非数字值强制为 NaN,或者干脆忽略包含这些值的列。

如果您将所有条目转换为数字,将会起作用。我为此使用了一个小函数:

def convert_column_numeric(ax):
    predictors[ax] = pd.to_numeric(predictors[ax], errors='coerce')

.....

convert_column_numeric('breastcancerper100th')
convert_column_numeric('alcconsumption')`