2017-03-16 61 views
1

我的代碼如下UnicodeEncodeError使用DecisionTree

# -*- coding: utf-8 -*- 
import pandas as pd 
from sklearn.model_selection import train_test_split 
from sklearn import tree 

Model_Dev_Val = pd.read_excel("data2.xlsx") 

target = Model_Dev_Val[['source_2']] 

model_train, model_test, y_train, y_test = train_test_split(Model_Dev_Val, target,test_size = 0.5, random_state = 40,stratify = target) 

clf = tree.DecisionTreeClassifier() 
clf = clf.fit(model_train,y_train) 

但它拋出一個錯誤:

UnicodeEncodeError: 'decimal' codec can't encode characters in position 0-2: invalid decimal Unicode string

data2.xlsx include some Chinese, and the data has been cleaned.

+0

可能會有文件中的中文字符出現問題。 – PinkFluffyUnicorn

+0

我想過了。我從老闆那裏獲取正確的data.xlsx。並且它錯誤:ValueError:輸入包含NaN,無窮大或者對於dtype('float32')來說值太大。 –

+0

然後在那裏可能有一個'NaN','infinity'或者太大的數字 – PinkFluffyUnicorn

回答

0

有可能會是在你的文件中的中國角色的問題。

拋出其他錯誤(ValueError)可能意味着有可能是在那裏

一個NaNinfinity或過大的數字。如果相同的代碼運行你的老闆的電腦上很好,比它可能是由有你的機器造成的更少的內存,python的不同版本,scikit-learn的不同版本,甚至是別的東西。

+0

我想問,sklearn支持單詞,還是隻有號碼 –

+0

您使用的所有內容都應該轉換爲數字。但是你可以用文字來做到這一點,例如爲每個單詞指定一個不同的數字,或者使用[單熱編碼](https://en.wikipedia.org/wiki/One-hot)來表示您的單詞。 – PinkFluffyUnicorn

+0

這也可以幫助你:[在scikit中使用字符串數據](http://scikit-learn.org/stable/faq.html#how-do-i-deal-with-string-data-or-trees-graphs ) – PinkFluffyUnicorn

0

我不知道這是否可以解決你的問題,因爲我無法重現你的問題,但你可以試試:

import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

我希望它可以幫助你。

+0

同樣的問題,sry pal –