0
爲char我有以下的代碼實現的scikit學習的決策樹分類:轉換整數Python中
import numpy as np
import pandas as pd
from sklearn import tree
# #---------------------------------------------------------------------------------------------------
with open('data/training.csv', 'r') as f:
df = pd.read_csv(f, index_col=None)
Subset = df.iloc[:, 32:33] # Just the labels
df['Num_Labels'] = df.Label.map(lambda x: '-1' if x == 's' else '1') # Convert labels to '0' or '1'.
Z = df.iloc[:, 32:34] # the letter labels & numerical labels
Train_values = df.iloc[:, 1:31].values
Train_labels = df.iloc[:, 33:34].values
with open('data/test.csv', 'r') as f2:
df2 = pd.read_csv(f2, index_col=None)
Test_values = df2.iloc[:, 1:31].values
# #----------------------------------------------------------------------------------------------
X = Train_values
Y = Train_labels.astype(np.float)
print X.dtype
print Y.dtype
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)
Pred = clf.predict(Test_values)
print Pred.dtype
Out = Pred.astype(np.float)
np.savetxt('Output_Numerical.csv', Out, delimiter=' ')
直到此時的代碼按預期工作。然後,我想將標籤轉換回原來的字符值's'和'h'。我寫了以下內容:
Out2 = Pred.astype(str) # Initialize
print "Out2's type is:"
print Out2.dtype
for i in range(0, len(Out)):
if Out[i] == -1:
Out2[i] == 's'
else:
Out2[i] == 'h'
print Out2
但它不會更改Out2的值。
我對Sci-kit學習不是很熟悉,但是您是否嘗試過Python的chr()函數? –
@MikeDriscoll:最有可能的'Out2'將是一個合適類型的'ndarray'(長度爲12或者什麼的字符串),所以即使它們看起來很奇怪,操作也很好。 – DrV