2017-03-21 23 views
0

誤差決策樹:如何更換「男」的值,它可以幫助我解決模型

TypeError: float() argument must be a string or a number 

其中錯誤:

clf = clf.fit(model_train,y_train) 

我的代碼如下

import pandas as pd 
from sklearn.model_selection import train_test_split 
from sklearn.preprocessing import Imputer 
from sklearn import tree 

Model_Dev_Val = pd.read_excel("fuckdata.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) 

imp = Imputer(missing_values = 'NaN',strategy = 'mean',axis=0) 
model_train = imp.fit(model_train) 
y_train = imp.fit(y_train) 

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

看起來像我的「南」犯規轉向「mean'.Anyway,help.I一直在尋找這一切day.THX

回答

0

您正在使用說話者錯誤。 fit()將返回壓制對象而不是新數據。您應該使用fit_transform()

相反的:

model_train = imp.fit(model_train) 
y_train = imp.fit(y_train) 

這樣做:

model_train = imp.fit_transform(model_train) 
y_train = imp.fit_transform(y_train) 
+0

我回家的路上,THX兄弟 –

0

嘗試使用imp.fit_transform,而不是僅僅imp.fit - 後者剛剛返回擬合模型,而不是實際的新陣列。

+0

之後做到這一點我會在後面做。 Thx,在回家的路上 –

+0

我已經回答了同樣的問題。 –

+0

好嗎?我們相隔二十秒鐘......我沒有試圖竊取你的榮耀或任何東西...... – bigsim