Я пытаюсь создать простое дерево решений, но я продолжаю получать тот же ValueError, и ни одна из подобных угроз не имела никакой помощи. Ни одна из моих переменных не является строкой, но все же я получаю ошибку при преобразовании.Python - ValueError: не удалось преобразовать строку в float:
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:
Это ошибка в вашем 'classifier.fit'? или где-то еще? Можете ли вы опубликовать образец данных, которые вы пытаетесь классифицировать? – pekapa
Можете ли вы изменить свой вопрос, чтобы показать полную трассировку? Вывод 'data_clean.dtypes' тоже был бы полезен (и, возможно,' data_clean.head() ', если вы можете поделиться им). –
Мне кажется, что вы пытаетесь предсказать значение с плавающей точкой (уровень занятости). Это проблема регрессии, а не проблема классификации. Вместо этого попробуйте использовать «DecisionTreeRegressor». Мы сможем помочь намного лучше, если вы разместите трассировку, чтобы мы могли видеть, из какой строки вызывается «ValueError». –